Google cloud platform 大查询-将整型列转换为浮点型

Google cloud platform 大查询-将整型列转换为浮点型,google-cloud-platform,google-bigquery,Google Cloud Platform,Google Bigquery,我想在大查询中将名为lauder的列从int转换为float。我的表名为历史。我已经能够使用这个SQL查询了 SELECT *, CAST(lauder as float64) as temp FROM sandbox.dailydev.historical 查询可以工作,但更改不会保存到表中。我该怎么办?是否将它们保存在临时表中,以便以后使用 您可以将其保存到如下所示的临时表中,然后参考“temp” 你的说法是正确的。但大查询中的表和列是不可变的。您需要运行查询并将结果保存到具有修改列的

我想在大查询中将名为
lauder
的列从
int
转换为
float
。我的表名为
历史
。我已经能够使用这个SQL查询了

 SELECT *, CAST(lauder as float64) as temp 
FROM sandbox.dailydev.historical

查询可以工作,但更改不会保存到表中。我该怎么办?

是否将它们保存在临时表中,以便以后使用

您可以将其保存到如下所示的临时表中,然后参考“temp”


你的说法是正确的。但大查询中的表和列是不可变的。您需要运行查询并将结果保存到具有修改列的新表中

点击“更多”>“查询设置”,在“目的地”中选择“为查询结果设置目的地表”,填写表名。您甚至可以选择是否要用生成的表覆盖现有表

设置好这些设置后,只需像往常一样“运行”查询


不能更改表中的列数据类型

您可以做的是:

  • 创建一个位于顶部并处理数据类型转换的视图
  • 创建一个新列,将数据类型设置为float64,并在其中插入值
  • 覆盖表格

  • 选项2和3的概述很好,包括我在上面分享的链接中的优点和缺点。

    您可以使用创建或替换表将结构更改以及数据写入同一个表中:

    CREATE OR REPLACE TABLE sandbox.dailydev.historical
    AS SELECT *, CAST(lauder as float64) as temp FROM sandbox.dailydev.historical;
    
    在本例中,
    historic
    表将用一个附加列
    temp
    重新构造


    如果您使用
    选择*
    ,您将扫描整个表,因此将产生成本。如果表很小,这不应该是个问题,但如果表足够大,可以考虑成本-下面是另一种方法:

  • 应用以添加所需数据类型的新列

  • 申请新栏目

    更新表 设置新列=强制转换(旧列为float64) 哪里是真的


  • 谢谢如何直接存储在当前表中?对不起,我不确定是否得到了它。是否要将新数据保存在“历史”表中?@Pierre56,您需要更改您的表并插入到表中-您可以按照下面给出的SKM答案进行操作
    CREATE OR REPLACE TABLE sandbox.dailydev.historical
    AS SELECT *, CAST(lauder as float64) as temp FROM sandbox.dailydev.historical;