2017-09-18 3 views
3

Wir haben einen funktionierenden Prototyp in Google Cloud DataLab, wo wir die %%bq "Magics" ausgiebig genutzt haben, um eine parametrisierte Abfrage mit verschiedenen UDFs aufzubauen.BigQuery in Google Cloud Datalab - Abfragetext abrufen?

So etwas wie:

customFn1 = bq.UDF("customFn1",theJsCode1,theDataTypeDef1,params=paramDefs1) 
customFn2 = bq.UDF("customFn2",theJsCode2,theDataTypeDef2,params=paramDefs2) 

dann:

%%bq query --name finalQry --udfs customFn1 customFn2 
SELECT 
    customFn1(bell, whistle) AS Output1, 
    customFn2(rank,serialNo) AS Output2 
FROM 
    myImaginaryTable 
WHERE 
    id < @param1 AND id > @param2 

dann:

%%bq sample -q finalQry 
parameters: 
    - name: param1 
    type: STRING 
    value: "ab1" 
    - name: param2 
    type: STRING 
    value: "ab3" 

Wir möchten den Beginn der Arbeit in Richtung dieses Prototyps Bereitstellung und müssen die endgültige zugreifen Abfragetext zur Verwendung in unserem Produktionscode (der zu gegebener Zeit über die API aufgerufen wird).

Ich weiß, dass GC Datalab hinter den Kulissen etwas Arbeit leistet, um diese Abfrage zu erstellen (unser Beispiel aus der realen Welt ist viel komplexer), das ich in unserem Code replizieren muss.

es wäre wirklich nützlich, wenn ich den tatsächlichen Abfrage-String GC datelab erhalten könnte, nachdem er die UDFs erstellt, die Parameter usw. ersetzt hat? Ich könnte es manuell mit einem Shedload von Kopieren und Einfügen, etc. tun, aber es wäre super-nützlich, wenn ich automatisch auf diese letzte Abfrage Zeichenfolge irgendwo zugreifen könnte?

Ich habe gelesen in der Dokumentation hier: http://googledatalab.github.io/pydatalab/datalab.bigquery.html aber kann nicht finden, was ich brauche. Kann jemand helfen?

Antwort

3

Haben Sie versucht finalQry.sql? Dies gibt Ihnen die SQL-Zeichenfolge der Abfrage. Dies wird jedoch vor jeder Parameterersetzung sein, da dies zur Ausführungszeit geschieht (Ihr sample Aufruf in diesem Fall).

Siehe http://googledatalab.github.io/pydatalab/datalab.bigquery.html#datalab.bigquery.Query.sql

Wenn Sie denken, die SQL-Zeichenfolge immer nach der Substitution eine nützliche Funktion ist, können Sie eine Feature-Anfrage öffnen auf dem Github repo.

+0

das ist was ich fehlte (nicht sicher, wie ich es in den docs vermisste - mein schlechtes). Nicht unbedingt wichtig, um die Abfrage nach der Parametersubstitution zu erhalten. Nach Zusammenstellung von UDFs etc. bekomme ich dort 99%. Vielen Dank –

Verwandte Themen