SSIS 转换(几乎像一个支点)

Posted

技术标签:

【中文标题】SSIS 转换(几乎像一个支点)【英文标题】:SSIS transformation (almost like a pivot) 【发布时间】:2011-01-18 17:09:10 【问题描述】:

我有以下数据进入 SSIS

Set   Value
---   -------
1     One
1     Two
1     Three
2     Four
2     Five
2     Six

我想把它转换成阅读

Set   ValueList
---   -------
1     One, Two, Three
2     Four, Five, Six

如何在 SSIS 中执行此操作?

【问题讨论】:

【参考方案1】:

我使用脚本组件跨行进行字符串连接

string TagId = "-1";
string TagList = "";
bool IsFirstRow = true;

public override void Input0_ProcessInputRow(Input0Buffer Row)

    if (Row.TAGSId.ToString() == TagId)
    
        TagList += Row.TAG + ",";
    
    else
    
        if (IsFirstRow)
        
            Output0Buffer.AddRow();
            IsFirstRow = false;
        

        TagId = Row.TAGSId.ToString();
        TagList = Row.TAG.ToString() + ",";
    

    Output0Buffer.TagId = int.Parse(TagId);
    Output0Buffer.TagList = TagList;
    Output0Buffer.TagLength = TagList.Length;

    //variable used in subsequent queries
    this.Variables.TagList = TagList;

【讨论】:

【参考方案2】:

数据流转换中有一个枢轴任务。您可以尝试一下,但我会警告您,我们对它的实施并不满意。

或者,您可以使用数据流将数据放入临时表中,然后使用 SQL 进行数据透视,或者在用于创建传入数据源的 SQL 中进行数据透视。如果您想在 SQl 代码中执行此操作,这可能会有所帮助:

select 1 as Item 
into #test 
union select 2 
union select 3 
union select 4 
union select 5 

select STUFF((SELECT  ', ' + cast(Item as nvarchar) 
        FROM #test 
        FOR XML PATH('')), 1, 1, '') 

【讨论】:

因为它来自一个 XML 文件,所以我无法使用 XML PATH 技术。我使用 SCRIPT 组件来实现我想要的。

以上是关于SSIS 转换(几乎像一个支点)的主要内容,如果未能解决你的问题,请参考以下文章

在 SSIS 中将 varchar 数据类型转换为日期时间

在表达式生成器 SSIS 2019 中将日期时间转换为字符串

SSIS 脚本组件阻塞

从 Unpivot Transform:SSIS 的结果中选择

SSIS:将纪元列转换为日期

SSIS 查找转换