Eu tenho um dataframe abaixo
dataDictionary = [('value1', [{'key': 'Fruit', 'value': 'Apple'}, {'key': 'Colour', 'value': 'White'}]),
('value2', [{'key': 'Fruit', 'value': 'Mango'}, {'key': 'Bird', 'value': 'Eagle'}, {'key': 'Colour', 'value': 'Black'}])]
df = spark.createDataFrame(data=dataDictionary)
df.printSchema()
df.show(truncate=False)
+------+------------------------------------------------------------------------------------------------+
|_1 |_2 |
+------+------------------------------------------------------------------------------------------------+
|value1|[{value -> Apple, key -> Fruit}, {value -> White, key -> Colour}] |
|value2|[{value -> Mango, key -> Fruit}, {value -> Eagle, key -> Bird}, {value -> Black, key -> Colour}]|
+------+------------------------------------------------------------------------------------------------+
Eu queria extrair apenas os valores de key -> Colour . O resultado deveria ser,
White
Black
Eu tentei várias opções usando regexp_extract_all , bem como substring com instr , o resultado é sempre um valor vazio. Qualquer sugestão seria apreciada.
result = spark.sql("""select
regexp_extract('_2', '''key': 'Colour' + '(\\w+)') as value
from table
""")