データ統合基盤 CS アナリティクスで Snowflake にSQLクエリを実行してみた

2020.09.16

こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。

弊社プロダクトのカスタマーストーリー アナリティクス(Customer Story Analytics:CSA)が、Snowflakeに対応しました。対応サービスはCSA Job Management Console(CSA JMC)です。

当エントリでは「CSA JMC」で新しく対応した、「SQLクエリをSnowflakeに対して実行する機能」について「サイト設定の確認」から「ジョブからSQLを実行する」までの流れを紹介します。

「CSA」の概要についてはこちらの記事をご参照ください。

また、「CSA JMC」バージョン5.0の概要については、こちらの記事で紹介しています。

CSA JMCの挙動確認バージョン

当エントリの内容は以下のCSA JMCバージョンで挙動を確認しています。

  • CSA JMC v5.0.0

v5.0で対応した機能について

CSA JMCではv5.0で新しく「SQLクエリをSnowflakeに対して実行する機能」に対応しました。

CSA JMCでは「ジョブ管理機能」という、「ジョブ」という単位で処理を実行するための管理機能を備えています。また、この「ジョブ」は「構成要素」と呼ばれる以下の3つの要素を任意に組合せて定義することができます。

  • データ連携: データファイルをDWHのテーブルに取り込む一連の設定(JMC上でGUIで設定可能)
  • SQL: 任意のSQLコード
  • Python: 任意のPythonコード

今回のv5.0のSnowflake版では「構成要素」としては「SQL」と「Python」に対応しており、「SQL」についてはSnowflakeに対して実行されるようになりました。

サイト設定の確認

まずはサイト設定の確認から行います。メニューの「サイト管理 > サイト設定」から設定画面へ移ります。

初期構築後にはSnowflakeへの「接続設定」と「構成要素設定」が済んでいる状態となっているので、こちらの内容を確認していきます。

接続設定

まずは「Snowflake接続」タブの接続設定からです。

Snowflakeへの接続情報が設定されています。今回ではSQLクエリをSnowflakeに対して実行する際に、この接続情報を利用してSnowflakeへ接続することになります。

設定に問題なければそのままで大丈夫です。こちらの設定画面で接続情報を変更することもできますので、もし変更した場合には「接続テスト」をクリックして、問題なければ「保存」します。

構成要素設定

つぎに「構成要素設定」タブです。

こちらでは「SQL用S3バケット」を確認しておきます。今回実行されるSQLクエリはこのS3バケット内に保存されることになります。

設定に問題なければ、こちらもそのままで問題ありません。

構成要素「SQL」の登録

一通り設定に問題ないことが確認できましたので、今度は実際の「SQL」を登録していきます。SQLの登録はメニューの「構成要素 > SQL」から行います。

SQLは今回は以下のようなSQLを利用します。SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGIONテーブルからレコードを取得し、DEMO_DB.PUBLIC.REGIONテーブルへ取得したレコードをINSERTするクエリとなります。

insert_into_region_table.sql

INSERT INTO DEMO_DB.PUBLIC.REGION
SELECT
  R_REGIONKEY,
  R_NAME,
  R_COMMENT
FROM
  SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION
;

「フォルダを選択」ボタンをクリックして、先程確認した「SQL用S3バケット」にアップロードしたいSQLファイルが格納されているフォルダを指定します。こちらは、「ファイル」ではなく「フォルダ」となりますのでご注意ください。

確認ダイアログが表示されるので、問題なければ「アップロード」をクリックします。

アップロードがされると、まずはプレビュー状態となります。ここで「このファイルは登録したくない」というSQLファイルがあれば「ゴミ箱」アイコンをクリックして除外することもできます。

最後に「アップロード」ボタンをクリックすると「SQL用S3バケット」にSQLファイルがアップロードされます。

ジョブの作成

次に、先程アップロードした「構成要素」の「SQL」を実行できる「ジョブ」を作成していきます。「ジョブ」には日時を指定して自動実行するスケジュール設定もできますが、今回は「手動」設定にします。

それでは、「ジョブ一覧」画面から、「ジョブの追加」をクリックして新規にジョブを作成していきます。

「ジョブ名」に「job_snowflake_sample」、「ジョブ 実行種別」に「構成要素を実行」を指定して「追加」します。

追加がされると「ジョブ詳細」画面に遷移しますので、「構成要素」の「編集」をクリックします。

すると、構成要素の編集ダイアログが表示されます。「設定可能な構成要素」に先程アップロードしたSQLが表示されていますので、「現在の構成要素」にドラッグ&ドロップ、または、「+」ボタンで追加して「保存」します。

最後に、「保存」をクリックして設定完了です。

ジョブからSQLを実行する

ジョブの設定が完了したので、「ジョブ一覧」画面に戻って早速ジョブを実行してみます。ジョブ一覧の右側のアイコンから、今すぐ実行をすることが出来ます。

クリックすると、実行設定が表示されますので、今回はそのままで「確認」をクリックします。

最終確認のダイアログが表示されますので「実行」します。

しばらく待ってから「一覧を更新」をクリックすると、ジョブの「実行履歴カウンター」にジョブの実行状況が反映されます。また、通知設定を行っている場合にはジョブ完了時に設定している通知先にメール通知がされます。

実行が完了すると、緑色のサークルのカウントが増えて、ジョブが「成功」していることが分かります。

最後にSnowflake側で、実施にレコードが追加されているか確認してみます。SnowflakeにログインしてDEMO_DB.PUBLIC.REGIONにレコードが追加されているかを以下のクエリで確認してみます。

SELECT
  R_REGIONKEY,
  R_NAME,
  R_COMMENT
FROM
  DEMO_DB.PUBLIC.REGION
;

問題なく追加されていますね。

まとめ

以上、「CSA JMC」のバージョン5.0で新しく対応した、「SQLクエリをSnowflakeに対して実行する機能」についてのご紹介でした。SQLクエリをジョブ実行することで、定期的な集計処理を実行することができますので、是非ご利用いただければと思います。

お知らせ

2020/09/29(火)にCSアナリティクスが対応している各データウェアハウス(Redshift、BigQuery、Snowflake)と、CSアナリティクスについての解説を行うウェビナーを開催予定です。ご興味がありましたら是非お申し込みください。