有三列数据-identity_ID,日期,状态。
该incident_ID是独特的,日期是2013年至2016年每年的范围格式,国家是在没有特定的顺序和重复
数据样本视图
我将使用另一个表来组合此数据,但是首先我需要组织数据以更好地匹配另一个表的格式-布局显示了年,州和每个州花费的美元。因此对于2013年,我将有51行(每个州+ DC),每个州将有一个美元的金额,然后在表格中冲洗/重复直到2016年。
我是SSIS/的新手Visual Studio,应该能够使用派生列转换来完成此操作...
有没有一种方法可以使用“ 派生列”来“计数”并重新排列数据,以显示给定年份中每个州发生了多少事件?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在SSIS(SQL Server Integration Services)中,使用“派生列”转换直接实现您所描述的数据重塑可能不太直观,因为派生列主要用于创建或修改现有列的值,而不是进行聚合计数或重新排列数据以适应新的布局。但是,您可以结合多个步骤来达到目的:
排序:首先确保您的数据按身份_ID
、日期
和状态
进行了正确排序。
聚合:接下来,您需要使用“聚合”转换来计算每个州每年的事件数量。在这个转换中,可以设置状态
作为组键,日期
(年份部分)作为另一个组键,并对身份_ID
进行计数(假设每个ID代表一个事件)。这将生成每个州每年的事件总数。
派生列:然后,确实可以用“派生列”转换来添加或调整列,比如提取年份从日期字段,如果这一步在聚合之前没有完成的话。
多播/条件拆分(可选):如果您需要为每一年单独处理数据,可以使用“条件拆分”或“多播”转换来根据年份分支数据流。
透视转换:为了得到您想要的表格布局(即年份、州、每个州的事件数量),最直接的方法是使用“透视转换”。透视转换允许您基于一组列(在这里是年份和州)旋转数据,将度量值(这里是事件计数)分布到新列中。但请注意,SSIS标准工具箱里并没有直接的透视转换,这通常需要自定义脚本组件或后续的复杂操作。
脚本组件:如果上述方法不能直接满足需求,特别是对于复杂的重塑任务,编写一个自定义脚本组件可能是最灵活的解决方案。在脚本组件中,您可以使用C#或VB.NET编写代码来完全控制数据的处理逻辑,包括动态生成目标表结构和填充数据。
综上所述,虽然派生列转换本身不直接支持您所需的复杂数据重塑,但通过一系列SSIS组件的组合使用,尤其是结合“聚合”、“透视”(或自定义脚本)等转换,您可以实现从原始数据到所需格式的转换。