メイン コンテンツをスキップする
連結 #連結

このページ上

連結

連結とは、2 つのテーブルを 1 つにまとめる操作のことです。

2 つのテーブルを連結するには、テーブルを上下に重ね合わせます。その際、各テーブルにそれぞれ固有の列名を持つ列が 1 つ必要となります。データは変更されず、作成されるテーブルには元の 2 つのテーブルの合計と同じ数のレコードが含まれます。複数の連結操作を連続で実行して、複数のテーブルを連結したテーブルを作成できます。

自動連結

ロードされた複数のテーブルの項目名と項目数が完全に一致する場合、Qlik Sense はさまざまなステートメントのコンテンツを 1 つのテーブルに連結します。

自動連結させるためには、項目の数と名前は、完全に同じでなければなりません。2 つの LOAD ステートメントの順番は任意ですが、テーブルには、最初にロードされたテーブルの名前が与えられます。

  1. Scripting Tutorial アプリでデータ ロード エディターを開きます。
  2. Dates タブをクリックします。
  3. [データのロード] をクリックします。
  4. これまでに記述したロード スクリプトに基づき、Qlik Sense は 628 行を Dates.xlsx データ ファイルから Table2 にロードします。

    データ ロード進捗状況ウィンドウ

    データ ロード進捗状況ウィンドウ
  5. スクリプト セクション Dates の新しい行で、Table2LOAD ステートメントをコピーします。これによりデータが 2 回ロードされます。2 つ目のテーブルに Table2a という名前をつけます。
  6. 既存のスクリプトを削除して、以下のスクリプトをコピーして貼り付けることもできます。

    Table2: LOAD     "Date",     Month (Date) as "Month",     Quarter,     "Week",     "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);  Table2a: LOAD     "Date",     Month (Date) as "Month",     Quarter,     "Week",     "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    これで、スクリプトは次のようになります。

    Dates タブのロード スクリプト

    [日付] タブのロード スクリプト。
  7. [データのロード] をクリックします。
  8. Qlik SenseTable2 をロードせず、続いて Table2a をロードしません。その代わり、Table2a の項目名と項目数が Table2 と同じであることを認識します。次に Table2a のデータを Table2 に追加し、テーブル Table2a を削除します。その結果、Table2 の行数が 1,256 行になります。

    データ ロード進捗状況ウィンドウでの連結

     データ ロード進捗状況ウィンドウでの連結。
  9. [データ モデル ビューア] を開きます。
  10. [プレビューの表示] をクリックします。
  11. Table2 のみが作成されています。Table2 を選択します。このテーブルには 256 行あります。

    データ モデル ビューアに表示された Table2

    データ モデル ビューアに表示された Table2。

強制連結

複数のテーブルにまったく同じ項目セットが存在しない場合でも、Qlik Sense は 2 つのテーブルを強制的に連結できます。強制連結は、スクリプトで Concatenate プレフィックスを使用すると実行できます。このプレフィックスは、特定のテーブルを別の名前のテーブルまたは一番最近に作成されたテーブルに連結します。

  1. Table2aLOAD ステートメントを編集し、Concatenate を追加して Week をコメント アウトします。
  2. スクリプトは次のようになります。

    Table2a: Concatenate LOAD     "Date",     Month (Date) as "Month",     Quarter,     // "Week",     "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    Week をコメント アウトすることで、テーブルがまったく同じにならないようにします。

  3. [データのロード] をクリックします。
  4. [データ モデル ビューア] を開きます。
  5. ご覧のように、Table2a は作成されていません。

  6. データ モデル ビューアで Table2 をクリックし、次に [プレビュー] をクリックします。
  7. テーブルには DateMonthQuarterWeek、および Year という項目があります。項目 Week が表示されたままになっているのは、Table2 からロードされているためです。

  8. Table2Week をクリックします。プレビューには、この項目に Null でない値が 628 個あることを示されます。しかし、他の項目をクリックすると、Null でない値の数は 1256 と表示されます。WeekTable2 から 1 回のみロードされています。結果として生成されるテーブルのレコード件数は、Table2Table2a に含まれるレコードの合計となります。

連結の防止

ロードされた複数のテーブルの項目名と項目数が完全に一致する場合、Qlik Sense はさまざまなステートメントのコンテンツを 1 つのテーブルに連結します。このような動作は NoConcatenate ステートメントによって防ぐことができます。関連付けられた LOAD または SELECT ステートメントでロードされたテーブルは、既存のテーブルに連結されません。

  1. 2 つのテーブルのコンテンツを完全に分離させるには、Table2aLOAD ステートメントに NoConcatenate を追加し、一致する項目に基づいて Qlik Sense が合成キーを生成しないように、項目の名前を変更します。Table2Week をコメント解除して 2 つのテーブルの項目を同じにします。
  2. スクリプトは次のようになります。

    Table2: LOAD     "Date",     Month (Date) as "Month",     Quarter,     "Week",     "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);  Table2a: NoConcatenate LOAD     "Date" as "Date2",     Month (Date) as "Month2",     Quarter as "Quarter2",     "Week" as "Week2",     "Year" as "Year2" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);			

  3. [データのロード] をクリックします。
  4. [データ モデル ビューア] を開きます。
  5. これで 2 つのテーブルが完全に分離されました。

    データ モデル ビューアに表示された Table2Table 2a

    データ モデル ビューアに表示された Table2 と Table 2a。
  6. 連結の実演は以上で終了です。Table2a はもう必要ありません。Table2aLOADステートメントからすべての行を削除し、[データのロード] をクリックします。