1

最近、オフィスで QlikView をテストしています。第一印象は良好です。魅力的なインターフェースを備え、非常に高速に実行されます。お客様のデータベース フロントエンドとして使用したいと考えています。また、リレーショナル データベース構造の一部を引き継ぐことができるかどうかも判断しようとしています。ただし、そのデータベース機能が魅力的なフロントエンド以上に十分に高度であるかどうかは疑問です.

具体的には、次の問題に遭遇します。テーブル全体で同じフィールド名を設定するだけで、QlikView で通常の JOIN (等結合) 操作に相当する操作を実行できます。これらのフィールドはリンクされます。ただし、従来の SQL JOIN 操作の 1 つは、「BETWEEN」クエリを使用して、日付が特定の範囲内にあるかどうかを調べ、そのデータを結合します。

QlikView のテーブル間にこのような「非等結合」関係を指定することは可能ですか? それとも、これはいわゆる「連想データベース」構造に固有の制限ですか?

4

2 に答える 2

4

マーカスの答えは正しいです。これを行う方法は、IntervalMatch を使用することです。2 つのテーブルをそのまま保持し、IntervalMatch を使用して間に「間」の関係を追加できます。ロード スクリプトの実行後に関係を追加することはできません。

最初に、日付範囲を持つテーブルをロードする必要があります (SQL クエリは省略されます)。まあ言ってみれば:

Ranges:
LOAD
    rangeID,
    validfrom, // date
    validto,   // date
    commonkey, // common key for the two tables
    price;     // the data that's needed as a result of the linking

次に、日付を含む別のテーブルをロードします

Data:
LOAD
    column1,
    column2,
    date,
    commonkey;

次に、IntervalMatch を使用する必要があります。これはそれを行う1つの方法です:

Left Join (Data)
IntervalMatch(date, commonkey)
LOAD
    validfrom,
    validto,
    commonkey
Resident Ranges;

これで、2 つのテーブル間のリンクが作成されました。これを追加することで、結果の合成キーを削除できます。

Left Join (Data)
LOAD
    validfrom,
    validto,
    commonkey,
    rangeID
Resident Ranges;

DROP Fields validfrom, validto FROM Data;

これで、キーを使用してテーブルがリンクされrangeIDます。テーブルに共通のキー (カテゴリ ID など) がない場合 (つまり、日付のみを一致させる必要がある場合)、commonkey上記の例の を無視できます。自分のケースで必要だったので、例に含めたかっただけで、同様の問題を抱えている人に役立つことを願っています。

これは、「IntervalMatch (extended)」というラベルの Qlikview ヘルプにあります。Qlikview クックブック(fillrowsintervalmatch.qvw) も、この問題の解決に役立ちました。

于 2012-11-16T14:29:04.280 に答える
1

確かにできます-あなたが望むのはIntervalMatch関数だと思います。

于 2010-02-13T04:44:51.743 に答える