google-bigquery - 创建表时更改架构

标签 google-bigquery

当我想要附加具有不同数据类型的表时,我的流程稍后会遇到问题。

我正在从现有表格中创建一个新表格。一列是 Calenderweek(KW),它最初是一个 STRING。为了稍后附加我的表,我需要为该列使用相同的数据类型。

有没有办法在创建新表时更改列的数据类型?

CREATE TABLE IF NOT EXISTS
  MyNewTable
  AS(

  SELECT
    Column_1 AS 
    Column_1_alias,
    **KW_ AS KW,**
    
  FROM
    SourceTable);

最佳答案

这个查询所做的是它只获取包含数字的列 KW 的值,然后检查是否 STRING value 包含一个字符并将其从 STRING 中删除.终于啦CAST到列的所需值类型,因此它以 INT 结尾.

CREATE TABLE IF NOT EXISTS
 dataset.MyNewTable
 AS(
 
 SELECT
   Column1 AS
   Column1_alias,
   CAST(REGEXP_REPLACE(KW,'[^0-9^]','') as INT64) as KW_Alias
 FROM
    `project.dataset.source`
        WHERE REGEXP_CONTAINS(KW,'[0-9]')
    );

另一种可能的解决方案是使用函数 REPLACE而不是 REGEXP_REPLACE , 将字符串替换为数字。

关于google-bigquery - 创建表时更改架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73663931/

相关文章:

python - 使用 Pandas 渲染来自 BigQuery 的 JSON 响应?

sql - BigQuery查询以查找表的列名

python - 用户无权查询 bigquery 表

python - Google Cloud Composer BigQuery Operator - 获取作业 API HTTPError 404

google-bigquery - Google BigQuery 系统状态页?

sql - BigQuery - 将科学记数法转换为十进制格式

sql - 在 Google bigquery 中转换数据 - 提取文本、将其拆分为多列并旋转数据

google-bigquery - PostgreSQL 的 `DISTINCT ON` 的 BigQuery 等效项是什么?

java - 如何在 BigQuery 数据访问日志中记录自定义信息?

mysql - 如何从另一个bigquery响应将值插入到mysql表中