我正在尝试使用单个度量创建一个多维数据集。此度量是“名称”列的不同计数。如果度量设置为“计数”类型,则多维数据集可以完美运行。但是,当我设置不同的计数时,我得到了这个错误:
“OLAP 存储引擎中的错误:为不同计数记录指定的排序顺序不正确”
我在一些博客中读到,您只能对数字列进行不同的计数。我看不出一个很好的理由,我在官方文档中找不到该信息。然而,这可能是真的。无论如何,我真的被这个问题困住了。我有哪些选择?
我的回答对你来说可能为时已晚,但希望这可以帮助其他有同样问题的人。
此解决方案来自此链接 http://www.bi-dw.info/sql-server-tips/distinct_count-measure-on-uniqueidentifier.htm
谷歌,尤其是 Eggheadcafe 提供了一个解决方案:
我在尝试对 INT ID 列进行不同计数时遇到了这个问题。在花了很长时间查看未知成员设置和维度使用设置之后,我发现了另一个建议,即 Distinct Count 度量不喜欢 NULL 值。将 WHERE COLUMN IS NOT NULL 添加到此不同计数度量值组的分区查询中解决了我的问题。
这是建议:“OLAP 存储引擎中的错误:为不同计数记录指定的排序顺序不正确。
检查 distinctcount 列不包含空值。如果是这样,则可以通过分区定义中的查询从度量值组中省略这些(假设不同计数度量值在其自己的度量值组中)“
我会回答自己,也许这对其他人有帮助。
简短的回答是肯定的。
我创建了一些具有相同结构但只有几个测试行的测试表。多维数据集与这些数据完美配合。
所以,我猜原始表上有一些损坏的数据,或者可能是一些罕见的字符。
你是对的,你可以对 nvarchar 列进行不同的计数。
这可能与奇怪的字符或您的排序规则设置有关。
您可以尝试处理度量值组的较小子集以尝试隔离问题行。
这可能是由于排序规则设置造成的。Sql server 默认有 SQL_Latin1_General_CP1_CI_AS,因为 SSAS 使用 Windows Collation Latin1_General。如果您更改正在执行不同计数的列上的排序规则,我认为将解决问题
德比在我的情况下提供了正确的答案。就我而言,我试图在 SSDT(VS 2012)中处理挖掘模型,但我遇到了错误。
在我对生成用作数据源的表的查询进行了一些更正后,错误开始了。我的猜测是,它在我对查询进行更正之前没有在某个地方引入了一些 NULLS,因此源表(挖掘模型在此之前处理得很好)。由于我的菜鸟名声,我无法投票支持德比。
我遇到了同样的问题,我发现我的数据中有特殊字符/符号阻止处理多维数据集。很可能,多维数据集无法使用特殊字符对数据进行排序。
我能够通过使用以下函数将数据转换为哈希字节字符串来解决该问题:
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32)