SELECT * FROM tmp_03 CROSS JOIN UNNEST(array_concat) AS t(array_v)exception:java.util.concurrent.ExecutionException: java.sql.SQLException: Query failed (#20230529_064552_04073_847se): Cannot unnest type: varchar
时间: 2024-02-17 08:03:05 浏览: 178
根据错误信息,看起来 `array_concat` 这个列是一个 `varchar` 类型的列,而 `UNNEST` 函数只能用于数组类型 (`array`) 或者是映射类型 (`map`) 的列。因此,需要将 `array_concat` 这个列转换成数组类型之后才能使用 `UNNEST` 函数。
如果 `array_concat` 这个列中的每个元素都是由 `#` 分隔的多个值,您可以尝试使用 `split` 函数将其转换成数组类型。例如:
```
SELECT
*
FROM (
SELECT
pick_date,
pick_region_nm,
pick_park_nm,
split(array_concat, ',') as array_values
FROM tmp_03
) a
CROSS JOIN UNNEST(a.array_values) AS t(array_v)
```
在这个版本中,我们使用 `split` 函数将 `array_concat` 列中的每个元素转换成数组类型。然后在主查询中,我们可以使用 `CROSS JOIN UNNEST` 的方式将数组中的每个元素展开成一行数据,从而实现了将一个列中的多个值拆分成多行的效果。
请注意,在这个版本中,您需要使用 `a.array_values` 来引用 `split` 函数生成的数组列。同时,也需要注意到在 `CROSS JOIN UNNEST` 函数中,我们使用了别名 `t(array_v)` 来指定展开后的列名为 `array_v`,以便在后续的查询中使用。
阅读全文