2017-12-12 3 views
0

Azure IOT 허브에서 Azure Stream Analytics (ASA)에서 Power BI로 들어오는 이벤트에서 데이터를 추출하는 데 문제가 있습니다.Azure Stream Analytics Query for Power BI

SELECT * 
INTO PowerBI 
FROM PhotonEventData 

이 결과 :이 직접 쿼리 ASA를 통해 전원 BI로 밀어 얻을 수

"data": "[{\"Temperature\":74.15750885,\"Humidity\":26.32574463}]", 
"device_id": "1e0037000d47353136383631", 
"event": "Photon_WeatherData", 
"published_at": "2017-12-12T16:52:18.405Z" 

: 여기

는 푸른 IOT 허브로 들어오는 피드의 예입니다 : Screenshot of PBI Dataset

[{"Temperature":73.81002045,"Humidity":26.56988525}] 

하지만 OU를 벗겨 수없는 것 ASA의 데이터 포인트를 사용하여 각 키/값 쌍을 Power BI에 전달할 수 있습니다. 데이터를 배열하고 복잡한 유형 SELECT data.Temperate 작동하지 않습니다하지 때문에

SELECT data.Temperature 
INTO PowerBI 
FROM PhotonEventData 

답변

0

: I는 다음과 같은 몇 가지 다른 일을 시도했습니다.

GetArrayElement 메서드가 필요합니다 (the docs 참조).

SELECT GetRecordPropertyValue(GetArrayElement(data, 0), 'Temperature') AS Temperature 
INTO PowerBI 
FROM PhotonEventData 

편집 : 배열이 복잡한 유형으로 구성되어 있기 때문에 그리고 당신은 Temperature 속성 값을 얻을 GetRecordPropertyValue을 필요로하는 다른 대답이 지적 하듯이 데이터 속성은 JSON의 배열 대신 문자열의 배열을 포함 사물.

{ 
    "data": [{ "Temperature":74.15750885, "Humidity":26.32574463}], 
    "device_id": "1e0037000d47353136383631", 
    "event": "Photon_WeatherData", 
    "published_at": "2017-12-12T16:52:18.405Z" 
} 
0

이는 "데이터"필드는 문자열로 포맷이 아닌 JSON 객체로되어 보인다 제대로 내 솔루션을 사용할 수 아래 같은 객체를 나타냅니다 그래서 당신은 그 문제를 해결 할 수 있습니다. JavaScript UDF 함수를 사용하여 JSON으로 구문 분석 할 수 있습니다. 이를 위해 당신은 푸른 스트림 분석이 함수를 만들 수 있습니다

function main(input, key) { 
    // return key 
    var myinput = String(input) 
    myinput = myinput.substring(1, myinput.length - 1); 
    values = JSON.parse(myinput); 
    return values[key] 
} 

그런 다음 쿼리가 될 것입니다 :

select udf.extract(data,'Temperature') as temp, udf.extract(data,'Humidity') as hmdt from PhotonEventData 

당신이 더 이상 질문이 있으면 알려주세요.