是否可以使用 UDF 从 BigQuery 读取 gcs 对象的元数据

Posted

技术标签:

【中文标题】是否可以使用 UDF 从 BigQuery 读取 gcs 对象的元数据【英文标题】:Is it possible to read gcs object's metadata from BigQuery using UDF 【发布时间】:2021-06-16 04:59:14 【问题描述】:

我正在从 GCS 对象(使用 csv 和 json 文件类型(在单独的表中))将数据提取到 BigQuery 表中,我想执行数据验证,因此在将文件上传到 GCS 期间,我已将行数存储在文件元数据中,现在之后摄取完成,我想验证摄取表中的行数是否与文件元数据中的行数匹配。

注意:我想在 UDF 中使用 js 可用性,但它不允许我们使用外部库

更新:

根据介质上的这篇文章,他们说我们可以通过将编译的 js 包作为 .js 文件发布到 Cloud Storage 并使用 UDF 中的选项调用它来使用外部库

由于对js一窍不通,不知道怎么看这篇文章。

注意:我还在文章中发布了一个代码片段。

https://hoffa.medium.com/new-in-bigquery-persistent-udfs-c9ea4100fd83

CREATE OR REPLACE FUNCTION x.nlp_compromise_number(str STRING)
RETURNS NUMERIC LANGUAGE js AS '''
   return nlp(str).values(0).toNumber().out()
'''
OPTIONS (
  library="gs://fh-bigquery/js/compromise.min.11.14.0.js");

【问题讨论】:

***.com/questions/63073217/… 这个问题试图解决这个问题,但没有提到任何关于 UDF 的内容 【参考方案1】:

在标准 SQL [2] 中无法使用 UDF 提取对象元数据 [1]。但是,使用 Cloud Function 来执行数据验证会更容易,因为它会更容易从两个源中提取并执行比较。

[1] - https://cloud.google.com/storage/docs/viewing-editing-metadata#view

[2] - https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functions

【讨论】:

我已经添加了更多信息来提问,你可以检查一下【参考方案2】:

您无法使用 BigQuery 执行外部 API 调用。在 UDF 和标准查询中都没有。您无法从外部(GCP 或其他地方)获取数据。在运行查询之前,您必须将所有数据存储在 BigQuery 中。

【讨论】:

我已经添加了更多信息来提问,你可以检查一下

以上是关于是否可以使用 UDF 从 BigQuery 读取 gcs 对象的元数据的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中是不是存在用于从东、北转换为纬度、经度的 UDF?

使用 Google Datalab,如何在 Google BigQuery 中使用 UDF 从复杂查询创建表?

使用 JavaScript BigQuery UDF 解密/解码 AES256 [重复]

Google 标准 SQL UDF - 写入 BigQuery

大查询 UDF 支持

在 BigQuery 中将 API 调用作为 UDF 的一部分 - 可能吗?