Потоковая аналитика GetArrayElements в виде строки

У меня есть задание Stream Analytics, которое получает данные из внешнего источника (я не могу сказать, как эти данные форматируются). Я пытаюсь импортировать данные в мое озеро данных, сохраняя их в формате JSON. Это работает нормально, но я также хочу получить вывод в CSV, вот где у меня проблемы.

Поскольку входные данные имеют массив в качестве одного из столбцов, при импорте в JSON он распознает их и предоставляет правильные данные, то есть помещает их в скобки [A, B, C], но когда я использую их в CSV, я получаю представленный столбец как слово "массив". Я думал, что преобразовал бы это в XML, использовал бы STUFF и получил бы их в одной строке, но это не любит использование инструкции SELECT в CROSS APPLY.

Кто-нибудь работал с Stream Analytics, импортирующим данные в CSV, который имеет столбец массива? Если да, то как вам удалось импортировать значения массива?

Пример данных:

[
    {"GID":"10","UID":1,"SID":"5400.0","PG:["75aef","e5f8e"]}, 
    {"GID":"10","UID":2,"SID":"4400.0","PG:["75aef","e5f8e","6d793"]}
]

PG - это столбец, который я пытаюсь извлечь, поэтому выходной CSV должен выглядеть примерно так.

GID|UID|SID|PG
10|1|5400.0|75aef,e5f8e
10|2|4400.0|75aef,e5f8e,6d793

Это запрос, который я использую,

SELECT 
    D.GID ,
    D.UID ,
    D.SID ,
    A.ArrayValue
FROM 
    dummy AS D
    CROSS APPLY GetArrayElements(D.PG) AS A

Как вы можете себе представить, это дает мне результаты в этом формате.

GID|UID|SID|PG
10|1|5400.0|75aef
10|1|5400.0|e5f8e
10|2|4400.0|75aef
10|2|4400.0|e5f8e
10|2|4400.0|6d793

1 ответ

Решение

Как сказал Пит М, вы можете попытаться создать пользовательскую функцию JavaScript для преобразования массива в строку, а затем вы можете вызвать эту пользовательскую функцию в своем запросе.

Пользовательская функция JavaScript:

function main(inputobj) {
    var outstring = inputobj.toString();
    return outstring;
}

Вызовите UDF в запросе:

SELECT
    TI.GID,TI.UID,TI.SID,udf.extractdatafromarray(TI.PG)
FROM
   [TEST-SA-DEMO-BLOB-Input] as TI

Результат:

Другие вопросы по тегам