見出し画像

Snowflakeさわってみた。内部ステージのファイルにクエリしてみた。

分析屋の下滝です。

Snowflakeさわってみよう、の四回目です。

Snowflakeには、内部ステージと呼ばれる、データファイル(cvsなど)を格納できる場所が用意されています。

公式ドキュメントでは、次の図で説明がされています。

https://docs.snowflake.com/en/user-guide/data-load-local-file-system.html

上部には、ローカルにデータファイルがあることが示されています。データファイルは、PUTコマンドで、内部ステージにファイルをアップロードして、最終的には、COPY INTO コマンドで内部ストレージからテーブルにデータをロードしています。

内部ステージには、以下の3種類があります。
・ユーザーステージ(図の右):各ユーザーごとにデフォルトで存在。
・テーブルステージ(図の真ん中):テーブルごとにデフォルトで存在。
・名前付きステージ(図の左):データベースのオブジェクトです。CREATE STAGE コマンドで作成します。

これらステージの使い分けは、公式ドキュメントを参照してください

内部ステージは、ファイルをテーブルに格納する(COPY INTOコマンドを使用)前の段階として使いますが、内部ステージにあるファイルに対してクエリを直接実行することもできます。

今回は、内部ステージのファイルに対して、クエリを実行してみます。

まずは、次のitem.csvを内部ステージにアップロードします。

1,aaaa
2,bbbb

PUTコマンドを利用して、my_int_stage という名前付きステージにファイルをアップロードします。

put file://item.csv @my_int_stage;

名前付きステージの作成、ステージへのローカルファイルアップロード、コマンドラインでのコマンドの実行に関しては過去の記事を参照してください。

LIST コマンドでファイルが格納されているかどうかを確認します。

このファイルに対してクエリを実行します(詳しくは公式ドキュメントを参照してください)。

SELECT t.$1, t.$2 FROM @my_int_stage t;

$1と$2は、1列目、2列目のカラムをそれぞれ表します。

クエリの結果は、次のようになります。

ファイルの内容が取得されていることが確認できました。

where で絞り込むこともできます。

SELECT t.$1, t.$2 FROM @my_int_stage t WHERE t.$2 = 'aaaa';

クエリの結果は、次のようになります。

公式ドキュメントでは、次のような例も紹介されています
・複数のcsvファイルを同時にクエリする例
・jsonファイルに対してクエリする例

今回は以上です。

株式会社分析屋について

ホームページはこちら。

noteでの会社紹介記事はこちら。

【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。