google-bigquery - 您可以在不取消嵌套的情况下投射重复的字段吗?
问题描述
想象一个名为的表,其中包含一个名为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`
推荐阅读
- lisp - 自动将矩形转换为已知度数的凹弧
- docker - 无法连接到 Docker 上托管的 MLFlow 模型
- python - Python中使用月份缩写的正则表达式
- python - 如何使用 for 循环提取 loan_price 低于 500 的贷款?
- interface - 为什么不能在接口上使用带有表达式的 C# 9
- python - 通过 Discord.py 获得角色
- https - HTTPS 代理服务
- java - 通过单选按钮从 Thymeleaf 获取输入,将包装对象中的列表返回给控制器
- javascript - 在节点中转换非统一时间戳?
- google-apps-script - Google Sheet 插件超时 ~ 45 秒?