# Direct Query を使用してクラウド データベースに直接アクセス

Direct Query を使用して、データをメモリにインポートまたはロードせずに SQL データベースを読み取ります。

Direct Query は、個々のニーズに合わせてデータにアクセスする方法について、より多くのオプションをユーザーに提供します。Direct Query を介してデータにアクセスすると、ユーザーはデータを基になるデータ ソースに保持できます。これにより、インメモリ Qlik Cloud アプリケーションが提供する柔軟性と引き換えに、ユーザーがデータを操作できる速度が向上します。

一般に、可能な限りデータを Qlik Cloud にインポートすることをお勧めします。インメモリ Qlik Cloud アプリケーションを使用すると、エクスペリエンスをより適切にカスタマイズし、データを最大限に活用できます。ただし、データをインポートしても目的を達成できない場合は、Direct Query が解決策になる可能性があります。Direct Query アプリケーションは機能が合理化されているため、新しいユーザーが完全に機能する高速なインメモリ アプリケーションを作成するための最初の一歩を踏み出すのにも役立ちます。

データ モデル マネージャー を使用して Direct Query アプリケーションを作成すると、テーブルと項目の選択に使用でき、それらの間のリレーションシップを定義できます。詳細については、「[Direct Query アプリケーションの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/create-direct-query-app.htm)」を参照してください。

ロード スクリプトでカスタム SQL を使用して、Direct Query アプリケーションのデータ モデルを定義することもできます。これにより、データ モデルの構築中に変数と Qlik 式を使用できます。詳細については、「[カスタム SQL を使用した Direct Query アプリケーションの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/create-data-model-custom-sql.htm)」を参照してください。

## Direct Query の使用例

次の場合は、インメモリ アプリケーションの代わりに Direct Query の使用を検討してください。

Direct QueryDirect Query の使用例

| ユースケース: | 目的と説明 |
| --- | --- |
| ビッグ データ ソース | Direct Query は、2,000 万行を超えるアプリケーションの場合、初期化が高速で、リソースの消費も少なくなります。これは、アプリケーションが主に監視またはステータス レポートに使用され、選択項目が少ない、あるいはまったくない場合に非常に有効です。 |
| 効率的なインメモリ アプリケーション | Direct Query は、影響を受けるすべてのテーブルにフィルタリングを適用して、Qlik Cloud エンジンにデータ スライスをすばやく簡単に抽出する機能を提供します。詳細については、「[Direct Query アプリケーション設定をテンプレート アプリケーションにエクスポートする](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/export-to-template-app-direct-query.htm)」を参照してください。 |
| ライトバックの Direct Query | Qlik Automate に基づくライトバックが基礎となるデータベースデータを変更するように設定されている場合、Direct Query は変更されたデータベースの結果を直接表示できます。インメモリ アプリケーションで同じ機能を使用するには、変更されたテーブルをユーザーが再度インポートする必要があります。 |
| 新しいデータベースとテーブルの調査 | Direct Query を使用して、新しいまたは馴染みのないデータベースやテーブルを調べることができます。これにより、十分な情報を得た上で、基になるデータ ソースからデータをインポートする必要があるかどうかをユーザーは判断できるようになります。 |

## チュートリアル

Qlik Sense アプリケーションの使用方法に関するチュートリアルについては、「[チュートリアル: 基礎から始める](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Tutorials/introduction-beginning-with-basics.htm)」を参照してください。

Direct Query のチュートリアルについては、次を参照してください。

