为什么标准 SQL UDF 会增加之后所有查询的字节数



BQ支持团队,

我们最近在BQ中使用UDF研究了标准SQL,似乎它工作得很好。但我们确实注意到使用它的成本太高了。因为计费的字节数可能是原始表的一百倍。我认为这是有道理的,因为 UDF 需要内存来处理。但我不明白的是,所有查询都使用 UDF SQL 生成的表,仍然像 UDF SQL 一样使用内存。我们原来的表大约是 1.03K,UDF SQL 运行计费了 10M。以下是普通查询的作业信息:

project.udf_sql_table_name中选择 *;

Job ID          *
Creation Time   Apr 14, 2017, 2:57:29 PM
Start Time      Apr 14, 2017, 2:57:29 PM
End Time        Apr 14, 2017, 2:57:30 PM
Bytes Processed 1.05 KB
Bytes Billed    10.0 MB
Billing Tier    1
Destination Table   *
Use Legacy SQL  fase

从作业信息中,我们可以看到 UDF SQL 生成了一个大约 1.05K 的表,它被保存为 project.udf_sql_table_name。现在甚至做一个简单的"选择","计费字节数"仍然是10M,比处理后的表大1000倍。我可以知道使用 UDF 时这是正确的吗?谢谢

"计费字节数"仍然是10M,是处理表的1000倍。 这是对的吗?

是的。这是正确的。见On-demand pricing

费用四舍五入到最接近的 MB,至少 10 MB 数据 处理查询引用的每个表,并且至少 10 MB 每个查询处理的数据。