---
title: 【Qlik Sense】Generic Loadを使用した列から行への変換方法
description: Qlik SenseのGeneric Loadでデータを列から行へ変換する方法を解説。基本概念から実装、注意点まで詳しく説明します。
---

[Qlik Senseナレッジ - INSIGHT LAB](https://knowledge.insight-lab.co.jp/qliksense)

# [【Qlik Sense】Generic Loadを使用した列から行への変換方法](https://knowledge.insight-lab.co.jp/qliksense/-qlik-sense-generic-load-column-to-row)

 作成者: [Kaz](https://knowledge.insight-lab.co.jp/qliksense/author/kaz)｜2025年2月10日

## はじめに

Qlik Senseにはデータのロードや変換を支援する複数のプレフィックスがあります。Qlik Senseのプレフィックスの一つに、Genericプレフィックスがあります。この機能を活用することで、通常のクロステーブル変換（CrossTable Load）とは逆の処理を行い、縦型のデータを横型に変換できます。本記事では、Generic Loadの基本概念、その実装方法、さらに動的にテーブルを統合する方法について詳しく解説します。

 

## Generic Loadとは？

汎用データベース（generic database）がある場合、Genericプレフィックスを使用することでデータを変換し、必要なフィールドを作成できます。

※汎用データベースとは、基本的に**最後から2番目の列が任意の属性（Attribute）であり、最後の列がその属性の値（Value）である**ようなテーブルのことを指します。以下の入力テーブルのように、3列の構成になっているのが一般的です。

| エンティティ | 属性 | 値 |
| --- | --- | --- |
| 1 | 身長 | 170 |
| 1 | 体重 | 60 |
| 1 | 性別 | 男 |
| 2 | 身長 | 180 |
| 2 | 体重 | 75 |
| 2 | 性別 | 男 |

 

## データ変換の必要性

このようなデータを分析する場合、一つの列にすべての属性値が含まれていると、異なる属性を同時に使って選択を行うのが困難になります。(例えば身長が○○で体重が××というデータの絞り込みなど。)

ここで役立つのが Genericプレフィックス です。

各属性と対応する値ごとに個別のテーブルを作成することで、分析をしやすくします。

 

## Genericプレフィックスの仕組み

先にも述べましたが、このプレフィックスを使用すると、**各属性が独自の列として配置される構造**にデータを変換できます。言い換えれば、属性列の**フィールドの値を列名に変換する**処理を行います。

**Crosstableプレフィックスとは逆の関係**にあると考えると理解しやすいでしょう。

##### 構文は以下の通りです。

Generic( Loadstatement | Selectstatement )　　　　　　　　　　　　　　　　　　　　　

 

## Generic Loadの基本的な実装

### **1. 基本的なデータロード**

まずは、データロードエディタに以下のスクリプトを挿入します。

Data:  
LOAD \* INLINE \[  
エンティティ, 属性, 値  
1, 身長, 170  
1, 体重, 60  
1, 性別, 男  
2, 身長, 180  
2, 体重, 75  
2, 性別, 男  
\];

\[データのロード\]を行い、作成されるテーブルをデータモデルで確認すると以下であることが確認できます。

 

### **2. Generic Loadの適用**

次に、先ほど作成したテーブルに対して、Generic Load を行ってみます。

GenericData:  
Generic LOAD \* Resident Data;

 

このコードを実行すると、以下のように「属性」の異なる値ごとに別々のテーブルを生成し、「GenericTable.身長」、「GenericTable.体重」、「GenericTable.性別」が作成されます。

※テーブル名に含まれる「GenericTable.」はGeneric LOAD時のテーブル名が修飾子として自動的に付与されるためです。

 

## 注意点

通常、入力データは以下の3列構成であるべきです。

1. **識別キー（例:`Key`）**
2. **属性（`Attribute`）**
3. **値（`Value`）**

しかし、\*\*複数の識別キーがある場合（4列以上）\*\*は、**最後の2列以外のすべてが識別キー**として扱われます。

また、Genericプレフィックスは、**属性ごとに別々のテーブルを作成**しますが、これは問題ではなく、むしろ**メモリ使用量を最適化する方法**として有効です。

```
 
```

## 複数キーの場合

複数の識別キーがあると、**合成キー（Synthetic Key）が生成される**ことになります。

この合成キーは見た目は複雑ですが、**基本的に無害**です。ただし、手動で結合キーを作成して管理する方が適切な場合があります。

Autonumber(Key1 & '|' & Key2) as Key,

このようにAutonumberを使って一意のキーを作成することで、データモデルの可読性を向上できます。

 

## 生成されたテーブルを動的に統合する``

生成されたテーブルを1つに統合したい場合、以下のように For-Next のループを使用することで統合することができます。

Data:

LOAD \* INLINE \[

エンティティ, 属性, 値

1, 身長, 170

1, 体重, 60

1, 性別, 男

2, 身長, 180

2, 体重, 75

2, 性別, 男

\];

 

//Generic Load

GenericData:

Generic LOAD \* Resident Data;

 

//Generic Load で作成されたテーブルの一覧を作成

For i = 0 to NoOfTables()

    Let vTableName = TableName($(i));

    

    If SubField(vTableName,'.',1) = 'GenericData' then

    

        GenericTableList:

        Load '$(vTableName)' as TableName AutoGenerate 1;

    

    End If;

 

Next

 

 

//元テーブルからユニークなキーを取得

CombinedGenericTable:

Load Distinct エンティティ Resident Data;

 

//ユニークなキーにGenericで生成されたテーブルをJoin したらDrop

For i = 1 to NoOfRows('GenericTableList')

 

    LET vTableName = FieldValue('TableName',$(i));

 

    Left Join(CombinedGenericTable)

    Load \* Resident \[$(vTableName)\];

    Drop Table \[$(vTableName)\];

 

Next

 

//不要なテーブルを削除

Drop Table Data,GenericTableList;

 

 

 

## まとめ

**Genericプレフィックスは、データを最適に格納するための仕組みです。**  
通常はそのまま利用し、**データ変換が必要な場合のみ統合処理を行うべき**です。どうしても統一テーブルが必要な場合には、上記のスクリプトを使用できますが、パフォーマンスやメモリ使用量に注意が必要です。

 

## 参考情報

- Qlik公式ドキュメント：[https://help.qlik.com/ja-JP/sense/November2024/Subsystems/Hub/Content/Sense\_Hub/Scripting/ScriptPrefixes/Generic.htm](https://help.qlik.com/ja-JP/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm)

[完全な記事を表示](https://knowledge.insight-lab.co.jp/qliksense/-qlik-sense-generic-load-column-to-row)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Kaz"
  },
  "dateModified" : "2025-02-10T07:26:01.146Z",
  "datePublished" : "2025-02-10T07:26:00Z",
  "headline" : "【Qlik Sense】Generic Loadを使用した列から行への変換方法",
  "image" : {
    "@type" : "ImageObject",
    "height" : 720,
    "url" : "https://download.insight-lab.co.jp/hubfs/Generic%E3%81%AE%E8%A8%98%E4%BA%8B%E3%82%AD%E3%83%BC%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB-1.png",
    "width" : 1280
  },
  "mainEntityOfPage" : "https://knowledge.insight-lab.co.jp/qliksense/-qlik-sense-generic-load-column-to-row",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "QlikSenseナレッジ"
  }
}
```