1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【悲報】Azure LogicAppsで、1,000件以上のCosmosDBのデータは取得不可!

Posted at

やろうとしたこと

  • 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
  • ちゃんと表示される

image.png

logicAppsで実行

  • 同じクエリを投げるが、ゼロ件になる

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?