Мне нужно сделать следующее с 2 полями массива в таблице ниже. Массивы имеют тип Struct<String, String>
.
- Объединить массивы вместе
- Если между label.key и project.key есть дублирующий ключ, я хочу сохранить только kvp из поля меток
- объединяет объединенный массив в строку с разделителями и упорядочивает их (поэтому я могу сгруппировать их)
Пример данных таблицы
SELECT 1 as id, ARRAY
[STRUCT("testlabel2" as key, "thisvalueisbetter" as value), STRUCT("testlabel3", "testvalue3")] as labels,
[STRUCT("testlabel2" as key, "testvalue2" as value)] as project
Следующий запрос делает все, кроме # 2, и я не уверен, как это сделать sh. У кого-нибудь есть предложения, как это сделать?
SELECT
id,
(SELECT STRING_AGG(DISTINCT CONCAT(l.key, ':', l.value) ORDER BY CONCAT(l.key, ':', l.value))
FROM UNNEST(
ARRAY_CONCAT(labels, project)) AS l) AS label,
FROM `mytestdata` AS t
GROUP BY id, label
В настоящее время этот запрос дает вывод:
1 testlabel2:testvalue2,testlabel2:thisvalueisbetter,testlabel3:testvalue3
Но я ищу:
1 testlabel2:thisvalueisbetter,testlabel3:testvalue3