0
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 の外部ステージにある Parquet ファイルを扱う方法

Last updated at Posted at 2024-12-13

この記事では、AWS S3 上の Parquet ファイルを Snowflake にロードする際に必要なスキーマ確認やデータ操作手順を解説します。
実務で役立つ情報を備忘録としてまとめたものです。

外部ステージの確認

外部ステージ情報確認

Snowflake の外部ステージを利用して S3 に格納された Parquet ファイルを扱う前に、現在設定されているステージ情報を確認します。

show stages like 'S3_STAGE';

結果例:

created_on name database_name schema_name url ...(省略)...
2024-12-09 01:11:23.789 +0900 S3_STAGE TEST_DB TEST_SCHEMA s3://test_bucket/import_data ...(省略)...

外部ステージの設定変更

S3 の URL が誤っている場合、以下のコマンドで修正できます。

alter stage S3_STAGE set url = 's3://test_bucket/export_data';

修正後、再度確認しましょう。

show stages like 'S3_STAGE';

結果例:

created_on name database_name schema_name url ...(省略)...
2024-12-09 01:11:23.789 +0900 S3_STAGE TEST_DB TEST_SCHEMA s3://test_bucket/export_data ...(省略)...

S3 上のファイル確認

外部ステージに格納されているファイルを確認します。

list @test_db.test_schema.s3_stage;

結果例:

name size md5 last_modified
s3://test_bucket/export_data/sales_data/LOAD00000001.parquet 123456 aaaa1234bbb56789 Mon, 9 Dec 2024 01:12:34 GMT
s3://test_bucket/export_data/sales_data/LOAD00000002.parquet 234567 jjj5678rrr123456bbd Mon, 9 Dec 2024 01:12:36 GMT
s3://test_bucket/export_data/sales_data/LOAD00000003.parquet 345678 bbb3456ccc789ddd Mon, 9 Dec 2024 01:12:38 GMT

Parquet ファイルのスキーマ確認

Parquet フォーマットの作成

スキーマ確認のため、まず Parquet フォーマットを作成します。

create or replace file format test_db.test_schema.parquet_format type = parquet;

parquet のスキーマ定義の参照

次に、infer_schema 関数を利用してファイルのスキーマを推測します。

select
  *
from table(
  infer_schema(
    location=>'@test_db.test_schema.s3_stage/sales_data/part-0000-aaa123456.parquet'
    , file_format=>'test_db.test_schema.parquet_format'
  )
)
order by order_id
;

結果例:

COLUMN_NAME TYPE NULLABLE EXPRESSION FILENAMES ORDER_ID
ID TEXT TRUE $1:ID::TEXT sales_data/LOAD00000001.parquet 0
NAME TEXT TRUE $1:NAME::TEXT sales_data/LOAD00000001.parquet 1
PRICE NUMBER(10, 0) TRUE $1:PRICE::TEXT sales_data/LOAD00000001.parquet 2
UPDATE_DATE DATE TRUE $1:UPDATE_DATE::DATE sales_data/LOAD00000001.parquet 3

Parquet ファイルのデータ確認

スキーマが確認できたら、データ内容を確認します。

select
  $1:ID::TEXT as id
  , $1:NAME::TEXT as name
  , $1:PRICE::TEXT as price
  , $1:UPDATE_DATE::DATE as update_date
from
  @test_db.test_schema.s3_stage/sales_data
(
  file_format=>'test_db.test_schema.parquet_format'
)

結果例:

id name price update_date
0001 name-1 1000 2024-12-01 11:22:33
0002 name-2 2000 2024-12-01 20:44:55
0003 name-3 3000 2024-12-02 12:23:34

まとめ

本記事では、AWS S3 の外部ステージを利用した Parquet ファイルのスキーマ確認とデータ操作について解説しました。これらの手順を実践すれば、Snowflake における Parquet ファイルの取り扱いがスムーズになります。

Tips:

  • infer_schema はデータ構造の確認に非常に便利です。
  • 大規模なデータセットを扱う場合は、各ファイル(またはその一部)から少量のデータを抽出して、スキーマやデータの内容を事前に確認したほうが効率的に運用できます。
0
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
0
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?