Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 带有调制符号的DocumentDB输入绑定的sqlQuery导致函数失败_Azure_Azure Functions_Azure Cosmosdb - Fatal编程技术网

Azure 带有调制符号的DocumentDB输入绑定的sqlQuery导致函数失败

Azure 带有调制符号的DocumentDB输入绑定的sqlQuery导致函数失败,azure,azure-functions,azure-cosmosdb,Azure,Azure Functions,Azure Cosmosdb,我在Azure函数上使用DocumentDB输入绑定 今天,我将以下查询指定为sqlQuery 选择c.id,c.created\u at FROM c 其中{epoch}-c.created_at_epoch>=86400*31 上限{epoch}/86400-CEILINGc.created_at_epoch/86400%31=0 之后,当函数被触发时,我看到了以下错误 2017-07-04T10:31:44.873 Function started (Id=95a2ab7a-8eb8-45

我在Azure函数上使用DocumentDB输入绑定

今天,我将以下查询指定为sqlQuery

选择c.id,c.created\u at FROM c 其中{epoch}-c.created_at_epoch>=86400*31 上限{epoch}/86400-CEILINGc.created_at_epoch/86400%31=0 之后,当函数被触发时,我看到了以下错误

2017-07-04T10:31:44.873 Function started (Id=95a2ab7a-8eb8-4568-b314-2c3b04a0eadf)
2017-07-04T10:31:49.544 Function completed (Failure, Id=95a2ab7a-8eb8-4568-b314-2c3b04a0eadf, Duration=4681ms)
2017-07-04T10:31:50.106 Exception while executing function: Functions.Bonus. Microsoft.Azure.WebJobs.Host: The '%' at position 148 does not have a closing '%'.
我想在sqlQuery中使用调制符号。我能做什么

致以最良好的祝愿

2017-07-15JST追加

今天,为了避免这个问题,我尝试了另一个问题

SELECT c.id, c.created_at FROM c 
WHERE {epoch} - c.created_at_epoch >= 86400*31 AND 
(CEILING({epoch}/86400) - CEILING(c.created_at_epoch / 86400)) - 
(31 * 
    CEILING(
        (CEILING({epoch}/86400) - CEILING(c.created_at_epoch / 86400)) 
        / 31
    )
) = 0
为了以防万一,我尝试了在Cosmos DB上指定一个epoch=1499218423的查询

SELECT c.id, c.created_at FROM c 
WHERE 1499218423 - c.created_at_epoch >= 86400*31 AND 
(CEILING(1499218423/86400) - CEILING(c.created_at_epoch / 86400)) - 
(31 * 
    CEILING(
        (CEILING(1499218423/86400) - CEILING(c.created_at_epoch / 86400))
        / 31
    )
) = 0
结果如下

[
  {
    "id": "70251cbf-44b3-4cd9-991f-81127ad78bca",
    "created_at": "2017-05-11 18:46:16"
  },
  {
    "id": "0fa31de2-4832-49ea-a0c6-b517d64ede85",
    "created_at": "2017-05-11 18:48:22"
  },
  {
    "id": "b9959d15-92e7-41c3-8eff-718c4ab2be6e",
    "created_at": "2017-05-11 19:01:43"
  }
]
module.exports = function (context, myQueueItem) {
    context.log(context.bindings.members, myQueueItem);
    context.done();
};
看起来不错。然后我将其指定为sqlQuery,并使用以下队列数据进行测试

{"epoch":1499218423}
函数的代码如下所示

[
  {
    "id": "70251cbf-44b3-4cd9-991f-81127ad78bca",
    "created_at": "2017-05-11 18:46:16"
  },
  {
    "id": "0fa31de2-4832-49ea-a0c6-b517d64ede85",
    "created_at": "2017-05-11 18:48:22"
  },
  {
    "id": "b9959d15-92e7-41c3-8eff-718c4ab2be6e",
    "created_at": "2017-05-11 19:01:43"
  }
]
module.exports = function (context, myQueueItem) {
    context.log(context.bindings.members, myQueueItem);
    context.done();
};
之后,我看到了以下结果

2017-07-05T03:00:47.158 Function started (Id=e4d060b5-3ddc-4271-bf91-9f314e7e1148)
2017-07-05T03:00:47.408 [] { epoch: 1499871600 }
2017-07-05T03:00:47.408 Function completed (Success, Id=e4d060b5-3ddc-4271-bf91-9f314e7e1148, Duration=245ms)
它查看bindingsas context.bindings.members结果的差异

为什么会出现这种差异

相关问题:

我想在sqlQuery中使用调制符号。我能做什么

Azure函数配置中的调制符号%用于从应用程序设置检索值。对于您的问题,我建议您在应用程序设置中添加一个项目,如下所示

SELECT c.id, c.created_at FROM c 
WHERE {epoch} - c.created_at_epoch >= 86400*31 
AND (CEILING({epoch}/86400) - CEILING(c.created_at_epoch / 86400)) %modulationsymbol% 31 = 0
之后,您可以在查询中使用%modulationsymbol%而不是%,如下所示

SELECT c.id, c.created_at FROM c 
WHERE {epoch} - c.created_at_epoch >= 86400*31 
AND (CEILING({epoch}/86400) - CEILING(c.created_at_epoch / 86400)) %modulationsymbol% 31 = 0

我试过了,错误解决了。但CosmosDB查询浏览器的结果和Azure函数的结果之间出现了差异。我将提出另一个关于尊重的问题。谢谢。我又提出了一个关于这种差异的问题。