在ETL过程中处理空值的正确方法 - SSIS或SQL语句

时间:2015-10-21 16:36:23

标签: sql-server ssis

如果您有一个SSIS连接处理SOURCE数据库连接从SQL语句中提取数据。

通过ISNULL语句对来自的SQL列进行Derived Column会更高效,或者执行 $(document).ready(function () { $("#end").val($.datepicker.formatDate("dd/mm/yy", new Date())); var endDateString = $('#end').val(); var splitDate = endDateString.split("/"); var endDate = new Date(splitDate[2], splitDate[1], splitDate[0]); var startDate = new Date(); startDate.setDate(endDate.getDate() - 7); $("#start").val($.datepicker.formatDate("dd/mm/yy", startDate)); }); 并检查每个适用列中的NULL值是否更有效表达

2 个答案:

答案 0 :(得分:1)

通常,在查询中转换效率更高。

本文解释了Integration Services中不同类型和数据转换方法的性能影响。

“就整体性能(经过时间和CPU利用率)而言,在OLE DB层中执行数据类型转换而不是使用Integration Services是最快的选择。请注意,数据转换转换的运行时间非常类似于SQL Server自己的数据转换的运行时间 - 尽管它花费更多的CPU来完成同样的工作......“

http://blogs.msdn.com/b/sqlcat/archive/2009/12/01/draft-performance-comparison-between-data-type-conversion-techniques-in-ssis-2008.aspx

答案 1 :(得分:1)

在你的例子中它应该是。

通过简单的转换,派生列转换和使用t-sql之间的差异将是边缘的(t-sql稍快)。根据我的经验,ssis中的大部分额外开销来自数据集的大小以及您正在使用的任务的类型和数量。

此外,如果您只是为此列添加派生列转换,我将在T-SQL中进行转换并完全排除其他数据流任务。

一旦确定哪些记录为空,您对记录做了什么?如果你的排除空记录,我会使用T-SQL。