Alteryx DesignerでSnowflakeにS3 Staringを使ったバルク接続でデータを書き込む方法をご紹介します
今回は、Alteryx Designer Desktopを使って、SnowflakeにS3 Stagingでのバルク接続でデータを保存していきたいと思います。バルク接続は高速でデータの保存ができるため、データ量が多い場合は有効な手段です。
バルク接続は、一度クラウド上にファイルを保存し、そこから一気にデータを流し込む方法となり、ステージングするスペースが必要になります。DesignerからSnowflakeに書き込む場合は、Snowflake内部のステージングを使うか、もしくは別で準備したAmazonS3上をステージング環境として使うことができます。今回は、Amazon S3をステージングとして使う方法をご紹介します。
なお、Amazon S3ステージングを行う場合は、Amazon S3にてあらかじめバケットを作成しておき、アクセスキーID、シークレットアクセスキーを作成しておく必要があります。
なお、今回の手順はDCMオンで設定を行っています。また、ODBCドライバとして、Alteryx社の配布しているSimba ODBCドライバを使用しています。
事前準備
ODBCドライバの導入と、Amazon S3バケットの作成、アクセスキーID、シークレットアクセスキーの作成が必要です。以下の内容をご覧ください。
Amazon S3バケットの作成、アクセスキーID、シークレットアクセスキーの作成
ODBCドライバについて
前提条件として、ODBCドライバまたはSimba ODBCドライバを使うため、ODBCの設定は事前に行っておいてください。
※Alteryx社にて検証済みのSimba ODBCドライバを推奨します。
実際の手順
まず、データ出力ツールを配置し、接続を設定していきます。
データ接続画面で、「データソース」をクリックします。その中のSnowflakeの「バルク」を選択します。
以下のように「バルク接続」のダイアログが出てきます。
ここで「ステージングメソッド」を選択する必要があります。選択できる項目としては、
- Amazon S3
- ローカル
となります。今回は、「Amazon S3」を使っていきたいと思います。ステージングメソッドを「Amazon S3」に変更すると、SnowflakeバルクとAmazon S3バルク両方の設定が必要になります。まず、Snowflakeバルクを設定していきましょう。
Snowflakeバルク設定
これにより、「接続マネージャー」ダイアログが立ち上がります。
ここで、「+新規」をクリックします。
デフォルトでは以下の通りになっています。
以下の通り設定します。
次に、資格情報の接続を行います。「資格情報の接続」ボタンをクリックします。
資格情報の認証方式は「ユーザー名とパスワード」のみ可能で、一旦そちらを選択し、資格情報を作成していきます。
ユーザー名とパスワードを埋めていきましょう。
ここで、必要項目である「資格情報名」「ユーザー名」「パスワード」を入力し、「接続テスト」ボタンを押すとテストができます。問題なければ「作成/リンク」ボタンを押しましょう。
これにより設定が作成されるため、あとは「接続」ボタンを押すことで、設定が反映されます。
AmazonS3バルク設定
続いて、AmazonS3側の設定を行っていきます。「接続を設定します」をクリックしてください。
次に、「+新規」ボタンをクリックします。
ここでAWS S3側の細かい設定を入れていきます。データソース名は任意の名称、サーバー側の暗号化はS3側で行っている設定をそのまま選択してください。バケット名も、あらかじめ用意していたAmazon S3バケット名を指定します。ここで、バケット名は、S3URIとかは必要ありません。言い方を変えると、S3URIを取得した際に頭についている「s3://」の部分は不要です。
設定が完了したら、「保存」ボタンをクリックします。次に、資格情報を接続します。「+資格情報の接続」をクリックしてください。
認証方式は、「AWS IAMをアクセスキー」のみとなります。「AWS IAM アクセスキー」のところで、資格情報のドロップダウンリストから「新しい資格情報の作成」をクリックしてください。
資格情報名は任意の名称を記載します。アクセスキー、シークレットアクセスキーはAWSから取得が必要です。
設定が終わったら、「作成/リンク」をクリックします。
これで基本的な設定は完了なので、「接続」をクリックします。
以下ダイアログに戻りますので、問題なければ「OK」をクリックします。
次に、出力先のテーブル名を入力します。
これでバルク保存が可能となります。
データ出力ツールでは以下のような設定になります。
出力オプションなどは、いくつかから選択可能です。シチュエーションに応じて選択してください。「新しいテーブルを作成する」の場合は、テーブルがない1回目は良いですが、すでにテーブルができてしまうとエラーになってしまうため、適切なオプションに変更する必要があります。
なお、今回は「SQLステートメント事前作成」オプションは指定していませんが、ODBCドライバ側にROLEやWAREHOUSE設定を入れているためです。ドライバ側で設定していない場合はこちらで設定が必要になりますのでご注意ください(ODBC設定で触れています)。