将所有整数列转换为浮点数

时间:2019-04-15 12:26:35

标签: sql google-bigquery

我大约有30个整数列,我想将所有现有的整数列转换为浮点数据类型。

到目前为止,我一次只能转换一列。

我已经尝试过此代码,但无法成功。

select CAST(sales,duration AS float) FROM tableName

在BigQuery中可以这样做吗?

1 个答案:

答案 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'), ')');

哪个返回一个数组,可以立即使用:

enter image description here