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函数_Azure_Azure Functions_Azure Stream Analytics - Fatal编程技术网

流分析出口到Azure函数

流分析出口到Azure函数,azure,azure-functions,azure-stream-analytics,Azure,Azure Functions,Azure Stream Analytics,几天前,Microsoft宣布支持从Azure Stream Analytics向Azure功能发送数据: 我尝试了此操作,但无法将数据发送到Azure函数。有关于如何从物联网中心->Azure流分析->Azure功能发送数据包的指南吗 输出与其他来源相同。这是我的疑问: WITH rpidata AS ( SELECT *, DATEADD(Hour, 3, timecreated) AS FITimezone FROM [rpi] ) SELECT * INTO [PowerBI] F

几天前,Microsoft宣布支持从Azure Stream Analytics向Azure功能发送数据:

我尝试了此操作,但无法将数据发送到Azure函数。有关于如何从物联网中心->Azure流分析->Azure功能发送数据包的指南吗

输出与其他来源相同。这是我的疑问:

WITH rpidata AS
(
SELECT 
*, 
DATEADD(Hour, 3, timecreated) AS FITimezone
FROM [rpi]
)
SELECT *
INTO [PowerBI]
FROM rpidata
SELECT *
INTO [storageout]
FROM rpidata
SELECT *
INTO [fnout]
FROM rpidata
我收到的错误消息是:

无法成功将空批发送到Azure函数。请确保您的函数应用程序名称、函数名称和API密钥正确,并且您的Azure函数已编译。如果所有这些参数都正确,Azure功能此时可能暂时可用。请稍后再试。Azure函数返回的响应代码为500:InternalServerError。它应该以200、202或204作为响应

但是,该函数在那里,正在运行,并且在我尝试创建连接时自动找到


我应该使用什么样的函数输入来接收数据?在示例中,我链接的函数名是httptriggercsharp。。。streamjob是否以json的形式发送数据?

根据您的描述和错误消息,我猜您的azure函数代码有问题(它返回500个错误)

我建议您首先检查azure函数日志,以查找详细错误消息并更改代码

您可以参考以下图片了解详细信息:

打开azure功能应用程序并查找监视器

我还为azure函数创建了一个测试流分析。我发现流分析会将json发送到azure函数

我建议您也可以使用此代码(Http触发器)来测试您的应用程序,以获得以下结果:

using System.Net;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");
     var content = req.Content;
    string jsonContent = await content.ReadAsStringAsync();

    log.Info(jsonContent);

    return   req.CreateResponse(HttpStatusCode.OK, jsonContent);
}
使用System.Net;
公共静态异步任务运行(HttpRequestMessage请求、TraceWriter日志)
{
Info(“C#HTTP触发器函数处理了一个请求。”);
var内容=所需内容;
字符串jsonContent=await content.ReadAsStringAsync();
log.Info(jsonContent);
返回请求CreateResponse(HttpStatusCode.OK,jsonContent);
}
结果:


根据您的描述和错误消息,我猜您的azure函数代码有问题(返回500个错误)

我建议您首先检查azure函数日志,以查找详细错误消息并更改代码

您可以参考以下图片了解详细信息:

打开azure功能应用程序并查找监视器

我还为azure函数创建了一个测试流分析。我发现流分析会将json发送到azure函数

我建议您也可以使用此代码(Http触发器)来测试您的应用程序,以获得以下结果:

using System.Net;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");
     var content = req.Content;
    string jsonContent = await content.ReadAsStringAsync();

    log.Info(jsonContent);

    return   req.CreateResponse(HttpStatusCode.OK, jsonContent);
}
使用System.Net;
公共静态异步任务运行(HttpRequestMessage请求、TraceWriter日志)
{
Info(“C#HTTP触发器函数处理了一个请求。”);
var内容=所需内容;
字符串jsonContent=await content.ReadAsStringAsync();
log.Info(jsonContent);
返回请求CreateResponse(HttpStatusCode.OK,jsonContent);
}
结果:


不确定您是否仍然需要此功能,但供将来参考:ASA作业将JSON数组中的数据输出到Azure函数。 下面是一个ASA查询示例

SELECT
   w.col1 as key1,
   w.col2 as key2,
   System.Timestamp as time
INTO
   azfunction
FROM
   [input] w;
[
         {
             "key1":"value1",
             "key2":"value2",
             "time":"2017-09-04T17:51:02.7986986Z"
         },
         {
             "key1":"value3",
             "key2":"value4",
             "time":"2017-09-04T17:51:02.7986986Z"
         }
]
将像这样到达您的功能中

SELECT
   w.col1 as key1,
   w.col2 as key2,
   System.Timestamp as time
INTO
   azfunction
FROM
   [input] w;
[
         {
             "key1":"value1",
             "key2":"value2",
             "time":"2017-09-04T17:51:02.7986986Z"
         },
         {
             "key1":"value3",
             "key2":"value4",
             "time":"2017-09-04T17:51:02.7986986Z"
         }
]

JSON数组将包含多少元素,取决于您如何在ASA中设置Az函数输出以及事件到达ASA的速度。数组可能只有一个元素或100个元素,具体取决于您的场景。

不确定您是否仍然需要此元素,但供将来参考:ASA作业将JSON数组中的数据输出到Azure函数。 下面是一个ASA查询示例

SELECT
   w.col1 as key1,
   w.col2 as key2,
   System.Timestamp as time
INTO
   azfunction
FROM
   [input] w;
[
         {
             "key1":"value1",
             "key2":"value2",
             "time":"2017-09-04T17:51:02.7986986Z"
         },
         {
             "key1":"value3",
             "key2":"value4",
             "time":"2017-09-04T17:51:02.7986986Z"
         }
]
将像这样到达您的功能中

SELECT
   w.col1 as key1,
   w.col2 as key2,
   System.Timestamp as time
INTO
   azfunction
FROM
   [input] w;
[
         {
             "key1":"value1",
             "key2":"value2",
             "time":"2017-09-04T17:51:02.7986986Z"
         },
         {
             "key1":"value3",
             "key2":"value4",
             "time":"2017-09-04T17:51:02.7986986Z"
         }
]

JSON数组将包含多少元素,取决于您如何在ASA中设置Az函数输出以及事件到达ASA的速度。数组可能只有一个元素或100个元素,具体取决于您的场景。

为了补充这个答案,您可以使用mockaroo中的模拟数据

要测试上述代码,请执行以下操作:

{
    "DeviceID": 8,
    "Temperature": 28,
    "Unit": 40,
    "TimeStamp": "2018-03-23T17:43:18.0000000Z",
    "EventProcessedUtcTime": "2018-03-23T17:44:36.5010819Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2018-03-23T17:43:18.5700000Z"
},

{
    "DeviceID": 8,
    "Temperature": 66,
    "Unit": 27,
    "TimeStamp": "2018-03-23T17:43:20.0000000Z",
    "EventProcessedUtcTime": "2018-03-23T17:44:36.8143642Z",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "2018-03-23T17:43:21.0090000Z"
}

为了补充这个答案,您可以使用来自mockaroo的模拟数据

要测试上述代码,请执行以下操作:

{
    "DeviceID": 8,
    "Temperature": 28,
    "Unit": 40,
    "TimeStamp": "2018-03-23T17:43:18.0000000Z",
    "EventProcessedUtcTime": "2018-03-23T17:44:36.5010819Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2018-03-23T17:43:18.5700000Z"
},

{
    "DeviceID": 8,
    "Temperature": 66,
    "Unit": 27,
    "TimeStamp": "2018-03-23T17:43:20.0000000Z",
    "EventProcessedUtcTime": "2018-03-23T17:44:36.8143642Z",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "2018-03-23T17:43:21.0090000Z"
}

您在流分析作业中是否遇到任何诊断错误?您是否可以尝试添加另一个输出,例如blob,以确认查询是否正在生成输出?如果有,请检查azure函数端的日志,看看是否有传入请求?是的,azure stream analytics将一批记录作为json发送给函数。函数在对记录执行它想要执行的操作后应返回http成功代码。是否有更新?如果您觉得我的答案有用/有帮助,请将其标记为答案,以便其他人可以从中受益。如果您的函数方法有路由,您将收到此消息。确保HTTPTrigger将其设置为null。目前似乎没有一种方法可以让流分析绑定到自定义路由。[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]您在流分析作业中是否遇到任何诊断错误?您是否可以尝试添加另一个输出,例如blob,以确认查询是否正在生成输出?如果有,请检查azure函数端的日志,看看是否有传入请求?是的,azure stream analytics将一批记录作为json发送给函数。函数在对记录执行它想要执行的操作后应返回http成功代码。是否有更新?如果您觉得我的答案有用/有帮助,请将其标记为答案,以便其他人可以从中受益。如果您的函数方法有路由,您将收到此消息。确保HTTPTrigger将其设置为null。目前似乎没有一种方法可以让流分析绑定到自定义路由。[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]是否有任何方法可以控制流分析的JSNO输出?我有一个蓝色的函数