当 运行 使用 DataFlow Engine 的 bigquery 查询时,如何使用 UDF(和其他函数)?

How can I use UDF (and other functions) when running a bigquery query using DataFlow Engine?

我正在尝试 运行 使用云数据流引擎在 bigquery 中进行查询。该查询使用用 Javascript 编写的自定义函数(Levenshtein 距离)。在使用 ST_GeogPointARRAY_AGG.

等其他函数时,我也在尝试同样的问题

我收到此错误 Function not found: ST_GeogPoint。如果我删除与函数对应的列,我会得到与 LevenshteinDistance 相同的错误,然后是 ARRAY_AGG,依此类推。

查询如下所示:

WITH
  directory AS(
  SELECT
    TRIM(dir) AS street,
    lat,
    lon
  FROM
    bigquery.table.`project-id`.`dataset-name`.`table-name_1`),
  cruza AS (
  SELECT
    name,
    TRIM(p.dir) AS dir,
    TRIM(directory.dir) AS street,
    directory.lat AS lat,
    directory.lon AS lon,
    ST_GeogPoint(lat,lon) AS latlon,
    CAST(FLOOR(DATE_DIFF(CURRENT_DATE(),birth_day,DAY)/362.25) AS int64) AS age,
    dataset-name.LevenshteinDistance(TRIM(dir),TRIM(directory.dir)) AS lv_score
  FROM
    bigquery.table.`project-id`.`dataset-name`.`table-name_2` AS p,
    directory
  WHERE
    p.com = 'my_com' and name is not null)
SELECT
  AS value ARRAY_AGG(c ORDER BY lv_score LIMIT 1)[OFFSET(0)] AS col
FROM
  cruza c
WHERE
  lv_score <= 10
GROUP BY
  dir
ORDER BY
  col.lv_score

如何使用这些功能?

我认为你做不到。 Dataflow SQL 使用 ZetaSQL 的一个变体,即使它只支持一个子集。以下是支持的功能:

https://cloud.google.com/dataflow/docs/reference/sql

ZetaSQL 本身确实有一个 ARRAY_AGG 函数,但 Dataflow SQL 似乎还不支持它。 https://github.com/google/zetasql

单独说明数据流引擎的用例是什么,通常您会使用它来访问直接查询 pubsub 订阅以进行流分析。