在 BigQuery 中,您可以添加 JavaScript UDF,它将在 V8 实例上执行。 This page on googleblog.com (几乎是我能找到的关于该主题的唯一页面)指出
JavaScript UDFs are executed on instances of Google V8 running on Google servers. Your code runs close to your data in order to minimize added latency.
因此,当我有欧洲等地区的数据时,我预计 UDF 将在同一地区执行。但是,当我运行以下查询时,该实例似乎并不像我预期的那样接近我的数据:
CREATE TEMP FUNCTION getDate()
RETURNS String
LANGUAGE js AS """
return new Date();
""";
SELECT CURRENT_DATETIME() dateTimeBigQuery
, getDate() as dateTimeJavaScript
此语句的输出:
dateTimeBigQuery dateTimeJavaScript
2018-10-10T07:42:32.556699 Wed Oct 10 2018 00:42:32 GMT-0700 (PDT)
This page on Time functions in BigQuery告诉我,当没有指定时区时,CURRENT_DATETIME() 函数返回 UTC 日期时间。
This page on Date functions in JavaScript州
If no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings for timezone offset.
当我使用 BigQuery 表中的数据(不带时区的日期时间)并将其传递给 JavaScript 函数时,它还将返回 GMT-0700 的日期时间
那么我可以安全地假设 V8 实例的运行速度与我的数据不接近吗? 如果是这种情况,有没有办法为该实例指定一个区域?
最佳答案
BigQuery 会重写 Date
的构造函数以使用 UTC,而不是从执行 UDF 的位置获取时区,以便与 CURRENT_DATE
保持一致, CURRENT_DATETIME
等函数。实际的 V8 环境始终与执行查询中其他逻辑的作业一起运行。
关于javascript - BigQuery JavaScript UDF : Region of V8 instances,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52735383/