Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
K_O
Contributor
Contributor

欠損データの表示(rangesum)

Qliksenseで以下のようなデータを取り込んで、月末在庫を基点に

入出庫データを「rangesum」を使って累計計算し、ピボットテーブルで在庫推移を表現したいのですが、

日付の欠損箇所に前日と同数の在庫数を表現したい場合、「入出庫」の”0”データを事前に

生成して、データに含めるしか方法がないでしょうか?

data.png

11 Replies
kentaroWakamatsu
Creator II
Creator II

計算式を下記へ変更して、チャートのプロパティーの「プレゼンテーション」タブの'0値を隠す'にチェックを入れると大丈夫だと思います。

 

RangeSum(Before(TOTAL SUM(数量),0,ColumnNo(TOTAL)))+SUM({1}0)

kentaroWakamatsu
Creator II
Creator II

すみません、上記だと、日付絞るとダメですね

hka
Employee
Employee

データアイランドを使用する方法とスクリプトで製品+日付のデータを生成する方法の2種類あります。

添付ファイルを参照してください。

上のピボットテーブルは製品+日付のデータを生成した作成したもので、下のピボットテーブルは

データアイランドを使用して作成したものになります。

どちらも抜けている日付データは必要なので、元データより日付データを生成しています。

元データに紐づけるか、紐づけないかでUIの軸と数式の設定と記述が変わります。

データモデルビューアを見ると紐づいていない日付データと紐づいている製品+日付データが存在するのがわかります。

紐づけた方がパフォーマンスは良いです。

合成キーがありますが、これをなくす処理をスクリプトで行うとデータモデルは綺麗になります。

 

kentaroWakamatsu
Creator II
Creator II

'0値を隠す’のチェックを外して、計算式を

RangeSum(Before(TOTAL SUM(IF(ISNULL(数量),' ',数量)),0,ColumnNo(TOTAL)))+SUM({1<日付={"$(='>='&MIN({<製品名=>}日付)&'<='&MAX({<製品名=>}日付))"}>}0)

とすると、データが無い日も表示は出来ましたが、添付画像のように製品名にNULLの行が出来てしまいますね。

K_O
Contributor
Contributor
Author

ご連絡ありがとうございます。

'0値を隠す’のチェック 自体が見当たらないのですが

これはQlikviewだけに存在するものですかね?

それともQliksenseのバージョンが違う(我々が古い)のか?

ご連絡いただいた計算式でも表示できなかったので、

もう少し考えてみます。

 

hka
Employee
Employee

rangesum()の話でしたね。

こちらで出来ます。

事前に何かしら処理する場合の方法になりますが。

 

hka
Employee
Employee

そもそもなのですが、元データからだけだと7/2などデータないの日付は表示されないと思うのですが、

現状データのない日付は表示されていますか?

 

K_O
Contributor
Contributor
Author

色々とご連絡ありがとうございます。

まだいただいた内容で検証ができていませんので、

この後検証してみます。

 

事例としてあげたデータが情報不足でした。

製品名にBとかC...など複数ありまして、それぞれに入出庫のデータが

日付バラバラであるため(在庫だけは全製品前月末データがある)

結果として全製品を並べると、日付は全期間揃っていて

製品別に見た時に所々に欠損が発生するという状態となります。

hka
Employee
Employee

Qlik Senseでは計算で表示される欠損値は値として扱えないので、データアイランドか

製品名+日付のマスタを作成する形になります。

0値を隠すはQlikViewの機能でQlik Senseには存在しません。