代码改变世界

微软BI 之SSRS 系列 - 如何实现报表导航 Navigation 和钻取 Drill Down 的效果

2014-01-15 00:21 by BIWORK, 8661 阅读, 6 推荐, 收藏, 编辑
摘要:开篇介绍如何在 SSRS 报表中实现标签导航 Navigation 和向下钻取 Drill Down的效果? 如同下面这个例子一样 -在页面第一次加载的时候,默认显示是全部地区的销售总和情况,上面一张图是显示各个国家的零售额和网售额,下面一张图是根据时间小时销售额的趋势。那么 Overall 的部分... 阅读全文

微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹

2014-01-13 23:28 by BIWORK, 6125 阅读, 3 推荐, 收藏, 编辑
摘要:开篇介绍比如有这样的一个需求,旧的一个业务系统通常将产出的文件输出到同一个指定的目录下的不同子目录,输出的文件类型有 XML,EXCEL, TXT 这些不同后缀的文件。现在需要在 SSIS 中将它们分类整理到不同的文件夹下,比如 XML 的全部拷贝到 A 文件夹, EXCEL 全部拷贝到 B 文件夹... 阅读全文

微软BI 之SSRS 系列 - 如何在 MDX 查询中获取有效的 MEMBER 成员属性作为参数传递

2014-01-09 23:19 by BIWORK, 2486 阅读, 1 推荐, 收藏, 编辑
摘要:这篇小文章的来源是天善问答,比如在报表中要根据点击某一个成员名称然后作为参数传递给自身报表或者下一张报表,这个在普通的 SQL 查询中没有任何问题。但是在 MDX 中查询是有区别的,比如在 MDX 中显示在报表上的结果是 Category 下的一个分类 Bikes,但是当点击了Bikes之后把 Bi... 阅读全文

微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many

2014-01-04 23:54 by BIWORK, 7599 阅读, 5 推荐, 收藏, 编辑
摘要:开篇介绍对于维度成员和事实数据直接的关系看到更多的可能还是一对一,一对多的关系。比方在事实维度(或退化维度)中一个订单和明细号组合而成的ID,对应的就是事实表中的一条数据,这就是一对一的关系。比方说在产品维度中,一个产品维度成员可能对应着多个事实数据成员,这就是一对多的关系。说简单点,就是事实表的外... 阅读全文

微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)

2014-01-04 19:43 by BIWORK, 6424 阅读, 1 推荐, 收藏, 编辑
摘要:这篇文章是基于上一篇SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension继续讲解多维数据集维度用法中的事实维度。事实维度,顾名思义就是把事实表 Fact*** 中的某一个或多个属性抽取出来形成一个维度,而不像以前直接通过维度表 Dim*** 来创建一个维度。... 阅读全文

微软BI 之SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension

2014-01-04 14:58 by BIWORK, 5337 阅读, 3 推荐, 收藏, 编辑
摘要:在 CUBE 设计过程中有一个非常重要的点就是定义维度与度量值组关系,维度的创建一般在前,而度量值组一般来源于一个事实表。当维度和度量值组在 CUBE 中定义完成之后,下一个最重要的动作就是定义两者之间的关系。在前面几篇文章中也已经看到了如何将度量值组和维度通过哪些维度属性进行关联的操作,但是那些关... 阅读全文

微软BI 之SSIS 系列 - 通过 ROW_NUMBER 或 Script Component 为数据流输出添加行号的方法

2013-12-27 16:21 by BIWORK, 2519 阅读, 0 推荐, 收藏, 编辑
摘要:开篇介绍上午在天善回答看到这个问题-SSIS 导出数据文件,能否在第一列增加一个行号,很快就帮助解决了,方法就是在SQL查询的时候加一个ROW_NUMBER()就可以了。后来想起在两年前我的第一个BI项目上也有类似的文件输出需求,但是比这个要复杂的多,因为涉及到多个输入列的逻辑判断和计算问题,比如还... 阅读全文

