top of page

最新記事リスト

執筆者の写真SENSUKE KURIYAMA

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制限事項


閲覧数:65回0件のコメント

関連記事

すべて表示

Comments


bottom of page