* [Direct Query - パート 1: 概要と操作方法](https://www.youtube.com/watch?v=ZiTgqYvFFho)

* [Direct Query - パート 2: オンデマンド アプリケーション生成 (ODAG) を使用したハイブリッド分析ソリューション](https://www.youtube.com/watch?v=15uIcFY6DJc)

情報メモQlik Cloud の Direct Query 機能は、QlikView の Direct Query ステートメントとは異なります。詳細については、[Direct Query](https://help.qlik.com/ja-JP/qlikview/May2022/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/direct-query.htm) を参照してください。

## サポートされる機能

Direct Query アプリケーションには、インメモリ アプリケーションとは異なる機能があります。

Direct Query は以下をサポートします。

* データ接続の種類:

  情報メモDirect Query では Qlik Data Gateway - 直接アクセス データ接続を使用することはできません。

  * Amazon Redshift

  * Azure SQL

  * Azure Synapse Analytics

  * Databricks

  * Google BigQuery

  * Microsoft SQL Server

  * PostgreSQL

  * Snowflake

    情報メモのスカラー関数のサブセットは、データ接続でサポートされています。

* インメモリ データ分析エミュレーション:

  * set 分析のサブセット。

  * 任意の複雑なモデルに対するマルチテーブル チャート。インメモリ アプリケーションの既存のモデル要件は引き続き適用されます。例えば、テーブル間の関連ループは許可されません。

  * 基本的な集計タイプ:

    * 合計

    * Count

    * 最小

    * 最大

    * 平均

    * 次のみ

  * 基礎となるデータベースによって提供される関数および操作セットに基づく、集計前および集計後の計算。

* テーブル関係のタイプ:

  * 内部結合

  * 完全外部結合

* 反復モデリングとダッシュボード作成

* ビジュアライゼーション機能:

  * 標準チャート:

    * 棒グラフ

    * ブレット チャート

    * ボタン

    * コンボ チャート

    * コンテナー

    * フィルター パネル

    * ゲージ

    * KPI

    * 折れ線グラフ

    * マップ

    * メッコ チャート

    * 円グラフ

    * 散布図

    * テーブル

    * テキストと画像

    * ウォーターフォール グラフ

  * ダッシュボード バンドル:

    * ビデオ プレーヤー

    * 変数入力

  * Visualization Bundle

    * ファネル

    * マルチ KPI

    * レーダー

    * サンキー

    * ワード クラウド

* 項目検索機能のサブセット:

  * 特殊記号 (例: パターン検索の場合は「\*」および「?」、または式に基づく検索の場合は「=」) を含まない検索文字列は、完全な文字列値に対するプレフィックス検索として解釈されます。

  * パターン検索記号と機能:

    * 「\*」 - 0 個以上の任意の記号

    * 「?」 - 単一の任意の記号

  * 範囲ベースの検索 (「&gt;」、「&lt;」、「&gt;=」、「&lt;=」 に基づく):

    * 数値の場合、数値に基づいて下限/上限が検出されます。例えば、&gt;10&lt;100 は &lt;100&gt;10 と同じです。どちらも、[SearchedField] &gt; 10 AND [SearchedField] &lt; 100 として解釈されます。

    * その他のデータ型の場合、検索条件の順序によって下限/上限が検出されます。例えば、&gt;Value1&lt;Value2 は &lt;Value2&gt;Value1 と同じではありません。2 番目のケースでは、Value2 は下限に対応すると想定され、[SearchedField] &lt; Value2 OR [SearchedField] &gt; Value1 として解釈されます。

  * 式ベースの検索では、式が Direct Query の制限を満たしていることを前提としています。

  情報メモメモリ内検索機能のすべてのリストについては、「[選択またはビジュアライゼーション内での検索](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Selections/SelectionsToolbar/search-selections.htm)」を参照してください。

* $(=...) 式の Qlik Engine 関数。

  KPI または Direct Query のカスタム SQL 式内で、次の Qlik スクリプトおよびチャート関数を使用できます。

  * [**GetUserAttr**](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

  * [**if**](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/if.htm)

  * [**Chr**](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Chr.htm)

  * [**Replace**](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Replace.htm)

  * リテラルと文字列演算子

  上記のオプションを 1 つ以上使用する式は、Qlik Engine 内でのみ展開されます。

  情報メモリモートのネイティブ SQL 関数と Qlik Engine 関数を同じ単一の $(=...) 式内で混在させることはサポートされていません。

  Qlik Engine 関数の使用とリモート SQL データベース関数 (オプションとして + セット/選択を含む) を組み合わせるには、ネストされた $(=...) 式を使用します。

  `$(= ...<EngineFuncs> ... $(=... <set/selection &| Native SQL funcs>) ... )`

  例:

  `'$(=Replace(GetUserAttr('userEmail'), '$(=Char(111))' , Chr(48)))'`

  上記のネストされた式例では、Replace()、GetUserAttr()、Chr() 関数は Qlik Engine関数であり、もっとも外側の $(=…) 式に囲まれています。ただし、ネストされた $(=Char(111)) 式は Engine 関数を参照していません。これはリモート SQL データベース関数です (例: MS SQL）。

  Qlik Cloud のユーザーのメール アドレスが 'root@qlik.com' であると仮定すると、上記の式展開はこの順序になります。

  1. リモート SQL データベースを介して非 Engine 関数 $(=CHAR(111)) を展開し、小文字の o を生成します。

  2. CHR(48) Engine 関数を文字 "0' に展開します。

  3. GetUserAttr('userEmail') を 'root@qlik.com' に展開します。

  4. 最後に ‘$(=Replace('root@qlik.com', ‘o' , ‘0’)’ を展開すると、最終結果は 'r00t@qlik.com' になります。

## 詳細を見る

* [Direct Query 制限事項](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/limitations-direct-query.htm)
* [Direct Query アプリケーションでの ODAG リンクの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/create-odag-links-direct-query.htm)
* [対応しているデータ型](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DirectQuery/data_type_direct_query.htm)