SnowConvert AI - Teradata - SnowConvert AI スクリプトヘルパー¶
SnowConvert AI ヘルパーは、TeradataスクリプトファイルをSnowflakeが解釈できるPythonファイルに簡単に変換できるよう設計された関数を持つクラスのセットです。
SnowConvert AI for Teradata では、任意のTeradata SQL またはスクリプト(BTEQ、FastLoad、MultiLoad、TPump)を取り込んで、機能的に同等なSnowflake SQL、Snowflake SQL の組み込み JavaScript、Pythonに変換できます。SnowConvert AI から出力されるPythonコードは、これらのヘルパークラスの関数を呼び出して変換を完了し、Snowflakeで機能的に同等の出力を作成します。
Snowflake Connector for Python も、Snowflakeアカウントに接続し、 SnowConvert で作成した出力Pythonコードを実行するために呼び出されます。
パッケージの最新バージョン情報は こちら をご覧ください。
注釈
Pythonパッケージ snowconvert-helpers はPythonバージョン3.6、3.7、3.8、3.9をサポートしています。
スクリプトの移行¶
ソース¶
移行する次の BTEQ コードがあるとします。
insert into table1 values(1, 2);
insert into table1 values(3, 4);
insert into table1 values(5, 6);
出力¶
以下のような出力が得られるはずです。
注釈
log_on 関数パラメーター('user'、'password'、'account'、'database'、'warehouse'、'role'、'token')はユーザーが指定する必要があります。
#*** Generated code is based on the SnowConvert AI Python Helpers version 2.0.6 ***
import os
import sys
import snowconvert.helpers
from snowconvert.helpers import Export
from snowconvert.helpers import exec
from snowconvert.helpers import BeginLoading
con = None
def main():
snowconvert.helpers.configure_log()
con = snowconvert.helpers.log_on()
exec("""
INSERT INTO table1
VALUES (1, 2)
""")
exec("""
INSERT INTO table1
VALUES (3, 4)
""")
exec("""
INSERT INTO table1
VALUES (5, 6)
""")
snowconvert.helpers.quit_application()
if __name__ == "__main__":
main()
はじめるにあたり¶
パッケージをインストールするには、Python環境で以下のコマンドを実行してください。Pythonでのパッケージのインストールに慣れていない場合は、以下のPythonパッケージのページ(https://packaging.python.org/tutorials/installing-packages/)を参照してください。
pip install snowconvert-helpers
パッケージがインストールされると、Pythonでスクリプトを移行したコードを実行できるようになります。
コードを実行する¶
移行したコードを実行するには、 コマンドプロンプト または ターミナル を開き、以下のコマンドを実行するだけです。
python sample_BTEQ.py
スクリプトにエラーがなければ、コンソールに以下のような出力が表示されます。
Executing: INSERT INTO PUBLIC.table1 VALUES (1, 2).
Printing Result Set:
number of rows inserted
1
Executing: INSERT INTO PUBLIC.table1 VALUES (3, 4).
Printing Result Set:
number of rows inserted
1
Executing: INSERT INTO PUBLIC.table1 VALUES (5, 6).
Printing Result Set:
number of rows inserted
1
Error Code 0
Script done >>>>>>>>>>>>>>>>>>>>
Error Code 0
接続パラメーターの受け渡し¶
データベースの接続に接続パラメーターを渡す方法はいくつかあります。
関数呼び出しのパラメーターとして、Pythonファイル内でsnowconvert.helpers.log_onを呼び出します。
Pythonがコマンドラインから実行されるときに、ユーザー、パスワード、アカウント、データベース、ウェアハウス、およびロールの特定の順序を持つ位置パラメーターとして。
コマンドラインからPythonが実行され、そのいずれかが--param-VARNAME=VALUE のように渡される場合、順序制限のない名前付きパラメーターとして SNOW_USER、SNOW_PASSWORD、SNOW_ACCOUNT、SNOW_DATABASE、SNOW_WAREHOUSE、SNOW_ROLE、SNOW_QUERYTAG、SNOWAUTHENTICATOR および SNOWTOKEN。
Python実行前に、 SNOW_USER、 SNOW_PASSWORD、 SNOW_ACCOUNT、 SNOW_DATABASE、 SNOW_WAREHOUSE、 SNOW_ROLE、 SNOW_QUERYTAG、 SNOWAUTHENTICATOR および SNOWTOKEN という名前の環境変数として。
指定された前の順序が優先順位を決定する方法です。
関数呼び出しのパラメーター¶
これらは、以下のように関数呼び出しの位置パラメーターとしてセットすることができます。
.....
con = snowconvert.helpers.log_on(
'myuser',
'mypassword',
'myaccount',
'mydatabase',
'mywarehouse',
'myrole',
5,
'myauthenticator',
'mytoken')
.....
あるいは、以下のように、関数呼び出しの中で、名前付きパラメーターを任意の順番でセットすることもできます。
.....
con = snowconvert.helpers.log_on(
account:'myaccount',
password:'mypassword',
user:'myuser',
warehouse:'mywarehouse',
login_timeout:5,
authenticator:'myauthenticator',
toke:'mytoken')
.....
位置パラメーター¶
これらはコマンドラインで以下のように特定の順序でセットする必要があります。
python sample_BTEQ.py myuser mypassword myaccount mydatabase mywarehouse myrole myauthenticator mytokenr
また、パラメーターの一部だけをセットすることもできますが、次のように常にユーザーパラメーターから始めます。
python sample_BTEQ.py myuser mypassword myaccount
名前付きパラメーター¶
次のように、コマンドラインで任意の順序で名前付きパラメーターをセットできます(1行を使用しますが、読みやすさを考慮して複数行で表示されています)。
python sample_BTEQ.py --param-SNOW_WAREHOUSE=mywarehouse
--param-SNOW_ROLE=myrole
--param-SNOW_PASSWORD=mypassword
--param-SNOW_USER=myuser
--param-SNOW_QUERYTAG=mytag
--param-SNOW_ACCOUNT=myaccount
--param-SNOW_DATABASE=mydatabase
--param-SNOW_AUTHENTICATOR=myauthenticator
--param-SNOW_TOKEN=mytoken
--param-PRIVATE_KEY_PATH=myprivatekey
--param-PRIVATE_KEY_PASSWORD=myprivatekeypassword
環境変数¶
Pythonスクリプトを呼び出す前に、以下の環境変数がセットできます。
SNOW_USER
SNOW_PASSWORD
SNOW_ACCOUNT
SNOW_DATABASE
SNOW_WAREHOUSE
SNOW_ROLE
SNOW_QUERYTAG
SNOW_AUTHENTICATOR
SNOW_TOKEN
PRIVATE_KEY_PATH
PRIVATE_KEY_PASSWORD
キーペア認証¶
log_on 関数は、キーペアの認証プロセスもサポートできます。キー作成に関する詳細については、以下の Snowflakeドキュメント をご参照ください。必須パラメーターにご注意ください。
log_on(
user='YOUR_USER',
account='YOUR_ACCOUNT',
role = 'YOUR_ROLE',
warehouse = 'YOUR_WAREHOUSE',
database = 'YOUR_DATABASE',
private_key_path='/YOUR_PATH/rsa_key.p8',
private_key_password='YOUR_PASSWORD')
環境変数の受け渡し例¶
以下は SNOW_AUTHENTICATOR、 SNOW_USER および SNOW_PASSWORD の使用例です。これらは出力Pythonファイルを実行する前に定義され、その後Pythonで生成されたファイルを実行する必要があります。
Windows¶
SET SNOW_AUTHENTICATOR=VALUE
SET SNOW_USER=myuser
SET SNOW_PASSWORD=mypassword
python sample_BTEQ.py
Linux/Mac¶
export SNOW_AUTHENTICATOR=VALUE
export SNOW_USER=myuser
export SNOW_PASSWORD=mypassword
python3 sample_BTEQ.py
ログの有効化¶
ログを有効にするには、 SNOW_LOGGING という環境変数をtrueにセットします。
それから、ログの構成をカスタマイズしたい場合、 snowconvert.helpers.configure_log() メソッドにパラメーターを次のように渡すことができます。
snowconvert.helpers.configure_log("SOMEPATH.conf")
構成ファイルには次の構造が含まれている必要があります。Pythonログに関する情報は、 こちらをクリックしてください
[loggers]
keys=root
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0
[handler_consoleHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=('python2.log', 'w')
[formatter_simpleFormatter]
format=%(asctime)s -%(levelname)s - %(message)s
Snowflake¶
移行したコードが実行されたら、Snowflakeにアクセスして変更またはデプロイを確認できます。
select * from PUBLIC.table1;
上の例で挿入した行が表示されます。

ローカルヘルパーのドキュメント¶
まず、pydocというPythonパッケージをインストールする必要があります(snowconvert-helpersのバージョン2.0.2以降で利用可能です)。
pip install pydoc
そして、snowconvert-helpersパッケージのPythonドキュメントを表示するために、変換された出力コードとPython出力があるフォルダーに移動する必要があります。
D:\bteq\Output>dir
Volume in drive D is Storage
Volume Serial Number is 203C-168C
Directory of D:\bteq\Output
05/25/2021 03:55 PM <DIR> .
05/25/2021 03:55 PM <DIR> ..
05/25/2021 03:55 PM 630 input_BTEQ.py
1 File(s) 630 bytes
2 Dir(s) 1,510,686,502,912 bytes free
このディレクトリにある以下を実行する必要があります。
python -m pydoc -b
コンソールはお好みのブラウザーを開き、インストールされた全パッケージのドキュメントを HTML ヘルプで表示します。
D:\bteq\Output>python -m pydoc -b
Server ready at http://localhost:61355/
Server commands: [b]rowser, [q]uit
server>
こうするとブラウザーが開き、次のようなコードのドキュメントが表示されます。

ページの最後までスクロールすると、インストールされているパッケージが表示されます。そして、次のようなものが表示されます。

SnowConvert AI(パッケージ)をクリックすると、次のようなものが表示されます。

モジュールヘルパーをクリックすると、以下のような画面が表示されます。

そして、モジュールの関数とクラスをスクロールすることができます。

既知の問題¶
問題は見つかりませんでした。
技術ドキュメント¶
関数¶
プロジェクトで定義されたすべての関数。
access¶
注釈
access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)
説明:¶
パスへのアクセスをテストするには、実際のuid/gidを使用してください。
dir_fd、effective_ids、follow_symlinksは、プラットフォームで実装されていない可能性があります。それらが利用できない場合、それらを使用すると、 NotImplementedError. が発生します。
ほとんどの操作は、有効なuid/gidを使用するため、このルーチンはsuid/sgid環境で使用し、起動したユーザーがパスへの指定されたアクセスを持っているかどうかをテストできることに注意してください。
パラメーター:¶
パス、テストされるパス。文字列、バイト、またはパスに似た オブジェクト を使用できますモード、オペレーティングシステムモードビットフィールド。存在をテストするためにF_OK を使用できます。または、R_OK、W_OK、およびX_OK の包含 OR を使用できますdir_fd、Noneでない場合は、ディレクトリに開かれたファイル記述子で、パスは相対パスでなければなりません。その場合、パスはそのディレクトリに対して相対的になりますeffective_ids、Trueの場合、アクセスは実際のuid/gidの代わりに有効なuid/gidを使用しますfollow_symlinks、Falseで、パスの最後の要素がシンボリックリンクの場合、アクセスはリンク先のファイルではなく、シンボリックリンク自体を調べます
at_exit_helpers¶
注釈
at_exit_helpers()
説明:¶
スクリプトの実行終了時に実行します。
colored¶
注釈
colored(text, color='blue')
説明:¶
指定された色からカラーテキストを印刷します。
パラメーター:¶
テキスト、印刷されるテキストcolor="blue"、印刷する色
configure_log¶
注釈
configure_log(configuration_path)
説明:¶
Snowflake接続上のデータ関連の実行に対して実行されるロギングを設定します。ログファイル名はデフォルトで 'snowflake_python_connector.log' となります。
パラメーター:
configuration_path、ログに必要なすべての設定を含むファイルの構成パス
drop_transient_table¶
注釈
drop_transient_table(tempTableName, con=None)
説明:¶
指定された名前の一時テーブルを削除します。
パラメーター:
tempTableName、仮テーブル名con=None、使用する接続。Noneを渡すと、最後に実行された接続が使用されます
exception_hook¶
注釈
exception_hook(exctype, value, tback)
説明:¶
パラメーター:
exctype値tback
exec¶
注釈
exec(sql_string, using=None, con=None)
説明:¶
最後の接続を使用してSQL文字列を実行します。オプションで引数または特定の接続を使用します。例:
_
exec("SELECT * FROM USER")__
exec("SELECT * FROM USER", con)__
exec("SELECT * FROM CUSTOMER WHERE CUSTOMERID= %S", customer)_
パラメーター:
sql_string、SQLの定義using=None、渡されたSQLで使用できるオプションパラメーターcon=None、使用する接続。Noneを渡すと、最後に実行された接続が使用されます
exec_file¶
注釈
exec_file(filename, con=None)
説明:¶
ファイルの内容を読み込み、指定された接続に含まれるSQLステートメントを実行します。
パラメーター:
filename、読み込んで実行するファイル名con=None、使用する接続。Noneを渡すと、最後に実行された接続が使用されます
exec_os¶
注釈
exec_os(command)
説明:¶
演算システムでコマンドを実行します。
exec_sql_statement¶
注釈
exec_sql_statement(sql_string, con, using=None)
説明:¶
渡された接続で、オプションの引数でSQLステートメントを実行します。
パラメーター:
sql_string、実行する文字列を含むSQLcon、使用する接続using、SQL実行時に使用するオプションパラメーター
expands_using_params¶
注釈
expands_using_params(statement, params)
説明:¶
パラメーターと一緒に渡されたステートメントを展開します。
パラメーター:
statement、実行する文字列を含むSQLparams、SQLステートメントのパラメーター
expandvar¶
注釈
expandvar(str)
説明:¶
渡された文字列から変数を展開します。
パラメーター:
str、変数で展開される文字列
expandvars¶
注釈
expandvars(path, params, skip_escaped=False)
説明:¶
$varおよび${var} 形式の環境変数を展開します。パラメータ「skip_escaped」がTrueの場合、エスケープされた変数参照(つまり、先頭にバックスラッシュが付くもの)はすべてスキップされます。不明な変数は「デフォルト」にセットされます。「デフォルト」がNoneの場合、それらは変更されません。
パラメーター:
パス、params、skip_escaped=False、
fast_load¶
注釈
fast_load(target_schema, filepath, stagename, target_table_name, con=None)
説明:¶
渡されたパラメーターtarget_schema、filepath、stagename、およびtarget_table_nameで高速ロードを実行します。
パラメーター:
target_schema、高速ロードで使用するスキーマの名前filepath、テーブルにロードされるファイル名のパスtarget_table_name、データがロードされるテーブル名con=None、使用する接続。Noneを渡すと、最後に実行された接続が使用されます
file_exists_and_readable¶
注釈
file_exists_and_readable(filename)
説明:¶
パラメーター:
filename、
get_argkey¶
注釈
get_argkey(astr)
説明:¶
渡された文字列から引数のキー値を取得します。文字列「--param-」で始まる必要があります
パラメーター:
astr、使用する引数文字列。文字列は--param-column=32のような値でなければならず、返される文字列は「32」になります
get_error_position¶
注釈
get_error_position()
説明:¶
生成されたエラーのスタックの情報を使用して、ファイルからエラー位置を取得します。
get_from_vars_or_args_or_environment¶
注釈
get_from_vars_or_args_or_environment(arg_pos, variable_name, vars, args)
説明:¶
指定された位置から引数を取得するか、テーブル変数から値を取得するか、渡された環境変数名を取得します。
パラメーター:
arg_pos、引数パラメーターから使用する引数の位置variable_name、取得する変数名vars、変数名と値のハッシュargs、引数配列パラメーター
import_data_to_temptable¶
注釈
import_data_to_temptable(tempTableName, inputDataPlaceholder, con)
説明:¶
入力データプレースホルダーを使用して、データを仮テーブルにインポートします。
パラメーター:
tempTableName、仮テーブル名。inputDataPlaceholder、Snowflakeデータベースのステージである使用される入力プレースホルダーcon、使用する接続
import_file¶
注釈
import_file(filename, separator=' ')
説明:¶
渡されたファイル名を、オプションのセパレーターを付けてインポートします。
パラメーター:
filename、インポートするファイル名のパスseparator=' '、オプションのセパレーター
import_file_to_temptable¶
注釈
import_file_to_temptable(filename, tempTableName, columnDefinition)
説明:¶
仮テーブルに渡されたファイルをインポートします。プレフィックスStage_を持つ仮テーブルという名前のパブリックステージが使用されます。仮テーブルへのロードが終了すると、そのプロセスで使用されたステージが削除されます。
パラメーター:
filename、読み込むファイル名tempTableName、仮テーブル名columnDefinition、仮テーブルを持つすべてのフィールドの定義
import_reset¶
注釈
import_reset()
説明:¶
log¶
注釈
log(*msg, level=20, writter=None)
説明:¶
ログが有効になっているかどうかに応じて、コンソール(標準出力)またはログファイルにメッセージを出力します
パラメーター:
*msg、出力またはログするメッセージlevel=20、writter=None、
log_on¶
注釈
log_on(user=None, password=None, account=None, database=None, warehouse=None, role=None, login_timeout=10, authenticator=None)
説明:¶
認証情報、データベース、ウェアハウス、ロール、login_timeout、認証コードをパラメーターとしてSnowflakeデータベースにログインします。
パラメーター:
user、データベースのユーザーpasswordデータベースのユーザーのパスワードdatabase、接続するデータベースwarehouse、接続するデータベースのウェアハウスrole、接続するロールlogin_timeout、接続に時間がかかりすぎる場合にエラーを出すまでの最大タイムアウトauthenticator、SNOWFLAKE、 EXTERNALBROWSER、 SNOWFLAKE_JWT または OAUTH のように使用する認証コードがサポートする値token、OAUTH または JWT トークン
os¶
注釈
os(args)
説明:¶
パラメーター:
args、
print_table¶
注釈
print_table(dictionary)
説明:¶
ユーザーとパスワードの値を公開せずに辞書を印刷します。
パラメーター:
dictionary、
quit_application¶
注釈
quit_application(code=None)
説明:¶
アプリケーションを終了し、オプションで渡されたコードを返します。
パラメーター:
code=None、終了後に返されるコード
read_params_args¶
注釈
read_param_args(args)
説明:¶
渡された配列からパラメーターの引数を読み込みます。
パラメーター:
args、使用する引数
readrun¶
注釈
readrun(line, skip=0)
説明:¶
与えられたファイル名の行を読み、オプションでファイルの先頭のいくつかの行をスキップします。
パラメーター:
line、読み込むファイル名skip=0、スキップする行
remark¶
注釈
remark(arg)
説明:¶
引数を印刷します。
パラメーター:
arg、印刷する引数
repeat_previous_sql_statement¶
注釈
repeat_previous_sql_statement(con=None, n=1)
説明:¶
前に実行されたSQLステートメントを繰り返します。
パラメーター:
con=None、指定されている場合は接続。これが渡されない場合は、最後に行われた接続が使用されますn=1、再実行する前のステートメントの数
set_default_error_level¶
注釈
set_default_error_level(severity_value)
説明:¶
パラメーター:
severity_value、
set_error_level¶
注釈
set_error_level(arg, severity_value)
説明:¶
パラメーター:
arg、severity_value、
simple_fast_load¶
注釈
simple_fast_load(con, target_schema, filepath, stagename, target_table_name)
説明:¶
接続と渡されたパラメーターtarget_schema、filepath、stagename、ターゲットテーブル名で単純な高速ロードを実行します。
パラメーター:
arg、使用する接続target_schema、高速ロードで使用するスキーマの名前filepath、テーブルにロードされるファイル名のパスtarget_table_name、データがロードされるテーブル名
stat¶
注釈
stat(path, *, dir_fd=None, follow_symlinks=True)
説明:¶
_与えられたパスでstatシステム呼び出しを実行します。_dir_fdとfollow_symlinksは、お使いのプラットフォームで実装されていない可能性があります。それらが利用できない場合、それらを使用すると、 NotImplementedError が発生します。開いているファイル記述子としてパスを指定するときに、dir_fdまたはfollow_symlinksを使用するとエラーになります
パラメーター:
path、検査するパス。文字列、バイト、パスのような オブジェクト、または\ open-file-descriptor intを使用できますdir_fd、Noneでない場合は、ディレクトリに開かれたファイル記述子で、パスは相対文字列でなければなりません。その場合、パスはそのディレクトリに対して相対的になりますfollow_symlinks、Falseで、パスの最後の要素がシンボリックリンクの場合、statはリンク先のファイルではなく、シンボリックリンク自体を調べます
system¶
注釈
system(command)
説明:¶
サブシェルでコマンドを実行します。
パラメーター:
_
コマンド_、
using¶
注釈
using(*argv)
説明:¶
パラメーター:
_
*argv_、
クラス¶
プロジェクトで定義されたすべてのクラス
BeginLoading クラス¶
このクラスは import_file_to_tab 静的関数を含んでおり、 BEGIN LOADING と FastLoad の関連コマンドのサポートを提供します。
import_file_to_tab()¶
パラメーター:
target_schema_tableターゲットスキーマ(オプション)とテーブル名
define_file読み込むファイル名
define_columns仮テーブルのすべての列の定義
begin_loading_columns挿入する列名。値の挿入順序を指定します
begin_loading_values変換する生の挿入値のリスト
field_delimiterフィールド区切り文字
(オプション)
skip_headerスキップする行数
(オプション)
input_data_place_holderサポートされているクラウドプロバイダー内のファイルの場所。ファイルがローカルに保存されていない場合のパラメーターセット
(オプション)
con使用する接続
エクスポートクラス¶
クラスの静的メソッド
defaults()null(value=None)record_mode(value=None)report(file, separator=' ')reset()separator_string(value=None)separator_width(value=None)side_titles(value=None)title_dashes(value=None, withValue=None)title_dashes_with(value=None)width(value=None)
\ ここで定義されたデータとその他の属性
expandedfilename = Noneseparator = ''\
インポートクラス¶
クラスのメソッド
reset()
クラスの静的メソッド
file(file, separator=' ')using(globals, *argv)
クラスで定義されたデータとその他の属性
expandedfilename = Noneno_more_rows = Falseread_obj = Nonereader = Noneseparator = ' '
Parameters Class¶
クラスで定義されたデータとその他の属性
passed_variables = {}