什么是BigQuery中类型转换结构成员的好方法?

时间:2017-01-26 16:04:45

标签: google-bigquery

我目前正在使用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,所以我停留了整数值的浮点值。我担心将来会引起匹配/比较问题。

是否有一种干净的类型化整数列的方法?我所能想到的只是创建一个临时表,并将其与现有表结合使用WITHJOIN子句,然后将它们转换为最终表格

1 个答案:

答案 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)