2017-03-01 26 views
1

我目前正在使用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) –

回答

1

您可能有興趣運行parameterized queries。這個想法是有一個單一的查詢字符串,例如:

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

您將執行此多次,其中每次綁定t1_mint2_min參數的不同值。確切的邏輯將取決於您使用client libraries的API,並且在我提供的第一個鏈接中有特定於語言的示例。

2

我很新的SQL

...我承擔的BigQuery要麼...,所以

下面是對誰不熟悉的新用戶的選擇之一還有BigQuery API和/或different clients而不是BigQuery Web UI

BigQuery的大副增加參數功能至BigQuery的Web UI

你需要做的是

  1. 保存您查詢如下使用保存查詢按鈕

    enter image description here

注意<var_t1><var_t2>
這些都是由BigQuery的identifyable參數伴侶

  • 現在你可以設置這些參數
    點擊QB伴侶然後參數去下面形式

    enter image description here

  • 現在你可以設置你想要的任何值的參數與...一起運行;
    單擊替換參數確定按鈕和這些值將出現在編輯器中。例如OK點擊

    enter image description here

  • 後你會得到

    enter image description here

    所以現在你可以運行查詢

  • 要用新參數運行另一輪,您需要再次加載您的通過點擊編輯查詢按鈕
  • enter image description here

    保存查詢,編輯,現在重複設置參數等

    你可以找到的BigQuery伴侶Chrome擴展here

    免責聲明:我是作者這個工具的唯一開發者

    0

    如果您不擔心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 
    )