CosmosDBで商品別売上集計のクエリ

更新:2021/07/15 06:22 by なす

CosmosDBはSQLクエリーが使えるので、集計クエリーを作成することにします。
集計の前に、まずは売上一覧表を出力してみたいと思います。

これには、JOINの理解が必用になります。
RDBのJOINと同じと言えば同じですが、コンテナ=テーブルと考えていると回り道になります。
異なるコンテナに格納されたレコードをJOINすることはできません。

from sale join detail in sale.details
この意味を理解してしまえば難しいことではないですが、最初少し混乱しました。
sale配列とその内部にあるdetail配列の外積というらしいです。
saleが2件、それぞれのdetailsが5件と7件だった場合、上記の式は5+7件の配列を出力します。
内部に配列を持つ2件のjsonを、Excelシートのようなフラットテーブルに展開したものだと思えば良いでしょう。

from sale join sale.customer customer
これもやはり、Excelシートに展開したものを考えればわかりやすい気がします。

商品売上一覧のクエリーは次のようになりました。
select s.saleDate, c.name as custName, p.code, p.name, d.amount
from s join s.customer c join d in s.details join d.product p 

後は、sum関数を使って集計表を出力してみます。
select s.saleDate, c.name as custName, p.code, p.name, sum(d.amount) 
from s join s.customer c join d in s.details join d.product p 
group by s.keiDate, c.name, p.code, p.name

Azureポータルのデータエクスプローラで、このクエリーは実行できて、商品別集計を得ることができます。
なのですが、API Functionの中で実行すると、なんやらエラーになってしまいます
うわーんTT

親ノート

Functionの前にNoSQLをなんとかする 更新:2021/07/15 06:18 by なす