我目前正在使用UDF将现有表格转换/解析为另一个表格。
SELECT
parseMethod(path) AS Method,
existing_column
FROM
existing_table
UDF返回一个带有整数值的结构,如下所示
CREATE TEMPORARY FUNCTION parseMethod(req_path STRING)
RETURNS STRUCT<method STRING, banner_id FLOAT64>
LANGUAGE js AS
"""
var method = {}
method = parsePath(req_path);
return method
"""
但是因为UDF只允许返回FLOAT64,所以我停留了整数值的浮点值。我担心将来会引起匹配/比较问题。
是否有一种干净的类型化整数列的方法?我所能想到的只是创建一个临时表,并将其与现有表结合使用WITH
或JOIN
子句,然后将它们转换为最终表格
答案 0 :(得分:1)
如果您担心精度 - 也许您可以将banner_id作为STRING返回,然后使用CAST将其解析为SQL内的INT64,即
#standardSQL
SELECT
STRUCT<method STRING, banner_id INT64>
(x.method, CAST(x.banner_id AS INT64)) result
FROM
(SELECT STRUCT<method STRING, banner_id STRING>("foo", "1234") x)