我features在表格中有一個具有以下結構的列
|-- features: struct (nullable = true)
| |-- tectonFeatures: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- featureName: string (nullable = true)
| | | |-- results: array (nullable = true)
| | | | |-- element: string (containsNull = true)
如何撰寫一個 SQL 查詢來獲取任何行 wherefeatureName = 'a'和results is not empty?
uj5u.com熱心網友回復:
使用此架構:
root
|-- features: struct (nullable = true)
| |-- tectonFeatures: array (nullable = true)
| | |-- element: struct (containsNull = true)
| | | |-- featureName: string (nullable = true)
| | | |-- results: array (nullable = true)
| | | | |-- element: string (containsNull = true)
這些行:
--------------------
|features |
--------------------
|{[{a, [Something]}]}|
|{[{b, []}]} |
--------------------
此 SQL 陳述句保留包含至少一對featureName = aand的任何行size(results) > 0:
select * from test where size(filter(features.tectonFeatures, x -> x.featureName = 'a' and size(x.results) > 0)) > 0
最后結果:
--------------------
|features |
--------------------
|{[{a, [Something]}]}|
--------------------
祝你好運!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/512312.html
標籤:sql阿帕奇火花
上一篇:k8s集群模式下DeltaTable.forName上的DeltaLake錯誤無法分配java.lang.invoke.SerializedLambda的實體
