《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 输入列的值。
《BI那点儿事》数据流转换——透视的更多相关文章
- 《BI那点儿事—数据的艺术》目录索引
原创·<BI那点儿事—数据的艺术>教程免费发布 各位园友,大家好,我是Bobby,在学习BI和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料,本来只是内部学习使用,但为了方便 ...
- Linux xargs将输出数据流转换成命令参数
200 ? "200px" : this.width)!important;} --> 介绍 我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”:但是这里的 ...
- 《BI那点儿事》数据流转换——逆透视转换
逆透视转换将来自单个记录中多个列的值扩展为单个列中具有同样值的多个记录,使得非规范的数据集成为较规范的版本.例如,每个客户在列出客户名的数据集中各占一行,在该行的各列中显示购买的产品和数量.逆透视转换 ...
- 《BI那点儿事》数据流转换——模糊查找转换
BI项目中经常会有一些提取,转换,数据处理(ELT)的工作,其中最主要的是处理过赃数据.假设在项目中我们向数据库中注入了测试数据,但是通过一个外键从另外一个表中载入数据的时候没有对应的数据,那么这一行 ...
- 《BI那点儿事》数据流转换——字词查找转换
字词查找转换将从转换输入列的文本中提取的字词与引用表中的字词进行匹配,然后计算出查找表中的字词在输入数据集中出现的次数,并将计数与引用表中的此字词一并写入转换输出的列中.此转换对于创建基于输入文本并带 ...
- 《BI那点儿事》数据流转换——字符映射表
特征映射转换如图展示数据流中列的特征,它的编辑界面很简单,只有一个标签界面,点击要进行映射的列,可以选择需要添加新列或需要更新的列.可以在Output Alias列中给原来的列一个别名,选择要进行的操 ...
- 《BI那点儿事》数据流转换——排序
排序转换允许对数据流中的数据按照某一列进行排序.这是五个常用的转换之一.连接数据源打开编辑界面,编辑这种任务.不想设置为排序列的字段不要选中,默认情况下所有列都会选中.如图所示,按照TotalSuga ...
- 《BI那点儿事》数据流转换——多播、Union All、合并、合并联接
建立测试数据: CREATE TABLE FactResults ( Name ) , Course ) , Score INT ) INSERT INTO FactResults ( Name , ...
- 《BI那点儿事》数据流转换——查找转换
查找转换通过联接输入列中的数据和引用数据集中的列来执行查找.是完全匹配查找.在源表中查找与字表能关联的所有源表记录.准备数据.源表 T_QualMoisture_Middle_Detail字典表 T_ ...
随机推荐
- git-配置公司账号
1.初始化配置 git config --global user.name " abc" git config --global user.email "abc@123. ...
- soap request by afnetworking2.X/3.X
for 2.X 参考 http://jiapumin.iteye.com/blog/2109378 AFHTTPRequestOperationManager *manager = [AFHTTPRe ...
- k8s入门系列之扩展组件(一)DNS安装篇
DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...
- JQuery1.11版本对prop和attr接口的含义分离导致问题分析
问题背景 实验中, 在jquery1.7版本, attr("value") 和 val() 接口获取 input 控件的值, 都是一致的, 都是当前控件值. 但是 jquery1 ...
- 浏览器网页判断手机是否安装IOS/Android客户端程序
IOS 原理如下: 为HTML页面中的超链接点击事件增加一个setTimeout方法. 如果在iPhone上面500ms内,本机有应用程序能解析这个协议并打开程序,则这个回调方法失效: 如果本机没有应 ...
- 模板 KMP
[模板]KMP int next[N]; char str1[M],str2[N]; //str1 长,str2 短 //len1,len2,对应str1,str2的长 void get_next(i ...
- Win7常规快捷键
Win7常规快捷键: Win+1:打开/显示超级任务栏第一个图标代表的程序 Win+2:打开/显示超级任务栏第二个图标代表的程序(3.4.--如此类推) Win+D:切换桌面显示窗口或者gadgets ...
- ZoomBar 设计
package com.example.canvasdemo; import android.content.Context; import android.graphics.Canvas; impo ...
- 安卓与PC网络对接实现视频实时播放
研究安卓网络通信一段时间了, 由于最近公司催的比较紧, 硬着头皮弄出来了. 现在手机客户端终于能够连接流媒体服务器实时播放前端的视频流了. 其实通信方面主要还是命令包的解析, 以及分包组包. 比如要 ...
- AppleWatch___学习笔记(一)开发思路和框架
一.开发须知 如果你没有开发过 iphone,直接来做watch,我建议你不要这么做,不是不可以,而是目前所有的第三方应用都必须基于iphone的扩展,原生的watch应用,苹果目前还没有开放给开发者 ...