Snowflake

【Matillion×Snowflake】ロードしたファイル名を取得する

こんちは~yokochanです~

なんか今年の夏は12万年ぶりの暑さだとか。それ、たぶんネアンデルタール人とかまだいた時代じゃないですか?知らんけど笑

そんな過去のことまでは知りたくないけど、Snowflakeテーブルにロードしたデータがどのファイルからロードしたのかくらいは知りたいと思うことありますよね?

SnowflakeでSQL叩けばステージングしたファイルのメタデータを取得することは可能です。

しかし、Matillionを使えばこの操作をGUIで完結することができます。

その方法をご紹介します。

1.Snowflakeで外部ステージを用意する

まずはSnowflake上で外部ステージを作成します。

後ほども書きますが、外部ステージがないとGUIでのメタデータの取得ができません。

2.Matillionのフローを作成する

外部ステージが作成出来たらMatillionフローを作成します。

今回はAzure環境にあるファイルをロードする想定で「Azure Blob Storage Load」を使用します。

ちなみにSnowflake接続であれば他のクラウドストレージサービスでも他のコンポーネントで同様の処理ができます。

設定項目の「Stage」で先ほど作成した外部ステージを選択します。

私は「DEV_00000」という外部ステージを作っていたのでこれを選択します。

設定項目を下の方にスクロールしていくと「Metadata Fields」という項目があるのでそこを選択します。(この設定項目が外部ステージを選択していないと出てこない!)

開くと追加できるメタデータが表示されるので、追加したい項目を右側に持っていきます。

今回はファイル名を取ってきたいので「metadata$filename」を移しましょう。

行数と取り込んだ時間も追加できるみたいですね。

これで取得したファイル名をテーブルへのコピーができる状態になります。

補足

これはSnowflakeがステージングしたファイルのメタデータを保持するという性質があるからMatillion上でも子のメタデータの取得ができるということなので、他のDWHでは使うことができません。

いや~Snowflakeは偉いですね笑

参考ページ

SnowflakeのCREATE STAGE

ステージングされたファイルのメタデータの取得

MatillionのAzureLoadコンポーネントのマニュアル

yokochan
データ基盤構築やデータ可視化をやっています。 夏は沖縄の海、冬は北海道の山、年がら年中ももクロのライブ会場。