将参数化的 BigQuery 魔法分配给 Jupyter 中的变量

Max*_*wer 5 google-bigquery jupyter

如果 Jupyter 中有参数,如何分配 BigQuery 单元魔术操作的输出?

%%bq execute --query sql_my_query --to-dataframe
parameters:
- name: min_val
  type: STRING
  value: $min_val
- name: max_val
  type: STRING
  value: $max_val
Run Code Online (Sandbox Code Playgroud)

我尝试在 BQ magic 前面放置一个变量(例如myvar = %%bq ...),我尝试使用myvar << %%bq,在整个表达式周围添加括号或大括号,但似乎没有任何效果。有人有什么想法吗?

除了 Python API 之外,示例中也没有任何示例,这对于应该相当标准的东西来说似乎有点混乱。

And*_*son 0

您可以使用 magic 命令在一个单元格中定义查询。但是,要执行查询并提供参数值,请在另一个单元格中执行此操作,而无需使用魔术命令:

# in the first cell
%%bq query --name day_extract_query
SELECT EXTRACT(DAY FROM @input_date) AS day
Run Code Online (Sandbox Code Playgroud)

之后,使用纯 python 执行,无需任何魔法

# then, in a second cell
query_params1 = [{ "name": "input_date",
                   "parameterType": { "type": "DATE" },
                   "parameterValue": { "value": "2019-01-03" } }]
day1 = day_extract_query.execute(query_params=query_params1).result()
Run Code Online (Sandbox Code Playgroud)