【发布时间】:2017-01-20 16:10:41
【问题描述】:
在 Azure 函数中,我正在尝试聚合一些数据并将聚合写入表中。
我有一个汇总数据的查询:
var query = recs
.GroupBy(r => new { r.Category, r.Account, r.Record })
.Select(r => new ts_webhitaggregate_account
{
PartitionKey = partition, // Constant
RowKey = $"{r.Key.Category}:{r.Key.Account}:{r.Key.Record}", // Group By
rawDate = intervaldate, // Constant
epochDate = intervalepoch, // Constant
Category = r.Key.Category, // Group By
Account = r.Key.Account, // Group By
Record = r.Key.Record, // Group By
Hits = r.Count(), // Aggregate
Users = r.Select(t => t.User).Distinct().Count(), // Aggregate
Devices = r.Select(t => t.Device).Distinct().Count() // Aggregate
});
然后我尝试将这些记录传递给 ICollector 绑定表
foreach (ts_webhitaggregate_account a in query.ToList())
{
webhitsAggAccount.Add(a);
}
我经常遇到“实体已存在”错误,例如:
调用的目标已抛出异常。 Microsoft.WindowsAzure.Storage: 82: 指定的实体已经存在。
如果我正在编写与 C# 类似的 SQL 语句,我不会期望复合键的重复是可能的,因为写入的每个值都是键、常量或聚合。我在表中也没有可能导致冲突的预先存在的数据。
在查询中生成重复项我做错了什么?
【问题讨论】:
标签: c# azure-table-storage azure-functions