我有一个struct element数组类型的列。
|-- id
|-- paintUsed: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- paintCode: string (nullable = true)
| | |-- amountUsed: struct (nullable = true)
| | | |-- amount: integer (nullable = true)
| | | |-- unit: string (nullable = true)
下面是数据示例
id | PaintUsed
----------------------
1 | [[Red,[ML, 100.0]],[Green[Litre, 4.0]]]
2 | [[Blue,[ML, 400.0]],[Red[Litre, 2.0]]]
我知道我们可以将struct的每个元素分解成不同的行,但是我的数据量非常大,如果分解,行数将变成4-5倍,并导致性能问题。我想从上面的列表中取绿色值。这将只有一个记录,因此记录的数量不会增加。我可以爆炸和过滤,但在这里之前,过滤器应用的记录数量将太高。
不管怎样,只要一个struct数组中的一个元素就可以不分解。
任何帮助都将不胜感激
1条答案
按热度按时间jdzmm42g1#
之前
explode
,使用高阶函数filter
在列上paintUsed
,只去哪里paintUsed.paintCode='Green'
.