SSIS:重复条目的平均转换

SSIS: Average transformation for duplicate entries

对于大学小组项目,我们正在使用 SQL 服务器管理和 Visual Studio 构建数据仓库。我们目前在暂存区,想要用数据填充 tables。我们所有的维度 table 工作正常,我们的事实之一 table 也是如此,现在我们正在努力推进评论事实 table.

在此 table 中,我们想显示每个客户唯一 ID 的平均分数(针对订单),同时考虑到不同的日期。换句话说,一个客户可以在同一天进行多个评论,所以我们想对这些情况进行平均。如果客户在不同的日期进行了评论,我们不想在计算平均值时包含此信息。您能否帮助我们如何使用 visual studio 执行此操作?我们尝试使用聚合函数,但没有成功。

非常感谢任何帮助! (我们不关心与订单的关系,我们只想知道同一客户在同一天的平均评分。)

为了更好地理解和洞察,我们为您提供了我们的 SQL 脚本、平面文件以及 visual studio 数据流:Download files(您可以忽略我们提供的选项到目前为止,评论事实 table,因为我们在 csv 文件“olist_order_reviews_dataset_NEW.csv”中手动进行了聚合。但是,我们真的很想使用原始 csv 文件“olist_order_reviews_dataset.csv”为了能够在暂存区域内进行转换。

祝一切顺利,提前致谢!

聚合看起来不错,但存在数据问题。由于评论(评论)中有一个自由表单输入字段,当评论中包含分号或换行符时,这会导致问题:

添加违规行的错误处理是解决问题的一种选择:

另一种选择是在处理评论文件之前对其进行数据清理。

评论里面的分号和CRLF问题

发生这种情况是因为包含评论数据的平面文件由分号“;”分隔,当客户输入的只是自由文本的评论包含分号时,它会混淆 SSIS 平面文件连接,使其将其解释为分隔符,因此将分号后面的文本作为下一个字段等。当这些字段中有 CRLF 时,也会发生同样的事情。 好消息是文本用双引号 (") 限定,因此解决方案是相应地设置连接管理器:

请注意,我已将“文本限定符”设置为“


我仍然建议保留错误输出以捕获数据的任何问题。