使用Google BigQuery背靠背运行多个查询

问题描述:

我目前正在使用Google Big Query从电子表格中提取数据。我很新的SQL,所以我很抱歉。我目前使用下面的代码使用Google BigQuery背靠背运行多个查询

Select * 
From my_data 
Where T1 > 1000 
And T2 > 2000 

因此保持选择并从相同的,我希望能够运行多个查询,我可以只需要修改一下我在寻找t1t2之间的值。大约有50个不同的值。我希望BigQuery能够连续运行这50个不同的值。有没有办法做到这一点?谢谢!

+0

(HTTP://meta.stackoverflow。 COM/q/284236) –

您可能有兴趣运行parameterized queries。这个想法是有一个单一的查询字符串,例如:

SELECT * 
FROM YourTable 
WHERE t1 > @t1_min AND 
    t2 > @t2_min; 

您将执行此多次,其中每次绑定t1_mint2_min参数的不同值。确切的逻辑将取决于您使用client libraries的API,并且在我提供的第一个链接中有特定于语言的示例。

我很新的SQL

...我承担的BigQuery要么...,所以

下面是对谁不熟悉的新用户的选择之一还有BigQuery API和/或different clients而不是BigQuery Web UI

BigQuery的大副增加参数功能至BigQuery的Web UI

你需要做的是

  1. 保存您查询如下使用保存查询按钮

    enter image description here

注意<var_t1><var_t2>
这些都是由BigQuery的identifyable参数伴侣

  1. 现在你可以设置这些参数
    点击QB伴侣然后参数去下面形式

    enter image description here

  2. 现在你可以设置你想要的任何值的参数与...一起运行;
    单击替换参数确定按钮和这些值将出现在编辑器中。例如OK点击

    enter image description here

  3. 后你会得到

    enter image description here

    所以现在你可以运行查询

    1. 要用新参数运行另一轮,您需要再次加载您的通过点击编辑查询按钮
    2. enter image description here

      保存查询,编辑,现在重复设置参数等

      你可以找到的BigQuery伴侣Chrome扩展here

      免责声明:我是作者这个工具的唯一开发者

    开始=>
开始=“2”>

如果您不担心SQL注入,只是想在查询中反复换出的参数,你可能想看看进入mustache模板语言(在读可用作“whisker”)。

如果使用R,则可以进行迭代/自动化与conduscoř封装这种类型的查询。下面是为完整的R脚本,将实现同时使用晶须和condusco这种迭代查询:[?为什么?“有人可以帮助我”不是一个实际的问题]

library(bigrquery) 
library(condusco) 
library(whisker) 

# create a simple function that will create a query 
# using {{{mustache}}} placeholders for any parameters 

create_results_table <- function(params){ 

    destination_table <- '{{{dataset_id}}}.{{{table_prefix}}}_results_{{{year_low}}}_{{{year_high}}}' 

    query <- ' 
    SELECT * 
    FROM `bigquery-public-data.samples.gsod` 
    WHERE year > {{{year_low}}} 
     AND year <= {{{year_high}}} 
    ' 


    # use whisker to swap out {{{mustache}}} placeholders with parameters 
    query_exec(
    whisker.render(query,params), 
    project=whisker.render('{{{project}}}', params), 
    destination_table = whisker.render(destination_table,params), 
    use_legacy_sql = FALSE 
) 

} 

# create an invocation query to provide sets of parameters to create_results_table 

invocation_query <- ' 
    SELECT 
    "<YOUR PROJECT HERE>" as project, 
    "<YOUR DATASET_ID HERE>" as dataset_id, 
    "<YOUR TABLE PREFIX HERE>" as table_prefix, 
    num as year_low, 
    num+1 as year_high 
    FROM `bigquery-public-data.common_us.num_999999` 
    WHERE num BETWEEN 1992 AND 1995 
' 

# call condusco's run_pipeline_gbq to iteratively run create_results_table over invocation_query's results 

run_pipeline_gbq(
    create_results_table, 
    invocation_query, 
    project = '<YOUR PROJECT HERE>', 
    use_legacy_sql = FALSE 
)