string - 无法在 SELECT 上使用 CAST AS RECORD
问题描述
我有一个包含 2 列的简单表:Col1 和 Col2
sh-3.2# ./bq show --schema dataset.Test
[{"type":"STRING","name":"Col1","mode":"NULLABLE"},{"type":"STRING","name":"Col2","mode":"NULLABLE"}]
此查询工作正常
SELECT * EXCEPT (Col2) , CAST(Col2 AS NUMERIC) AS Col2 FROM `project.dataset.Test` LIMIT 1000
此查询返回错误
SELECT * EXCEPT (Col2) , CAST(Col2 AS RECORD) AS Col2 FROM `project.dataset.Test` LIMIT 1000
任何想法为什么?
我正在尝试使用 WebUI 中出现的关键字 RECORD
解决方案
BigQuery 转换规则不允许您从 String 转换为 Record (AKA Struct)。
https://cloud.google.com/bigquery/docs/reference/standard-sql/conversion_rules
您必须在查询中自己编写结构。像这样的东西:
SELECT
* EXCEPT (Col2),
STRUCT( Col2 as inner_Col2) as my_inner_record
FROM `project.dataset.Test` LIMIT 1000
推荐阅读
- angular - 将我的 Angular 项目更新为 Angular 7 时出错
- sql - 使用相同 WHERE 子句的 SELECT 和 UPDATE 之间的不同结果
- jenkins-pipeline - 如何部署到 OpenShift 中的通用主机名?
- angular - Angular 元素与 Angular 库?
- php - PHP:如何阻止对音频文件的直接 URL 访问,但仍允许登录用户查看但不能下载?
- java - 客户端 服务器 java 套接字
- c++ - 使getline检查输入文件的第二行和第三行
- mysql - 如何在 Spring Boot 中读取 Blob
- python - 为 SQL 机器学习安装 microsoftml 和 revoscalepy
- javascript - 为什么我的 Javascript 代码中的随机数是连接而不是添加?