想象一个表,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
您不能将重复的字段 / ARRAY 转换为不同类型的数组
因此,转换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`
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句