返回 clickhouse 数组作为列

cra*_*rak 6 sql clickhouse

Clickhouse 是否可以将包含一对数组的结果转换为列?

\n\n

形成这个结果:

\n\n
\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacf2\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacf3\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 \'a\' \xe2\x94\x82 [1,2,3] \xe2\x94\x82 [\'x\',\'y\',\'z\'] \xe2\x94\x82\n\xe2\x94\x82 \'b\' \xe2\x94\x82 [4,5,6] \xe2\x94\x82 [\'x\',\'y\',\'z\'] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n\n

到 :

\n\n
\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacx\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacy\xe2\x94\x80\xe2\x94\x80\xe2\x94\xacz\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 \'a\' \xe2\x94\x82 1 \xe2\x94\x82 2 \xe2\x94\x82 3 \xe2\x94\x82\n\xe2\x94\x82 \'b\' \xe2\x94\x82 4 \xe2\x94\x82 5 \xe2\x94\x82 6 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n\n

这个想法是不必为每行重复标题值。

\n\n

就我而言,“标头”数组 f3 通过查询唯一并连接到 f1、f2。

\n

Vic*_*rov 9

您可以借助indexOf函数来完成此操作。

\n\n
SELECT *\nFROM test_sof \n\n\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f2\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f3\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 a  \xe2\x94\x82 [1,2,3] \xe2\x94\x82 [\'x\',\'y\',\'z\'] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f2\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f3\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 c  \xe2\x94\x82 [7,8,9,0] \xe2\x94\x82 [\'x\',\'y\',\'z\',\'n\'] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f2\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f3\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 d  \xe2\x94\x82 [7,8,9,11] \xe2\x94\x82 [\'x\',\'y\',\'z\',\'n\'] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f2\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f3\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 b  \xe2\x94\x82 [4,5,6] \xe2\x94\x82 [\'x\',\'y\',\'z\'] \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n4 rows in set. Elapsed: 0.001 sec.\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后:

\n\n
SELECT \n    f1, \n    f2[indexOf(f3, \'x\')] AS x, \n    f2[indexOf(f3, \'y\')] AS y, \n    f2[indexOf(f3, \'z\')] AS z, \n    f2[indexOf(f3, \'n\')] AS n\nFROM test_sof \nORDER BY \n    f1 ASC, \n    x ASC\n\n\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80x\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80y\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80z\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80n\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 a  \xe2\x94\x82 1 \xe2\x94\x82 2 \xe2\x94\x82 3 \xe2\x94\x82  0 \xe2\x94\x82\n\xe2\x94\x82 b  \xe2\x94\x82 4 \xe2\x94\x82 5 \xe2\x94\x82 6 \xe2\x94\x82  0 \xe2\x94\x82\n\xe2\x94\x82 c  \xe2\x94\x82 7 \xe2\x94\x82 8 \xe2\x94\x82 9 \xe2\x94\x82  0 \xe2\x94\x82\n\xe2\x94\x82 d  \xe2\x94\x82 7 \xe2\x94\x82 8 \xe2\x94\x82 9 \xe2\x94\x82 11 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n4 rows in set. Elapsed: 0.002 sec. \n
Run Code Online (Sandbox Code Playgroud)\n\n

请记住头数组中的索引不会出现在数据数组中的情况,反之亦然。

\n\n

UPD:如何在不知道“标题”的情况下获取数据的方式。

\n\n

您将得到三列,第三列带有标题。

\n\n
SELECT \n    f1, \n    f2[num] AS f2_el, \n    f3[num] AS f3_el\nFROM test_sof \nARRAY JOIN arrayEnumerate(f2) AS num\nORDER BY f1 ASC\n\n\xe2\x94\x8c\xe2\x94\x80f1\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f2_el\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80f3_el\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 a  \xe2\x94\x82     1 \xe2\x94\x82 x     \xe2\x94\x82\n\xe2\x94\x82 a  \xe2\x94\x82     2 \xe2\x94\x82 y     \xe2\x94\x82\n\xe2\x94\x82 a  \xe2\x94\x82     3 \xe2\x94\x82 z     \xe2\x94\x82\n\xe2\x94\x82 b  \xe2\x94\x82     4 \xe2\x94\x82 x     \xe2\x94\x82\n\xe2\x94\x82 b  \xe2\x94\x82     5 \xe2\x94\x82 y     \xe2\x94\x82\n\xe2\x94\x82 b  \xe2\x94\x82     6 \xe2\x94\x82 z     \xe2\x94\x82\n\xe2\x94\x82 c  \xe2\x94\x82     7 \xe2\x94\x82 x     \xe2\x94\x82\n\xe2\x94\x82 c  \xe2\x94\x82     8 \xe2\x94\x82 y     \xe2\x94\x82\n\xe2\x94\x82 c  \xe2\x94\x82     9 \xe2\x94\x82 z     \xe2\x94\x82\n\xe2\x94\x82 c  \xe2\x94\x82     0 \xe2\x94\x82 n     \xe2\x94\x82\n\xe2\x94\x82 d  \xe2\x94\x82     7 \xe2\x94\x82 x     \xe2\x94\x82\n\xe2\x94\x82 d  \xe2\x94\x82     8 \xe2\x94\x82 y     \xe2\x94\x82\n\xe2\x94\x82 d  \xe2\x94\x82     9 \xe2\x94\x82 z     \xe2\x94\x82\n\xe2\x94\x82 d  \xe2\x94\x82    11 \xe2\x94\x82 n     \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n\n14 rows in set. Elapsed: 0.006 sec.\n
Run Code Online (Sandbox Code Playgroud)\n