首页 > 解决方案 > 将 json 从流分析发送到 Power Bi

问题描述

在此处输入图像描述我正在尝试将模拟数据从 kepware 发送到 azure Hub,然后再发送到 Stream analytic。下一步将直接发送给 Power Bi,但似乎流分析正在向 Power Bi 发送一个数组。这是我来自kepware的数据:

在此处输入图像描述

SELECT 
   event.[values].id as id,
   event.[values].v as Measurements,
   event.[values].t as Time,
   event.[values].q as Quality

   INTO PowerBiVisualizationOutput
   FROM PowerBiVisualizationInput AS event
   CROSS APPLY GetArrayElements(event.[values]) AS sensordata

我尝试了很多不同的方式来编写采石场,但它们都给我的输出是空的。有人可以帮帮我吗

问候

标签: arraysjsonpowerbiazure-stream-analyticsstreamanalytix

解决方案


此处说明了使用GetArrayElements的语法。

请注意它如何为数组的每个项目/行返回一个记录/对象,在您的情况下,您命名sensordataevent.不再是)。该记录有 2 个属性:ArrayIndexArrayValue,它们是硬编码的(GetArrayElements 的一部分)。在这里,您想从ArrayValue中获取您的属性:

SELECT 
   sensordata.ArrayValue.id as id,
   sensordata.ArrayValue.v as Measurements,
   sensordata.ArrayValue.t as Time,
   sensordata.ArrayValue.q as Quality

   INTO PowerBiVisualizationOutput
   FROM PowerBiVisualizationInput AS event
   CROSS APPLY GetArrayElements(event.[values]) AS sensordata

按照我们在评论中的对话进行编辑: 查看第一个屏幕截图,我们尝试展开的字段名称是[value]而不是value,方括号[]在那里。

要在查询中引用此类字段,我们可以使用双引号"[value]"::

SELECT 
   sensordata.ArrayValue.id as id,
   sensordata.ArrayValue.v as Measurements,
   sensordata.ArrayValue.t as Time,
   sensordata.ArrayValue.q as Quality

   INTO PowerBiVisualizationOutput
   FROM PowerBiVisualizationInput AS event
   CROSS APPLY GetArrayElements("[values]") AS sensordata

推荐阅读