
Alteryx Designer DesktopでSnowflakeのテーブルを作成してみる
今回は、Alteryx Designer Desktopを使ってSnowflakeにテーブルを作成していきます。
Snowflakeへの書き込みは、「クイック接続」「ODBC」「バルク接続」と3つの手法があります。実際の手法については、以下の通り接続方式によって方法が変わるので以前の記事をご覧ください。
なお、「クイック接続」「ODBC」は同じ動きをしますが、「バルク接続」は方法が全く異なるため、動きが異なります。
保存するデータについて
それでは実際に書き込みをしてみましょう。今回はテストデータで行ってみます。各フィールドのタイプでどのようになるかを見たいので、いくつかのタイプのフィールドを書き込んでみます。
メタデータとしては以下のとおりで、Blob、空間オブジェクト型なども含めています。
ワークフローとしては以下のような形になります。
保存した結果
クイック接続・ODBC接続
データ出力ツールの設定は以下のとおりです。
できあがったテーブルは以下の通りの定義です。
テキストの文字数など、セレクトツールで指定した通りのテーブルです。ところが、空間オブジェクトはBINARY型になってしまっています。このままだと利用できないため、Alteryx側でV_String型に変更してから保存することで、VARCHAR型として保存することが可能です。なお、Snowflakeの文字列型(VARCHAR型)は、最大文字数が16,777,216までとなるのでご注意ください。セレクトツールでは以下のような設定にする必要があります。
なお、Alteryxで再度これを読み込もうとすると、V_WStringとして読み込まれます。
これは、セレクトツールでSpatialObj型に変更することで、空間型として扱えます。
なお、あらかじめGEOGRAPHY型やGEOMETRY型のテーブルを作っていれば、V_String型でそこに書き込めます。Snowflake内で空間処理を行いたい場合は、あらかじめテーブルを作ってそこに追加していく方法をおすすめします。
バルク接続
バルク接続では、空間もしくはBLOBフィールドはバルクロードができません。対応していないデータを保存しようとすると、以下のようにエラーが発生します。
対応していないデータをセレクトツールで省くと、保存するデータのメタデータは以下のようになります。
これにより、保存したテーブルは以下のような定義となります。
データ出力ツールの設定は以下の通りとなります。バルクの場合は、クイック接続・ODBC接続と比べ若干設定項目が多くなっています。
空間型については、クイック接続・ODBC接続と同じくV_String型にすることで、VARCHARとしてバルク保存が可能です。
まとめ
- Alteryx Designer DesktopからSnowflakeに対して直接テーブルの作成を行いました
- セレクトツールで設定した文字数などがしっかり反映されて作成されました
- 空間型はそのまま保存するとBINARY型として保存されます。しかし、このままではAlteryxで利用できないため、V_String型(サイズはSnowflakeのVARCHAR型の最大値16,777,216)にしてから保存する必要があります。しかし、本来はGEOGRAPHYやGEOMETRYとして保存したいところです。その場合は、あらかじめGEOGRAPHY型やGEOMETRY型としてテーブルをSnowflakeで作っておきそこにレコードを追加するようにしてください。読み出しの際は、Alteryx側でセレクトツールでそのままSpatialObj型に変更すれば空間型として使えるようになります。
- バルク接続の場合、BLOB型、空間型は対応していないことに気をつけてください。空間型についてはV_String型で対応可能です。