我有一个正在尝试"标准化"的数据表。输入到表格中的数据不是静态的或标准化的(就像答案的下拉列表一样),这给我留下了多种不同的答案,我想要一个静态的、通用的答案。
例如,假设数据库中有一列名为"宠物类型"。由于用户输入并没有标准化,人们可以输入特定类型宠物的变体,而不是宠物的通用形式。因此,除了输入"Dog",还有不同版本的狗,如"Collie"、"Mutt"、"Labrador"等。
我该如何将这些答案转录成它们的广义形式——将表中的牧羊犬/穆特犬/拉布拉多犬等答案只替换为"狗"(或"猫"或"鸟"等)?
我意识到需要某种形式的手动输入"翻译"功能。我的直觉反应是,一个跨度很长的堆叠if语句列表效率很低,而且控制和扩展起来也很乏味。
有没有某种流程或系统可以做这样的事情?像某种类型的查找表系统/矩阵吗?
我假设foreach循环遍历记录数组是最合适的。然后,在foreach循环的每一次迭代中,你都会让它对pet变量与某种类型的列表(我会手动创建)进行测试/比较——但你会对这个查找表/列表使用什么?还是这个过程的这一步?你会把它作为某种类型的SQL数据库/表、数组、CSV文件等吗。?
然后,一旦完成了此比较并确定了pet类型的"翻译"等价物,foreach循环将更新记录的特定行,要么覆盖旧的非标准化值,要么只是将新的标准化等价物固定到新列中(以便稍后验证)。
我的直觉反应是,一长串堆叠的if语句将是低效的,并且控制和扩展是乏味的。
100%正确,因此您实际上只有一个选择:手动浏览数据库并进行清理。完成后,您将需要使用停止列表而不是原始文本输入来限制用户输入。
根据你的用户,你可能想看看Stackoverflow是如何进行标记的——本质上允许任何人为你进行清理。
但是,如果您有大约150000条记录或正在执行SQL查找替换查询,则可能有助于清理要启动的数据。
对我来说,这听起来像是一个数据规范化项目,尽管我在实践中没有太多经验,但从理论上讲,你可以从如何输入数据开始。例如,自由文本字段允许用户输入他们想要的任何内容。您可能希望在清理数据后更改它。首先了解数据是如何进入的是值得的。是自由文本、项目符号还是下拉菜单?等
您还需要创建一个包含所有标准化术语的数据字典,该字典可以用替换大量变体
然后,您可以创建一个更新查询,该查询将遍历旧数据,并使用更新查询和通配符用新数据进行更新。
https://support.office.com/en-us/article/Use-the-Find-and-Replace-dialog-box-to-change-data-2eee8d02-5a40-4328-ba56-ec0406865680
这可能是一种更自动化的数据清理方式,而不是查找和替换。
-Al