やろうとしたこと
- CosmosDBに、ユーザーの利用履歴が吐き出されるシステムがあって、そのデータを定期的に取得したい。
- 具体的には、
- 何月何日に
- どのユーザーが
- 何回システムを利用したか
- logicAppsを使って、定期実行を試みた
結論
- まず、logicAppsのcosmosDBコネクタ経由では、1回のクエリで1,000件までしかアイテムを取得できない制限がある
- なので、OFFSET LIMITを使って、
- 1回目は、0 ~ 999
- 2回目は、1,000 ~ 1,999
- として、取得件数がゼロになるまでループを回そうとした
- しかし、以下の記事にあるように、OFFSET指定時も、OFFSETより前、つまり2回目の場合、1,999個のデータを取得してしまっており、logicAppsのコネクタ側で、1,000個目以降が破棄されてしまう
- なので、2回目以降がゼロ件としか表示されない
詳細
まずはCosmosDB上で実行
SELECT c.userId, COUNT(1) AS messageCount
FROM c
WHERE c.createdAt >= "2024-09-08T15:00:00.000Z"
AND c.createdAt < "2024-09-09T15:00:00.000Z"
AND c.role = "user"
AND c.type = "CHAT_MESSAGE"
GROUP BY c.userId
OFFSET 1000 LIMIT 1000
- ちゃんと表示される
logicAppsで実行
- 同じクエリを投げるが、ゼロ件になる