Qlik Trainingブログ

  • Qlik Cloud
  • Qlik Sense
  • QlikView
  • 開発者
  • データロード
2024.08.30

項目名のゆらぎをまとめる方法

各データファイル内に項目名のゆらぎが存在することはありませんか?
項目名のゆらぎとは「ロット番号」、「ロットナンバー」、「ロットナンバ」のように中身のデータは同じでも、項目名のみが異なるものです。
今回は、項目名のゆらぎを1つのテーブルにまとめる方法を紹介します。

目次

※本記事は「2024年08月時点のQlik Sense SaaS」で作成しています。

項目名にゆらぎがある場合のデータ ロード

項目名のゆらぎを1つのテーブルにまとめるにあたり、以下のサンプルデータを使用します。
以下の3つの項目名のゆらぎを1つのテーブルにまとめられるか確認します。

<各サンプルデータファイル>
lot_number
[ロット番号] :A101、A103、A102
・[個数]:1、3、2
・[単価]:100、500、300

lot_data
[ロットナンバー] :A101、A102、A104
・[個数]:3、5、1
・[単価]:100、300、200

lot_list
[ロットナンバ] :A102、A103、A105
・[個数]:4、4、2
・[単価]:300、500、400

※各サンプルデータファイルはご自身で作成するか、インラインロードで作成してください。

それでは、データ ロード エディタの画面を開き、ロード スクリプトを作成してみます。

ロード スクリプトが作成できたら、画面右上の[データをロード]をクリックし、データ ロードします。

データ ロード後、リロードログ画面で警告が表示され、合成キーが発生しました。
これにより、データが1つのテーブルにまとまらず、複数のテーブルに分散してしまいました。

データ モデル ビューア画面に切り替えると、「合成キー」によりシンセティック テーブル($Syn)が作成されてしまっていることが確認できます。

以上のように、項目名のゆらぎを統一した項目名に変更せずにデータロードすると、異なるテーブルとして取り込まれてしまいます。

as句を用いてテーブルを1つにまとめる方法

項目名のゆらぎを含むデータファイルを1つのテーブルにまとめられない原因は、ロット番号を意味する項目名が少しずつ異なることでした。

そこで、ロード スクリプト内でas句を使用して、項目名を統一します。

as句は「項目A as 項目1」のように記述することで、データから読み込んだ項目名に別名(エイリアス)を付けることができます。
これにより、項目名をより理解しやすくしたり、同じ項目名としてまとめることができます。

今回は項目名のゆらぎを「ロット番号」に統一します。

データ ロード後、リロードログ画面で警告表示がないことを確認しテーブルを1つにまとめられたか、データ モデル ビューアで確認します。

as句を使って「ロット番号」という項目名に揃えることで、1つのテーブルにまとめられました!

ただし、as句は項目1つ1つに記載する必要があるため、項目数が多い場合は修正に手間がかかってしまう場合があります。

そこで、項目数が多い場合に有効なダミーテーブルを仲介して、1つのテーブルにまとめるテクニックを紹介します。

ダミーテーブルを仲介してテーブルを1つにまとめる方法

ダミーテーブルを作成し、項目名をこのダミーテーブルに連結します。
これにより、項目名のゆらぎを持つデータを1つのテーブルにまとめることができます。

<ロード スクリプト記述例>
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
//ステップ 1:
ダミーテーブル:
Load
1 as ダミー項目
AutoGenerate 1;

Concatenate(ダミーテーブル)
LOAD
*
FROM [lib://DataFiles/lot_*.csv]
(txt, codepage is 932, embedded labels, delimiter is ',', msq);


//ステップ 2:
データ:
Load
ロット番号&ロットナンバー&ロットナンバ as ロット番号,
個数,
単価
Resident ダミーテーブル
Where IsNull(ダミー項目)
;

Drop Table ダミーテーブル;
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

「ステップ1」:ダミーテーブルの作成

ダミーテーブルは、レコードが1行のテーブルです。
Autogenerateステートメントを利用して生成するレコード件数を指定し、1件のデータを生成します。
ダミーテーブルで作成したレコードは後述の「ステップ2」で除外するため、レコード件数は任意の数で構いません。

Autogenerateステートメントは、データを自動生成するための機能です。
「Autogenerate 1」のように指定することで、指定した数値の件数分自動でレコード行を作成することができます。
※例えば、Autogenerate 10と指定すると、10行のレコードが生成されます。
 この機能は、テストデータの作成やデータモデルの検証に役立ちます。

<ダミーテーブルのデータ詳細>
----------------------------------------
ダミー項目
----------------------------------------
1
----------------------------------------


項目名のゆらぎを含んだ各データをそのまま読み込んだ場合、合成キーが発生しましたが、ダミーテーブルに各データファイルを連結することで、合成キーの発生を防ぐことができます。

「ステップ1」のロード スクリプトを実行すると、ダミーテーブルが作成されます。

また、データ モデル ビューアからそれぞれのレコードが連結したことを確認できます。

「ステップ2」:データのロード

次に、ダミーテーブルから項目名のゆらぎを1つの項目名にまとめ、データテーブルにまとめます。
この際、IsNull([ダミー項目])を使用して、ダミーテーブルの不要な行を除外します。
※以下の赤枠のレコード行が除外されます。

データテーブルは、Resident句でダミーテーブルからデータを読込み、項目名のゆらぎを「ロット番号」にまとめます。

作成したダミーテーブルの各レコード行は、各データファイルのレコード行と交わることが無いため、「ロット番号&ロットナンバー&ロットナンバ」からそれぞれの値を取得します。
上記ダミーテーブルのロット番号を意味する項目にNull(-)が存在していますが、QlikではNullと値を連結すると、Nullではなく存在する値のみが連結されます。

例)ダミーテーブルの2行目のレコード行の場合
[ロットナンバー]:「A101」
[ロットナンバ]:-
[ロット番号]:-
→連結後、「 A101 」を返します。

その後、「Where IsNull(ダミー項目)」でダミー項目の値がNull値のレコードのみ取得することで、ダミーテーブルに元々存在した1行分のレコード行を取り除きます。

最後に、不要となったダミーテーブルを Drop table ステートメントで削除します。


「ステップ1」、「ステップ2」のロード スクリプトを実行し、1つのテーブルにまとめることができました!

追加データの取り込みについて

データファイルを追加する際に項目名のゆらぎが存在する場合は、ロードスクリプトの 赤字部分のみ 追加することで、データを追加できます。

以下に追加のサンプルデータから[ロット]項目を追加したロード スクリプトの変更例を紹介します。

<追加のサンプルデータファイル>
●lot_file
[ロット] :A201、A202、A203
・[個数]:9、8、7
・[単価]:500、600、700

<ロード スクリプトの変更例>
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
//ステップ 1:
ダミーテーブル:
Load
1 as ダミー項目
AutoGenerate 1;

Concatenate(ダミーテーブル)
LOAD
*
FROM [lib://DataFiles/lot_*.csv]
(txt, codepage is 932, embedded labels, delimiter is ',', msq);


//ステップ 2:
データ:
Load
ロット番号&ロットナンバー&ロットナンバ &ロット as ロット番号,
個数,
単価
Resident ダミーテーブル
Where IsNull(ダミー項目)
;

Drop Table ダミーテーブル;
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

データ ロード後、データ モデル ビューアから追加したデータを確認できました。

ダミーテーブルを用いてデータを追加することで、ロード スクリプトの変更を最小限に抑え、効率的に1つのテーブルにまとめられました。

さいごに

項目名のゆらぎを1つのテーブルにまとめる方法は以上となります。
項目名のゆらぎは、as句を利用することで項目名を統一することができますが、ダミーテーブルを作成して項目名のゆらぎを1つのテーブルにまとめる処理を行うことで、as句での変換する手間を省ける場合がありますのでぜひお試しください!

執筆者情報:

株式会社アシスト
サポートサービス技術本部 本部付 DX推進サポート部 3課

2021年に入社し、現在3年目。Qlik製品のサポートを担当しています。お客様からいただいたご質問に迅速にご対応できるよう、日々調査に取り組んでいます。

趣味は合唱で、月に1~2回の発表会に出場するため、よくカラオケにこもり練習しています。

関連している記事

  • Qlik Cloud
  • Qlik Sense
  • 運用者
  • 開発者
  • 利用者
2024.10.08

Qlik Cloud / Qlik Sense SaaSのユーザーインターフェースが変更されました

2024/09/10にQlik Cloud / Qlik Sense SaaSのユーザーインターフェース(プラットフォームナビゲーション)が変更されました!今回は主な変更点についてご紹介します。

  • Qlik Cloud
  • Qlik Sense
  • 運用者
  • 開発者
2024.09.30

アプリの表示を簡単制御!スペース/ストリームの使い方

Qlik Senseで、ユーザーごとに表示するアプリやシートを制限する方法をご紹介します!

  • Qlik Cloud
  • Qlik Sense
  • 開発者
  • 可視化・分析
2024.07.29

切り替えるだけで見える世界が変わる。サイクリック軸でデータ分析してみよう!

Qlik Senseを使用したデータ分析の際、一つのチャート内で簡単に異なる角度からデータを見たいと思ったことはありませんか?それはサイクリック軸で可能です。本記事では、サイクリック軸の作成/設定手順と、使用例を紹介します!

ページの先頭へ戻る