Выбрать столбцы из другой таблицы по массиву с именами столбцов - PullRequest
0 голосов
/ 07 ноября 2019

Предположим, у меня есть эта таблица meta_table

+------------+------------------------+
| table_name |       col_names        |
+------------+------------------------+
| t1         | {ID, PRICE, OPERATION} |
| t2         | {TYPE, PRICE, ANGLE}   |
+------------+------------------------+

, где col_names имеет структуру массива.

t1 и t2 содержат столбцы, содержащиеся в массиве + некоторыедругие столбцы, которые не отображаются в массиве.

Первый вопрос: как выбрать из таблиц t1 и t2 только столбцы, содержащиеся в массиве, из столбца col_names?

Второй вопрос: основная цель - подсчитать количество пропущенных для каждого столбца в массиве для каждой таблицы и вернуть его в новый столбец со структурой массива:

+------------+------------------------+-----------+
| table_name |       col_names        |  n_miss   |
+------------+------------------------+-----------+
| t1         | {ID, PRICE, OPERATION} | {0, 1, 0} |
| t2         | {TYPE, PRICE, ANGLE}   | {0, 0, 1} |
+------------+------------------------+-----------+

Любые идеи о том, каксделать это?

Я использую Clickhouse

Заранее большое спасибо!

1 Ответ

0 голосов
/ 07 ноября 2019

Это отвечает оригинальной версии вопроса.

Если я правильно понимаю, вы можете использовать array join. Я не очень знаком с синтаксисом Clickhouse, но я думаю, что это то, что вы хотите:

select a.*
from t1 array join
     t1.array as a;
...