簡體   English   中英

BigQuery - 等待 UDF function 和 JavaScript 代碼

[英]BigQuery - wait UDF function with JavaScript code

在 Bigquery 中不存在像 Oracle 中的 DBMS_LOCK.SLEEP(或 DBMS_SESSION.SLEEP)這樣的本機 function(“讓程序休眠特定時間”)。 我嘗試使用帶有 JavaScript 代碼的 UDF,但它沒有像我預期的那樣工作:它不會停止,除非被強制。 你能幫我理解這是怎么回事嗎? 謝謝!

CREATE TEMP FUNCTION JS_Sleep(x FLOAT64)
 RETURNS FLOAT64
LANGUAGE js AS r"""
  function sleep(milliseconds) {
    const date = Date.now();
    let currentDate = null;
    do {
      currentDate = Date.now();
    } while (currentDate - date < milliseconds);
  }
  return sleep(x);

  """;
select JS_Sleep(10000);

在 BigQuery 中,與 Date.now() 類似的 CURRENT_TIMESTAMP() 總是在單個語句或單個事務中返回相同的值,就好像時間停止一樣,無論它在查詢中出現多少次。

根據我的經驗,這也適用於 Date.now()。 在您的情況下, JS_Sleep() 永遠運行會導致查詢中的時間停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM