流分析 UDF 在测试中有效,但在作业中无效
Posted
技术标签:
【中文标题】流分析 UDF 在测试中有效,但在作业中无效【英文标题】:Stream Analytics UDF works in Test but not in Job 【发布时间】:2019-09-25 08:04:35 【问题描述】:我需要在流分析中解析一个 JSON 数据,
下面是正在使用的示例,
SELECT
UDF.parseData(GetRecordPropertyValue(GetArrayElement(A.message,0), 'raw')).intent as 'rawData'
FROM
AppInsightMessages A
我可以从现场解析意图。这是需要的自定义日志记录。
但它不适用于流分析作业。
我收到类似的错误
Stream Analytics job has validation errors: Query compilation error: Expression is not supported: 'udf . parseData
尝试使用CAST
将字符串也记录下来。不走运。
我做错了什么? 提前谢谢..
【问题讨论】:
【参考方案1】:通常,这是因为试图将多个阶段合并到一个表达式中。
请尝试将处理分成几个步骤:
With UDFStep AS (
SELECT
UDF.parseData(GetRecordPropertyValue(GetArrayElement(A.message,0), 'raw'))
FROM
AppInsightMessages A
)
SELECT intent as rawData
FROM UDFStep
顺便说一句,您不需要引用“rawData”。
【讨论】:
谢谢,我试过了,但它仍然显示相同的 UDF 错误。不知道为什么它在流作业中无法识别。 尝试将 GetArrayElement(A.message,0) 提取到一个单独的步骤,然后将 GetRecordPropertyValue 和 UDF 作为另一个步骤应用。甚至拆分这 2 个。 GetArrayElement 用于处理对象,但这些是字符串值。所以我对代码进行了更改以发送对象并使用 GetRecordPropertyValue + GetArrayElements 到现在为止。但我的情况仍然需要字符串转换。以上是关于流分析 UDF 在测试中有效,但在作业中无效的主要内容,如果未能解决你的问题,请参考以下文章
我的 API url 在 Chrome 浏览器中有效,但在我的测试 apache 本地主机环境中无效
Http POST 在 Postman 中有效,但在 Flutter 中无效
重复的 typedef - 在 C 中无效但在 C++ 中有效?