データ統合基盤 CS アナリティクスで Snowflake へのSQLクエリ実行時にUSEコマンドを利用してみた
こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。
以前にこちらのエントリで、弊社プロダクトのカスタマーストーリー アナリティクス(Customer Story Analytics:CSA)で「SQLクエリをSnowflakeに対して実行する機能」についてご紹介しました。
こちらのエントリでは単純な「SELECT-INSERT」のSQLについてご紹介しましたが、実際のSQL実行では特定の「ロール」、「ウェアハウス」、「データベース」、「スキーマ」を指定してクエリを実行したい場合があるかと思います。
今回はそんな時に利用できる「USE」コマンドを利用したSQLクエリの実行を、実際に試してみました。
「CSA」の概要についてはこちらの記事をご参照ください。
また、「CSA JMC」バージョン5.0の概要については、こちらの記事で紹介しています。
CSA JMCの挙動確認バージョン
当エントリの内容は以下のCSA JMCバージョンで挙動を確認しています。
- CSA JMC v5.0.0
Snowflakeの「USE」コマンドとは?
Snowflakeの「USE」コマンドを利用すると、現在のセッションで利用する「ロール」、「ウェアハウス」、「データベース」、「スキーマ」を指定することができます。
例えば「このクエリの実行には少し負荷がかかるので、大きめのサイズのウェアハウスを利用したい」などのケースにおいては、「USE WAREHOUSE」コマンドを利用することにより、大きめのサイズの「ウェアハウス」を指定してクエリを実行することができます。
USE WAREHOUSE LARGE_SIZE_WH;
前提
「CSA JMC」における「Snowflake接続設定」は以下のように設定しています。
また、ユーザに割り当てられているロールCSA
は独自に作成したカスタムロールですが、今回の検証のため、以下のようにSYSADMIN
ロールを追加でユーザに割り当てています。
GRANT ROLE SYSADMIN TO USER CSA;
「USE」コマンドを利用してみた
では、実際にそれぞれ試してみたいと思います。SQLファイルを用意して「構成要素」として登録し、それぞれ「CSA JMC」の「ジョブ」で動かしてみます。
USE ROLE
では、まずはROLEからです。SYSADMIN
ロールでしか利用できないデータベース「ROLE_DEMO」にテーブルを作成するクエリで試します。
USE ROLE SYSADMIN; CREATE TABLE ROLE_DEMO.PUBLIC.REGION AS SELECT R_REGIONKEY, R_NAME, R_COMMENT FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION ;
なお、このクエリをCSA
ロールで実行すると以下のようにエラーとなります。
SQLコンパイルエラー: Database 「ROLE_DEMO」は存在しないか、許可されていません。
実際にCSAのジョブでこのSQLを実行するように設定して実行すると、
成功しました。Snowflake上でも問題なくテーブルが作成されています。
USE WAREHOUSE
次に、WAREHOUSEです。接続設定ではCSA_WH
を利用する設定としていますが、別のXSMALL_WH
を指定してSELECTクエリを投げてみます。
USE WAREHOUSE XSMALL_WH; SELECT R_REGIONKEY, R_NAME, R_COMMENT FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION ;
成功しました。こちらは、Snowflakeの「履歴」から結果を確認します。ちゃんとXSMALL_WH
が利用されていますね。
USE DATABASE
続いて、DATABASEです。接続設定ではCSA
を利用する設定ですが、DEMO_DB
を指定して、DEMO_DB.PUBLIC.REGION
にテーブルを作成するクエリとします。CREATE TABLE
では、データベースを明示していないので、セッションで利用中のデータベース内(ここではDEMO_DB
)に作成されるはずです。
USE DATABASE DEMO_DB; CREATE TABLE PUBLIC.REGION AS SELECT R_REGIONKEY, R_NAME, R_COMMENT FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION ;
成功しました。Snowflake上でも想定通りDEMO_DB
内にテーブルが作成されています。
USE SCHEMA
最後に、SCHEMAです。まずは事前にCSA
データベースに、CSA_SAMPLE
スキーマを作成しておきます。
CREATE SCHEMA CSA_SAMPLE;
その上で、以下のようにCSA_SAMPLE
スキーマを指定してからREGION
テーブルを作成します。データベースとスキーマは、接続設定でCSA
とPUBLIC
を指定しているので、通常ではCSA.PUBLIC.REGION
にテーブルが作成されるはずですが、CSA_SAMPLE
スキーマを指定したのでCSA.CSA_SAMPLE.REGION
にテーブルが作成されます。
USE SCHEMA CSA_SAMPLE; CREATE TABLE REGION AS SELECT R_REGIONKEY, R_NAME, R_COMMENT FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION ;
成功しました。Snowflake上でも想定通りCSA.CSA_SAMPLE.REGION
にテーブルが作成されています。
まとめ
以上、「USE」コマンドを利用したSQLクエリの実行についてのご紹介でした。接続設定に設定された以外のウェアハウス指定などを行いたい場合には、是非お試しいただければと思います。
お知らせ
2020/09/29(火)にCSアナリティクスが対応している各データウェアハウス(Redshift、BigQuery、Snowflake)と、CSアナリティクスについての紹介を行うウェビナーを開催予定です。ご興味がありましたら是非お申し込みください。