Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
tsuyoshi
Partner - Creator
Partner - Creator

同時間帯での入室者数の管理について

まさに昨今、話題の集計なのですが・・・

お知恵を貸してください。簡単なような計算なのに手こずってます。
同じ時間帯(分刻み)で一緒に部屋にいた人数を計算したいのです。
下記が入室テーブルになります。

name stime etime
A 10:00 10:10
B 10:09 10:12
C 10:13 10:13

それを下表のように集計したいのですがIntervalMatch?の使い方等
教えて頂ければ幸いです。


時間帯 人数
10:00 1 (Aさんのみだから)
10:01 1
10:02 1
10:03 1
10:04 1
10:05 1
10:06 1
10:07 1
10:08 1
10:09 2 (AさんとBさんだから)
10:10 2
10:11 1 (Bさんのみだから)
10:12 1
10:13 1 (Cさんのみだから)

お手数かけますがよろしくお願い致します。

 

14 Replies
kuya_japan
Contributor III
Contributor III

ドキュメントを添付しました。

※先に投稿したドキュメントにて、ループで使っている関数を間違えていました。失礼しました。

誤:NoOfFields() → 正:NoOfRows()

 

・10:05:30に入室 → 10:06:05に退室 という人は、10:05と10:06の2分間でカウントする

ということがしたい気がするので、「Duration」のフィールドは使わずに入退出時間だけで実装しました。

日付をまたいでも動作すると思っていますが、実際のデータを見てご確認ください。時間のフォーマット(2020/03/04 09:58:05なのか、2020/3/4 9:58:05なのか、)でも動きが変わるかもしれません。

なお、現実の生データを扱うと、「退室時間が無い」「入室してるはずの人がもう一度入室する」ということがあったりすると思いますので、必要に応じて例外処理を追加したり、元データのクレンジングをしてください。

tsuyoshi
Partner - Creator
Partner - Creator
Author

すごい!!!!!
ご親切に有難うございます。中身のぶん回す部分のロードスクリプト、よく勉強させて頂きます!

tsuyoshi
Partner - Creator
Partner - Creator
Author

早速活用させて頂き、処理は全然できております。 有難うございました。今日勉強のためにマニュアルを見ながら紐解いていたのですが

LOAD
Date#(Text(Date(Date#('$(vStime)', 'YYYY/MM/DD hh:mm:ss') + Date#(recNo()-1,'m'),'YYYY/MM/DD hh:mm:ss')),'YYYY/MM/DD hh:mm:ss') as time_in,
'$(vName)' as name_in
AutoGenerate $(vStayTime);

がなんとなく 特定人物の入室時間分の「分情報」を持つレコードを縦にどんどん作っていくんだろうな、というイメージは沸くのですが、上記スクリプトでそれが具体的に出来る仕組みが難しく、腹に落ちません。

今まで研修テキストに出てきた自動カレンダー作成スクリプトみたいなものを理解せず遠ざけてきたためです。+ Date#(recNo()-1,'m')  ここで1分ずつ進めていることをイメージしますが recno()? 何故-1 してるの? などお時間あるときに分解して解説いただけますと幸いです。 申しわけございません・・・( ノД`)シク

kuya_japan
Contributor III
Contributor III

Autogenerate や recno()がどういう動作をするものかについては、Qlikのヘルプページを見て下さい。また、「Autogenerate  QlikView」で検索すれば、いろんなWebサイトで使い方が紹介されています。

今回のAutogenerate については、以下のページを見れば大体どんな機能かわかると思います。

https://iw-qlikview.com/knowledge/functiontips/autogenerate/

 

 

Aさんの入室_10:10、退室_10:20だった場合には以下のデータを作れればよいです。

Aさん、10:10
Aさん、10:11
Aさん、10:12

Aさん、10:20

 

今回の私の処理では、以下のように考えて計算しました。どんなロジックを組んたどしても、ちゃんと動いて、最終的に作りたいデータができていればなんでもよいと思います。

10:10 → 入室時間 + 0分
10:11 → 入室時間 + 1分
10:12 → 入室時間 + 2分

これを、入室から退室までかかった時間分、繰り返せばよいことになります。
繰返しの回数は、Autogenerate の後パラメータで制御しますので、入退室時間から計算します。

 

 

実際に動いている処理を参考にして、実際に弄って確認するのが一番理解しやすいと思いますので、以下のような手順で作業することをお勧めします。
・はじめに、今から自分はどういうデータを作ればよいかをイメージする(一番大事)

・Webサイトや他人のドキュメントでもいいので、それっぽいロジックを探して動かしてみる

・出来上がったデータが、自分が作りたいデータとどこが違うか確認する

・自分が使うデータを加工したり、ヘルプを見ながらパラメータを弄ったりして調整する

tsuyoshi
Partner - Creator
Partner - Creator
Author

ご親切に有難うございました。アシストさんのページは分かりやすいですね。しっかり勉強します!