Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
はじめまして、電通国際情報サービスの星加と言います。いつもお世話になっております。
実はロードスクリプトで変数を使ってシーケンスナンバーを入れたいのですが、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さんのテーブルを作るのが、どうもうまくいかなくて・・・・ 何か良い関数などあるのでしょうか?
ありがとうございました。
テストしてみた結果
previous(A ) と peek(’A’)では結果は同じですが、今回のようにAを条件によって変更した後、次のレコードで再度見てみたところ
PreviousではLOADされたままの値
Peekでは前回に変更した値
になっていました。
私はPreviousだけを使っていたので、LOAD、変更、LOAD、変更を繰り返して、全て変更しきるまでループをするという、みっともない処理になっていました
アドバイス頂いた方法でやってみたら、あっさりと完了しました。
みなさん、どうもありがとうございました!!!!