我正在尝试创建一个Azure流分析选择,它将以这种格式处理json:
{
"deviceid": "02060014440133F0",
"receivedat": "2017-02-24T10:16:50.9081833",
"messageid": "286eded6-dff1-4f6b-85be-ce4c3c050b69",
"telemetryvalues": [
{
"Name": "JUMPER1_2",
"value": "0",
"id": "9be40e7b-7589-4d88-af69-9a00bf71e203",
"telemetryid": "a0259ae9-de01-47fb-9c0c-01fc72c85621",
"scaledvalue": "0"
},
{
"Name": "JUMPER1_2",
"value": "2",
"id": "837c4645-d13a-402f-9cf1-ac36b6bedef8",
"telemetryid": "a0259ae9-de01-47fb-9c0c-01fc72c85621",
"scaledvalue": "0,66"
},
....
}
并将其插入两个表格(Master - Detail)
我创建了两个表:
CREATE TABLE [dbo].[Telemetry](
[Id] [uniqueidentifier] NOT NULL CONSTRAINT [DF_Telemetry_Id] DEFAULT (NEWSEQUENTIALID()) NOT NULL,
[DeviceId] [varchar](20) NULL,
[MessageId] [varchar](40) NULL,
[ReceivedAt] [datetimeoffset](7) NOT NULL,
[CreatedAt] [datetimeoffset](7) DEFAULT (sysutcdatetime()) NOT NULL
和
CREATE TABLE [dbo].[TelemetryValues](
[Id] UNIQUEIDENTIFIER CONSTRAINT [DF_TelemetryValue_Id] DEFAULT (NEWSEQUENTIALID()) NOT NULL,
[TelemetryId] VARCHAR(40),
[Name] VARCHAR(28),
[Value] VARCHAR(255) NOT NULL,
[ScaledValue] VARCHAR(255) NOT NULL,
[CreatedAt] [datetimeoffset](7) DEFAULT (sysutcdatetime()) NOT NULL
我的SA非常简单:
SELECT
*
INTO
[TelemetryData]
FROM [DeviceData]
其中'TelemetryData'指向我的'遥测'SQL表和'DeviceData'指向带有数据的eventhub。
但是我没有把任何数据输入我的表格.....所以我不确定SA是否可以插入两个表格,或者我做错了什么......
N.B。如果我尝试将数据存储在blob存储中,那么数据就会通过,所以这不是因为缺少数据。
答案 0 :(得分:1)
您可以创建多个表作为ASA作业的多个输出。但是,我看到您的查询只写入一个输出(TelemetryData)。
同样从我看到的结果是,SQL表中没有写入数据,因为查询模式的结果与表的模式不匹配。
E.g。 SELECT *的输出将是deviceid,receivedat,messageid,telemetrydata。
但是,您创建的表具有不同类型的不同架构。
当你使用blob时,它曾经起作用,因为blob不期望一个固定的模式。但是对于SQL,架构和类型应完全匹配。
谢谢, JS - Azure流分析