3
votes

Existe-t-il un moyen de joindre tous les tableaux dans la colonne Clickhouse, puis de filtrer les doublons?

J'ai une table clickhouse dont l'une des colonnes est Array (T). Quand je cours SELECT array_field FROM ma_table J'obtiens ce qui suit:

{a, b, c, d, e}

Je dois trouver un moyen d'obtenir une liste de valeurs uniques dans toutes ces listes, comme ça:

1 | {a, b, c}
--------------
2 | {a, b}
--------------
3 | {d, e}


0 commentaires

3 Réponses :


1
votes

J'ai trouvé une solution qui fonctionne pour moi:

SELECT DISTINCT arrayJoin(array_field)
FROM my_table


0 commentaires

6
votes

Pour obtenir la même chose dans un tableau sur une ligne: utilisez groupUniqArray avec le combinateur -Array . Consultez la documentation

SELECT *
FROM my_table 

┌─array_field───┐
│ ['a','b','c'] │
│ ['a','b']     │
│ ['d','e']     │
└───────────────┘

3 rows in set. Elapsed: 0.001 sec. 

SELECT DISTINCT arrayJoin(array_field)
FROM my_table 

┌─arrayJoin(array_field)─┐
│ a                      │
│ b                      │
│ c                      │
│ d                      │
│ e                      │
└────────────────────────┘

SELECT groupUniqArrayArray(array_field)
FROM my_table 

┌─groupUniqArrayArray(array_field)─┐
│ ['c','e','d','a','b']            │
└──────────────────────────────────┘


0 commentaires

0
votes

Une autre solution à votre problème

SELECT arrayDistinct(arrayFlatten(groupArray(array_field)))
FROM my_table 


0 commentaires