- 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/
我有下面的立方体输出 date value ---- ----------- 2021-01-06 10 2021-01-07 Null 2021-01
您好,我一直在研究 MDX,需要一些非常高级的入门类型指导。我已经启动并运行了一个 SQL-Server 2008 R2 数据库,其中包含数据。我想在 MDX 中尝试一些非常简单的事情来熟悉流程。我不
你好我使用 mdx 表达式中的排名为结果提供行号,现在我如何限制行号。检索到的行数,即我想要前 10 行,然后我想要另外 10 行,依此类推。那么我如何在 mdx 表达式本身中应用此类分页 最佳答案
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
什么是最简单的MDX要求? 我想测试我的 MDX 端点是否正确回答了一个非常简单的请求。 在 SQL 中,我会说 SELECT 1; 最佳答案 我想最简单的 MDX 请求是:SELECT FROM c
我正在为我的客户构建一个 BI 仪表板。我们的数据存储在分析服务器多维数据集中。总体来说一切正常,但 smartalec 测试人员决定创建一个名称为 `~!@#$%^&*()_+-=[]{}|;':"
如何在 MDX 查询中添加空白列? 我已经尝试了所有可能的选项,例如添加成员和所有选项,但是当我尝试交叉加入新成员时,出现 MDX 错误。请指导我完成这个。 谢谢 我们需要遵循 MDX 格式并且在 M
我需要从立方体中获取每个州的前 50 个卖家名称 这就是我到目前为止所拥有的 SELECT NON EMPTY ( [DimGeo].[State].[State].ALLMEMBERS * [Mea
在我使用的 OLAP 数据库中,有一个“位置”层次结构,由公司、地区、区域、站点、房间、直到等级别组成。对于一家特定的公司,我需要编写一些 MDX,列出所有地区、区域和站点(但不包括站点以下的任何级别
我有查询在哪里取双值然后是日期 (例如 2020-03) 。 这是它的外观: SELECT NON EMPTY {[Measures].[Revenue]} ON COLUMNS ,NO
我需要仅从 MySQL 中的一个表创建一个 OLAP View 。 我需要从表中的以下列获取信息: 登录备注 登出注 时间戳 用户名 所以我创建了这个蒙德里安模式:
我已经成功地添加了基本的 sum/count/etc.. 简单的度量,但不知道如何添加更复杂的。 让我们假设数据结构表示带有 cargo 的轨道并具有下一个结构: 日期 id_track id_art
在我使用的 OLAP 数据库中,有一个“位置”层次结构,包括公司 -> 区域 -> 区域 -> 站点 -> 房间。我正在使用以下 MDX 来获取公司级别特定成员的所有后代。 DESCENDANTS([
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
icCube 是否提供任何可用于创建具有聚合百分位数(如中位数或第 95 个百分位数)的计算成员的函数? 最佳答案 对于median有可用的 MDX 函数。尚不直接支持百分位,添加看起来是个好主意,但
我是 mdx 新手。 有没有办法像我们在 MySQL 中使用 LIKE '%iphone' AND LIKE '%samsung' 那样使用 MDX 搜索并返回两个关键字的匹配项? 我的 MDXcod
我试图从我的 MDX 选择查询中的维度中过滤掉一些点。我使用了 Filter(, ) 函数,如 http://mondrian.pentaho.com/documentation/mdx.php 中所
我是 Pentaho、Mondrian 和 MDX 的新手。我开始使用 Pentaho CE 5.0.1 作为我的 OLAP 工具。我正在为 MDX 查询而苦苦挣扎,希望有人能就我的问题给我一些建议。
如何以千为单位显示度量值。我会假设这样做如下: FORMAT_STRING="#,," 但是数据返回:10000000.001而我期望:10,000 最佳答案 格式遵循FORMAT_STRING 文档
我们有一个 SSAS 2012 表格模型可供我们使用,我们正在使用 Tableau 进行报告。 目前,我们有一个带有属性 [部门] 的维度 [ Material ]。 我们试图做的是在 DAX 中创建
我是一名优秀的程序员,十分优秀!