javascript - BigQuery JavaScript UDF : Region of V8 instances

标签 javascript google-bigquery user-defined-functions

在 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/

相关文章:

javascript - 如何循环运行 div 的全部内容?

java - 是否可以在用Python编写的Dataflow流管道中导入Java方法 `wrapBigQueryInsertError`?

python-3.x - 如何在 TfidfVectorizer.fit_transform() 中传递用户定义的函数

python - 是否可以将标量参数传递给 Python UDF?

javascript - Node.js 中 'require' 声明后的空括号是什么意思?

javascript - 使用正则表达式查找字符串中的所有子字符串javascript

基于最后七个条目设置列的 SQL 查询

google-bigquery - 错误: Schema changed for Timestamp field (additional)

sql - 如何使用 Fluent NHibernate 映射 Tsql 用户定义函数?

javascript - 窗口弹出窗口阻止程序问题