微软BI 之SSAS 系列 - 多维数据集中度量值设计时的聚合函数 (累加性_半累加性和非累加性)

2013-12-26 20:40 by BIWORK, 6436 阅读, 4 推荐, 收藏, 编辑
摘要:在SSAS 系列 - 实现第一个 Cube 以及角色扮演维度,度量值格式化和计算成员的创建中主要是通过已存在的维度和事实数据创建了一个多维数据集,并同时解释了 Role-Playing Dimension 角色扮演维度,计算成员,计算成员格式化等内容。在这篇文章中主要是分析和理解在多维数据集设计过程... 阅读全文

微软BI 之SSAS 系列 - 实现Cube 以及角色扮演维度,度量值格式化和计算成员的创建

2013-12-25 15:26 by BIWORK, 8070 阅读, 0 推荐, 收藏, 编辑
摘要:在熟悉完下面这三种维度的创建方式之后,就可以开始创建我们的第一个Cube了。SSAS 系列 - 自定义的日期维度设计SSAS 系列 - 基于雪花模型的维度设计SSAS系列 - 关于父子维度的设计我们将使用下面的这些脚本来创建一些维度表和事实表,数据源的来源是AdventureWorksDW2012,... 阅读全文

微软BI 之SSIS 系列 - 在 SSIS 输出平面文件时根据运行日期生成不同的文件名称

2013-12-25 00:00 by BIWORK, 4996 阅读, 0 推荐, 收藏, 编辑
摘要:开篇介绍在SSIS中操作文件的输入和输出是非常方便的,这个例子讲解一个最简单的需求:比如每天从数据库中查询一批数据要输出到文件,每天产生一个文件,那么文件的名称按照"文件名+日期"的格式加以区别,比如 Employee20131225.txt 。测试案例我的测试数据非常简单,就是一个查询语句,要将这... 阅读全文

微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

