繁体   English   中英

当用于 ETL 作业时,放入 CSV 文件以替换缺失值的最佳符号是什么?

[英]What is the best symbol to put in a CSV file to replace missing values, when using it for an ETL job?

我正在编写一个 SSIS 作业,它必须按顺序从多个 csv 文件中读取数据。
然后它必须将值插入 SQL 服务器和 Mongo 数据库。 我依靠第三方提供 CSV 文件。 总共将有数百万行需要处理。

我被告知 csv 文件中某些行中的某些值将丢失,原因可能是数据已损坏或 null。

我需要告诉他们用什么来替换 csv 文件中那些缺失的值。

我正在考虑两种选择:

  • 选项 1:将该值完全留空,这样 csv 文件中两个逗号之间就什么也没有了。 例如,如果必须出现 value1、value2 和 value3 但缺少 value2,则该行将呈现为:value1,,value3

  • 选项 2:符号,例如减号 - 或加号 + 或下划线 _

在我的脚本中,我想查看每一行并确定缺少哪些值并根据以下内容采取某些操作:

  • 缺少哪些值(替换为一些值)
  • 缺失值的数量(如果超过一定数量,忽略该行)

我觉得选项 2 会更好,因为我可以写类似的东西

if(value == "+") 
{do x;}

如果我告诉他们什么都不放(选项 1),我觉得编写可以检测到的代码会更难。 或者 SSIS 会将空值解释为空字符串? 即,我可以写:

if(value == "") 
{do x;}

对于这些类型的脚本,我是新手,所以我正在寻找那些有经验的人的建议:根据这些要求,我应该要求将什么插入到 csv 文件中以指示缺少的值?

从业务角度来看:不要修改其他供应商的数据,除非得到他们的明确批准,并且没有关于如何和何时修改它的严格规则,以及您可以更改它的值。

如果您使用的是 SSIS,请将所有 CSV 文件加载到您的数据库中,并将其完全存储在暂存表中。 对数据集运行查询,ID 记录缺少键值,将它们从阶段表中删除,并将它们存储在错误表中。 每次运行后,您可以向供应商提供所有错误记录缺失数据的 output。 如果供应商允许您更新错误记录,仍然要跟踪哪些记录丢失了数据、返回的值是什么以及您将其更新为什么值。

总的来说,这应该完成两件事。 首先,您可以根据需要完成 ETL 和管道内容。 其次,更重要的是,您有文档说明您如何修改供应商的数据,以防万一出现灾难性错误并且需要律师介入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM