2016-09-13 4 views
1

시간 기반 이벤트 수집을 위해 Azure Event Hub를 사용하고 있습니다. Azure Stream Analytics (ASA)를 연결했습니다.Azure Stream Analytics 입력이 시간대 정보가 포함 된 문자열을 손상시킵니다.

이렇게하면 ASA 수준에서 시간대 정보가 손실됩니다. "event_timestamp": ISO 8601 예와 호환 타임 스탬프 문자열을 포함하는 JSON 형식으로 내가 보낸 데이터 : 내가 확인 무엇

는 다음과 "2016-09-02T19 : 51 : 38.657 + 02 : 00 "

이 도구를 작성한 사람 덕택에 ServiceBus Explorer를 통해이 문자열이 Event Hub에 그대로 도착했는지 확인했습니다.

Stream Analytics에서 이벤트 허브를 입력으로 추가했습니다. Azure 포털에서 SAMPLE DATA 옵션을 사용하면 "event_timestamp": "2016-09-02T17 : 51 : 38.6570000"

의 이유는 무엇입니까?

ISO 8601에 따르면 타임 스탬프에 타임 존을 지정하지 않으면 타임 스탬프가 localtime으로 변환됩니다. Azure 리소스가 실행되는 시간대를 의미합니까? 이 경우 지리적 복제를 어떻게 사용할 수 있습니까?

즉, 데이터를 소비하고 대시 보드에 표시 한 후에는 항상 스트림 분석이 실행되는 서버 시간과 관련이 있음을 의미합니다.

JSON 페이로드에 시간대 정보를 별도로 추가하고 나중에 다시 구성해야합니까?

결론적으로 ASA는 실제로 데이터 스트림에서 정보를 제거/제거합니다. SELECT * INTO [myoutput] FROM [myinput]

이렇게하면 내 데이터의 내용 (*)이 변경됩니다. 시간대 정보와 함께 datetime으로 나타나는 모든 문자열이 변환됩니다.

내 생각에 이것은 매우 원하지 않는 동작입니다.

나는이 포럼에서 다른 사람들의 의견에 매우 흥미가 있습니다.

답변

0

달리 지원되고 명시 적으로 구성되지 않는 한 Azure의 모든 항목은 UTC 시간대로 실행됩니다 (시간대 설정을 지원하는 서비스가 많지 않음). 시간대 정보가 누락 된 이유를

당신이 당신의 인용 샘플을 보면 가깝게는 타임 스탬프가 ASA에서 UTC로 변환되는 것을 알 수는, 그건 :

이벤트 허브에 보낸

: "event_timestamp": "2016-09-02T19:51:38.657+02:00"

에서 수신 51 : 이벤트가 (19)에 전송 "event_timestamp":"2016-09-02T21:51:38.6570000"

참고 : ASA 38.657 +2 : 51 : 절대적으로 동일 38.6570000 00와 ASA는 (21)를 읽습니다.

UPDATE

내가 ASA 다큐 일부 exerpts을 ISO 표준에 대한 전문가 아니지만, 현재 위치는 : Azure Stream Analytics data types

날짜는 와 하루의 시간과 결합 된 날짜를 정의 24 시간제를 기준으로하며 UTC (시간대 오프셋 0)를 기준으로 한 초 단위 초입니다.

convertions는 :

날짜 문자열이 날짜 시간은 UTC에 있다고 설명되어 있습니다

표준 ISO 8601 다음 날짜로 변환. 따라서 명시 적으로 지정할 필요가 없습니다. 위키 피 디아가 ISO 문서가 아니기 때문에 ISO가 안심할 수 있는지 여부는 알 수 없습니다. ISO 전문가가 아니기 때문에 두 번째입니다.

+0

동의합니다. 그러나 시간대 정보가 손실된다는 사실은 어떨까요? (정보가 저하됨) – maartenk

+0

UTC 관련 정보가 시간 표현과 함께 제공되지 않으면 시간은 현지 시간으로 간주됩니다. 출처 : wikipedia https://en.wikipedia.org/wiki/ISO_8601. 이것은 ASA가 UTC가되는 시간을 표현하기 위해 21 : 51 : 38.6570000Z을 읽어야 함을 의미합니다. – maartenk

+0

여러분의 의견을 공유해 주셔서 감사합니다. – maartenk

관련 문제