- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当与数据透视表交互时,Excel 都非常慢,这让我感到非常困难。添加/删除字段、更改过滤器或切片器,所有这些都需要 Excel 卡住几分钟才能响应。
看来生成的 MDX 效率极低。我可以理解他们必须动态生成 MDX 并且必须支持数据透视表的许多功能,但是慢 100 倍是荒谬的。
当他们为行或列上的字段生成 MDX 时,他们使用 DrilldownLevel(... [Property Dimension].[County])
我不确定 Excel 更复杂的方法的目的是什么,但我希望有一些选项可以取消选中,以便 Excel 不需要使用 DrilldownLevel 函数。
相反,我通常省略 Drilldownlevel 函数,只执行 [Property Dimension].[County].[County] 来访问属性。
使用 Excel 的 MDX 查询同一结果集需要 5 分钟,而使用我的 MDX 则需要不到 5 秒。
我已经验证缓慢不是 Excel 渲染/格式化结果的问题,因为我采用了 Excel 使用的 MDX 并直接在 SSMS 中运行它来验证计时。我可以查看服务器上的任务管理器,并观察 CPU 在处理结果时的运行情况。
请注意,我并不是责怪服务器,因为我可以创建运行速度极快并提供相同结果的 MDX 查询。
如何让 Excel 生成更高效的 MDX?我使用的是 Excel 2010。
我听说 powerpivot 生成更高效的 MDX,但是 Powerpivot 无法在 SSAS 之上使用,因为它不利用 SSAS 多维数据集。因此,我要简短地解释一下为什么 SSAS 之上的 Powerpivot 不起作用。如果将数据从 SSAS 导入到 powerpivot 中,那么您实际上要做的就是执行巨大的交叉联接,以将数据从 SSAS 迁移到 Powerpivot 表中。如果您尝试过此操作,您会发现它会生成字段名称/标签,例如“Property DimensionCountyCounty Name”...哇,真的吗?然后,您只需使用本地 Powerpivot 的 OLAP 引擎处理数据,因此需要依赖具有 64 位操作系统的客户端计算机才能处理合理大小的数据集。就好像您只是放弃了 SSAS,扔掉了构建复杂的 OLAP 数据库以及所有元数据、计算、聚合等的所有辛苦工作。使用 SSAS 的一半原因是它可以汇总粒度数据在返回给客户端之前,客户端不需要64位操作系统,也不需要客户端占用大量资源。我非常努力地尝试让 powerpivot 针对 SSAS 可用,但在尝试了多种方法并与用户反复交流后,它确实离可用还差得很远。不要批评 Powerpivot,因为我认为它在许多其他场景中都很有用,但是如果您的 SSAS 多维数据集是系统的重要组成部分(即计算、在服务器端聚合大量记录等),那么 powerpivot 似乎是错误的选择.
这是我的查询示例:
SELECT
NON EMPTY CrossJoin(
{[Department Dimension].[Name].[Name]},
{[Finance Month].[Report Year].[Report Year]}
)
ON COLUMNS ,
CrossJoin(
{[Department Finance Line Type Dimension].[Display Order].[Display Order] },
{[Department Finance Line Type Dimension].[Line Number].[Line Number]},
{[Department Finance Line Type Dimension].[Display Name].[Display Name]}
)
ON ROWS
FROM
(
SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [HYP Data View]
)
WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet],
[Measures].[Amount]
) CELL PROPERTIES VALUE
下面是 Excel 生成的内容。实际上,当我尝试简化 Excel 查询以确定罪魁祸首时,我已经删除了 Excel 查询的其他几个方面。这就是查询仍然运行缓慢时的样子,然后我采取的下一步是删除 DrilldownLevel 并将 .[All] 替换为 .[属性名称],它开始运行很多快得多。
非常非常慢的查询:
SELECT
NON EMPTY CrossJoin(
{DrilldownLevel({[Department Dimension].[Name].[All]})},
{DrilldownLevel({[Finance Month].[Report Year].[All]})}
)
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS ,
CrossJoin(
{DrilldownLevel({[Department Finance Line Type Dimension].[Display Order].[All] })},
{DrilldownLevel({[Department Finance Line Type Dimension].[Line Number].[All]})},
{DrilldownLevel({[Department Finance Line Type Dimension].[Display Name].[All]})}
)
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS
FROM (
SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [Afr Data View]
)
WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet],
[Measures].[Amount]
) CELL PROPERTIES VALUE
为什么需要 DrilldownLevel(...[All])?是否有一个选项可以让 Excel 不生成查询的该部分,以便它运行得更快?
最佳答案
不幸的是,尽管我在 SSAS MOLAP 多维数据集上广泛使用了 Excel 和数据透视表,但我尚未在纯 Excel 中找到一种机制来更改其生成的查询。
但是,我使用了名为 XLCubed 的第三方工具,该工具在处理来自 SSAS OLAP 多维数据集的 Excel 和 MDX 查询时非常强大,我可以建议您根据自己的目的尝试一下吗?您甚至可以将用于“网格”的 MDX 替换为如上所述的完全自定义的 MDX。尽管我发现这通常不是必需的,但它们对数据透视表“Grid”的替换似乎通常会生成更高效的 MDX。
愿 SSAS 诸神与你同在。
关于excel - Excel 数据透视表 MDX 速度慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353777/
我想制作一个引用另一个 excel 文件中的单元格的公式。我已经弄清楚了,如下所示: ='C:\Users\17\Desktop\[JAN-11 2011.xlsx]1'!$H$44 但由于此工作表中
有谁知道是否可以在 Excel 中生成缺少地址门牌号的报告? 例如,我们在 Apple St (no.5, 9, 11) 有三个地址记录,是否可以生成一个报告: 列出工作簿中每条街道的所有记录街道编号
这个问题已经有答案了: VBA auto hide ribbon in Excel 2013 (7 个回答) 已关闭 4 年前。 我试图在打开工作文件时隐藏我的丝带。 我已点击以下链接,但不断收到运行
我编写了一个 VBA 程序来删除元音。我无法从 excel 调用该函数。我收到 #NAME 错误。下面的代码 Function REMOVEVOWELS(Txt) As String 'Removes
嗨,我正在尝试在 MS excel 中应用一个函数(正确函数) 但是当我编写这个函数并使用填充句柄将其复制到其他单元格时,我在所有复制的单元格中得到相同的输出。 但是当我点击单元格时,引用是好的。但结
假设我有一个格式如下的电子表格: Sheet 1 | Sheet 2 name email | name e
我正在尝试简化财务报告中的数据输入,因此我尝试使用 Excel Visual Basic 制作表格。 到目前为止我做了2个用户表单,以后我会做5个。我做了用户表单,以便数据输入运算符(operator
我需要对单元格公式而不是单元格内容执行 Mid 或 Find。 如果我的单元格公式是: =[功能](Arg1, Arg2, Arg3) 我需要能够将 Arg2 提取到另一个单元格。 如果不使用 VBA
我想用 VBA 管理嵌入在另一个 Excel 文件中的 Excel 文件。我可以使用 .docx 文档找到很多结果,但我坚持使用 .xlsx 文档。 我最后一次尝试是使用 OLE 对象,但停留在“Sa
我最近一直在尝试使用 perl 和一些模块来读取 Excel 文件,尤其是单元格的格式。 例如,我写了一段使用 ParseExcel 模块读取单元格背景颜色的 perl 代码。然而,在测试时我注意到对
我目前正在使用 Maatwebsite 的 Excel 包,并且能够很好地生成一个包含我想要的列和值的表格,但我希望能够生成表格,其他表格位于单个 Excel 工作表的下方。可能吗? 上面附上的屏幕截
我需要以下方面的指导。我有一个包含 150000 条记录的文件 (excel)。收到另一个包含 5000-6000 条记录的 excel 文件,需要根据第二个文件中信息的某些条件删除该行。 我使用字典
我有我认为的标准公式,根据我使用的 Excel 版本、Excel 365 或 Excel 2019 的不同,它的行为会有所不同 =IF(F5=$M$1;IFERROR(IF(AND(IFERROR(F
信息: 我有一个名为 Demo.xlsm 的 Excel 文件 此文件包含一个名为 UserForm1 的用户表单,该用户表单会在打开文件时自动加载。 打开文件时,名为 Demo.xlsm 的工作簿也
我在A Excel工作表中有一个列,其值是1 1 1 2 2 2 3 3 3 4 4 4....,在B Excel工作表中有另一列,其值1 2 4 ....,什么我想要的是从 B 读取值并查看它们是否
所以,我有这个问题,我想通过使用 OR 函数检查调整列的条件来找到列的平均值,我尝试将 OR 放入 AverageIf 函数,失败,还尝试了“Average(IF( OR("再次不是正确的返回。认为这
假设我想要这种类型的formula = SUM(startcell:endcell)的答案,但是startcell和endcell组件发生了变化。 因此,我希望能够使用 和 中的任何值,而不是直接在公
我正在寻找一个简单的 Excel 宏,它可以根据单元格中的特定数字/值将行从一张工作表复制到 Excel 中的另一张工作表。我有两张纸。一个称为“master”,另一个表称为“top10”。 这是数据
我正在尝试调用另一个工作簿中的 Excel 宏。它是一个特定于工作表的宏,但 Microsoft 文档和网上研究给出的语法仅提供了一种仅通过工作簿访问宏的方法。该语法是: Application.Ru
我检查了很多不同的帖子,但似乎找不到我正在寻找的确切代码。另外,我以前从未使用过 VBA,因此我尝试从其他帖子中获取代码并输入我的信息以使其正常工作。还没有运气。在工作中,我们有一个 Excel 薪资
我是一名优秀的程序员,十分优秀!