流分析 - >大师 - 详情

时间:2017-02-24 10:55:43

标签: master-detail azure-stream-analytics

我正在尝试创建一个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存储中,那么数据就会通过,所以这不是因为缺少数据。

1 个答案:

答案 0 :(得分:1)

您可以创建多个表作为ASA作业的多个输出。但是,我看到您的查询只写入一个输出(TelemetryData)。

同样从我看到的结果是,SQL表中没有写入数据,因为查询模式的结果与表的模式不匹配。

E.g。 SELECT *的输出将是deviceid,receivedat,messageid,telemetrydata。

但是,您创建的表具有不同类型的不同架构。

当你使用blob时,它曾经起作用,因为blob不期望一个固定的模式。但是对于SQL,架构和类型应完全匹配。

谢谢, JS - Azure流分析