1

我有一个我正在尝试“标准化”的数据表。输入到表格中的数据不是静态的或标准化的(就像答案的下拉列表一样),给我留下了多种答案,我想要一个静态的、通用的答案。

例如,假设数据库中有一个名为“宠物类型”的列。由于用户输入没有标准化,人们可以输入特定类型宠物的变体,而不是宠物的一般形式。因此,不仅仅是输入“Dog”,还有不同版本的狗,如“Collie”、“Mutt”、“Labrador”等。

我该如何将这些答案转录成它们的通用形式——用“狗”(或“猫”或“鸟”等)替换表中的柯利/穆特/拉布拉多/等答案?

我意识到需要某种形式的手动输入“翻译”功能。我的直觉反应是,一个长跨度的堆叠 if 语句列表效率低下,并且难以控制和扩展。

是否有某种流程或系统可以做这样的事情?像某种类型的查找表系统/矩阵?

我假设一个 foreach 循环遍历记录数组是最合适的。然后在 foreach 循环的每次迭代中,你会让它对 pet 变量与某种类型的列表(我会手动创建)进行测试/比较——但是你会使用这个查找表/列表? 还是流程的这一步?您会将它作为某种类型的 SQL 数据库/表、数组、CSV 文件等吗?

然后,一旦这个比较完成并确定了宠物类型的“翻译”等价物,foreach 循环将更新记录的特定行,或者覆盖旧的非标准化值,或者只是添加新的标准化值等效于一个新列(供以后验证)。

4

2 回答 2

1

我的直觉反应是,一个长跨度的堆叠 if 语句列表效率低下,并且难以控制和扩展。

100% 正确,因此您实际上只有一个选择:手动检查数据库并清理它。完成后,您将需要使用停止列表而不是原始文本输入来限制用户输入。

根据您的用户,您可能想查看 Stackoverflow 如何处理标签 - 本质上是允许任何人为您进行清理。

于 2012-09-04T01:52:14.390 回答
0

但是,如果您有 150000 条记录或执行 SQL 查找替换查询可能有助于清理数据以开始。

这对我来说听起来像是一个数据规范化项目,虽然我在实践中没有很多经验,但理论上你从如何输入数据开始。例如,自由文本字段允许用户输入他们想要的任何内容。您希望在清理数据后更改它。并且首先要知道数据是如何进入的。是自由文本、项目符号还是下拉菜单?等等

您还需要创建一个包含所有标准化术语的数据字典,以替换大量变体。
然后,您可以创建一个更新查询,该查询将遍历旧数据并使用更新查询和通配符将其更新为新数据。

https://support.office.com/en-us/article/Use-the-Find-and-Replace-dialog-box-to-change-data-2eee8d02-5a40-4328-ba56-ec0406865680

这可能是一种更自动化的数据清理方式,而不是查找和替换。

-铝

于 2017-07-28T18:16:17.863 回答