Skip to main content
Announcements
Introducing a new Enhanced File Management feature in Qlik Cloud! GET THE DETAILS!
cancel
Showing results for 
Search instead for 
Did you mean: 
tsuyoshi
Partner - Creator
Partner - Creator

ロードスクリプト内での変数処理

はじめまして、電通国際情報サービスの星加と言います。いつもお世話になっております。

実はロードスクリプトで変数を使ってシーケンスナンバーを入れたいのですが、LOAD文の中でLETが使えないようなので困っています。

オリジナルのファイルはこのようなもので、あらかじめoperation_time順になっています。

operation_time, USER_NAME
09:00,Mr A
09:01,Mr A
09:03,Mr A
10:00,Mr B
10:30,Mr B
11:00,Mr B
15:00,Mr C
15:10,Mr C
15:15,Mr C
17:00,Mr A

これに対してPCの利用者が切り替わった事を判定して、Numberを与えていきたいのです。

operation_time, USER_NAME,Number
09:00,Mr A,1
09:01,Mr A,1
09:03,Mr A,1
10:00,Mr B,2
10:30,Mr B,2
11:00,Mr B,2
15:00,Mr C,3
15:10,Mr C,3
15:15,Mr C,3
17:00,Mr A,4

この時、時系列で同じ人が使っている場合は、上記のように同じ数値にしたく、人が切り替わった時にカウントアップをしたいのです。

単純に名前で Group By すると、最下部のAさんも1になってしまいます。ここはCさんの次なので4にしたいのです。

すごく簡単な事で恐縮なんですが、どなたかご教示くださいませんでしょうか? 宜しくお願いいたします。

PS 本当にやりたいことは

start,end,USER_NAME

09:00,09:03,Mr A

10:00,11:00,Mr B

15:00,15:15,Mr C

17:00,17:00,Mr A

といったテーブルを作成した上で、他のログとインターバルマッチするテーブルを準備したいだけなんですが、その手前で上記赤色の再度現れたAさんのテーブルを作るのが、どうもうまくいかなくて・・・・ 何か良い関数などあるのでしょうか?

10 Replies
tsuyoshi
Partner - Creator
Partner - Creator
Author

ありがとうございました。

テストしてみた結果

previous(A ) と peek(’A’)では結果は同じですが、今回のようにAを条件によって変更した後、次のレコードで再度見てみたところ

PreviousではLOADされたままの値

Peekでは前回に変更した値

になっていました。

私はPreviousだけを使っていたので、LOAD、変更、LOAD、変更を繰り返して、全て変更しきるまでループをするという、みっともない処理になっていました

アドバイス頂いた方法でやってみたら、あっさりと完了しました。

みなさん、どうもありがとうございました!!!!