如果想在 BigQuery REST API 中使用函数,则需要使用 Legacy SQL 语法。在 API 请求中添加参数 queryLanguage=LEGACY_SQL
并指定以逗号分隔的函数列表即可。
以下是一个例子:
import google.auth
import google.auth.transport.requests
import requests
# 获取授权凭证
credentials, _ = google.auth.default()
# 请求数据
project = 'my-project'
query = 'SELECT COUNT(*) FROM my_dataset.my_table WHERE DATE(timestamp) = "2021-01-01"'
url = f'https://bigquery.googleapis.com/bigquery/v2/projects/{project}/queries?queryLanguage=LEGACY_SQL&maxResults=0'
# 发送请求
session = requests.Session()
session.headers.update({'Authorization': f'Bearer {credentials.token}'})
response = session.post(url, json={'query': query})
data = response.json()
# 处理结果
print(data)
注意,Legacy SQL 在某些情况下可能会出现安全问题,因此建议使用 Standard SQL。而在 Standard SQL 中,函数需要使用 SQL 语法的方式调用。