首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用EzAPI的MergeJoin转换中,如何将输入映射到输出列?

在使用EzAPI的MergeJoin转换中,如何将输入映射到输出列?
EN

Stack Overflow用户
提问于 2012-02-02 01:16:19
回答 4查看 4.5K关注 0票数 1

我正在使用EzAPI库以编程方式构建一个相当复杂的SSIS数据流,并且遇到了一个问题。我附上了一张我正在努力实现的图像。

我已经让启动(直到合并连接)正常工作,但是在尝试将合并连接组件的输入映射到输出时失败了。

这是我到目前为止的代码(显然只是一小段代码)

代码语言:javascript
复制
            int sortPosition;

            var df = new EzDataFlow(p);

            var cur = new EzOleDbSource(df);
            cur.Connection = dstConn;
            cur.Table = "Table1";

            var hst = new EzOleDbSource(df);
            hst.Connection = hstConn;
            hst.Table = "Table2";

            // Add all the columns to the sort transformation for the Current database table
            var sortCurr = new EzSortTransform(df);
            sortCurr.AttachTo(cur);

            sortPosition = 1;
            foreach (Column c in table.Columns)
            {
                sortCurr.SortOrder[c.ColumnName] = sortPosition++;
            }


            // Same for history
            var sortHst = new EzSortTransform(df);
            sortHst.AttachTo(hst);

            sortPosition = 1;
            foreach (Column c in table.Columns)
            {
                sortHst.SortOrder[c.ColumnName] = sortPosition++;
            }

            var mrg = new EzMergeJoin(df);

            mrg.AttachTo(sortCurr, 0, 0);
            mrg.AttachTo(sortHst, 0, 1);

            mrg.JoinType = MergeJoinType.Full;

            ... now what?

我到处寻找EzMergeJoin转换的示例或文档,但都没有用。有谁能给我指个方向吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-30 14:38:30

不幸的是,我们还没有找到一种方法来修复连接键不能通过数据流传递的问题。我们得到的唯一答案是在上游组件中使用不同的名称选择两次联接键。然后只对重复项进行排序,这会使合并联接使用重复项作为联接键。然后,原始列传递到数据流中的下一个组件。

下面是我们的代码示例,一旦正确设置了输入列,就没有什么特别的了:

代码语言:javascript
复制
            MergeJoin = new EzMergeJoin(TransformTranFact);
            MergeJoin.Name = "Merge Join";
            MergeJoin.AttachTo(SourceChecksum, 0, 0);
            MergeJoin.AttachTo(FactTranFact, 0, 1);
            MergeJoin.LinkAllInputsToOutputs();
            MergeJoin.JoinType = MergeJoinType.Full;
            MergeJoin.NumKeyColumns = mchs.Count();

mchs是一个XElement对象,其中包含来自在Dimodelo Architect中捕获的数据仓库设计的信息。我们使用EzAPI直接从Dimodelo Architect捕获的数据仓库设计中为数据仓库自动生成复杂的ETL。

票数 1
EN

Stack Overflow用户

发布于 2012-02-02 03:11:27

作为初始答案,请尝试添加

代码语言:javascript
复制
        // Not sure how to handle multiple key columns
        mrg.NumKeyColumns = 1;
        mrg.LinkAllInputsToOutputs();

我的数据流设置为Current分支,如下所示

(sorted)

  • col1

  • source_id

Historical分支看起来像

(sorted)

  • col2

  • source_id

我只对初始列进行了排序,因为我希望看到像source_id、col1、col2这样的输出。

我仍然在查看代码,以了解如何在其中添加联接键,但尚未找到它。

票数 0
EN

Stack Overflow用户

发布于 2012-08-03 00:09:54

目前,我找到了一个非最佳但实用的解决方案。如果您在其中一个查询中选择了联接键列两次,但只在其中一个查询上设置了排序选项,则它将链接到合并联接的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9100186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档