Google bigquery 截断Bigquery中某个值的前5个值
我试图在bigquery上连接两个表。我在序列号上加入了它们,但对于其中一个表,序列号以5个零开始,而在另一个表上则没有。如何使用截断的值编写此联接 我可以在联接中执行此操作,还是必须先执行此操作并将其保存为新表Google bigquery 截断Bigquery中某个值的前5个值,google-bigquery,truncate,Google Bigquery,Truncate,我试图在bigquery上连接两个表。我在序列号上加入了它们,但对于其中一个表,序列号以5个零开始,而在另一个表上则没有。如何使用截断的值编写此联接 我可以在联接中执行此操作,还是必须先执行此操作并将其保存为新表 SELECT * FROM [dataworks-356fa:FirebaseArchive.PT_Results] AS Model_Results JOIN [dataworks-356fa:FirebaseArchive.Master_List_PT] as Master_Lis
SELECT * FROM [dataworks-356fa:FirebaseArchive.PT_Results] AS Model_Results
JOIN [dataworks-356fa:FirebaseArchive.Master_List_PT] as Master_List on Serial=Serial_Number
包含5个零的表是PT_结果
例如。。。
PT#U结果序列#=0000028106
Master_list_PT serial#=28106尝试将两列强制转换为int:
SELECT *
FROM
(
SELECT
SUBSTR(CAST(CAST(Serial AS INT) AS STRING), 1, 5) AS Serial,
Latest_Use,
Total_Hours,
Devices_Connected
FROM [dataworks-356fa:FirebaseArchive.PT_Results]
) AS Model_Results
JOIN
(
SELECT
SUBSTR(CAST(CAST(Serial_Number AS INT) AS STRING), 1, 5) AS Serial_Number,
Status,
Model_Number
FROM [dataworks-356fa:FirebaseArchive.Master_List_PT]
) AS Master_List
ON Model_Results.Serial = Master_List.Serial_Number
从比较的角度来看,将Serial
转换为整数应删除前导零。请注意,我使用了一个派生表来进行转换,因此ON
子句只涉及纯列,而不涉及函数
更新:
如果要在去掉前导零后比较两个序列列的前五位数字,可以尝试双重转换:
SUBSTR(CAST(CAST(Serial AS INT) AS STRING), 1, 5)
我尝试了这个,这是我收到的错误。ON子句必须是且of=每个表中一个字段名的比较,所有字段名都以表名为前缀。考虑使用标准的SQL.COM/BigQue/DoS/Reals/StimultSQL/),它允许包含表达式和剩余谓词的非均匀连接和比较。然后,您可能需要使用派生表。使用两个表中的列更新您的问题。这可能会很难看。PT\u结果=串行最新\u使用总小时设备\u连接这是一个派生表我从更大的tableMaster列表中查询了这些结果\u PT=串行号状态模型_Number@W.Stephens让我知道我当前的查询是否适用于您。