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: 
kenjiokamoto
Contributor II
Contributor II

前回来店日付、来店回数

じめまして。

テーブルでIDごとに前回来店日付と来店回数を取得するためにはどうすればいいでしょうか。

・入力:

ID来店日コース
12016年1月1日A
12017年1月1日B
12018年1月1日A
22016年2月1日A
22017年2月1日A
22018年2月1日A


・出力:

ID来店日コース前回来店前回来店_コース別来店回数来店回数_コース別
12016年1月1日A  11
12017年1月1日B2016年1月1日 21
12018年1月1日A2017年1月1日2016年1月1日32
22016年2月1日C  11
22017年2月1日C2016年2月1日2016年2月1日22
22018年2月1日C2017年2月1日2017年2月1日33


①前回来店:ID別に前回来店した日付

②前回来店_コース別:ID、コース別に前回来店した日付

③来店回数:ID別に来店した回数

④来店回数_コース別:ID、コース別に来店した回数

 

・条件

 ・QlikViewののは見れないため、Qliksenseのファイル形式で頂けますでしょうか。

  しくはロードスクリプトをいただければ大丈夫です。

 ・シートではなくロードスクリプト上でテーブルとして出力したいです。

どうぞよろしくお願い致します。

 

 

10 Replies
uacg0009
Partner - Specialist
Partner - Specialist

岡本さん
すみません、私は 日本語が悪いですから。
一つ問題があります。
入力:ID 2 コースは全部Aです
どうして 出力 ID 2 コースはCですか?
趙昌駿
chakiw5
Contributor III
Contributor III

ファイルを添付することができません!!
何か設定があるのでしょうか。
hka
Employee
Employee

特に問題なくできるようです。

ブラウザは何を使用されていますか。

Chromeでは問題ないようです。

chakiw5
Contributor III
Contributor III

chromeを使っています、QVFのファイルやtxtでやってみましたが、以下のメッセージが出ます
「The contents of the attachment doesn't match its file type.」
hka
Employee
Employee

ファイルタイプではじかれるようです。

txt、csv、qvfはダメでしたが、qvw、xls系、zipは大丈夫でした。

qvfがダメなのは問題ですね。

kenjiokamoto
Contributor II
Contributor II
Author

みなさま

有難うございます!ファイルタイプが違うとアップできないんですね。

私もサポートに聞いてみます。

また入力が間違ってました。

・入力:

ID来店日コース
12016年1月1日A
12017年1月1日B
12018年1月1日A
22016年2月1日C
22017年2月1日C
22018年2月1日C

 

ID:2は全てコースがCでした。申し訳ございません。

hka
Employee
Employee

下記スクリプトでいけるはずです。

TempData:
LOAD * INLINE
[
ID,来店日,コース
1,2016年1月1日,A
1,2017年1月1日,B
1,2018年1月1日,A
2,2016年2月1日,C
2,2017年2月1日,C
2,2018年2月1日,C
](delimiter is ',');


Data:
Load
ID&コース as IDコース,
*,
if(ID=Peek(ID),peek(来店回数)+1,1) as 来店回数,
if(ID=Peek(ID),peek(来店日),'') as 前回来店
Resident TempData
order by ID,来店日,コース;

Join
Load
*,
if(IDコース=Peek(IDコース),peek([来店回数_コース])+1,1) as 来店回数_コース,
if(IDコース=Peek([IDコース]),peek(来店日),'') as 前回来店_コース
Resident Data
order by IDコース,来店日;

store Data into Data.csv(txt);

Drop table TempData;

chakiw5
Contributor III
Contributor III

やっぱり並び替えで前回の値を当てはめますよね。
最初ストレートテーブルのSET文でなんとかできないかと悪戦苦闘したのですが
さっぱりできませんでした。
hka
Employee
Employee

来店回数は下記数式でできます。

rangesum(above(total count(ID),0,aggr(rank(num(-date#(来店日,'YYYY年MM月DD日'))),ID,来店日)))

 

コースの回数もこちらでいけそうです。

rangesum(above(total count(コース),0,aggr(rank(num(-date#(来店日,'YYYY年MM月DD日'))),コース,来店日)))

実際のデータでどのような動作をするかは確認してください。