存储过程延续
本文关键字:延续 存储过程 | 更新日期: 2023-09-27 18:08:46
我正在尝试将DocumentDB作为新应用程序的可能数据存储。该应用程序必须处理大量数据,所以我使用数据迁移工具将大量文档放入集合中。
来自我的应用程序的大多数查询将被聚合和求和。所以我使用documentdb-lumenize。从c#调用存储过程的代码示例让我做这样的事情:
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值表明我得到了价值6000个文档的聚合数据。集合中有一百万个文档(我想测试大!)
我在结果中看到"continuation"值。但是storedproceurerresponse不像DocumentQuery类那样有ExecuteNextAsync方法。如何使用DocumentDB API来请求数据的下一部分?
我是documentdb-lumenize的作者。如果您只返回作为唯一参数返回的内容,那么documentdb-lumenize进程将知道如何处理延续令牌。您必须一直调用它,直到延续令牌返回空。
那就是说,我真的很惊讶它在一次往返中只飞了6000英里。我每次往返一般能拿到2 -5万美元。也许你有更低规格的收藏?也许它正在做一个无索引的全扫描?
如果你想要更多的1:1帮助,请在GitHub repo中提交一个issue。