【问题标题】:Select columns from another table given an array with the column names给定具有列名的数组,从另一个表中选择列
【发布时间】:2020-03-04 01:56:25
【问题描述】:

假设我有这张桌子meta_table

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

其中 col_names 有一个数组结构。

t1t2 的列包含在数组中 + 其他一些未出现在数组中的列。

第一个问题:如何从表t1t2 中仅选择列col_names 中的数组中包含的列?

第二个问题:主要目的是统计每张表的数组中每一列的缺失数,并以数组结构在新列中返回:

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

关于如何做的任何想法?

我正在使用 Clickhouse

非常感谢!

【问题讨论】:

  • 使用 SQL 是不可能的 - 你不能形成动态查询。使用服务器端来解决这个任务。
  • 谢谢弗拉基米尔,正如你所说,我没有找到办法,所以我最终导出表格并在 R 中完成

标签: sql arrays clickhouse


【解决方案1】:

这回答了问题的原始版本。

如果我理解正确,您可以使用array join。我对 Clickhouse 语法不是很熟悉,但我认为这就是你想要的:

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

【讨论】:

  • 该代码应该如何从 t2 中提取列?
猜你喜欢
  • 1970-01-01
  • 2011-03-30
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多