《BI那点儿事》数据流转换——透视

原文:《BI那点儿事》数据流转换——透视

这个和T-SQL中的PIVOT和UNPIVOT的作用是一样的。数据透视转换可以将数据规范或使它在报表中更具可读性。

通过透视列值的输入数据,透视转换将规范的数据集转变成规范程度稍低、但更为简洁的版本。例如,在列有客户名称、产品和购买数量的规范的 Orders 数据集中,任何购买多种产品的客户都有多行,每一行显示一种产品的详细订购信息。此时,如果对产品列透视数据集,透视转换可以输出每个客户只有一行的数据集。这一行列出该客户购买的所有产品,产品名称显示为列名,而数量则显示为产品列的值。并非每个客户都购买所有产品,所以很多列可能包含空值。
透视数据集时,输入列在透视过程中扮演不同的角色。列可以按以下方式参与:

  • 将列原封不动地传递到输出。因为有许多输入行只能产生一个输出行,所以转换只复制列的第一个输入值。
  • 列作为一组记录的标识键或标识键的一部分。
  • 列定义透视。此列中的值与已透视数据集中的列相关联。
  • 列包含置于透视所创建的列中的值。

生成测试数据:

CREATE TABLE FactOrders
    (
      Id INT IDENTITY ,
      Cust VARCHAR(50) ,
      Product VARCHAR(50) ,
      Qty INT
    )

INSERT  INTO FactOrders
        ( Cust ,
          Product ,
          Qty
        )
        SELECT  'Kate' ,
                'Ham' ,
                2
        UNION ALL
        SELECT  'Kate' ,
                'Soda' ,
                6
        UNION ALL
        SELECT  'Kate' ,
                'Milk' ,
                1
        UNION ALL
        SELECT  'Kate' ,
                'Beer' ,
                12
        UNION ALL
        SELECT  'Fred' ,
                'Milk' ,
                3
        UNION ALL
        SELECT  'Fred' ,
                'Beer' ,
                24
        UNION ALL
        SELECT  'Fred' ,
                'Chips' ,
                2

SELECT  *
FROM    FactOrders

 

配置示例数据集
关系图中显示的示例数据集的具体配置如下:将 Cust 列的 PivotUsage 属性设置为 1,以指示这是设置键列;将 Product 输入列的 PivotUsage 属性设置为 2,以指示必须为每个产品创建一列;将 Qty 输入列的 PivotUsage 属性设置为 3,以指示将数量值放入透视列。
将转换输出设置为包含六个列。这些列可以使用“高级编辑器”对话框进行添加,分别命名为 Cust、Ham、Soda、Milk、Beer 和 Chips。将 Ham 列的 PivotKeyValue 属性设置为 Ham,以指示转换应在输入列中查找该值。同样,将 Soda 列的 PivotKeyValue 属性设置为 Soda,依此类推。
然后将转换输入中的列映射到输出中的列。
将 Cust 列的 SourceColumn 属性配置为使用 Cust 输入列的沿袭标识符。将 Ham、Soda、Milk、Beer 和 Chips 各列的 SourceColumn 属性配置为使用 Qty 输入列的沿袭标识符。进行此配置的另一种方法是将 Ham、Soda、Milk、Beer 和 Chips 各列的 SourceColumn 属性设置为 -1,这将插入 True 值而非数据值。例如,这样 Beer 列就不会包含值 12 和 24 而是包含值 True,以便仅指示该客户购买了产品,但不显示购买数量。
转换输出中的行包含来自 Cust 和 Qty 输入列的值。

时间: 2024-09-20 05:33:00

《BI那点儿事》数据流转换——透视的相关文章

《BI那点儿事—数据的艺术》目录索引

原文:<BI那点儿事-数据的艺术>目录索引 原创·<BI那点儿事-数据的艺术>教程免费发布 各位园友,大家好,我是Bobby,在学习BI和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料,本来只是内部学习使用,但为了方便更多的BI开发者,推动BI企业级应用开发,决定整理成一部教程,并在网络上免费发布该教程,希望为BI时代贡献绵薄之力! 本教程是由Bobby参考官方文档,综合市面相关书籍,经过充分的吸收消化,结合开发实践的而创作的一部原创作品,为了本教程及早与广大读者同仁

《BI那点儿事》数据流转换——逆透视转换

原文:<BI那点儿事>数据流转换--逆透视转换 逆透视转换将来自单个记录中多个列的值扩展为单个列中具有同样值的多个记录,使得非规范的数据集成为较规范的版本.例如,每个客户在列出客户名的数据集中各占一行,在该行的各列中显示购买的产品和数量.逆透视转换将数据集规范之后,客户购买的每种产品在该数据集中各占一行. 我们下一步是进行逆透视.与透视配置不同,逆透视配置相对简单. 你将需要选择透视字段,在这个例子中透视字段是Ham.Soda.Milk.Beer和Chips.透视字段名称将出现在标题为Prod

