Чтобы найти отличительные значения после выполнения операции UNION в Azure Stream Analytics - PullRequest
0 голосов
/ 10 мая 2019

Я выполняю запрос в потоковой аналитике с функцией UNION. Я хотел бы получить различные значения для результатов запроса. Поскольку UNION разрешает дублирование в Azure Stream Analytics, я получаю результат с повторяющимися значениями. Я пробовал использовать ключевое слово DISTINCT, но даже оно не работает.

Ниже приведен запрос, который я пробовал.

    WITH 
     ABCINNERQUERY AS (
     SELECT
        event.ID as ID,
        ABCArrayElement.ArrayValue.E as TIME,
        ABCArrayElement.ArrayValue.V as ABC
    FROM
        [YourInputAlias] as event
    CROSS APPLY GetArrayElements(event.ABC) AS ABCArrayElement
    ),
     XYZINNERQUERY AS (
      SELECT
        event.ID as ID,
        XYZArrayElement.ArrayValue.E as TIME,
        XYZArrayElement.ArrayValue.V as XYZ
    FROM
        [YourInputAlias] as event
    CROSS APPLY GetArrayElements(event.XYZ) AS XYZArrayElement
),
KEYS AS
(
    SELECT DISTINCT
        ABCINNERQUERY.ID AS ID, 
        ABCINNERQUERY.TIME as TIME
    FROM ABCINNERQUERY
        UNION 
    SELECT DISTINCT
        XYZINNERQUERY.ID AS ID, 
        XYZINNERQUERY.TIME as TIME
    FROM XYZINNERQUERY
)

SELECT
    KEYS.ID as ID,
    KEYS.TIME as TIME

INTO [YourOutputAlias] 
FROM KEYS

В приведенном выше запросе идентификатор уникален, и время будет массивом значений со временем и значением ABC / XYZ.

входной файл JSON, как показано ниже.

[
{"ID":"006XXXXX",
"ABC":
[{"E":1557302231320,"V":54.799999237060547}],
"XYZ":
[{"E":1557302191899,"V":31.0},{"E":1557302231320,"V":55}],

{"ID":"007XXXXX",
"ABC":
[{"E":1557302195483,"V":805.375},{"E":1557302219803,"V":0}],
"XYZ":
[{"E":1557302219803,"V":-179.0},{"E":1557302195483,"V":88}]
]

Ожидаемый результат без дубликатов.

...