Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
下記のようなテーブルがあり、QlikSenseにて並列ステートを使用してメジャーを作成しデータソース比較をできるようにしています。
そこで、選択したデータAとデータBの8月単月を比較して、分類ごとにそのIDの件数が増加したか、減少したか、それとも合致するかを表したいです。
■テーブルイメージ
--------------------------
データソース,年月,ID,分類
2025年4月予測,2025-07-01,S001,A
2025年4月予測,2025-08-01,S001,A
2025年4月予測,2025-08-01,S002,A
2025年4月予測,2025-08-01,S006,A
2025年5月予測,2025-06-01,S001,A
2025年5月予測,2025-08-01,S001,A
2025年5月予測,2025-08-01,S002,A
2025年5月予測,2025-08-01,S003,A
2025年5月予測,2025-08-01,S004,A
2025年5月予測,2025-08-01,S005,A
2025年6月予測,2025-08-01,S001,A
2025年6月予測,2025-08-01,S002,A
2025年4月予測,2025-08-01,S010,B
2025年5月予測,2025-08-01,S010,B
2025年4月予測,2025-08-01,S020,B
2025年4月予測,2025-08-01,S030,B
--------------------------
並列ステート:
・当月データ(データソースが"2025年5月予測"を選択)
・前月データ(データソースが"2025年4月予測"を選択)
・当年月選択([年月.autoCalendar.YearMonth]が"2025-08"を選択)
メジャー想定:
・単月_ID件数:Count({<[年月.autoCalendar.YearMonth]=[当年月選択]::[年月.autoCalendar.YearMonth]>}[ID])
--------------------------
■ほしい出力結果テーブル(メジャー:単月_ID件数)
| | || 分類 |
|データソース| 増減フラグ|| A | B |
| 当月データ | 増加 || 3 | 0 |
| 当月データ | 合致 || 2 | 1 |
| 前月データ | 減少 || 1 | 2 |
| 前月データ | 合致 || 2 | 1 |
(合致の値は分類別の当月・前月データで同じ数となる)
■質問事項
出力テーブルに必要な、下記のようになる軸「増減フラグ」を作成するにはどのようにすればよろしいでしょうか。またそれを使用して、ほしい出力結果を出す方法をご教示いただけますと幸いです。
・「増減フラグ」条件
データA、データBにも同じIDが存在する:合致
データAに存在するがデータBに存在しない:増加
データAに存在しないがデータBに存在する:減少
諸々変更しました。一応、正解と思われる結果になっています。
変更は以下の通りです。
・IDの特定をConcatで実施
・変数にConcatを使用したIDの抽出を実施(要素セット関数を使用する際に必要)
・変数はG1、G2用に作成
・要素セット関数を使用したステートごとのIDの抽出に変更
・年月の選択状態はConcat内のSet分に格納(Count内だと無視されるため)
・S001の除外は - {'S001'}で対応
サンプルアプリを確認ください。
Concatではなく、Countでも実装可能と思いますがIDの確認をするためにConcatで実装しています。
データ量が多い場合はCountで実装する方がパフォーマンスは確実に良いです。
画面表示用のマスタを作成することで実現可能です。
サンプルを確認ください。
ステートは当月がG1、前月がG2にしてます。
いつもお世話になっております。サンプルを作成いただきありがとうございます。
サンプルでは想定通りの出力がされているのですが、あまり仕組みを分かっていないからなのか自分の環境で実現できませんでした。
恐らく他にかけるフィルターがあり、そのかけ方を誤っているからなのではと思うのですが、
例えばテーブルに[カテゴリ] 列(値: 'あか'、'しろ')を追加し、出力テーブルでは常に下記のようなIDの件数を表示させたい場合はどのようにすればよろしいでしょうか。
・[カテゴリ]に'あ'を含む
・[ID]が 'S001'ではない
また、ユーザー側でさらにかけるフィルターが存在する場合は、そのフィルターをすべて下記のような形で増加・減少・合致それぞれのSET式に組み込めば正しく動作するのでしょうか?
ただ自分で下記で試してみてもうまくいかず...
Count({G1<ID-={"=count({G2} ID)"},年月=[当年月選択]::年月, [フィルタ項目]=$::[フィルタ項目]>}ID)
(「当年月選択」並列ステートで選択した年月を常に表示させるのは、
Count({G1<ID-={"=count({G2} ID)"},年月=[当年月選択]::年月>}ID)
のようにすればよいと思っています。)
SET分析の””の中の条件は以下のテキスト検索の方法を使用しています。
以下の条件の場合、
>・[カテゴリ]に'あ'を含む
[カテゴリ] = {"*あ*"}
>・[ID]が 'S001'ではない
[ID] -= {'S001'}
となります。
>Count({G1<ID-={"=count({G2} ID)"},年月=[当年月選択]::年月>}ID)
見る限りは問題ないように思えます。
作成したアプリを添付してもらえますか。
ご確認ありがとうございます。
カテゴリ列を追加して、条件設定の書き方をご提示いただいた通りにしましたがやはり数字が違うようでした。
「施策」フィルタをかけていない場合のAの合致の値とBのすべての値、
「施策」を"いぬ"としたときのBの合致の値、
「施策」を"ぱんだ"としたときのAの合致の値と増加と減少の値が異なりました。
作成したアプリを添付します。
数式の意味は同じと思うのですが、以下のように「あ」と「S001」の条件を外出しにしたら上手くいくように見えます。
ピボットテーブルにメジャーを追加して、以下の数式を貼り付けてみてください。
pick(match(増減フラグ,'増加','減少','合致'),
Count({G1<ID-={"=count({G2} ID)"},年月=[当年月選択]::年月,[施策]=$::[施策]> * G1<[カテゴリ] = {"*あ*"},[ID] -= {'S001'}>}ID),
Count({G2<ID-={"=count({G1} ID)"},年月=[当年月選択]::年月,[施策]=$::[施策]>* G2<[カテゴリ] = {"*あ*"},[ID] -= {'S001'}>}ID),
Count({G1<ID={"=count({G2} ID)"},年月=[当年月選択]::年月,[施策]=$::[施策]>* G1<[カテゴリ] = {"*あ*"},[ID] -= {'S001'}>}ID))
ご回答ありがとうございます。
元々添付していたアプリデータでは上手く動作出来ました。
ただ、新たに添付したアプリ上のID: S003のように、年月が指定している8月ではないがG2にもID:S003が存在している場合は”合致”とカウントされてしまうようです。(正:増加)
恐らく計算の順番が、IDが合致しているものから、8月のみを抜粋するような順番となっているからで、
本来やりたい順番は、年月が8月のみ+カテゴリが"あ"を含む+IDが'S001'ではない条件が一致するIDに絞ってから、合致等の判定をする流れにしたいです。
こちら実現できますでしょうか...
何度も申し訳ございませんが、引き続きお力添えいただければ幸いです。
私の作成したアプリと結果が違うのですが、データの中身は変わってますか
はい、新たに添付したアプリでは下記の1レコード、データを増やしています。(同IDレコードの異なる年月が存在した場合を確かめるため)
2025年4月予測,2025-06-01,S003,A,あか,ぱんだ
出て欲しい結果の内容を教えてもらえますか。
色々複雑になってきて正解がどれかわからないので。