日本語版はAIによる翻訳です。正確な情報については英語版をご参照ください。
COPY INTO を使用して、SnowflakeからAuxiaのGCSバケットにデータをエクスポートして取り込む方法を説明します。
SnowflakeとAuxiaを連携する際の推奨方法はDirect Connectionです。読み取り専用ロールを通じてAuxiaがテーブルを直接読み取るため、エクスポートジョブの構築や保守は不要です。お客様のスケジュールでファイルをプッシュしたい場合は、GCS Exportをご利用ください。
1. 概要
このアプローチでは、SnowflakeのネイティブCOPY INTO コマンドを使用して、SnowflakeからAuxiaのGCSバケットに直接データをエクスポートします。その後、Auxiaがそこからデータを取り込みます。
フロー
2. Auxiaから提供されるもの
Auxiaは次の情報を提供します。- 送信先GCSバケットパス(例:
gcs://<your_bucket_path>/)
3. 前提条件
- このセットアップを行うユーザーに
ACCOUNTADMINロールが付与されていること(ストレージ統合(Storage Integration)の作成に必要)。 - コンピュート用の稼働中のSnowflakeウェアハウス。
4. SnowflakeでのSQLの実行
このガイドのすべてのSQLコマンドは、SnowflakeのWebインターフェース(Snowsight)を使用して実行します。 SQLワークシートを開く手順-
左側のナビゲーションメニューで、Projects > Worksheetsを選択します。

-
右上の + ボタンをクリックします。

- SQL Worksheetを選択します。
-
ワークシートの右上でRoleを選択します(ストレージ統合コマンドには
ACCOUNTADMINを使用)。
- コンピュートリソース用のWarehouseを選択します。
- 必要に応じて、DatabaseとSchemaのコンテキストを選択します。
-
ステートメントにカーソルを置き、Runボタンをクリックします(Macでは
Cmd+Enter、WindowsではCtrl+Enter)。
- すべてのステートメントを実行するには、先にテキスト全体を選択します。
5. 必要なアクション
ステップ1:ストレージ統合の作成
Google Cloud ConsoleからコピーしたGCSバケットパスは
gs:// プレフィックスを使用します。Snowflakeでは代わりに gcs:// プレフィックスが必要です。ACCOUNTADMIN ロールを選択した状態で、ワークシートで次のSQLを実行します。

ステップ2:サービスアカウントの取得とAuxiaへの送付
次のSQLを実行して、Snowflakeが生成したGCPサービスアカウントを取得します。STORAGE_GCP_SERVICE_ACCOUNT の行を見つけ、その property_value をコピーします。

ステップ3:スケジュールエクスポートの設定
Auxiaが書き込みアクセスの付与を確認したら、次に示すフォーマットでGCSバケットにデータを配信するスケジュールエクスポートを設定します。 コストに関する考慮事項- ウェアハウスコンピュート:各タスク実行時に、ウェアハウスのサイズと実行時間に基づいてSnowflakeクレジットが消費されます。課金は秒単位で、実行ごとに最低1分です。
- データ転送料金:Snowflakeはクロスリージョンまたはクロスクラウドのデータ転送に対してバイト単位の転送料金を請求します。同一リージョン内の転送は無料です。
- 推奨事項:適切なサイズのウェアハウス(例:小規模データセットにはX-Small)を使用し、データ量に基づいてエクスポート頻度を検討してください。
ファイルフォーマット
- Parquet(必須):エクスポートクエリで
FILE_FORMAT = (TYPE = PARQUET)を明示的に指定する必要があります。SnowflakeはParquetファイルにデフォルトでSnappy圧縮を使用します。
パーティショニング
データはUTC日付(dt=YYYY-MM-DD/)またはUTC日付と時間(dt=YYYY-MM-DD/hr=HH/)でパーティション分割する必要があります。各フォルダには、そのUTC時間(時間単位のエクスポート)またはUTC日(日単位のエクスポート)にSnowflakeに追加されたデータが含まれる必要があります。
日次パーティショニング
データ要件
- エクスポートしたファイルはイミュータブルとして扱ってください。書き込み後に変更や削除をしないでください。
- すべてのパーティショニングにUTCタイムスタンプを使用してください。
export_timestamp)を使用し、そのカラムに基づいてフィルタリングして対応するUTC期間のデータを抽出することです。正確なフィルタリングロジックは、データ構造とパイプラインによって異なります。
参考として、Snowflake Taskの例を次に示します。スケジュール、フィルタリングロジック、エクスポートパスは例です。データパイプラインに合わせて変更してください。
サンプル:時間単位エクスポート
サンプル:日次エクスポート


6. タスク実行の監視
エクスポートタスクが正しく実行されていることを確認するには、次のSQLコマンドを使用します。 すべてのタスクを一覧表示
STATE カラムに SUCCEEDED と表示されます。

7. Auxiaへの確認
エクスポートタスクの実行を確認できたら、Auxiaに通知し、次の内容をお知らせください。- エクスポート頻度(時間単位または日次)
- エクスポートするテーブル
8. 推奨プラクティス
- Parquetフォーマットを使用:SnowflakeはデフォルトでSnappy圧縮を使用してParquetファイルを圧縮します。
- UTC日付(日次)またはUTC日付/時間(時間単位)でパーティション分割
- イミュータビリティの確保:ファイルが書き込まれたら、変更や削除をしないでください。
- UTCタイムスタンプを使用:すべてのパーティショニングはUTC時間に基づく必要があります。
- タスク実行の監視:タスク履歴を定期的にチェックして、失敗や遅延がないか確認してください。