Option 1: Load data with the Snowpipe REST API¶
このトピックでは、パブリック REST エンドポイントを呼び出してデータをロードし、ロード履歴レポートを取得する方法について説明します。手順は、 Data loading preparation using the Snowpipe REST API の設定手順を完了していることを前提としています。
Load data¶
2つのステップでロードします。
- ステップ1:
データファイルをステージングします。
内部ステージ: PUT コマンドを使用して、ファイルをステージングします。
外部ステージ:クラウドプロバイダーが提供するクライアントツールを使用して、ファイルをステージの場所(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)にコピーします。
- ステップ2:
insertFiles RESTエンドポイントにリクエストを送信して、ステージングされたデータファイルをロードします。
便宜上、このトピックでは、 REST エンドポイントを送信する方法を示すサンプルのJavaおよびPythonプログラムを提供しています。
Java SDK のサンプルプログラム¶
この例では、 Bouncy Castle暗号化 APIs を使用しています。この例をコンパイルして実行するには、クラスパスに次の JAR ファイルを含める必要があります。
プロバイダー JAR ファイル(
bcprov-jdkversions.jar)PKIX / CMS / EAC / PKCS / OCSP / TSP / OPENSSL JAR ファイル(
bcpkix-jdkversions.jar)
ここで、 versions は、 JAR ファイルがサポートする JDK のバージョンを指定します。
サンプルコードをコンパイルする前に、次のプレースホルダー値を置き換えます。
PRIVATE_KEY_FILE = "/<パス>/rsa_key.p8"Use key pair authentication & key rotation ( Data loading preparation using the Snowpipe REST API 内)で作成した秘密キーファイルへのローカルパスを指定します。
getPrivateKeyPassphrase()内のreturn "<秘密キーパスフレーズ>"暗号化されたキーを生成した場合は、
getPrivateKeyPassphrase()メソッドを実装して、そのキーを復号化するためのパスフレーズを返します。host = "<アカウント識別子>.snowflakecomputing.com"ホスト情報を URL の形式で指定します。
アカウント識別子の推奨形式は次のとおりです。
organization_name-account_nameSnowflake組織とアカウントの名前。詳細については、 形式1(推奨): 組織内のアカウント名 をご参照ください。
または、必要に応じて、アカウントがホストされている リージョン および クラウドプラットフォーム とともに、 アカウントロケーター を指定します。詳細については、 形式2: リージョン内のアカウントロケーター をご参照ください。
user = "<ユーザーログイン名>"Snowflakeログイン名を指定します。
pipe = "<データベース名>.<スキーマ名>.<パイプ名>"データのロードに使用するパイプの完全修飾名を指定します。
files.add("<パス>/<ファイル名>", <バイト単位のファイルサイズ>)ファイルオブジェクトリストでロードするファイルへのパスを指定します。
オプションで、Snowpipeがデータのロードに必要な操作を計算するときの遅延を回避するために、各ファイルのサイズをバイト単位で指定します。
指定するパスは、ファイルが配置されているステージを 基準 にする必要があります。ファイル拡張子を含む各ファイルの完全な名前を含めます。たとえば、gzip圧縮された CSV ファイルには、拡張子
.csv.gzが付いている場合があります。
Python SDK のサンプルプログラム¶
サンプルコードを実行する前に、次のプレースホルダー値を置き換えます。
<秘密キーパス>Use key pair authentication & key rotation ( Data loading preparation using the Snowpipe REST API 内)で作成した秘密キーファイルへのローカルパスを指定します。
get_private_key_passphrase()内のreturn "<秘密キーパスフレーズ>"暗号化されたキーを生成した場合は、
get_private_key_passphrase()関数を実装して、そのキーを復号化するためのパスフレーズを返します。account='<アカウント識別子>'アカウントの一意の識別子を指定します(Snowflakeが提供)。
hostの説明もご参照ください。host='<アカウント識別子>.snowflakecomputing.com'Snowflakeアカウントの一意のホスト名を指定します。
アカウント識別子の推奨形式は次のとおりです。
organization_name-account_nameSnowflake組織とアカウントの名前。詳細については、 形式1(推奨): 組織内のアカウント名 をご参照ください。
または、必要に応じて、アカウントがホストされている リージョン および クラウドプラットフォーム とともに、 アカウントロケーター を指定します。詳細については、 形式2: リージョン内のアカウントロケーター をご参照ください。
user='<user_login_name>'Snowflakeログイン名を指定します。
pipe='<db_name>.<schema_name>.<pipe_name>'データのロードに使用するパイプの完全修飾名を指定します。
file_list=['<path>/<filename>', '<path>/<filename>']|staged_file_list=[StagedFile('<path>/<filename>', <file_size_in_bytes>), StagedFile('<path>/<filename>', <file_size_in_bytes>)]ファイルオブジェクトリストでロードするファイルへのパスを指定します。
指定するパスは、ファイルが配置されているステージを 基準 にする必要があります。ファイル拡張子を含む各ファイルの完全な名前を含めます。たとえば、gzip圧縮された CSV ファイルには、拡張子
.csv.gzが付いている場合があります。オプションで、Snowpipeがデータのロードに必要な操作を計算するときの遅延を回避するために、各ファイルのサイズをバイト単位で指定します。
View the load history¶
Snowflakeは、ロード履歴を表示するための REST エンドポイント と Snowflake Information Schema テーブル関数を提供します。
REST エンドポイント:
情報スキーマテーブル関数:
アカウント使用状況ビュー:
REST エンドポイントの呼び出しとは異なり、Information Schemaテーブル関数またはAccount Usageビューのいずれかをクエリするには、稼働中のウェアハウスが必要です。
Delete staged files¶
データが正常にロードされ、ファイルが不要になったら、ステージングされたファイルを削除します。手順については、 Snowpipeがデータをロードした後のステージングされたファイルの削除 をご参照ください。