1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Snowflakeから大規模な(TB級の)テーブルをFabricのコピーアクティビティで取り込む方法-Snowflake側でどのようなCOPY INTOオプションになっているかも確認-

Last updated at Posted at 2025-03-18

Snowflakeのサンプルデータベースから、大規模な(10TB~30TBかそれ以上ある)テーブルをFabricのパイプラインのコピーアクティビティで取り込む際に苦戦したので、備忘録としてそのエラーと解決策、原因をまとめました。

試行錯誤前のエラー

コピーアクティビティの設定値

image.png
image.png
image.png

実行結果詳細

image.png

エラーメッセージ

ErrorCode=SnowflakeExportCopyCommandOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Snowflake Export Copy Command operation failed,Source=Microsoft.DataTransfer.Connectors.Snowflake,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Failed to execute the query command during read operation.,Source=Microsoft.DataTransfer.Connectors.GenericAdoNet,''Type=Apache.Arrow.Adbc.C.CAdbcDriverImporter+ImportedAdbcException,Message=[Snowflake] 100089 (42501): Failed to access remote file: access denied. Please check your credentials,Source=Apache.Arrow.Adbc,'

解決策

設定値

重要設定

  • ソースの[追加の Snowflake コピー オプション]にMAX_FILE_SIZEを1073741824に指定
  • Snowflakeのウェアハウスのサイズを大きめにする(今回はXsmallからLargeに変更)
  • Write batch timeoutをデフォルトから伸ばす(今回は8h)

image.png

image.png

image.png

実行結果詳細

明らかに「ソースからステージングまでの期間」が前回より短縮された
「ステージングから目的までの期間」が約1時間半かかっていることからWrite batch timeoutは伸ばすことが必須だといえる(デフォルトの30分では不十分)

image.png

Snowflake側からのCOPY INTOの結果詳細
FabricのUIから設定したMAX_FILE_SIZEがクエリに反映されていることが分かる

image.png

原因はワークスペースステージングではなく、「unloadに時間かかってる間にSASのトークンの期限が切れてる」からと予想

Azure Data Factory または Azure Synapse Analytics を使用して、Snowflake V2 のデータをコピーして変換するから、ワークスペースステージングが怪しいと思ったが、

image.png

失敗時のコピーアクティビティの裏側(Snowflakeのクエリ履歴から)を確認してい見るとワークスペースステージングのSASは正常に入力されていることを確認

image.png

COPY INTO 'azure://~~~/_system/services/DI/pipelines/~~~~/SnowflakeExportCopyCommand/' FROM "TPCDS_SF100TCL"."CATALOG_SALES" CREDENTIALS = (AZURE_SAS_TOKEN = '☺☺☺☺☺') FILE_FORMAT = (type = CSV COMPRESSION = NONE RECORD_DELIMITER = '
' FIELD_DELIMITER = ',' FIELD_OPTIONALLY_ENCLOSED_BY = '"' ESCAPE = '"' NULL_IF = '') HEADER = TRUE SINGLE = FALSE OVERWRITE = TRUE

試しに小さいテーブルでも(ワークスペースステージングON)試してみたところ
image.png

成功。原因はワークスペースステージングではないかもしれない
image.png

以上などから
原因はCOPY INTOが長時間に及んでいる際にSASトークンの期限が切れてることだと予想

【参考】Fabricパイプラインの追加の Snowflake 形式オプションからParquetを指定するとエラー

SnowflakeのCOPY INTOのオプション設定にも記載がある通り、formatTypeOptionsをParquetにしてやりたかったが、現状Fabricのパイプラインからは指定するとエラーになる。

設定値

ソースの追加の Snowflake 形式オプションに以下を入力
image.png

JSONにも反映されていることを確認
image.png

しかしエラーになる

以下エラーメッセージ

ErrorCode=SnowflakeExportCopyCommandOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Snowflake Export Copy Command operation failed,Source=Microsoft.DataTransfer.Connectors.Snowflake,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Failed to execute the query command during read operation.,Source=Microsoft.DataTransfer.Connectors.GenericAdoNet,''Type=Apache.Arrow.Adbc.C.CAdbcDriverImporter+ImportedAdbcException,Message=[Snowflake] 002135 (42601): SQLコンパイルエラー:
オプション RECORD_DELIMITER は、ファイル形式型 PARQUETには無効です。,Source=Apache.Arrow.Adbc,'

Snowflake側のクエリ履歴を確認

type=Parquetが反映されているのは確認できるが、
RECORD_DELIMITERなどtype=CSVの時のオプション項目がデフォルトで設定されており、これはParquet時には不要なためエラーとなっている。
現状これをFabric側から消去する方法は見つかっていない。

image.png

参考リンク

用語

storageIntegration

  • Snowflake から外部ストレージ(Azure, AWS, GCP など)と連携するための仕組み
  • ステージングとは別の概念 で、認証やアクセス権限を管理するための Snowflake の機能
  • 例えば Azure Blob Storage や AWS S3 に直接データをコピーしたいときに使う

アンロード

アンロード(UNLOAD)はデータを外部ストレージやステージにエクスポートすること
一方で、ダウンロード(DOWNLOAD)はデータをローカルPC に保存
混同しないように注意

アンロードとダウンロードの由来 🔹 なぜ「アン(UNLOAD)」?

「UNLOAD」は、システム(データベースや DWH)から外部ストレージにデータを移すことを指す。
「システムからデータを外へ放出する(Unload = 降ろす)」というイメージ。
データベースやDWH では、データをそのまま保存することが多いから、外に出すときに「Unload(降ろす)」と言う。

🔹 なぜ「ダウン(DOWNLOAD)」?

「ダウンロード(DOWNLOAD)」は、主にユーザー視点で「データをローカル環境に取得する」ことを指す。
「上のシステム(クラウドやサーバー)から、手元(PC)にデータを持ってくる」
「Download」は「データが高いところ(クラウド)から落ちてくる(Down)」というイメージ。

✅ 「Unload」は昔からある英単語(元々の意味は「荷物を降ろす」)
✅ 「Download」はコンピューター時代に生まれた言葉(デジタルデバイスが普及してから)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?