- 防止Bigquery DR的投诉:
- 通过调整Table级别的缓存时间,以避免缓存被重复访问。
#standardSQL
SELECT *
FROM `myproject.mydataset.mytable`
WHERE _TABLE_SUFFIX BETWEEN '20210101' AND '20210131'
ORDER BY mytimestamp DESC
LIMIT 10
- 对于长时间运行的查询添加定时器,以免重复发送相同的请求。
from google.cloud import bigquery
from datetime import datetime
import time
client = bigquery.Client()
def query_runner():
query_job = client.query("SELECT * FROM `myproject.mydataset.mytable` LIMIT 10")
return query_job.result()
start_time = time.time()
execution_time_limit = 60 # seconds
while True:
job_result = query_runner()
current_time = time.time()
execution_time = current_time - start_time
if execution_time > execution_time_limit:
raise Exception("Query execution time exceeds the limit")
if job_result is None:
time.sleep(10)
else:
break
result = job_result.to_dataframe()
- 多地区支持
- 将Bigquery数据复制到多个地区并启用multi-regional选项。
bq cp --destination_kms_key=projects//locations//keyRings//cryptoKeys/ \
--destination_cmk_key_name=projects//locations//keyRings//cryptoKeys/ \
--destination_sse_algorithm=Google-KMS \
--source_kms_key=projects//locations//keyRings//cryptoKeys/ \
--source_cmk_key_name=projects//locations//keyRings//cryptoKeys/ \
--source_sse_algorithm=Google-KMS \
--apilog=stderr \
--debug \
--recursive \
\