Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
kyoden_naoyuki
Contributor III
Contributor III

日付同士の関連付けについて

生データAと生データBというデータがあった際に、

日付同士で関連付けがうまくいかずに困っております。

 

たとえば生データAが店舗ごとのデイリーの売上を記録しているもので、

生データBが店舗ごとのデイリーの人件費を記録しているものだとします。

そして、デイリーの店舗の売上ー人件費を求めたい場合に、

店舗IDと日付が本来関連付けしたいのですが、

店舗IDはうまくいっても日付の関連付けがうまくいかず、

ピポットテーブルで表示すると売上だけがちゃんと集計できているが、

人件費がNull値や過剰に計算されるというような事象が発生しています。

これを解決するにはどのような方法がありますか?

どなたかご存知でしたらご教示ください。

よろしくお願いいたします。

6 Replies
hka
Employee
Employee

日付の書式は同じになっていますでしょうか。

また、データの型式が同じになっていないと紐づけが上手くいかない可能性があります。

Qlik Senseであればデータモデルビューア、QlikViewであればテーブルビューアで型式が確認できます。

スクリプトで型式がDateになっていても表示結果が’YYYY-MM-DD’と’YYYY/MM/DD’だと紐づかないので

どちらもDate(日付,'YYYY/MM/DD') as 日付のようにスクリプトを変更してみてください。

kyoden_naoyuki
Contributor III
Contributor III
Author

ご回答ありがとうございます。

読込の際の日付の書式は同じで、関連付け自体は成功しているのですが、

ピポットテーブル等で日付を列に使いSUMやCOUNT等を使うと、

どちらか一方の生データしか集計されないという事象が発生します。

 

今回作成しようとしているアプリだけでなく、

他のアプリにても本ケースの事象が多くみられるのですが、

何が原因となっている可能性が他に考えられますでしょうか?

kuya_japan
Contributor III
Contributor III

経験則ですが、紐づけしている項目に対してCOUNT()等をしている場合、意図しない計算結果になる場合があります。(count(日付) → 生データAと生データB、どちらの日付のデータ数を数える?)

データ数を数えたい場合は、データのロード時に「'1' as recordcount_生データA, 」の様な記述をしておき、sum(recordcount_生データA)としておく方法があります。

 

こんなことしなくてもちゃんと計算する方法はあるかもしれませんが、、、

kyoden_naoyuki
Contributor III
Contributor III
Author

Kuya様

ご回答ありがとうございます。

仰るようなやり方であればcountの場合はうまくいきそうな気がしますが、

Sumとかが難しい気がします。

 

文字だけではイメージが伝わりにくいので、一部加工した実際の画像を添付します。

簡単に言うと、勤怠管理システムから抽出した生データAのほうで記録した出勤時間と

PCログを抽出した生データBのほうで記録した出勤時間を突合するという作業を行いたいのですが、

集計関数を一切使わず、ただ単に日付を表示させるだけでも、

データBのほうが表示されないというような現象が起こってます。

左側の行部分は加工していますが名前です。

そして、日付の関連付けはモデルビューアを確認したところ行われていました。

hka
Employee
Employee

データのサンプルがないのではっきりしたことは言えませんが、データBに同一店舗ID、同一日付で時刻が違うものがあるのではないでしょうか。

もしある場合、画像のような状態と数値がきちんとでない状態はあり得ます。

また、ピボットテーブルの時刻の部分はメジャーになっているかと思いますが、メジャーは基本的に

集計関数と共に使用することが前提になっています。データAは、店舗ID、日付で一意の値になるので

たまたま表示されていますが、データBは店舗ID、日付で複数の時刻があるため表示されていないと考えられます。

また出勤時間ということは、ユニークにするためには従業員の方のIDなども必要ではないかと思います。

サンプルデータが提供可能であれば原因が特定できると思います。

店舗IDなど特定できるデータはAAAAなど適当なもので構いません。

kentaroWakamatsu
Creator II
Creator II

A、Bそれぞれのテーブルにある日付情報は、シリアル値で確認した際に、整数になっていますか?

時刻情報もついているデータなら、少数情報も存在していると思うので、日付と日付時刻情報だと同一値にはならないのでひもづかないです。

もし、日付時刻情報だった場合は、

 date(Floor(生データB,1),'D/M/YYYY')

のように、小数部分を切り捨ててみてください。