我大约有30个整数列,我想将所有现有的整数列转换为浮点数据类型。
到目前为止,我一次只能转换一列。
我已经尝试过此代码,但无法成功。
select CAST(sales,duration AS float) FROM tableName
在BigQuery中可以这样做吗?
答案 0 :(得分:2)
在bigquery中可以这样做吗?
是的,您可以使用DML command来更改表格的结构 例如:
#standardSQL
CREATE OR REPLACE TABLE mydataset.newtable (
field0 FLOAT64,
field1 FLOAT64,
field2 FLOAT64)
OPTIONS(
description="a table with new FLOAT fields",
labels=[("org_unit", "development")]
)
完成此操作后,您可以从表格中进行选择,而无需使用cast
如果您有很多列,并且很难建立列表,则有两种方法可以加快速度:
选项1:
使用bq show
命令获取所有列(如果您没有在本地安装bq
,则可以使用BigQuery shell)
bq show --format=prettyjson --schema datasetId.tableId
这将以以下格式输出所有列:
{
"mode": "NULLABLE",
"name": "ProvisionedThroughput",
"type": "STRING"
}
您可以获取此输出,并使用任何您喜欢的编辑器来为CREATE OR REPLACE
创建正确的语法
选项2:
如果您已订阅BigQuery INFORMATION_SCHEMA beta,则只需从INFORMATION_SCHEMA中选择所有字段,如下所示:
WITH ColumnNames AS
(SELECT COLUMN_NAME,
data_type
FROM datasetId.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = "tables" )
SELECT CONCAT(ARRAY_TO_STRING(ARRAY (SELECT CONCAT(COLUMN_NAME, ' ', 'FLOAT64') FROM ColumnNames), ' \n'), ')');
哪个返回一个数组,可以立即使用: