SnowflakeのWEBのインターフェース(Snowsight)よりデータをロードする方法をご紹介します
今回は、SnowflakeのWEB画面(Snowsight)からデータをロードしてみたいと思います。GUIでの操作であればSQLを知らなくてもデータをロードすることが可能です(しばらくこのような機能がSnowSightにはなかったのですがようやく実装されました)。
今回はWindowsOS(Windows10)からの操作となります。
まず、SnowflakeのWEBのUI(Snowsight)にログインします。
左のメニューより「データ」の「データベース」を選択します。
今回は、TECHBLOGというデータベースのPUBLICスキーマ内にデータを取り込んでみたいと思います。このために、右側に表示されているデータベースのリストより、「TECHBLOG」の「PUBLIC」スキーマを選択します。
「PUBLIC」スキーマを選択すると、さらに右側にスキーマの詳細が表示されるので、右上の「作成」ボタンからデータの投入が可能です。
「作成」ボタンから「テーブル」さらに「ファイルから」を選択します。
ここからは別の画面がポップアップします。
まずはロードしたいファイルを選択していきましょう。「閲覧」ボタンをクリックし、ローカルに保存されているファイルを選択しましょう。もしくはそのままエクスプローラーからファイルをドラッグ&ドロップも可能です。
この時、注意点としては「CSV/TSV」「JSON」「ORC」「AVRO」「PARQUET」形式のファイルのみ対応しているという点でしょうか。
今回はあらかじめ文字コードをUTF-8にしたCSVをExcelで作成したファイルを使用しています(文字コードがShift-JIS形式の場合はうまく取り込みができませんでした)。
問題なく取り込める形式であれば、以下のように「閲覧」の画面が読み込むファイルリストになります。
なお、複数のファイルを一度に取り込むことが可能です。
次に、取り込み先のDB、スキーマ、テーブルを決めないといけません。同じ画面の下の方の以下の部分で指定します。
ここで「+データベース」をクリックするとデータベースの作成が可能です。ここではスキーマは作れないので「PUBLIC」にしか保存できません。
代わりに、既存のデータベースの指定スキーマに保存することが可能です。「+データベース」ボタンの左側のところで選択することができます。この場合はPUBLICスキーマ以外にも保存が可能です(新規作成はできません)。
さらにテーブルを下側の部分で選択します。「テーブルを選択または作成」となっていれば、名前のところに新規作成したいテーブル名を入力してください。既存のテーブルの場合は、「テーブルを選択または作成」から選択が可能です。
今回は新規テーブルを作りたいので以下のように「TECHBLOG」データベースの「PUBLIC」スキーマを選択し(すでにされていますが)、新規テーブルを作成、名前を「TestLoad」とします。ちなみに、日本語名などを入れようとするエラーがでるので、ダブルクォテーションで囲うことで日本語名のテーブルを作成することができます。
これで「次へ」ボタンを押すと、列名に日本語を含んでいたのでエラーが出ています。この場合もダブルクォテーションで囲ってあげることで読み込みが可能となります。
訂正後は以下のようにエラーがなくなります。
「ロード」ボタンをクリックしましょう。ちなみに、左下に「SQLを表示」ボタンがあるのでクリックするとSQLを確認することができます。あくまで確認することができるというだけで、SQLの変更はできません(ワークシートを開くボタンもありますが、ワークシートを開いてSQLを実行してもエラーで止まります)。
ここで、「ロード」ボタンをクリックすればロードが始まります。エラーなく終了すれば、以下のような画面がでます。
ここで「クエリデータ」ボタンを押すと、ワークシートが開き、SQLを実行する画面に遷移できます。
あとは自由にSQLを実行してデータを確認したりすることが可能となります。
エラーがあった場合
複数ファイルなどを取り込んでいた時にエラーなどがあると、以下のように表示されます。表示内容などは実行時のエラーオプションによって変化するのでこの限りではないことにご注意ください。
なお、複数ファイル取り込み時は、基本形に同じスキーマ(フィールド名とフィールドの数、データ型)である必要がありますが、一列多かったり少なかったり、といった場合はうまく取り込んでくれました。ただ、フィールドが入れ替わったりしているとエラーとなりますのでご注意ください。基本は同じスキーマであることを推奨したいと思います。
テーブルにデータを追加する場合
今回は、新規テーブルにデータをロードしましたが、既存のテーブルにデータをロードする際は、以下のようにどのフィールドのどの列を取り込むか、ということを指定する画面が出ます。
なお、取り込み時のファイルとテーブルのマッピングは、フィールド名で一致させるか、フィールドの位置で一致させるかを選択することが可能です(上のスクリーンショットの「列名で一致」のところで変更可能です)。
また、ファイル形式も選択することが可能です。CSV形式も特殊なものであればここでカスタマイズしてください(一度他の形式を選択してからまたCSVを選択するとカスタマイズができます)。
データを追加メニューから可能です
データメニューの「データベース」からこの機能にアクセスしていましたが、「データを追加」からもアクセス可能です。
まとめ
- SnowflakeのWEBのUI(SnowSight)にてデータの一括ロードを行いました
- CSVファイルなどはShift-JIS形式のものはロードできないため、UTF-8形式にしてからロードしましょう
- 複数ファイルもロード可能です
- 複数ファイルをロードする場合は基本的にはスキーマをあわせてください
- フィールド名が多少少なかったり多かったりしてもロードしてくれました
- テーブルの新規作成、既存テーブルへのロードいずれも可能です
- 既存テーブルへのロード時は、追加しかできません(現在のデータを削除してからロードといったことはできません)
Snowflakeは進化が早いので、画面構成など変わったりすることもございますが、ご了承ください。
※2024/08/20時点の情報です