日本語版は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ロールが付与されていること(ストレージ統合の作成に必要)。 - コンピュート用の稼働中の 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 時間に基づく必要があります。
- タスク実行の監視 — タスク履歴を定期的にチェックして、失敗や遅延がないか確認してください。