Пользовательские функции BigQuery JavaScript: область экземпляров V8 - PullRequest
0 голосов
/ 10 октября 2018

В BigQuery вы можете добавить JavaScript UDF, которые будут выполняться на экземпляре V8. Эта страница на googleblog.com (почти единственная страница, которую я смог найти по этой теме) гласит, что

UDF JavaScript выполняются на экземплярах Google V8, работающих на серверах Google.Ваш код работает близко к вашим данным, чтобы минимизировать добавленную задержку.

Поэтому, когда у меня есть данные, например, в Европе, я ожидаю, что 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)

Эта страница о функциях времени в BigQuery сообщает мне, что функция CURRENT_DATETIME () возвращает дату и время в формате UTC, когда часовой пояс не указан.

Эта страница о функциях даты в JavaScript состояния

Если аргументы не предоставлены, конструктор создает объект JavaScript Date для текущей даты и времени в соответствии с системными настройками для смещения часового пояса.

КогдаЯ использую данные из таблицы BigQuery (дата-время без часового пояса) и передаю их в функцию JavaScript, они также будут возвращать дату-время в GMT-0700

Так что я могу с уверенностью предположить, что экземпляр V8не работает близко к моим данным?И если это так, есть ли способ указать регион для этого экземпляра?

1 Ответ

0 голосов
/ 10 октября 2018

BigQuery переопределяет конструктор для Date, чтобы использовать UTC, вместо того, чтобы выбирать часовой пояс, из которого выполняется UDF, чтобы соответствовать функциям CURRENT_DATE, CURRENT_DATETIME и т. Д.Фактические среды V8 всегда выполняются вместе с заданиями, которые выполняют другую логику в запросе.

...