2013-12-23 18:00 by BIWORK, 2978 阅读, 0 推荐, 收藏, 编辑
摘要:之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型数据库的,这一篇是基于 MDX 父子维度的 SSRS 报表。沿用上一篇中的 (SSAS系列 - 关于... 阅读全文

微软BI 之SSAS 系列 - 关于父子维度的设计

2013-12-23 17:28 by BIWORK, 6159 阅读, 3 推荐, 收藏, 编辑
摘要:除了之前的几篇文章中出现的时间维度,雪花型维度的设计之外还有一种比较特殊的维度 - 父子维度。父子维度特殊就特殊在它包含了一种基于递归关系(Recursive Relationship)的引用结构, 在我的这篇文章中提到了如何基于父子层次结构来设计和制作 SSRS 报表,不过那个报表是基于数据仓库的... 阅读全文

微软BI 之SSAS 系列 - 基于雪花模型的维度设计

2013-12-23 11:29 by BIWORK, 4873 阅读, 2 推荐, 收藏, 编辑
摘要:基于雪花模型的维度以下面的Product产品与产品子类别,产品类别为例。DimProduct表和DimProductSubcategory表有外键关系,而DimProductSubcategory表和 DimProductCategory表存在外键关系。测试的维度表与数据 - USE BIWORK_... 阅读全文

微软BI 之SSAS 系列 - 自定义的日期维度设计

2013-12-22 18:34 by BIWORK, 7890 阅读, 6 推荐, 收藏, 编辑
摘要:SSAS Date维度基本上在所有的Cube设计过程中都存在,很难见到没有时间维度的OLAP数据库。但是根据不同的项目需求,Date维度的设计可能不大相同,所以在设计时间维度的时候需要搞清楚几个问题:你的业务涉及到的最低的细节级别是什么?比如按季度查看报表还是按月份,或者按周,或者再甚者按天。这个细... 阅读全文

微软BI 之SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表

2013-12-19 23:53 by BIWORK, 5148 阅读, 4 推荐, 收藏, 编辑
摘要:基于父子关系的递归结构在公司组织结构里比较常见,基本上都是在一张表里实现的自引用关系。在报表中如果要实现这种效果,并且在这个基础上做一些数据的汇总,可以使用到下面提到的方法。要实现的效果大致如下 -半收起的效果 -从 AdventureWorks2012 中抽取一些示例数据 -USE BIWORK_... 阅读全文

微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理

2013-12-17 16:31 by BIWORK, 17032 阅读, 10 推荐, 收藏, 编辑
摘要:文章更新历史2014年9月7日 - 加入了部分更新内容,在文章最后提到了关于不同 Office Excel 版本间的连接问题。开篇介绍这篇文章主要总结在 SSIS 中访问和处理 Excel 数据的四个方面的主题内容 (都是处理以 .xlsx 结尾的 Excel 文件)-如何在 SSIS 中集成对 M... 阅读全文

MDX Cookbook 12 - 计算 SMA 简单移动平均 LastPeriods() 函数的使用

2013-12-05 22:37 by BIWORK, 1692 阅读, 0 推荐, 收藏, 编辑
摘要:先认识一下这几个名词 Moving Average (MA) 移动平均,或者叫做移动平均线,是技术分析中一种分析时间序列数据的工具。最常见的就是利用股价,回报或交易量等变数计算出移动平均。可以利用移动平均反映出长期趋势或周期,在数学上这个也叫做卷积 Rolling Average。还有一个概念叫做 SMA (Simple Moving Average 简单移动平均),是指某个变数之前 N 个数值的累加平均。比如,收市价的10日简单移动平均是指之前10日收市价的平均数,那么这里就可以使用 SMA 10 来表示。先看看每天的网络订单数量的情况 -我们要在这个基础上看看 2006年开始 SMA 30 阅读全文

MDX Cookbook 11 - 计算 Year Over Year 增长 (同比计算) ParallelPeriod

2013-12-05 22:32 by BIWORK, 4121 阅读, 0 推荐, 收藏, 编辑
摘要:这一小节主要介绍如何在一个平行期间的度量值,当前值的对比对象是指当前值的上一年,上一个季度或者其它时间级别上与当前值同一时间点上的的那个对象。有一个非常常见的需求就是对比上一年同一个时间点的某个值来判断在现在同期的时候这个值的大小是上升了还是下降了。先显示基于月份成员的销售额情况 -使用 PARALLELEPRIOD(Level, N, Member) 先把同比值查询出来,Level 指定的是年,1 表示 1年前,Member 就是指当前成员并且表示月。所以整个表达的意思就是查询当前成员1年前的相对应的那个月的 Reseller Sales Amount 的值是多少。WITHMEMBER [M 阅读全文

MDX Cookbook 10 - 计算 Year To Date 的 Running Total(YTD 与 PeriodsToDate 的区别)

2013-12-05 22:15 by BIWORK, 4325 阅读, 1 推荐, 收藏, 编辑
摘要:在这个小节中我们将计算度量值的 Year To Date 的值,也就是计算从年开始到当前时间成员为止的度量值的累加结果。下面的这个查询显示了所有以周为单位的 Reseller Sales Amount -那么如果要计算上图中以周为单位的累加值,应该如何处理? 比如说现在是 Week 28 CY 2005,那么它的 YTD 累加值就是 Week 27 CY 2005 的度量值 + Week 28 CY 2005 度量值。WITHMEMBER [Measures].[Reseller Sales YTD]AS SUM( YTD([Date].[Calendar Weeks].C... 阅读全文

微软BI 之SSIS 系列 - 变量查询语句引起列输出顺序不一致的解决方法

2013-12-04 12:47 by BIWORK, 2255 阅读, 3 推荐, 收藏, 编辑
摘要:开篇介绍这个问题来自于 天善BI社区,看了一下比较有意思,因为我自己认为在SSIS中处理各种类型文件的经验还比较丰富(有一年的时间几乎所有ETL都跟文件相关),但是这个问题确实之前没有特别考虑过。研究了一下,找到了解决的方法,赶紧记录下来。简单描述一下这个问题,如果我们的 SOURCE 是直接从表里... 阅读全文