检查presto / hive表中是否存在列名

问题描述

表主体包含不同的版本。旧版本表中可能不存在该字段。 例如mytable_1只能包含columnA

 columnA  columnB
    a       b
    a       k
    c       d
    c       e

和mytable_2可能包含称为columnB的额外列

select * from mytable_{{version}}
where 
columnA = 'a'
{IF columnB exist}
And columnB = 'b'
{endif}

我正试图像……

val response = Klaxon().parseJsonObject(StringReader(testJson))
val result = response["result"]
val items = response.array<JsonObject>("items") ?: JsonArray()
...

结果将像 如果在mytable_1上运行 前两行将被返回。 如果在mytable_2上运行 第一行将返回。

如何为此编写查询

解决方法

您可以通过编程方式获取表中的列列表:

ax2.patch.set_visible(False)

如果存在给定的列,您似乎想利用此信息来发出带有附加条件的查询。为此,您需要在向Presto发出查询的应用程序中应用此逻辑,而不能仅在SQL中实现。