DocumentDB存储过程继续

时间:2016-09-23 20:53:27

标签: c# azure-cosmosdb

我尝试将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来请求下一部分数据?

1 个答案:

答案 0 :(得分:2)

我是documentdb-lumenize的作者。如果您只是将返回的内容作为唯一参数发回,那么documentdb-lumenize sproc将知道如何处理延续令牌。你必须继续调用它,直到延续令牌变回空白。

那就是说,我真的很惊讶它在一次往返中只做了6000次。我一般每次往返20-50K。也许你的规格较低?也许它正在进行无索引全扫描?

如果您需要更多1:1的帮助,请在GitHub回购中提交问题。