java - 在 BigQuery Java UDF 中对数组进行累积和时出现问题

标签 java google-bigquery udf

我需要在 BigQuery Java UDF 中对数组进行累积和。对于下面给出的示例,我期望结果为:[1,3,6,54,54]。但我得到的是:

result from bigquery

有人可以告诉我我做错了什么吗?我是 Java 和 UDF 新手。谢谢!

#Standard SQL    
CREATE TEMP FUNCTION
      test(a ARRAY<int64>)
      RETURNS ARRAY<int64>
      LANGUAGE js AS """
    n=a.length;
    for (var i=1;i<= n-1;i++)
    {
    a[i]+=a[i-1];
    }
    return a;
    """;
    WITH
      test AS (
      SELECT
        [
        1,
        2,
        3,
        48,
        0] AS a)
    SELECT
      test(a)
    FROM
      test

最佳答案

INT64 is not officially supported with JavaScript UDFs此时由于还没有 64 位整数类型。相反,您应该使用 FLOAT64 作为数值,例如:

#StandardSQL    
CREATE TEMP FUNCTION
  test(a ARRAY<float64>)
  RETURNS ARRAY<float64>
  LANGUAGE js AS """
n=a.length;
for (var i=1;i<= n-1;i++)
{
a[i]+=a[i-1];
}
return a;
""";
WITH
  test AS (
  SELECT
    ARRAY<FLOAT64>[
    1,
    2,
    3,
    48,
    0] AS a)
SELECT
  test(a)
FROM
  test

关于java - 在 BigQuery Java UDF 中对数组进行累积和时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44151773/

相关文章:

java - 在 Java 1.6 中弃用

java - 在android studio中查询设置sql数据库列值

google-bigquery - 如何在 Google BigQuery 上存储每日/每月快照?

google-bigquery - BigQuery Transfer 与 BigQuery 负载

java - 是否有从 Spark Streaming 到 google big query 的连接器?

javascript - BigQuery 将字符串转换为日期时间

java - Hive UDF - Java 字符串转换异常

java - 显示 Lucene 搜索结果中的示例文本

java - 当启动另一个 Activity 时,什么会强制 Android Activity 被销毁

sql - 如何处理原始可空类型的 Spark UDF 输入/输出