2017-03-01 6 views
1

Ich arbeite gerade an einem Projekt, bei dem ich Google Big Query zum Abrufen von Daten aus Tabellenkalkulationen verwende. Ich bin sehr neu in SQL, also entschuldige ich mich. Ich verwende derzeit den folgenden CodeVerwenden von Google BigQuery zum Ausführen mehrerer Abfragen nacheinander

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

So die Select und aus demselben zu halten, möchte ich mehrere Abfragen ausführen können, wo ich nur die Werte halten kann wechselnden ich für zwischen t1 und t2 suchen . Rund 50 verschiedene Werte. Ich möchte, dass BigQuery diese 50 verschiedenen Werte nacheinander durchläuft. Gibt es eine Möglichkeit, dies zu tun? Vielen Dank!

+0

(http: //meta.stackoverflow. com/q/284236) –

Antwort

1

Sie könnten daran interessiert sein, parameterized queries zu laufen. Die Idee wäre, einen einzigen Abfrage-String haben, z.B .:

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

Sie würden dies mehrere Male ausgeführt werden, wobei jedes Mal, wenn Sie unterschiedliche Werte der t1_min und t2_min Parameter binden. Die genaue Logik hängt von der API ab, über die Sie die client libraries verwenden, und es gibt sprachspezifische Beispiele in der ersten von mir bereitgestellten Verknüpfung.

2

Ich bin sehr neu

to SQL ... und ich nehme an BigQuery entweder ..., so

Im Folgenden finden Sie eine der Optionen für neue Benutzer, die nicht vertraut sind noch mit BigQuery API und/oder different clients anstatt BigQuery Web UI.

BigQuery-Mate fügt Parameter Funktion BigQuery Web UI

Was Sie tun müssen, ist

  1. Speichern Sie Abfrage speichern Knopf

    enter image description here

abfragen, wie unten verwenden

Beachten Sie <var_t1> und <var_t2>
Das sind die Parameter identifizierbar von BigQuery Mate-

  1. Jetzt können Sie diese Parameter eingestellt
    Klicken Sie QB Mate- und dann Parameter zu erhalten, unten

    Form

    enter image description here

  2. Jetzt können Sie Parameter mit dem, was Werte, die Sie wollen mit zu laufen;
    Klicken Sie auf Parameter ersetzen OK Schaltfläche und diese Werte werden im Editor angezeigt.Zum Beispiel

    enter image description here

Nach OK wird Sie können Sie Ihre Abfrage

    So

    enter image description here

    jetzt erhalten geklickt laufen

  1. Um eine neue Runde mit neuen Parametern zu starten, müssen Sie erneut Ihre laden Anfrage an den Editor gespeichert, indem Sie auf Abfrage bearbeiten Knopf

enter image description here

und jetzt Einstellungen Parameter wiederholen und so weiter

können Sie BigQuery Chrome-Erweiterung here

Haftungsausschluss Partner finden : Ich bin der Autor und der einzige Entwickler dieses Werkzeugs

0

Wenn Sie keine Angst vor SQL-Injection haben und nur Parameter in Abfragen iterativ austauschen möchten, sollten Sie sich die Template-Sprache mustache ansehen (verfügbar in R als 'whisker').

Wenn Sie R verwenden, können Sie diese Art der Abfrage mit dem condusco R-Paket iterieren/automatisieren. Hier ist ein kompletter R-Skript, das diese Art von iterativer Abfrage erreichen wird sowohl Whisker und condusco mit: [? Warum „? Kann mir jemand helfen“ nicht eine tatsächliche Frage]

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 
) 
Verwandte Themen