我尝试将DocumentDB作为新应用程序的可能数据存储。该应用程序必须处理大量数据,因此我使用数据迁移工具将大量文档放入集合中。
我应用中的大部分查询都是汇总和汇总。所以我使用了documentdb-lumenize。从C#调用该存储过程的code sample让我这样做:
var configString = @"{
cubeConfig: {
groupBy: 'year',
field: 'Amount',
f: 'sum'
},
filterQuery: 'SELECT * FROM TestLargeData t'
}";
var config = JsonConvert.DeserializeObject<object>(configString);
var result = await _client.ExecuteStoredProcedureAsync<dynamic>("my/sproc/link", config);
我得到的结果如下:
{
"cubeConfig": {
"groupBy": "year",
"field": "Amount",
"f": "sum"
},
"filterQuery": "SELECT * FROM TestLargeData t",
"continuation": "-RID:rOtjAPc4TgBxFwAAAAAAAA==#RT:6#TRC:6000",
"stillQueueing": false,
"savedCube": {
"config": {
"groupBy": "year",
"field": "Amount",
"f": "sum"
},
"cellsAsCSVStyleArray": [
[
"year",
"_count",
"Amount_sum"
],
[
2006,
4825,
1391399555.74
],
[
2007,
1175,
693886378
]
],
"summaryMetrics": {}
},
"example": {
"year": 2007,
"SomeOtherField1": "SomeOtherValue1",
"SomeOtherField2": "SomeOtherValue2",
"Amount": 12000,
"id": "0ee80b66-7fa7-40c1-9124-292c01059562",
"_rid": "...",
"_self": "...",
"_etag": "\"...\"",
"_attachments": "attachments/",
"_ts": ...
}
}
_count值表示我收到了6,000个文档的聚合数据。该系列中有一百万份文件(我想测试一下!)
我看到&#34;继续&#34;结果中的值。但是StoredProcedureResponse没有像DocumentQuery类那样的ExecuteNextAsync方法。我如何使用DocumentDB API来请求下一部分数据?
答案 0 :(得分:2)
我是documentdb-lumenize的作者。如果您只是将返回的内容作为唯一参数发回,那么documentdb-lumenize sproc将知道如何处理延续令牌。你必须继续调用它,直到延续令牌变回空白。
那就是说,我真的很惊讶它在一次往返中只做了6000次。我一般每次往返20-50K。也许你的规格较低?也许它正在进行无索引全扫描?
如果您需要更多1:1的帮助,请在GitHub回购中提交问题。