使用bigquery,我需要提取URL的组成部分,例如主机名、查询参数、路径和片段。
由于bigquery UDF支持javascript,我发现了相同的URL库,它在浏览器和nodejs中原生可用。我使用这个库创建了 bigquery udf。
CREATE OR REPLACE FUNCTION dataset.parseURL(url STRING)
RETURNS JSON
LANGUAGE js AS
r"""
const uri = URL(url);
return {
host: uri.host,
path: uri.pathname,
fragment: uri.hash,
...
};
"""
当我尝试在查询编辑器的查询中调用它时,出现错误:
ReferenceError: URL is not defined at UDF$1(STRING)
我知道我需要在GCS存储桶中加载外部js库并在
OPTIONS (library=['gs://bucket/URL.js'])
中提及。
该 URL 不是 bigquery javascript 中的本机类或模块。我在网上搜索了它的js文件,也厌倦了使用webpack构建一个bundle js,但它不起作用。有什么办法可以让这个URL模块js被bigquery识别吗?
BigQuery UDFs don't support certain browser APIs
由于 JavaScript 运行环境受到限制,因此类似于 URL。
BigQuery UDF 无法调用外部 API,因此即使“@google-cloud/storage”导入成功,它也无法运行和执行其他 API 调用。正如 @Mikhali 提到的,可以使用 BigQuery NET 函数 .
截至目前,BigQuery UDF 不支持 URL 等特定于浏览器的 API。如果您需要该功能,可以根据您在
公共问题跟踪器上的要求打开一个新的
Feature request
来描述您的问题和投票 [ +1]并且工程团队将研究该功能以供将来实施