【发布时间】:2021-09-16 13:05:40
【问题描述】:
我有一个基于输入列“lang”的 hive werin 的要求。我在这里寻找语言英语(eng)和法语(fra),此列由分隔符分隔 ';'。它应该从 col1 中选择。 并根据语言将其放在 col_eng 或 col_fra 中。
例如: lang 是 bel;fra;eng ,它应该从以 ';' 分隔的 col1 中选择相应的法语和英语值ABC/WSC;ASA/SAS;ASA/SD 即 col_fra 中的 ASA/SAS 和 col_eng 中的 ASA/SD。
我在下面列出了一些场景。我尝试使用拆分正则表达式并将其放在 case 语句中,但我无法捕获所有这些场景。
例如:
case when lang like ('eng;fra%') then split(mnemonic,';')[0] as mnemonic_eng,split(mnemonic,';')[1] as mnemonic_fr
有没有更好的方法来解决这个问题。以下是所有场景和所需的输出。请您帮忙。
lang col1 col_eng col_fra
1 fra;eng ABC/DEF;EFH/ASD EFH/ASD ABC/DEF
2 eng;fra ABC/DEF;EFH/ASD ABC/DEF EFH/ASD
3 bel;fra;eng ABC/WSC;ASA/SAS;ASA/SD ASA/SD ASA/SAS
4 eng;eng;fra WSX/ASD;WSX/ASD;SEF/DFF WSX/ASD SEF/DFF
5 eng;fra;rus QAZ/WER;AST/RS;ASD/DFG QAZ/WER AST/RS
6 rum;eng AQW/WER;WER/DF WER/DF null
7 rum;fra;eng ABC/WSC;ASA/SAS;ASA/SD ASA/SD ASA/SAS
8 spa;fra ASD/AWE;WER/ERT null WER/ERT
9 eng asd/ert asd/ert null
10 fra AWE/ERR AWE/ERR
11 fra;eng;rus ;data_eng;dara_rus data_eng null
12 fra;eng data_fra; null data_fra
【问题讨论】:
标签: csv split hive extract hue