2015-04-20 10 views
9

qual è l'equivalente bigquery delle variabili mysql come?Impostazione delle variabili Big Query come mysql

SET @fromdate = '2014-01-01 00:00:00', -- dates for after 2013 
@todate='2015-01-01 00:00:00', 

@bfromdate = '2005-01-01 00:00:00', -- dates for before 2013 
@btodate = '2005-01-01 00:00:00', 

@achfromdate = '2013-01-01 00:00:00', -- dates for ACH without submit time in 2013 
@achtodate = '2013-01-01 00:00:00', 

@currency="USD"; 
+1

nostro [add-on per l'esecuzione di query BQ in Google Fogli] (https: // cromo. google.com/webstore/detail/owox-bi-bigquery-reports/fepofngogkjnejgcbdmmkddnpeojbbin) ti consente di impostare i parametri per le tue query e rieseguirli modificando solo i valori dei parametri preimpostati. –

risposta

6

ci sono 'variabili' da impostare in BigQuery, ma si potrebbe aggiungere una richiesta di funzionalità: https://code.google.com/p/google-bigquery/issues/list?q=label:Feature-Request

+0

+1 Vorrei usare vars anche se fossero disponibili. Tuttavia, suppongo che se i vars sono per un periodo di tempo, potrei fare una vista e passare le date nelle condizioni di vista, non potrei? – Kristian

+3

mmh, ancora niente vars, ma Datalab ha un'interazione interessante con le query e le variabili di BigQuery in python: https://cloud.google.com/datalab/ –

+0

attualmente utilizziamo i vip python. – Kristian

0

Si può prendere in considerazione esaminando con parametri query di BigQuery. BigQuery supporta i parametri di query per aiutare a prevenire l'iniezione SQL quando le query vengono costruite utilizzando l'input dell'utente. Questa funzione è disponibile solo con la sintassi SQL standard.

https://cloud.google.com/bigquery/docs/parameterized-queries

0

Se si utilizza R o pitone per interfacciarsi con le API GBQ e non si preoccupano sql-iniezione, cioè. vuoi solo scambiare iterativamente i parametri nelle query, potresti voler esaminare la lingua dei modelli mustache (disponibile in R come 'whisker').

Se si utilizza R, è possibile scorrere/automatizzare le query con il pacchetto condusco R. Ecco uno script completo R che compirà un iterativa di swap-out dei parametri in una query utilizzando sia baffo e 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 
) 
Problemi correlati