Qlik SenseからSnowflakeへリアルタイムにクエリを投げる_Direct Query
更新日:2023年9月26日
Qlik Senseは大量の明細データをアプリにロードして高速に分析するのが得意ですが、規格外のデータ量になるとアプリ負荷が高くなったりします。SnowflakeコネクタにDirectQueryという機能が実装されていましたので試してみました。 シートの表示時にSnowflakeへ直接クエリを発行してデータを取得するライブクエリの機能です。
<テストアプリの作成とSnowflake接続の設定>
①Direct Queryのテスト用にアプリを作成して、Snowflakeコネクタで接続設定を行います。
手順は関連記事「Qlik Sense BusinessでSnowflakeへ接続してみる」をご確認ください。
②データマネージャからデータの追加を行います。
1.先の手順で作成したSnowflakeへの接続を選択します。 | 2.画面右上の[・・・]から[Direct Queryへ移動]を選択します。 |
③Direct Queryの設定画面に移動したら、左側のプルダウンからクエリの対象とするデータベースやテーブルを選択します。
(※下図ではサンプルデータベースから「CUSTOMER」「NATION」「REGION」の3テーブルを選択しています)
④選択したテーブルのリレーションを作成します。
[+関係]をクリックし各々のテーブルをキー項目でジョインします。
CUSTOMER.C_NATIONKEYとNATION.N_NATIONKEYでインナージョインしました。
CUSTOMERテーブルとNATIONテーブルのリレーションができました。
同様の手順でNATIONテーブルとREGIONテーブルのリレーションも設定し、最後に[変更を適用]をクリックします。
⑤Direct Queryの設定は完了です。
Direct Queryはシートを表示する際にSnowflakeへクエリを発行するので、このタイミングでのリロードは不要となります。
データモデルは下図のようになっています。
<Qlik Senseシートの編集とDirect Queryの実行>
①上述の手順でデータモデルができたら通常のリロードモデルと同じような感じでシート編集が可能でした。
[テーブルでフィルタリング]の部分ですべてのテーブルを表示できないという違いはあるようでした。
②シート編集完了とデータ探索
作成したシートは表示時点でリアルタイムにSnowflakeへクエリを投げるので、今回試したサンプルデータくらいだと、従来のリロードモデルのアプリに比べると表示に時間はかかる印象です。
また、リアルタイムなクエリ発行のため 連想技術 は使えませんでした。下図のように項目でフィルタすると、該当する値のみが表示されQlik Sense独特のグレー表示にはなりませんでした。
<ちょっと触ったメモ>
サッとSnowflake Direct Queryを試してみましたが、気づいたことをメモしておきます。詳細は確認できていないのであくまで参考まで。
▼対象データのリレーショナルモデルを把握しておくのがよい
当たり前のことだと思いますが、Qlik Senseの連想技術の便利さに慣れすぎていて、連想技術なら「とりあえずリロードしてからデータを確認すればいいか」みたいな発想になりすぎてました(笑)。都度クエリとなると、画面上では連想技術ほど縦横無尽なデータ確認は難しく、改めて連想技術の威力を実感しました。
▼通常のリロードとのアプリ内での併用はできない
この部分がどんな感じかと思っていたのですが、DirectQueryと通常のリロードモデルは同じアプリには作成できませんでした。
また、一度通常のリロードで作成したアプリは、リロードデータを削除してやり直そうとしても[・・・]メニューに[Direct Queryへ移動]が出てきませんでした。(下図参照)
Direct Query用のアプリを作成するときは新規にアプリ作成が良さそうです。
その他Direct Queryの参考情報です。 【参考】
Qlik Senseヘルプ:Direct Query制限事項
Qlik TECH TALK セミナー:最新データにライブ接続!Qlik Cloud Direct Queryのご紹介
Comments