想象一下一个名为orders
的表,其中包含一个重复且嵌套的字段items
。此字段是结构数组,其中结构包含单个字段unit_price
。有没有一种方法可以将字段从字符串转换为浮点数而又不像我目前那样嵌套/聚合?
在这种情况下,我正在转换通过ETL作业创建的表。 ETL作业并不总是能正确获得数据类型,因此有时我需要在重复记录中强制转换字段。
这是我目前的做法:
SELECT
ARRAY
(
SELECT AS STRUCT
CAST(unit_price AS FLOAT64) AS unit_price
FROM UNNEST(items)
) AS items
FROM orders
答案 0 :(得分:2)
您不能将重复的字段/数组CAST转换为不同类型的数组
因此,无法将ARRAY<STRUCT<unit_price STRING>>
转换为ARRAY<STRUCT<unit_price FLOAT64>>
我认为,您现在要做的就是走的路!
注意:如果要将项目名称从unit_price
更改为item_price
-在下面的简单强制转换下可以使用
#standardSQL
SELECT CAST(items AS ARRAY<STRUCT<item_price STRING>>) items
FROM `project.dataset.orders`