こんちは~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コンポーネントのマニュアル