上篇《自助式微软BI工具PowerPivot简介!》已对PowerPivot插件作了简单介绍,本文将进一步介绍PowerPivot插件的基本情况,以便各位童鞋初步掌握此工具的条件,本文以SQL Server 2008 R2 PowerPivot为例进行介绍,PowerPivot 支持最大为 2GB 的文件,最多允许在内存中处理 4GB 的数据。PowerPivot 还包括数据分析表达式 (DAX)。DAX 是一种新的公式语言,它对于 Excel 的数据操作功能进行了扩展,从而可以实现更高级和更复杂的分组、计算和分析。DAX 公式的语法非常类似于 Excel 公式的语法,都使用函数、运算符和值的组合。
Excel 与 PowerPivot 工作簿之间的差异
在 PowerPivot 窗口和 Excel 窗口中处理数据的方式不同。下面是我们要特别指出的一些其他重要区别: • PowerPivot 数据可以在具有以下文件类型的工作簿中保存:Excel 工作簿 (*.xlsx)、启用 Excel 宏的工作簿 (*.xlsm) 和 Excel 二进制工作簿 (*.xlsb)。在具有其他格式的工作簿中不支持 PowerPivot 数据。
• PowerPivot 窗口不支持 Visual Basic for Applications (VBA)。您可以在 PowerPivot 工作簿的 Excel 窗口中使用 VBA。
• 在 Excel 数据透视表中,可以通过右键单击列标题然后选择“组”来将数据分组。此功能通常用于按日期将数据分组。在基于 PowerPivot 数据的数据透视表中,可以使用计算列来实现类似功能。有关详细信息,请参阅 Grouping Dates(分组日期)。
将数据发布到 SharePoint
创建一个 PowerPivot 工作簿之后,可以按通常共享文件的各种方式与他人共享它。不过,通过将文件发布到安装了 PowerPivot for SharePoint 和 Excel Services 的 SharePoint 服务器或场中,可以获得许多好处。在 SharePoint 服务器上,这些服务一起用来处理该工作簿:PowerPivot for SharePoint 组件处理数据,Excel Services 在浏览器窗口中呈现它,而其他用户在该窗口中可继续分析数据。
SharePoint 上的 PowerPivot 服务增加了对您发布到 SharePoint 中的 PowerPivot 工作簿的协作和文档管理支持。PowerPivot for SharePoint 提供一种新的文档库类型,借助于该文档库,可以在 PowerPivot 工作簿中呈现报表的丰富预览,能够根据发布的 PowerPivot 工作簿中的数据创建 Reporting Services 报表,而且能够计划自动刷新外部数据源中的 PowerPivot 数据。
下表指定了 PowerPivot 组件中定义的各种对象的最大大小和最大数量。
对象 |
规范/限制 |
---|---|
对象名称长度 |
100 个字符 |
名称中的无效字符 |
., ; ' ` : / \ * | ?" & % $ ! + = () [] {} < > |
每个 PowerPivot 数据库的表数 |
(2^31) - 1 = 2,147,483,647 |
每个表的列数和计算列数 |
(2^31) - 1 = 2,147,483,647 |
表中的计算度量值数 |
(2^31) - 1 = 2,147,483,647 |
用于保存工作簿的 PowerPivot 内存大小 |
4GB = 4,294,967,296 字节 |
每个工作簿的并发请求数 |
6 |
本地多维数据集连接数 |
5 |
列中的非重复值数目 |
1,999,999,997 |
表中的行数 |
1,999,999,997 |
字符串长度 |
536,870,912 字节 (512 MB),相当于 268,435,456 个 Unicode 字符(2 亿 5 千 6 百万个字符) |
注意 |
---|
此字符串限制不适用于以下函数,这些函数中的字符串不能超过 2,097,152 个 Unicode 字符: |
-
CONCATENATE 和嵌入连接运算符
-
DATEVALUE
-
EXACT
-
FIND
-
FORMAT
-
LEFT
-
LEN
-
LOWER
-
MID
-
REPLACE
-
REPT,限制适用于输入参数和结果
-
RIGHT
-
SEARCH
-
SUBSTITUTE,限制适用于输入参数和结果
-
TIMEVALUE
-
TRIM
-
UPPER
安装PowerPivot的软硬件要求如下:
硬件和软件要求
用于创建 PowerPivot 工作簿的计算机必须满足针对 Office 2010 的最低硬件和软件要求。
硬件要求
组件 |
最低要求 |
---|---|
处理器 |
500 MHz 32 位或 64 位处理器 |
RAM |
2 到 4 GB RAM。外接程序使用大约 25 MB 的 RAM。在第一个数据透视表添加到工作表时,将使用另外 33 MB。PowerPivot 工作簿需要额外的 RAM。所需的 RAM 量视您创建的工作簿而异。 PowerPivot 最多支持 2GB 大小的文件。使用 PowerPivot 的 64 位版本,您可以在内存中处理最多 4GB 的数据;而使用 32 位版本的数据, 您可以在内存中处理最多 2GB 的数据。 |
磁盘空间 |
程序文件需要 100 MB 磁盘空间。存储数据文件需要附加磁盘空间。尽管文件包含压缩数据,但是如果创建许多包含超大量数据的工作簿,您可能需要大量的磁盘空间。没有办法事先知道您的磁盘空间要求将是多少。在创建和保存文件时,请确保监视磁盘空间使用情况,以确保有足够的空间。 |
软件要求
PowerPivot for Excel 可安装在具有 32 位或 64 位 Excel 2010 的计算机上。如果您安装了 32 位版的 Excel,则必须安装 32 位版的 PowerPivot for Excel。同样,如果您安装了 64 位版的 Excel,则必须安装 64 位版的 PowerPivot for Excel。
最低要求 | |
---|---|
操作系统 |
Windows XP SP3(仅限 32 位)、Windows Vista SP2、Windows 7、Windows Server 2003 R2 with MSXML 6.0(仅限 32 位)、Windows Server 2008 SP2 或 Windows Server 2008(仅限 64 位)。 如果使用的是 Windows Vista 或 Windows Server 2008,还必须安装 http://support.microsoft.com/default.aspx/kb/971644 上提供的平台更新。 |
Windows 功能 |
Microsoft .NET Framework 3.5 SP1(在安装 Office 之前安装) |
Excel 版本要求 |
安装 PowerPivot for Excel 需要 Excel 2010(32 位或 64 位)。 |
Office 功能 |
必须随 Excel 2010 一起安装 Office 共享功能。 还必须安装 Microsoft Excel 中的 .NET 可编程支持。 |
注意 |
---|
在工作簿中创建和使用 PowerPivot 数据时,需要 Excel 2010 和 PowerPivot for Excel 外接程序。Excel 2007 可用于打开 PowerPivot 工作簿以及更改样式和格式(例如,应用其他颜色或字体),但不能使用 Excel 2007 与基于 PowerPivot 数据的数据透视表或数据透视图进行交互或更改基础数据。 |
建议
SQL Server PowerPivot for Excel 可以与 Excel 2010 的 32 位或 64 位版本一起使用。但是,64 位版本的 Excel 和 PowerPivot for Excel 所支持的数据远远多于 32 位版本。特别是,如果您要导入超过一百万行或列的数据,则必须使用 64 位版本。否则,如果数据集不是特别大,使用 32 位版本可获得可接受的性能。请注意,如果您打算对 Excel 使用数据挖掘外接程序,则必须使用 32 位版本的 Excel。
组件 |
建议 |
---|---|
平台和操作系统 |
Windows 7(64 位)或带有 SP1 的 Windows Vista(64 位)Business Edition 或 Ultimate Edition。 |
Excel 版本要求 |
Excel 2010(64 位) |
PowerPivot 工作簿中支持的数据源
可以从下表所列出的数据源中导入数据。PowerPivot for Excel 不安装对每种数据源列出的访问接口。某些访问接口可能已随其他应用程序安装在您的计算机上;否则您需要下载并安装这些访问接口。
还可以链接到 Excel 中的表以及从对剪贴板使用 HTML 格式的应用程序(如 Excel 和 Word)复制并粘贴数据。有关详细信息,请参阅通过使用 Excel 链接表添加数据和将数据复制并粘贴到 PowerPivot。
源 |
版本 |
文件类型 |
访问接口 1 |
Access 数据库 |
Microsoft Access 2003、2007 和 2010。 |
.accdb 或 .mdb |
ACE 14 OLE DB 访问接口 |
SQL Server 关系数据库 |
Microsoft SQL Server2005、2008、2008 R2;Microsoft SQL Azure 数据库 2 |
(不适用) |
OLE DB Provider for SQL Server SQL Server Native Client OLE DB 访问接口 SQL Server Native 10.0 Client OLE DB 访问接口 用于 SQL 客户端的 .NET Framework 数据访问接口 |
SQL Server Parallel Data Warehouse (PDW) 3 |
2008 R2 |
(不适用) |
OLE DB provider for SQL Server PDW |
Oracle 关系数据库 |
Oracle 9i、10g、11g。 |
(不适用) |
Oracle OLE DB 访问接口 用于 Oracle 客户端的 .NET Framework 数据访问接口 用于 SQL Server 的 .NET Framework 数据访问接口 MSDAORA OLE DB 访问接口 4 OraOLEDB MSDASQL |
Teradata 关系数据库 |
Teradata V2R6、V12 |
(不适用) |
TDOLEDB OLE DB 访问接口 Teradata 的 .NET 数据访问接口 |
Informix 关系数据库 |
(不适用) |
Informix OLE DB 访问接口 |
|
IBM DB2 关系数据库 |
8.1 |
(不适用) |
DB2OLEDB |
Sybase 关系数据库 |
(不适用) |
Sybase OLE DB 访问接口 |
|
其他关系数据库 |
(不适用) |
(不适用) |
OLE DB 访问接口或 ODBC 驱动程序 |
文本文件 |
(不适用) |
.txt、.tab、.csv |
用于 Microsoft Access 的 ACE 14 OLE DB 访问接口 |
Microsoft Excel 文件 |
Excel 97-2003、2007、2010 |
.xlsx、xlsm、.xlsb、.xltx、.xltm |
ACE 14 OLE DB 访问接口 |
PowerPivot 工作簿 |
Microsoft SQL Server 2008 R2 Analysis Services |
xlsx、xlsm、.xlsb、.xltx、.xltm |
ASOLEDB 10.5 (只能与发布到已安装 PowerPivot for SharePoint 的 SharePoint 场的 PowerPivot 工作簿一起使用) |
Analysis Services 多维数据集 |
Microsoft SQL Server 2005、2008、2008 R2 Analysis Services |
(不适用) |
ASOLEDB 10 |
数据馈送 (用于从 Reporting Services 报表、Atom 服务文档和单个数据馈送导入数据) |
Atom 1.0 格式 公开为 ADO.Net Data Services Framework 服务的任何数据库,如 Microsoft SQL Server 2005、2008、2008、2008 R2 Reporting Services 报表 |
服务文档的可定义一个或多个馈送的 .atomsvc Atom Web 馈送文档的 .atom |
Microsoft Data Feed Provider for PowerPivot 用于 PowerPivot 的 .NET Framework 数据馈送数据访问接口 |
Office 数据库连接文件 |
.odc |
1 还可以使用用于 ODBC 的 OLE DB 访问接口。
2 有关 SQL Azure 的详细信息,请参阅网站 SQL Azure。
3 有关 SQL Server PDW 的详细信息,请参阅网站 SQL Server 2008 R2 Parallel Data Warehouse(SQL Server 2008 R2 并行数据仓库)。
4 在某些情况下,使用 MSDAORA OLE DB 访问接口可能会导致连接错误,特别是对于 Oracle 的较新版本时。如果您遇到任何错误,我们建议您使用为 Oracle 列出的其他访问接口之一。
-
从关系数据库导入表可以省去一些操作步骤,因为在导入过程中将使用外键关系在 PowerPivot 窗口中的工作表之间创建关系。
-
导入多个表,然后删除不需要的表,这样也可以省去一些操作步骤。如果一次导入一个表,则仍可能需要手动创建表之间的关系。
-
不同数据源中包含类似数据的列是在 PowerPivot 窗口中创建关系的基础。在使用异类数据源时,应选择包含这样的列的表:这些列可以映射到其他数据源中包含相同或类似数据的表。
-
若要支持针对发布到 SharePoint 的工作簿的数据刷新,请选择工作站和服务器可平等访问的数据源。在发布工作簿后,可以设置数据刷新计划以自动更新工作簿中的信息。使用网络服务器上可用的数据源可以实现数据刷新。有关详细信息,请参阅创建用于 SharePoint 的 PowerPivot 工作簿。
-
OLE DB 访问接口有时可为大型数据提供更快的性能。在为同一数据源选择不同访问接口时,应首先尝试 OLE DB 访问接口。
PowerPivot 工作簿中支持的数据类型
在 PowerPivot 中支持使用以下数据类型。当您在公式中导入数据或者使用某一值时,即使原始数据源包含不同的数据类型,该数据也转换为以下数据类型之一。从公式得出的值也使用这些数据类型。
通常,实施这些数据类型以便在计算列中实现精确的计算,并且相同的限制将应用于 PowerPivot 中的其余数据以便保持一致性。
用于数字、货币、日期和时间的格式应遵循在打开该工作簿的计算机上指定的区域设置的格式。您可以使用工作表中的格式设置选项控制显示值的方式。
PowerPivot 用户界面中的数据类型 |
DAX 中的数据类型 |
说明 |
整数 |
一个 64 位(八字节)整数值 1, 2 |
没有小数位的数字。整数可以是正数或负数,但必须是介于 -9,223,372,036,854,775,808 (-2^63) 和 9,223,372,036,854,775,807 (2^63-1) 之间的整数。 |
小数 |
一个 64 位(八字节)实数 1, 2 |
实数是可具有小数位的数字。实数涵盖很广范围的值: 从 -1.79E +308 到 -2.23E -308 的负值 零 从 2.23E -308 到 1.79E + 308 的正值 但是,有效位数限制为 17 个小数位。 |
TRUE/FALSE |
布尔值 |
True 或 False 值。 |
文本 |
字符串 |
一个 Unicode 字符数据字符串。可以是字符串,或以文本格式表示的数字或日期。 最大字符串长度为 268,435,456 个 Unicode 字符(2 亿 5 千 6 百万个字符)或 536,870,912 字节。 |
日期 |
日期/时间 |
采用接受的日期-时间表示形式的日期和时间。 有效值是 1900 年 3 月 1 日后的所有日期。 |
货币 |
货币 |
货币数据类型允许值介于 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 之间,并且具有四个小数位的固定精度。 |
不适用 |
空白 |
空白是 DAX 中的一种数据类型,表示并替代 SQL 中的 Null。您可以通过使用 BLANK 函数创建空白,或者通过使用逻辑函数 ISBLANK 测试是否存在空白。 |
1 DAX 公式不支持比表中所列的类型还小的数据类型。
2 如果您尝试导入具有非常大数值的数据,则导入可能会失败,并且具有以下错误消息:
内存中数据库错误:“<表名>”表的“<列名>”列包含值 "1.7976931348623157e+308",这是不支持的。操作已取消。
此错误是因为 PowerPivot 使用该值来表示 Null 导致的。下表中的值是上述 Null 值的同义词:
值 |
9223372036854775807 |
-9223372036854775808 |
1.7976931348623158e+308 |
2.2250738585072014e-308 |
您应该从数据中删除该值并且尝试再次导入。
表数据类型
此外,DAX 使用“表”数据类型。DAX 在许多函数中都使用此数据类型,如在聚合和时间智能计算中。某些函数要求对表的引用;其他函数返回可用作对其他函数的输入的表。在要求表作为输入的某些函数中,您可以指定计算结果为表的表达式;对于某些函数,要求对基表的引用。有关特定函数的要求的信息,请参阅针对 PowerPivot 的 DAX 函数参考。
每个 DAX 函数都对用作输入和输出的数据类型具有特定的要求。例如,某些函数要求将整数用于某些参数,将日期用于其他参数;其他一些函数则要求文本或表。
如果列中您指定为参数的数据与函数所要求的数据类型不兼容,则在许多情况下 DAX 都会返回错误。但是,只要可能,DAX 都会尝试隐式将数据转换为所需的数据类型。例如:
-
您可以将日期作为字符串键入,并且 DAX 将分析该字符串并尝试将其转换为 Windows 日期和时间格式之一。
-
您可以将 TRUE + 1 并且获取结果 2,因为 TRUE 隐式转换为数字 1 并且将执行运算 1+1。
-
如果您将两列中的值相加,并且一个值表示为文本 ("12"),另一个值表示为数字 (12),则 DAX 会隐式将字符串转换为数字,然后执行加法以得到数值结果。下面的表达式返回 44: = "22" + 22
-
如果您尝试连接两个数字,则 PowerPivot 外接程序会将它们显示为字符串,然后执行连接。 下面的表达式返回 "1234": = 12 & 34
下表总结了在公式中执行的隐式数据类型转换。通常,PowerPivot 在行为上类似于 Microsoft Excel,在指定操作要求时将尽可能执行隐式转换。
隐式数据转换表
执行的转换类型由运算符确定,运算符在执行请求的运算前转换它要求的值。这些表列出了运算符,并且在与相交行中的数据类型搭配时指示对列中的每种数据类型执行的转换。
注意 |
---|
这些表中不包含文本数据类型。在数字表示为文本格式时,在某些情况下,PowerPivot 将尝试确定数字类型并且将其表示为数字。 |
加 (+)
运算符 (+) |
INTEGER |
CURRENCY |
REAL |
Date/time |
INTEGER |
INTEGER |
CURRENCY |
REAL |
日期/时间 |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
日期/时间 |
REAL |
REAL |
REAL |
REAL |
日期/时间 |
日期/时间 |
日期/时间 |
日期/时间 |
日期/时间 |
Date/time |
例如,如果某一实数在加法运算中与货币数据结合使用,则两个值都转换为 REAL,并且结果返回为 REAL。
减 (-)
在下表中,行标题是被减数(左侧),列标题是减数(右侧)。
运算符 (-) |
INTEGER |
CURRENCY |
REAL |
日期/时间 |
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
日期/时间 |
日期/时间 |
日期/时间 |
日期/时间 |
日期/时间 |
例如,如果某一日期用于采用任何其他数据类型的减法运算中,则两个值都转换为日期,并且返回值也是日期。
注意 |
---|
PowerPivot 还支持一元运算符 -(负号),但此运算符不能更改操作数的数据类型。 |
乘 (*)
运算符 (*) |
INTEGER |
CURRENCY |
REAL |
日期/时间 |
INTEGER |
INTEGER |
CURRENCY |
REAL |
INTEGER |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
CURRENCY |
REAL |
REAL |
CURRENCY |
REAL |
REAL |
例如,如果在乘法运算中某一整数与实数结合使用,则两个数字都将转换为实数,并且返回值也是 REAL。
除 (/)
在下表中,行标题是分子,列标题是分母。
运算符 (/) (行/列) |
INTEGER |
CURRENCY |
REAL |
日期/时间 |
INTEGER |
REAL |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
日期/时间 |
REAL |
REAL |
REAL |
REAL |
例如,如果某一整数在除法运算中与某一货币值一起使用,则两个值都转换为实数,并且结果也是实数。
比较运算符
在比较表达式中,布尔值被视作大于字符串值,字符串值被视作大于数值或者日期/时间值,数值和日期/时间值被视作具有相同排名。对布尔值或字符串值不执行隐式转换;BLANK 或空白值根据其他比较值的数据类型转换为 0/""/false。
下面的 DAX 表达式说明此行为:
=IF(FALSE()>"true","Expression is true", "Expression is false")返回"Expression is true"
=IF("12">12,"Expression is true", "Expression is false")返回"Expression is true"
=IF("12"=12,"Expression is true", "Expression is false")返回"Expression is false"
如下表所述,为数字或日期/时间类型执行隐式转换:
比较运算符 |
INTEGER |
CURRENCY |
REAL |
日期/时间 |
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
日期/时间 |
REAL |
REAL |
REAL |
日期/时间 |
DAX 处理零值、Null 和空字符串的方式不同于 Microsoft Excel 和 SQL Server。本节描述这些差异,并描述如何处理这些数据类型。
务必要记住的是,在 PowerPivot 中,空白值、空单元格或缺失值全都由同一新的值类型表示,即 BLANK。在运算(例如加法或连接)中处理空白的方式取决于各个函数。您也可以通过使用 BLANK 函数生成空白,或者通过使用 ISBLANK 函数测试是否有空白。在 PowerPivot 工作簿内并不支持数据库 Null,并且在 DAX 公式中引用包含 Null 值的列时,Null 将隐式转换为空白。
定义空白、Null 和空字符串
下表汇总了 DAX 和 Microsoft Excel 之间在处理空白的方式上的差异。
表达式 |
DAX |
Excel |
BLANK + BLANK |
BLANK |
0(零) |
BLANK +5 |
5 |
5 |
BLANK * 5 |
BLANK |
0(零) |
5/BLANK |
无穷 |
错误 |
0/BLANK |
NaN |
错误 |
BLANK/BLANK |
BLANK |
错误 |
FALSE OR BLANK |
FALSE |
FALSE |
FALSE AND BLANK |
FALSE |
FALSE |
TRUE OR BLANK |
TRUE |
TRUE |
TRUE AND BLANK |
FALSE |
TRUE |
BLANK OR BLANK |
BLANK |
错误 |
BLANK AND BLANK |
BLANK |
错误 |
有关特定函数或运算符如何处理空白的详细信息,请参阅针对 PowerPivot 的 DAX 函数参考一节中关于各 DAX 函数的单独主题。