开发者社区 问答 正文

SSIS / Visual Studio-使用派生的列变换来计算不同的值并按两个变量排序?

有三列数据-identity_ID,日期,状态。

该incident_ID是独特的,日期是2013年至2016年每年的范围格式,国家是在没有特定的顺序和重复

数据样本视图

我将使用另一个表来组合此数据,但是首先我需要组织数据以更好地匹配另一个表的格式-布局显示了年,州和每个州花费的美元。因此对于2013年,我将有51行(每个州+ DC),每个州将有一个美元的金额,然后在表格中冲洗/重复直到2016年。

我是SSIS/的新手Visual Studio,应该能够使用派生列转换来完成此操作...

有没有一种方法可以使用“ 派生列”来“计数”并重新排列数据,以显示给定年份中每个州发生了多少事件?

展开
收起
心有灵_夕 2019-12-06 20:36:18 967 分享 版权
阿里云 AI 助理回答

在SSIS(SQL Server Integration Services)中,使用“派生列”转换直接实现您所描述的数据重塑可能不太直观,因为派生列主要用于创建或修改现有列的值,而不是进行聚合计数或重新排列数据以适应新的布局。但是,您可以结合多个步骤来达到目的:

  1. 排序:首先确保您的数据按身份_ID日期状态进行了正确排序。

  2. 聚合:接下来,您需要使用“聚合”转换来计算每个州每年的事件数量。在这个转换中,可以设置状态作为组键,日期(年份部分)作为另一个组键,并对身份_ID进行计数(假设每个ID代表一个事件)。这将生成每个州每年的事件总数。

  3. 派生列:然后,确实可以用“派生列”转换来添加或调整列,比如提取年份从日期字段,如果这一步在聚合之前没有完成的话。

  4. 多播/条件拆分(可选):如果您需要为每一年单独处理数据,可以使用“条件拆分”或“多播”转换来根据年份分支数据流。

  5. 透视转换:为了得到您想要的表格布局(即年份、州、每个州的事件数量),最直接的方法是使用“透视转换”。透视转换允许您基于一组列(在这里是年份和州)旋转数据,将度量值(这里是事件计数)分布到新列中。但请注意,SSIS标准工具箱里并没有直接的透视转换,这通常需要自定义脚本组件或后续的复杂操作。

  6. 脚本组件:如果上述方法不能直接满足需求,特别是对于复杂的重塑任务,编写一个自定义脚本组件可能是最灵活的解决方案。在脚本组件中,您可以使用C#或VB.NET编写代码来完全控制数据的处理逻辑,包括动态生成目标表结构和填充数据。

综上所述,虽然派生列转换本身不直接支持您所需的复杂数据重塑,但通过一系列SSIS组件的组合使用,尤其是结合“聚合”、“透视”(或自定义脚本)等转换,您可以实现从原始数据到所需格式的转换。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: