・現在使用している元データ以外にlookupを作らないと仰っているような形で表示できないということでしょうか?
元データだけでできるとおもいますよ。
私のテストデータでは、データをインデックスするのが手間だったので、
元データとしてcsvをつかっただけです。
ですので、| inputlookup test.csv あたりを index=問合せ対応_index として読み替えていただければと思います。
また、_timeでjoinをしている箇所がありますが、この部分でのポイントは、_timeをjoinの前の部分ではstartedの日時、joinの後の部分ではcompletedの日時にしている点です。
このjoinでおこなっているのは、以下の一つのイベントを:
受付ID=1, 受付時刻=2017/01/23 9:00, 完了時刻=2017/01/23 10:00
以下のような2つの情報に変換しています。
_time=2017/01/23 9:00, 受付ID=1, data=受付
_time=2017/01/23 10:00, 受付ID=1, data=完了
上記のようなデータに変換してから各種集計を行っています。
・| foreach * [eval <>=if(match('<>', "started") AND mvcount('<>')=1,1,0)]
各フィールドに対して処理や判断を書ける場合にforeachをつかいます。
今回は、各フィールドとなっている部分がtimechart の結果として出てきた各idで、
何時台に処理が開始したのか終了したのかを判定して、1か0に置き換えています。
具体的には、各idのデータを参照して、startedという文字列のみであれば1,
それ以外(データ無しもしくはcompletedもしくはstarted,completedの2つが入っている時間帯)は0とする、
としてます。
<>には、実際には各フィールド名がはいってきますので、今回の場合は、
1,2,3,4,5,6,7といったように順番にidごとに判定代入処理をおこなっていくことになります。
詳細はドキュメントのforeachコマンドの概要よんでいただいて、上記のサンプルデータとサンプルサーチを動かして見ていただければと思います。
・| untable _time id isWorking isWorkingとはどこから来たのか
table形式になっているものを、分解する際にuntableというコマンドが使えます。
前段で各idがどの時間帯に対応されているかが1か0で表示されているところまででてきているかとおもいます。
_time 1 2 3 4
9:00 0 0 0 0
10:00 1 0 1 0
11:00 1 0 0 0
12:00 1 0 0 1
これを以下のように変換するのにuntableをつかってます。
isWorkingは上のテーブルのcellに当たる部分に名前をつけているイメージです。
_time,id,isWorking
9:00,1,0
9:00,2,0
9:00,3,0
9:00,4,0
10:00,1,1
10:00,2,0
10:00,3,1
10:00,4,0
11:00,1,1
11:00,2,0
11:00,3,0
11:00,4,0
12:00,1,1
12:00,2,0
12:00,3,0
12:00,4,1
test.csvを使ったサンプルでは、一旦10分毎に各idが対応されているかを判定してますが、
これを更に1時間集計(何時台)に再集計し直すさいにuntableを事前にやることでtimechart ... by id とできるようにしています。
もっと短くかけるとはおもいますが…(汗
... View more