清理和格式化文本
如何使用自定义的文本,清理非结构化或不一致的文本。
假设Metabase想为我们可爱的社区举办一个晚宴。对于主菜,我们有牛肉炖牛肉或鹰嘴豆炖菜,而对于两侧,我们有印度菜或烤蔬菜。我们已经发送了一份关于菜单选项的调查,这样每个人都可以告诉我们他们想吃什么。
不幸的是,我们忘记在表单上设置数据验证,因此响应如下所示:
Response ID | Main | Side |
|-------------|-------------------------------------|-------------------------|
| 1 | beef tibs | injera |
| 2 | chickpea stew | grilled vegetables |
| 3 | BEEF TIBS WITH CHICKPEA STEW PLEASE | |
| 4 | | Grilled Vegetables |
| 5 | Surprise me. | |
我们希望:
- 整理并结合主食和副食,这样我们就可以数出最受欢迎的饭菜了。
- 处理在某些方面无效的响应(例如多个电源,或者菜单上不存在的电源)。
- 跟踪提交了缺少信息的回复的客人。
总的来说,我们希望最终得到一个如下所示的表(向右滚动可查看完整的表):
Response ID | Main | Side | Order | Follow up? |
|-------------|-------------------------------------|-------------------------|---------------------------------------|------------|
| 1 | beef tibs | injera | beef tibs with injera | no |
| 2 | chickpea stew | grilled vegetables | chickpea stew with grilled vegetables | no |
| 3 | BEEF TIBS WITH CHICKPEA STEW PLEASE | | beef tibs only | yes |
| 4 | | Grilled Vegetables | grilled vegetables only | yes |
| 5 | Surprise me. | | | yes |
搜索和提取文本
我们假设唯一有效的主要选择是牛肉和鹰嘴豆炖菜。我们可以使用 regexextract函数检查每个响应中的有效菜单选项。
在中搜索值主“牛肉tibs”专栏,我们将创建一个自定义列使用regex模式(?i)(beef tibs)。此regex模式执行不区分大小写的检查,以查看“beef tibs”是否出现在响应中的任何位置。
创建牛肉自定义列使用:
regexextract([Main], "(?i)(beef tibs)")
您应该得到输出:
| Response ID | Main | Beef |
|-------------|------------------------------