我最近正在与ASA合作,我正在尝试使用参考数据将ASA流直接插入SQL表。我的开发基于这篇MS文章:https://msdn.microsoft.com/en-us/azure/stream-analytics/reference/reference-data-join-azure-stream-analytics。
数据流概述 - 遥测:
SELECT * INTO output-sql-table FROM input-event-hub WHERE DeviceType = 'HeatPump'
从HeatPump重定向遥测在将流插入SQL表之前,我想使用一些参考数据来“丰富”ASA流与一些IDKeys。
我已经做了什么:
SELECT * INTO [sql-table] FROM Input WHERE DeviceType ='HeatPump'
成功将ASA流直接插入到SQL表中,其中[sql-table]具有与JSON消息+标准列相同的模式(EventProcessedUtcTime,PartitionID,EventEnqueueUtcTime)SELECT Column1, Column2, Column3... INTO [sql-table] FROM Input WHERE DeviceType = 'HeatPump'
成功将ASA流直接插入到SQL表中 - 基本上与上面的查询相同,只是这次我在select
语句中使用了命名列。在调试问题时,我在Query ASA中使用了Test功能
我试过的其他一些想法:
TRY_CAST
函数将字段从引用数据转换为适当的数据类型TRY_CAST
函数在我将它们插入SQL表之前在SELECT
中强制转换字段我真的不知道现在该做什么。有什么建议?
数据流JSON - 单个消息
[
{
"Activation": 0,
"AvailablePowerNegative": 6.0,
"AvailablePowerPositive": 1.91,
"DeviceID": 99999,
"DeviceIsAvailable": true,
"DeviceOn": true,
"Entity": "HeatPumpTelemetry",
"HeatPumpMode": 3,
"Power": 1.91,
"PowerCompressor": 1.91,
"PowerElHeater": 0.0,
"Source": "<omitted>",
"StatusToPowerOff": 1,
"StatusToPowerOn": 9,
"Timestamp": "2018-08-29T13:34:26.0Z",
"TimestampDevice": "2018-08-29T13:34:09.0Z"
}
]
参考数据JSON - 单个消息
[
{
"SourceID": 1,
"Source": "<ommited>",
"DeviceID": 10,
"DeviceSourceCode": 99999,
"DeviceName": "NULL",
"DeviceType": "Heat Pump",
"DeviceTypeID": 1
}
]
ASA查询
WITH HeatPumpTelemetry AS
(
SELECT
*
FROM
[input-eh]
WHERE
source='<omitted>'
AND entity = 'HeatPumpTelemetry'
)
SELECT
e.Activation,
e.AvailablePowerNegative,
e.AvailablePowerPositive,
e.DeviceID,
e.DeviceIsAvailable,
e.DeviceOn,
e.Entity,
e.HeatPumpMode,
e.Power,
e.PowerCompressor,
e.PowerElHeater,
e.Source,
e.StatusToPowerOff,
e.StatusToPowerOn,
e.Timestamp,
e.TimestampDevice,
e.EventProcessedUtcTime,
e.PartitionId,
e.EventEnqueuedUtcTime
INTO
[out-SQL-HeatPumpTelemetry]
FROM
HeatPumpTelemetry e
LEFT JOIN [input-json-devices] d ON
TRY_CAST(d.DeviceSourceCode as BIGINT) = TRY_CAST(e.DeviceID AS BIGINT)
ASA参考数据输入配置Reference Data input configuration in Stream Analytics
BLOB存储目录树Blob storage directory tree
ASA测试查询输出ASA test query output
matejp。我没有重现您的问题,您可以参考我的步骤。
blob存储中的参考数据:
{
"a":"aaa",
"reference":"www.bing.com"
}
在blob存储中流数据
[
{
"id":"1",
"name":"DeIdentified 1",
"DeviceType":"aaa"
},
{
"id":"2",
"name":"DeIdentified 2",
"DeviceType":"No"
}
]
查询语句:
SELECT
inputSteam.*,inputRefer.*
into sqloutput
FROM
inputSteam
Join inputRefer on inputSteam.DeviceType = inputRefer.a
输出:
希望它可以帮助你。任何关心,让我知道。
我想我发现了错误。过去几天,我在Azure Stream Analytics中配置输入时几乎测试了所有可能的组合。
我从这个例子开始作为基线:https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-build-an-iot-solution-using-stream-analytics
我认为我遇到的问题是由于在文件夹名称中使用了字符“ - ”。
在我的情况下,我创建了名为“reference-data”的文件夹,并上传了名为“devices.json”的文件(文件夹结构“/reference-data/devices.json”) - > ASA输出到SQL表不能正常工作因为我已经将文件夹名称更改为“refdata”(文件夹结构“/referencedata/devices.json”) - > ASA输出到SQL表工作。
尝试从包含“ - ”的文件夹名称更改参考数据输入3次而不包含它=>每当ASA输出到SQL服务器时,当“ - ”在文件夹名称中时,ASA输出停止工作。
回顾一下: