メイン コンテンツをスキップする
Crosstable プレフィックスの使用 #Crosstable プレフィックスの使用

このページ上

Crosstable プレフィックスの使用

クロス集計は、ヘッダー データが直交する 2 つのリストに値のマトリックスを持つ一般的なテーブルの種類で、データのクロス集計を使用する場合は、常に Crosstable プレフィックスを使用して、データの変換や希望する項目の作成ができます。

Crosstable プレフィックス

次の Product テーブルには、Month (月) ごとに 1 列、Product (製品) ごとに 1 行あります。

Product テーブル
製品 Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014
A 100 98 100 83 103 82
B 284 279 297 305 294 292
C 50 53 50 54 49 51

このテーブルをロードすると、Product とそれぞれの月に 1 項目ずつ存在するテーブルが生成されます。

Product 項目と、月ごとに 1 項目ずつある Product テーブル
Product 項目と、月ごとに 1 項目ずつある Product テーブル。

このデータを分析する場合は、すべての数値が 1 つの項目にあり、別の項目にすべての月がある方がはるかに容易です。この例の場合、各カテゴリ (Product, Month, Sales) ごとに 1 つの列を持つ 3 列構成のテーブルです。

ProductMonthSales の各項目がある Product テーブル
Product、Month、Sales の各フィールドを持つ Product テーブル。

Crosstable プレフィックスは、データを 1 列が Month、もう 1 つが Sales を表すテーブルに変換します。要するに、項目名を取得して項目値に変換します。

  1. 新しいアプリを作成し、高度なスクリプト チュートリアルという名前を付けます。
  2. データ ロード エディターで新しいスクリプト セクションを追加します。
  3. Product セクションに名前を付けます。
  4. 右のメニューの [DataFiles] で、[データを選択] をクリックします。

  5. Product.xlsx をアップロードして選択します。
  6. [Select data from] (データの選択元) ウィンドウで、Product テーブルを選択します。
  7. ヒント メモ[項目名] で [埋め込まれた項目名] が選択されていることを確認します。このオプションが選択されていると、データをロードする際にテーブルの項目名が含まれます。
  8. [スクリプトを挿入] をクリックします。
  9. これで、スクリプトは次のようになります。

    LOAD Product, "Jan 2014", "Feb 2014", "Mar 2014", "Apr 2014", "May 2014", "Jun 2014" FROM [lib://DataFiles/Product.xlsx] (ooxml, embedded labels, table is Product);

  10. [データのロード] をクリックします。
  11. [データ モデル ビューア] を開きます。データ モデルは次のようになります。
  12. Product 項目と、月ごとに 1 項目ずつある Product テーブル
    Product 項目と、月ごとに 1 項目ずつある Product テーブル。

  13. データ ロード エディターで、[Product] タブをクリックします。
  14. LOAD ステートメントの上に次の内容を入力します。
  15. CrossTable(Month, Sales)

  16. [データのロード] をクリックします。
  17. [データ モデル ビューア] を開きます。データ モデルは次のようになります。
  18. ProductMonthSales の各項目がある Product テーブル
    Product、Month、Sales の各フィールドを持つ Product テーブル。

    通常入力データには、内部キー (上の例では Product) として機能する修飾子項目の列が 1 つだけあります。ですが、ここでは複数持つことが可能です。その場合は、LOAD ステートメントの属性項目の前にすべての補助項目をリストし、Crosstable プレフィックスの 3 番目のパラメータを補助項目の数を定義するために使用する必要があります。Crosstable キーワードの前に先行する LOAD またはプレフィックスを持つことはできません。ただし、自動連結を使用できます。

    Qlik Sense 内のテーブルで、データは次のようになります。

    Crosstable プレフィックスを使用してロードしたデータのテーブル

    Crosstable プレフィックスを使用してロードしたデータのテーブル。

    これで、たとえば、データを使用して棒グラフを作成できるようになりました。

    Crosstable プレフィックスを使用してロードしたデータの棒グラフ

    Crosstable プレフィックスを使用してロードしたデータの棒グラフ。
情報メモ Crosstable について詳しくは、Qlik Community の次のブログ投稿を参照してください。「Crosstable ロード」。 動作は QlikView の状況に応じて説明されていますが、ロジックは Qlik Sense にもそのまま当てはまります。

属性項目では、数値解釈は行われません。これは、列のヘッダーが月である場合、自動的に解釈されないことを意味します。この回避策としては、Crosstable プレフィックスを使用して一時的なテーブルを作成し、次の例のように 2 回目のパススルーを実行して解釈を行います。

これはあくまで例です。Qlik Sense で行う付随する演習はありません。

tmpData: Crosstable (MonthText, Sales) LOAD Product, [Jan 2014], [Feb 2014], [Mar 2014], [Apr 2014], [May 2014], [Jun 2014] FROM ... Final: LOAD Product, Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month, Sales Resident tmpData; Drop Table tmpData;

メモリ キャッシュのクリア

作成するテーブルを削除し、メモリ キャッシュをクリアできます。前のセクションのようにデータを一時的なテーブルにロードした場合、不要になったら削除しなければなりません。例:

DROP TABLE Table1, Table2, Table3, Table4; DROP TABLES Table1, Table2, Table3, Table4;

項目を削除することもできます。例:

DROP FIELD Field1, Field2, Field3, Field4; DROP FIELDS Field1, Field2, Field3, Field4; DROP FIELD Field1 from Table1; DROP FIELDS Field1 from Table1;

ご覧のとおり、キーワード TABLEFIELD は単数形でも複数形でも使用できます。