2017-09-07 4 views
1

Gibt es eine Option, Parameter auf Presto CLI bereitzustellen.Parametriertes SQL in Presto auf Presto CLI

Ich versuche, meinen Impala-Shell-Befehl zu Presto zu ändern, wo meine HQL-Datei Parameter von der Befehlszeile des Impala wie folgt erhält.

impala-shell -f ot_full.hql --var=date_next=${date_next_para} --var=yrmth=${yrmth_para} --var=yrmth_L12=${yrmth_L12_para} --var=pyrmth=${pyrmth_para}

WITH Klausel in presto ist nicht so viel hilfreich.

Wie können wir es in Presto Befehlszeile konvertieren.

ich nicht https://prestodb.io/docs/current/ in alle Unterlagen/Beispiel hierzu fanden

+0

Vielleicht nicht so nützlich, aber welche Parameter mit 'sed' Injektion: etwa' cat ot_full.hql | sed -e "s/date_next/$ {date_next_para} /" .. | Presto-CLI'? –

Antwort

0

Der Presto .cli dies nicht unterstützt, so dass Sie es an die CLI, bevor er die Variablen in der SQL-Abfrage ersetzen benötigen. Eine Möglichkeit ist, diese direkt in der Schale zu tun:

presto --execute "SELECT * FROM table WHERE ds >= '${date_next_para}'" 

Für längere Abfragen unter Verwendung eines here document eine gute Option ist.

+0

Sicher gegebene Workaround wird funktionieren, aber haben wir einen Plan, um solche Funktionalität in der zukünftigen Entwicklung zur Verfügung zu stellen? – Shawn

0

Gemäß der [Dokumentation] [1]:

bin/presto-cli.sh --server host:8080 -f test.sql -d yesterday=$yesterday 

https://github.com/yxydde/Presto-CLI

+1

Während dieses Code-Snippet die Frage lösen kann, einschließlich einer Erklärung wirklich (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) hilft, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen –