массив, в котором тоже 10 элементов. Как мне этот массив превратить в доп. колонку этого запроса, чтоб в каждой строке было по одному элементу из массива?
А по какому принципу то хочешь их соединить? а так смотри ARRAY JOIN, ток в лоб это не совсем то, что ты хочешь.
array join мне произведение делает (получается 100 строк)
Ну а как объединить то хочешь :) возможно arrayElement(arr,rowNumberInAllBlocks()) такое, но все зависит от логики объединения
Хорошо, тогда поконкретней скажу. Массив - это массив кортежей, в каждом кортеже надо сматчить одно значение с одним полем из запроса
мб сделать JOIN а до этого развернуть этот массив в таблицу.
select intcolarr , arrcolarr from ( select groupArray(intcol) intcolarr, any(arrcol) arrcolarr from ( select cityHash64(number) intcol, range(10) arrcol from numbers(10) ) ) array join intcolarr, arrcolarr;
а, вам не рандомно, ну можете отсортировать массив как надо и все
да я уже по совету выше сделал с джойном
наивный метод select intcol, (arrayFilter(x->x.2=intcol, arrcol) as arr).1 as arrid, arr.2 as arrJoinedHashKey from ( select cityHash64(number) intcol, arrayMap(x-> (x, cityHash64(x) ), range(10)) arrcol from numbers(10) ) менее наивный select intcolarr, arrSorted.1, arrSorted.2 from ( select arraySort(x->x, groupArray(intcol)) intcolarr, arraySort(x->x.2, any(arrcol)) as arrSorted from ( select cityHash64(number) intcol, arrayMap(x-> (x, cityHash64(x) ), range(10)) arrcol from numbers(10) ) ) array join intcolarr, arrSorted; ```
Обсуждают сегодня