お世話になっております。
Qlik Senseの知識が乏しいため、皆様のお力添えいただけますと有難いです。
年月 |
A |
flg |
202303 |
1 |
1 |
202102 |
2 |
1 |
201901 |
1 |
|
201812 |
4 |
|
201711 |
2 |
|
上記の様なテーブルがある場合、項目[年月]の各値から過去5年間遡り、その間で項目[A]で同じ値の最新箇所
(上記テーブルでは項目[年月]=202303、項目[A]=1と項目[年月]=202102、項目[A]=2)
にflgを建てたいのですが、何か方法はありませんでしょうか?
データの取込はエクセルファイルからの取得を想定しております。
何卒宜しくお願い致します。
添付のQVFファイルを参照ください。
A、年をOrder byでソートして1つ前のレコードとの差分を取り
5以下の場合に1を立てるようにしています。
サンプルデータも添付します。
年月の場合、年またぎなども考慮しないといけないので計算式が異なります。
年月を日付型にしていないのであれば下記で対応可能です。
if(if(A = Peek('A'),(Left(年月,4)*12 + Right(年月,2)) - (Left(peek('年月'),4)*12 + Right(Peek('年月'),2))) <=6 ,1,0) as Flag
日付型にしている場合は以下の通りです。
if(if(A = Peek('A'),(Year(年月)*12 + Month(年月)) - (Year(peek('年月'))*12 + Month(Peek('年月')))) <=6 ,1,0) as Flag
サンプルのQVFは日付型に変換しているので2番目の数式の方が良いです。
また6カ月ではなく180日で良いのであれば、年月を日付型にしている場合
差分は下記のようにすれば対応できます。
if(if(A = Peek('A'),年月 - Peek('年月'))<=180,1,0) as Flag
添付のQVFファイルを参照ください。
A、年をOrder byでソートして1つ前のレコードとの差分を取り
5以下の場合に1を立てるようにしています。
サンプルデータも添付します。
ありがとうございます。
希望通りのデータが作成できました!
大変助かりました。
後学のためにご教示いただきたいのですが、仮に各年月の値から年間単位で遡るのではなく、6ヵ月間など月単位で遡る場合は、どのようにロードスクリプトを記載すればよろしいでしょうか?
if(if(A = Peek('A'),年月 - Peek('年月'))<=6,1,0) as Flag
ご教示いただきましたスクリプトのフラグに使用している年を年月に置き換えましたが、上手く作動いたしませんでした。
何卒宜しくお願い致します。
年月の場合、年またぎなども考慮しないといけないので計算式が異なります。
年月を日付型にしていないのであれば下記で対応可能です。
if(if(A = Peek('A'),(Left(年月,4)*12 + Right(年月,2)) - (Left(peek('年月'),4)*12 + Right(Peek('年月'),2))) <=6 ,1,0) as Flag
日付型にしている場合は以下の通りです。
if(if(A = Peek('A'),(Year(年月)*12 + Month(年月)) - (Year(peek('年月'))*12 + Month(Peek('年月')))) <=6 ,1,0) as Flag
サンプルのQVFは日付型に変換しているので2番目の数式の方が良いです。
また6カ月ではなく180日で良いのであれば、年月を日付型にしている場合
差分は下記のようにすれば対応できます。
if(if(A = Peek('A'),年月 - Peek('年月'))<=180,1,0) as Flag
詳細にご説明頂きありがとうございます。
大変勉強になりました。
peek関数の使い方も把握できましたので、今後の開発に活かしていきたいと思います。
ありがとうございました。