Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります。
qlik初心者です。
スクリプトで、何とかできないかと悩んでいます。
・タイムスタンプでデータが来る
・1レコードで日付をまたぐことがある
・日付で区切るようにして、レコードを分けたい
ご教授お願いいたします。
はじめまして。
極力単純な方法でをここをがけ作成してみました。
サンプルのQVWをご確認ください。
※Excelはソースです。
すみません。
先ほどのサンプルに誤りがございました。
こちらのサンプルをご確認ください。
お返事ありがとうございます。
説明不足で申し訳ありません。クリックセンスでお願いいたします。
よろしくお願いいたします。
早速のご回答ありがとうございます。
重ね重ねのご質問で申し訳ありませんが、以下のような場合はどのようにしたらいいでしょうか?
・添付のExample.xlsxでは、1レコードのみでしたが、複数のレコードが存在し、それらに対しても同様な処理を行いたい
ご教授お願いいたします。
データ毎にナンバリングし、同じようにFOR NEXTでループでOKです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
//テーブルを読み込む
TEMP:
LOAD start,
end,
state,
product,
work,
mainProgram,
subProgram
FROM
Example_TEST2.xlsx
(ooxml, embedded labels, table is state);
//Order by にてstart昇順にして、データ毎にナンバリングをする
NoConcatenate
TEMP1:
LOAD
RowNo() as DateNO,
start,
end,
state,
product,
work,
mainProgram,
subProgram
Resident TEMP
Order by start asc;
drop Table TEMP;
//FOR NEXTにてループさせるために DateNOの最大値を変数に入れる。
NoConcatenate
DateNO:
load
DateNO
Resident TEMP1
Order by DateNO desc;
;
//DateNOの最大値を変数に入れる。
let v_DateNOMAX=peek('DateNO',0,'TEMP1_0');
//不要となったテーブルを削除
drop Table DateNO;
for m=1 to $(v_DateNOMAX)
//データが何日間かをカウント
//floorを用いて時間情報を0にて計算
daycount:
LOAD
floor(end)-floor(start) as count
Resident TEMP1
where DateNO=$(m);
//peekにて変数に値を入れる
let v_Daycount=peek('count',0,'daycount');
//変数作成後に不要となったテーブルを削除
drop Table daycount;
//12日から14日の3日間のデータをnextで1日づつ作成。
//0からカウントなのでpeekの取得した2を使用することで3日間分のデータを作れる。
for n=0 to $(v_Daycount)
DATE:
LOAD
date(if($(n)=0,start,floor(start)+$(n)),'YYYY/MM/DD h:mm') as start,
date(if($(n)=$(v_Daycount),end,floor(start)+$(n)+1),'YYYY/MM/DD h:mm') as end,
state,
product,
work,
mainProgram,
subProgram
Resident TEMP1
where DateNO=$(m)
;
next n
next m
drop Table TEMP1;
EXIT SCRIPT;
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
以上になります。
ありがとうございます。 大変参考になります。
where句で、ひとつづつ切り出していくのですね。
今日は、試せる環境がないので、明日試して見ます。