Direct Query

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

Syntax:  

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 節のコンテンツ

Examples:  

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

Arguments:  

引数 説明
fieldlist

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

Direct Discovery 項目リスト

tablelist

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

where_clause

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

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

Examples:  

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)

Example:  

この例では、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;