当我想要附加具有不同数据类型的表时,我的流程稍后会遇到问题。
我正在从现有表格中创建一个新表格。一列是 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/