2017-02-24 48 views
0

我試圖創建一個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" 
    }, 
.... 
} 

並將其插入到兩個表(主 - 詳細信息)

我創建了兩個表:

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可以插入到兩個表,還是我做錯了什麼......

注:如果我嘗試將數據存儲在BLOB存儲中,那麼數據即將通過,所以這不是因爲缺少數據。

回答

1

您可以創建幾個表作爲ASA作業的多個輸出。但是,我看到您的查詢只寫入一個輸出(TelemetryData)。

另外從我看到的,沒有數據寫入SQL表中,因爲您的查詢架構的結果和您的表的架構之間不匹配。

E.g. SELECT *的輸出將是deviceid,receivedat,messageid,telemetrydata。

但是,您創建的表具有不同類型的架構。

當您使用斑點時,它曾經工作,因爲斑點不期望固定的模式。但是,對於SQL,模式和類型應完全匹配。

感謝, JS - Azure的數據流分析

+0

問題是更多,如果有可能插入到兩個表(主 - 詳細信息)從一個SELECT,所以這兩個表之間的外約束不失敗 – smolesen