sql 动态显示架构

sql dynamically show schema

在火花中

df.printSchema()

会打印类似

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

如何在不实现 select 的情况下为 SELECT table 的结果实现类似的行为? IE。

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

我只想写一些类似

的东西
describe schema (SELECT a.a, a.b , dd.d FROM a JOIN dd on a.id = dd.id)

并接收至少列名、可选的可空性和数据类型的输出。

您可以使用 desc,但只能在 table 上使用,这意味着您必须先创建查询的 table 结果。

您可以创建没有数据的 table,因此,您只有模式。然后你提取它。您可以删除 table。这是一种解决方法,但不是很漂亮。

如果您真的不想具体化任何内容,则意味着您必须获取每列所在位置的架构。您有一个包含架构的 table all_tab_columns。只需根据您的查询组合内容。