Qlik Senseナレッジ - INSIGHT LAB

【Qlik Sense/Qlik View】Column関数を使用して列の値を流用してみました。

作成者: donut|2023年12月27日

今回は、Qlik Sense及びQlikViewで使用できる「Column関数」についてご紹介したいと思います。

Column関数とは

Qlikの計算式で「Column([数字]) 」と記載すると、ナビゲーションバーの上
(もしくは表の左から)[数字]列の値を返します。※軸は含みません。

<参考>
Column - チャート関数(Qlik Senseヘルプドキュメントより)

Column - チャート関数(QlikViewヘルプドキュメントより)

使用手順

Column関数をどのように使うのか? について、チャートでの使用例を参考に説明いたします。

まずは、以下のストレートテーブルチャートのサンプルを用意します。



在籍人数は「現在の在籍者」、累計退職人数は「現在までの退職者の合計」を表しています。
また、各計算式は以下の通りです。

・在籍人数:count({<在籍区分名={"在籍"}>}distinct [社員番号])
・累計退職人数:count({<在籍区分名={"退職"}>}distinct [社員番号])

上記2つの値より累計の退職率が算出可能です。主な算出方法は以下の3点になります。

①計算式のラベルを使用する
 <計算式>
 累計退職人数 / 総在籍人数

②項目名は使用せず、数式を直接使用する
 <計算式>
 count({<在籍区分名={"退職"}>}distinct [社員番号]) / count({<在籍区分名={"在籍"}>}distinct [社員番号])

③Column関数を使用する
 <計算式>
 Column(2) / Column(1) 

 ※在籍人数:Column(1)
  累計退職人数:Column(2) 

①~③の方法でそれぞれ計算の結果、以下の画像の通り、いずれも同じ値が返されました。

Column関数の使用背景

前述した方法のうち、③のColumn関数の使用が最も効率的で、メンテナンス面を考慮しても
最適な提案だったと考えています。
なお、①~②については以下の結果となりました。

①計算式のラベルを使用する
 →ラベル自体も計算した数値の場合、ラベル同士での計算ができませんでした。
  また、項目名の任意の場所で改行を行いたいこともあり、Chr関数を
  組み合わせていました。

②項目名は使用せずに、数式を直接使用する
 →各数式が複雑(PickとMeasureを使用し、1つの数式内で3つの場合分け)かつ、
  流用対象の項目が多いことや以下の懸念事項もあり、避けたい手法でした。

  ・数式を直接挿入するのに時間がかかり、途中でズレが発生しかねない
  ・メンテナンスにも時間がかかる

Column関数の制限事項について

Column関数には以下の制限事項があります。
特に、①のソートに関しては、数式算出値(y値)でのソートが有効ではなくなるため、
この点は注意が必要です。

①チャートの式いずれかにColumn関数が使用されている場合、
 チャートの y 値のソート、またはテーブルの式列ごとのソートは許可されません。
 よって、これらのソート機能は自動的に無効になります。
 ビジュアライゼーションまたはテーブルでこのチャート関数を使用すると、
 ビジュアライゼーションのソートは、レコード間の関数に対するソートされた
 入力の状態に戻ります。

②ColumnNoが参照する列にメジャーがない場合は、NULL 値が返されます。

③再帰呼び出しは NULL 値を返します。

便利な関数があっても、調べ方によって対象の関数にたどり着くのが難しいときがあります。

今回ご紹介したColumn関数についても便利な関数として活用することができますので、ぜひ活用してみてはいかがでしょうか。