gpt4 book ai didi

google-bigquery - 在选择期间使用 Big Query UDF

转载 作者:行者123 更新时间:2023-12-01 15:38:00 27 4
gpt4 key购买 nike

我有一个表,其中包含用户的 uuid 和一些其他值。

此外,我在 BQ 中有以下 UDF 函数,它根据给定的 uuid、基于 MD5 和 crc32 值计算 user_group:

function GetGroup(uuid) {...
}

function getUserGroup(r, emit) {
emit ({group: GetGroup(String(r.uuid)), uuid: r.uuid
});
}

bigquery.defineFunction(
'get_group',
['uuid'],
[{'name': 'group', 'type': 'string'}, {'name': 'uuid', 'type': 'string'}],
getUserGroup);

因此,要提取用户值(value),我需要执行以下操作:

SELECT
group,
uuid
FROM
get_group(
SELECT
uuid
FROM
[MY_TABLE] )

这不是很有用,因为我想在几个不同的表中为 uuid 提取相同的 user_group,并且我不想每次使用它时都定义函数“get_group”。此外,如果我想要表中的所有字段,我需要将结果与原始表连接起来或在 UDF 中对表架构进行硬编码。

是否有类似于 Big Query 中任何内置函数的便捷方法来使用 UDF?例如:

SELECT
uuid,
get_group(uuid)
FROM
[ANY_TABLE_WITH_UUID_FIELD]

最佳答案

我认为,您最好的选择是使用 Scalar User-Defined Functions随 BigQuery Standard SQL 引入(请参阅 Enabling Standard SQL )。

这为您提供了您正在寻找的极大程度的可组合性
关注Including external libraries特征。它允许您将繁重的代码作为外部代码库引用,同时保持内联代码最少/可读/等。

CREATE TEMP FUNCTION get_group(uuid STRING) 
RETURNS STRING
LANGUAGE js AS
"""
return get_group(uuid);
"""

OPTIONS (
library="gs://your-bucket/path/to/your-lib.js"
);

SELECT
uuid,
get_group(uuid)
FROM
[ANY_TABLE_WITH_UUID_FIELD]

关于google-bigquery - 在选择期间使用 Big Query UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com