《BI那点儿事》数据流转换——字符映射表

原文:<BI那点儿事>数据流转换--字符映射表 特征映射转换如图展示数据流中列的特征,它的编辑界面很简单,只有一个标签界面,点击要进行映射的列,可以选择需要添加新列或需要更新的列.可以在Output Alias列中给原来的列一个别名,选择要进行的操作,可以进行的操作类型有: Byte Reversal:逆转数字位的顺序,例如数据0x1234 0x9876的逆转结果是0x4321 0x6789,这种操作和LCMapString,LCMAP_BYTEREV选项有相同的操作结果 Full Width

《BI那点儿事》数据流转换——OLE DB 命令转换

原文:<BI那点儿事>数据流转换--OLE DB 命令转换 OLE DB命令对数据流中的数据行执行一个OLE DB命令.它针对数据表中的每一行进行更新操作,可以事先将要更新的数据存放在表中.或者针对一个有输入参数的存储过程,可以将这些参数存放在一个数据表中,不用每次都输入参数.示例数据准备: CREATE TABLE SourceParametersForStoredProc ( Param1 INT, param2 INT ) CREATE TABLE DestinationOLEDBCom

《BI那点儿事》数据流转换——模糊查找转换

原文:<BI那点儿事>数据流转换--模糊查找转换 BI项目中经常会有一些提取,转换,数据处理(ELT)的工作,其中最主要的是处理过赃数据.假设在项目中我们向数据库中注入了测试数据,但是通过一个外键从另外一个表中载入数据的时候没有对应的数据,那么这一行就是赃数据.这时候可以使用SQL中的Sound-Ex,full-text,相似度算法等方法查找.这种策略需要花费大量的时间和精力来设计算法,测试,维护,并且它们都是基于词汇的,复用的可能性很小.也可能你会放弃自己处理并把它抛给一些有经验的高手专家来

《BI那点儿事》数据流转换——百分比抽样、行抽样

原文:<BI那点儿事>数据流转换--百分比抽样.行抽样 百分比抽样和行抽样可以从数据源中随机选择一组数据.这两种task都可以产生两组输出,一组是随机选择的,另一组是没有被选择的.可以将这些选择出的数据发送到开发或者测试服务器上.这个Task的最合适的应用是建立数据挖掘模型然后,使用这些抽样数据来验证这个模型. 编辑这种task,选择要抽取的行数或者 百分比,如图.百分比抽样按百分比从数据源中随机选择数据,行抽样从数据源中随机选择具体的行数.可以对选中的数据和未被选择的数据命名.最后一个选择项

《BI那点儿事》数据流转换——模糊分组转换

原文:<BI那点儿事>数据流转换--模糊分组转换 在模糊查找中我们提到脏数据是怎样进入到表中的事情,主要还是由于一些"Lazy-add"造成的.这种情况我们的肉眼很容易被欺骗,看上去是同一个单词,其实就差那么一个字母,变成了两个不同的单词.一个简单的例子是X-Ray Tech和xRey,我们很有可能认为他们是同一个职务,CT操作员,但是如果让计算机来处理的话,它们是两种截然不同的东西.和模糊查找一样,模糊分组可以查找出多行中出现的类似的单词进行归类.我们可以使用这些归类得到

《BI那点儿事》数据流转换——排序

原文:<BI那点儿事>数据流转换--排序 排序转换允许对数据流中的数据按照某一列进行排序.这是五个常用的转换之一.连接数据源打开编辑界面,编辑这种任务.不想设置为排序列的字段不要选中,默认情况下所有列都会选中.如图所示,按照TotalSugar_Cnt排序,并将所有列输出. 在底部的表格中,可以设置输出列的别名,是否按照列来排序.Sort Order列显示列将会第一排序,第二排序还是第三排序.双击列去除重复的排序列.

《BI那点儿事》数据流转换——导入列、导出列

原文:<BI那点儿事>数据流转换--导入列.导出列 导入列: 导入列例子现在来做一个例子:创建路径D:\Pictures随便在路径D:\Pictures中粘贴4个比较小的图像文件命名为01.png.02.png.03.png.04.png在路径D:\Pictures内创建一个txt文件命名为filelist.txt,文件内容如下D:\Pictures\01.pngD:\Pictures\02.pngD:\Pictures\03.pngD:\Pictures\04.png运行下面的SQL语句创建