Stream Analyatic(SA) множественный вход и один выход

Мне нужен способ, где я могу объединить вход от 2 входа SA до 1 выхода SA.

Например

Я пытаюсь прочитать данные из двух входных данных и хочу поместить их в один выход (таблица SQL). Получено исключение, в котором говорится: "Дублированные выходные имена не допускаются".

SELECT
    Input.internal.data.id AS id,
    Input.context.data.eventtime AS eventtime,
    recordProperty.PropertyName AS name,
    Cast(recordProperty.PropertyValue.Value AS bigint) AS value
INTO
    [output-custommetric]
FROM
    [input-custommetric] AS Input TIMESTAMP BY Input.context.data.eventtime 
    CROSS APPLY GetElements(Input.[context].[custom].[metrics]) AS flat
    CROSS APPLY GetRecordProperties(Flat.ArrayValue) AS recordProperty

SELECT
    Input.internal.data.id AS id,
    Input.context.data.eventtime AS eventtime,
    recordProperty.PropertyName AS name,
    Cast(recordProperty.PropertyValue.Value AS bigint) AS value
INTO
    [output-custommetric]
FROM
    [input-slacustommetric] AS Input TIMESTAMP BY Input.context.data.eventtime 
    CROSS APPLY GetElements(Input.[context].[custom].[metrics]) AS flat
    CROSS APPLY GetRecordProperties(Flat.ArrayValue) AS recordProperty

1 ответ

Поскольку тип данных обоих запросов кажется одинаковым, вы можете использовать UNION, чтобы объединить выходные данные ваших двух запросов в один перед выводом в таблицу SQL.

Вот переписать ваш запрос:

SELECT
    Input.internal.data.id AS id,
    Input.context.data.eventtime AS eventtime,
    recordProperty.PropertyName AS name,
    Cast(recordProperty.PropertyValue.Value AS bigint) AS value
INTO
    [output-custommetric]
FROM
    [input-custommetric] AS Input TIMESTAMP BY Input.context.data.eventtime 
    CROSS APPLY GetElements(Input.[context].[custom].[metrics]) AS flat
    CROSS APPLY GetRecordProperties(Flat.ArrayValue) AS recordProperty
UNION
SELECT
    Input.internal.data.id AS id,
    Input.context.data.eventtime AS eventtime,
    recordProperty.PropertyName AS name,
    Cast(recordProperty.PropertyValue.Value AS bigint) AS value
FROM
    [input-slacustommetric] AS Input TIMESTAMP BY Input.context.data.eventtime 
    CROSS APPLY GetElements(Input.[context].[custom].[metrics]) AS flat
    CROSS APPLY GetRecordProperties(Flat.ArrayValue) AS recordProperty
Другие вопросы по тегам