2017-08-02 13 views
0

In Funke zeigensql dynamisch ein Schema

df.printSchema() 

wird wie etwas drucken

root 
    |-- value: int (nullable = true) 
    |-- square: int (nullable = true) 
    |-- cube: int (nullable = true) 
    |-- key: int (nullable = true) 

Wie kann ich für das Ergebnis einer SELECT Tabelle ein ähnliches Verhalten erreichen, ohne die Auswahl zu materialisieren? I.e.

SELECT a.a, a.b , dd.d FROM a JOIN dd on a.id = dd.id 

Ich würde einfach wollen wie

etwas schreiben
describe schema (SELECT a.a, a.b , dd.d FROM a JOIN dd on a.id = dd.id) 

und Ausgabe der Spaltennamen, gegebenenfalls NULL-Zulässigkeit und Datentypen bei leat erhalten.

Antwort

2

können Sie desc aber nur für eine Tabelle verwenden, was bedeutet, dass Sie zuerst das Tabellenergebnis Ihrer Abfrage erstellen müssen.

Sie können die Tabelle ohne Daten erstellen, daher haben Sie nur das Schema. Dann extrahierst du es. Und Sie können den Tisch fallen lassen. Das ist ein Workaround, aber nicht wirklich schön.

Wenn Sie wirklich nichts materialisieren wollen, bedeutet das, dass Sie das Schema jeder Spalte erhalten müssen, wo sie sind. Sie haben eine Tabelle all_tab_columns, die das Schema enthält. Kombinieren Sie den Inhalt einfach nach Ihrer Suchanfrage.