Direct Query

DIRECT QUERYステートメントは、Direct Discovery 関数を使用している ODBC または OLE DB 接続からテーブルへのアクセスを可能にします。

構文:  

DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist[DETAIL fieldlist] FROM tablelist

[WHERE where_clause]

 

DIMENSIONMEASUREDETAIL の各キーワードは、どのような順番でも使用できます。

DIMENSIONFROM キーワード節は、すべてのDIRECT QUERY ステートメントに必要です。FROMキーワードは、DIMENSION キーワードの後に配置する必要があります。

DIMENSIONキーワードのすぐ後ろで指定された項目は、メモリにロードされ、インメモリと Direct Discovery データ間の関連付けの設定に使用されます。

注: DIRECT QUERYステートメントに、DISTINCT 節や GROUP BY 節を含めることはできません。

MEASUREキーワードを使用して、QlikView が「メタ レベル」では認識する項目を定義します。メジャー項目の実際のデータは、データ ロード プロセス中にデータベースの中にのみ存在し、チャートで使用されるチャートの数式が起動するアドホックベースで取得されます。

通常、軸として使用されることになる、不連続値を含む項目は、DIMENSIONキーワードでロードする必要がありますが、集計においてのみ使用する数値は、MEASURE キーワードを使って選択しなければなりません。

DETAIL項目は、コメント項目など、ユーザーが詳細をドリルダウンするテーブル ボックスに表示したいと考える可能性のある情報や詳細を提供します。DETAIL項目をチャートの数式で使用することはできません。

DIRECT QUERYステートメントは、SQL をサポートするデータソースに対して中立です。このため、同一の DIRECT QUERYステートメントを変更することなく異なるSQL データベースで使用することができます。Direct Discoveryは、必要に応じてデータベースに適したクエリを生成します。

NATIVEデータソース構文は、ユーザーがクエリするデータベースを把握していて、SQL にデータベース特定の拡張機能を利用したい場合に使用できます。NATIVEデータソース構文は、次の場合にサポートされます。

  • DIMENSIONおよび MEASURE 節の項目式
  • WHERE節のコンテンツ

例:  

DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE
NATIVE ('X % Y') AS X_MOD_Y
FROM TableName
DIRECT QUERY
DIMENSION Dim1, Dim2
MEASURE X, Y
FROM TableName
WHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
注: 以下の用語はキーワードとして用いられるので、引用符で囲まないで列や項目名として使用することはできません。and, as, detach, detail, dimension, distinct, from, in, is, like, measure, native, not, or, where

引数:  

引数 説明
fieldlist

コンマ区切りの項目指定リスト、fieldname {, fieldname}です。項目指定を項目名にすることも可能で、データベースの列名とQlikView項目名に同じ名前が使用される場合があります。または、データベース数式や列名が QlikViewの項目名を指定する場合、項目指定を「項目エイリアス」にすることもできます。

参照項目: Direct Discovery項目リスト

tablelist

データのロード元となるデータベースのテーブル名またはビュー名のリストです。これは一般的には、データベース上で実行された JOIN が含まれるビューとなります。

where_clause

データベースの WHERE節の完全な構文は、ここでは定義されませんが、ほとんどの SQL 「関係式」は許容されます。これには、関数呼び出しの使用、文字列用のLIKE 演算子、IS NULLIS NOT NULLIN. BETWEEN が含まれます。BETWEEN は含まれていません。

NOTは、特定のキーワードの修飾子と対照的な単項演算子です。

例:  

WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect'
WHERE NOT X in (1,2,3)

最後の例を次のように記述することはできません。

WHERE X NOT in (1,2,3)

例:  

この例では、TableNameと呼ばれるデータベース テーブル (Dim1Dim2Num1Num2Num3 項目を含む) が使用されます。Dim1Dim2 は、QlikView データセットにロードされます。

DIRECT QUERY DIMENSTION Dim1, Dim2 MEASURE Num1, Num2, Num3 FROM TableName ;
 

Dim1Dim2 は、軸として使用可能です。Num1Num2Num3 は、集計に利用可能です。Dim1Dim2 もまた、集計に利用できます。Dim1Dim2 が使用される集計タイプは、それぞれのデータ タイプによって決まります。たとえば、多くの場合 DIMENSION項目には名前や口座番号といった文字列データが含まれています。こうした項目は集計できませんが、数を数えることはできます。count(Dim1)

注: DIRECT QUERYステートメントは、スクリプトエディタに直接書き込まれます。DIRECT QUERYステートメントの構造をシンプルにするには、データ接続から SELECT ステートメントを生成し、生成したスクリプトを編集して DIRECT QUERY ステートメントに変更します。
たとえば、次の SELECT

SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;


を、次の DIRECT QUERY 文に変更することができます。

DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber

MEASURE
SubTotal,
TaxAmt

DETAIL
OrderDate

FROM MyDB.Sales.SalesOrderHeader;