📖

SnowPro Core資格への道 ~Part10:ディレクトリテーブル~

に公開

はじめに

9月のSnowflake World Tour TokyoまでにSnowPro Coreをとります!

試験を8月28日(木)に受けようと思います。あと33日。
全然進歩している感じがしない・・・。5月に一度心折れたときは49%だったのが今65%という感じ。合格ラインに達するためにはまだまだ修行が必要そう😢

現在こちらのUdemyの問題を解いています。
Snowflake SnowPro Core Certification Practice Tests COF-C02

今日のテーマはディレクトリテーブルです。

ディレクトリテーブルとは

https://docs.snowflake.com/ja/user-guide/data-load-dirtables
ディレクトリテーブルは、ステージで複数層になった暗黙のオブジェクトで(独立したデータベースオブジェクトではない)、ステージ内のデータファイルに関するファイルレベルのメタデータを格納するため、概念的には外部テーブルに似ています。ディレクトリテーブルには、独自の付与可能な権限はありません。

Snowflakeのディレクトリテーブルは、ステージングされたファイルに関するメタデータを表形式で提供し、データロードプロセスを効率化するための機能です。主な特徴は以下の通りです。

ファイルメタデータの自動検出とクエリ

自動検出: ステージ(内部または外部)に追加されたファイルを自動的に検出し、そのメタデータ(ファイル名、サイズ、最終更新日時など)をテーブルに記録します。

クエリ機能: SQLクエリを使用して、ステージ内のファイルの一覧を取得したり、特定の条件でファイルをフィルタリングしたりできます。これにより、ロードするファイルを正確に把握できます。

データロードの効率化

選択的なロード: ファイル名や更新日時などのメタデータに基づいて、ロードするファイルを柔軟に選択できます。例えば、特定の期間に更新されたファイルのみをロードすることが可能です。

パイプラインの自動化: ディレクトリテーブルとSnowpipeを組み合わせることで、新しいファイルがステージに追加された際に自動的にデータロードを実行するパイプラインを構築できます。

アクセス制御とセキュリティ

権限設定: ディレクトリテーブルへのアクセスは、ステージに対する権限によって制御されます。読み取り(READ)や書き込み(WRITE)などの権限をロールに付与することで、セキュリティを確保できます。

コスト管理

更新方法による課金:
自動更新: Snowpipeを利用して自動でメタデータを更新する場合、Snowpipeの料金が発生します。
手動更新: 手動でメタデータを更新する場合、標準のクラウドサービス料金が適用されます。

ディレクトリテーブルのメタデータを更新する場合、通知経由または手動(ALTER STAGE <ステージ名> REFRESH 経由)を問わず、少額のメンテナンス費用が発生します。この少額のメンテナンス費用は、クラウドサービスの料金に含まれます。

さらに、クラウドプラットフォーム通知をご利用の場合、追加料金が発生します。これは、請求明細書にSnowpipeの料金として記載されます。Snowpipeの料金は、自動更新をトリガーするイベント通知にSnowpipeが使用されるため発生します。

SQLを動かしてみた

-- 1.データベース作成
create OR replace database db_directory_tbl;

-- 2. Snowflake内部ステージを作成
CREATE OR REPLACE STAGE my_stage
url = 's3://frostyfridaychallenges/challenge_3/'
DIRECTORY = (ENABLE = TRUE);

-- 3. ディレクトリ同期
ALTER STAGE my_stage REFRESH;

-- 4. 確認
SELECT * FROM DIRECTORY( @my_stage );

-- 5.STREAMを作ってみる
CREATE STREAM my_directory_stream 
ON STAGE my_stage;

-- 6.STREAMで変更履歴の確認が可能
select * from my_directory_stream;

実行してみたところ、Frosty FridayWeek3のディレクトリテーブルの確認ができます。

STREAMも同じステージに作成してみました。ファイルに変更等があれば、6のmy_directory_streamをselectすることで、変更履歴が確認可能です。(こちらも結果を確認しましたが、変更がないのでデータは0件です)

まとめ

SnowPro Associateの認定を受けて、Coreも頑張ろう!と意気込んでUdemyを2回目解いてみましたが玉砕しました・・・。引き続きブログへのアウトプットは続けていきます。

Discussion