mysql - 如何根据配置单元中列表的字段匹配从 json_object 中选取值

标签 mysql sql hive hiveql

我正在使用 json_object,其中对于不同的产品类别,我们有不同的颜色变量用于前 - kdt_colorfcy_color 等(查看下方)

如何为每个产品选择合适的 color_variable 以从 json_object 中提取颜色值。有 100 多个垂直行业,因此无法在此处使用。


{"ctg_ideal_for":["Women"],"ctg_fabric":["Chiffon"],"ctg_design_style":["Umbrella Burqa"],"aba_color":["Black"],"aba_sleeve":["Full Sleeves"],"aba_with_hijab":[true]}

{"blz_color":["single"],"blz_size":["34\"36\"38\"40\"42"],"blz_sleeve_type":["Full Sleeves"],"ctg_ideal_for":["Men"],"ctg_fabric":["Imported"],"ctg_design_style":["Plaid Blazer"]}

{"color":["Multicolor"],"material":["PU"],"ideal_for":["Women"],"closure":["Zipper"],"bpk_style_code":["RMMY2418"]}

最佳答案

可以使用 regexp_extract 从 JSON 字符串中提取 color":["SomeColor ,如下所示:

select nbr,  regexp_extract(json, 'color":\\["([A-Za-z]*)',1) as color
from
(
select 1 as nbr,  '{"ctg_ideal_for":["Women"],"ctg_fabric":["Chiffon"],"ctg_design_style":["Umbrella Burqa"],"aba_color":["Black"],"aba_sleeve":["Full Sleeves"],"aba_with_hijab":[true]}' as json union all
select 2 as nbr,  '{"blz_color":["single"],"blz_size":["34\"36\"38\"40\"42"],"blz_sleeve_type":["Full Sleeves"],"ctg_ideal_for":["Men"],"ctg_fabric":["Imported"],"ctg_design_style":["Plaid Blazer"]}' as json union all
select 3 as nbr,  '{"color":["Multicolor"],"material":["PU"],"ideal_for":["Women"],"closure":["Zipper"],"bpk_style_code":["RMMY2418"]}' as json
)s;

OK
1       Black
2       single
3       Multicolor

您还可以使用 RegexSerDe在表 DDL 中定义正则表达式列。

关于mysql - 如何根据配置单元中列表的字段匹配从 json_object 中选取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51441364/

相关文章:

mysql - Mysql分区会自动添加一个新分区吗?

带有重音字符的 PHP serialize() 导致序列化不完整

sql - 如何获取通过该表链接的所有记录集?

hadoop - 如何为特殊格式的数据创建Hive表

mysql - 计数、最大值和多个子查询 SQL

PHP:扫描数据库中的某个值然后组织它

sql - postgresql 触发可能的无限循环?

SQL Server 备份文件

sql - 提高 apache 配置单元的性能

hadoop - Hive CLI 如何从 HDFS 检索巨大的结果文件?