Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります。
積み上げ棒グラフチャート と テーブルチャートで結果が異なるという問題が発生しております。
両チャートには以下の設定を行っております。
・軸:購入品,購入品コード ※「NULL値を含める」にチェック
・メジャー:Count(受付日)
棒グラフ側が80件ほど多く、間違いであることが分かっています。
なぜずれが発生するのでしょうか。
ご教授いただければ幸いです。
1対多の構造の場合、マスター側で重複して合致するものがあると
数値はその合致した分だけ増加します。
テーブルの場合は、重複を1つにまとめるので上手く出ている可能性があります。
テーブル側の数式をCount(受付日)ではなく、sum(aggr(count(受付日),購入品,購入品コード))にすると
重複をまとめずに合計値を表示しますので、確認してみてください。
データがないので確実なことは言えないですが、Count(受付日)をそのまま使うのであれば、
プライマリーキーと購入品キーを連結したキーを作成し、元テーブルと購入品テーブルを
1対1になるようにデータ構造を変えれば一致するようになると思います。
棒グラフ上で右クリックした際のデータ表示でも数値は違っていますか。
現象が出るサンプルアプリもしくは、サンプルデータは提供可能ですか。
データ表示の結果をCSV出力したものをアップロード致します。
CSV出力結果は、棒グラフチャート・テーブルチャート共に同じ結果だったため、片方だけのアップロードになります。
※2列目の値は本来複数種類あるのですが、全て「dummy」に置き換えております。
CSV上の受付数の合計が 2,165 であり、これは棒グラフ側の件数と一致します。
テーブル側の「合計」には 2,087 と表示されております。
テーブル側の値が正しいと思った根拠は、KPIチャートでも 2,087 と表示されているからなのですが、
どちらが正しいか分からなくなりました。
countでの差を確認したいので、受付日の入ったデータを提供頂けますか
お世話になっております。
返信が遅れ申し訳ございません。
用いているデータの性質上、提出することができません。
購入品A,購入品Aコード,購入品B,購入品Bコード,購入品C,購入品Cコードというカラムをクロステーブルして、
プライマリキー,購入品ABC,購入品ABCコード という購入品テーブルを作成。
プライマリキーを用いて元のテーブルと関連付けています。
つまり、元テーブルと購入品テーブルは1対多の関係になります。
今回のチャートでは、購入品ABC,購入品ABCコードを軸として、
元テーブルのデータ数をカウントしている為、このあたりが原因で差異が発生していると予想しております。
なお、棒グラフの軸を 購入品ABC, 購入品ABCコード から、購入品ABC だけにすると
棒グラフとテーブルチャートの値が一致します。
>用いているデータの性質上、提出することができません
お手数ですが、テクニカルサポートのケースに登録していただきますよう、お願いいたします。
また、利用されているQlik Senseは、オンプレ版(バージョン)でしょうか、クラウド版でしょうか?
1対多の構造の場合、マスター側で重複して合致するものがあると
数値はその合致した分だけ増加します。
テーブルの場合は、重複を1つにまとめるので上手く出ている可能性があります。
テーブル側の数式をCount(受付日)ではなく、sum(aggr(count(受付日),購入品,購入品コード))にすると
重複をまとめずに合計値を表示しますので、確認してみてください。
データがないので確実なことは言えないですが、Count(受付日)をそのまま使うのであれば、
プライマリーキーと購入品キーを連結したキーを作成し、元テーブルと購入品テーブルを
1対1になるようにデータ構造を変えれば一致するようになると思います。
お世話になっております。
仰っておられる通りでした。
購入品A 購入品B が同じ品だった場合、以下の結果となりました。
・棒ブラフ側では2件としてカウント
・テーブル側では1件としてカウント
1対多 の多側である 購入品テーブル のカラムを軸としてカウントしているが為に、
棒グラフでは重複分もカウントされていると理解しました。
データの関連付けをしっかりとイメージできていないと駄目ですね。
Aggrはテーブル側で試してみたところ、棒グラフ側と件数が一致しました。
ご回答頂き誠にありがとうございました。
今回の件について、仕様確認用のアプリを作成しました。
同様の問題を抱えている方向けに、共有しておきます。