Analysis Services 2005 OLAP 多维数据集:我可以在 nvarchar 列上创建不同的计数度量吗?

Posted

技术标签:

【中文标题】Analysis Services 2005 OLAP 多维数据集:我可以在 nvarchar 列上创建不同的计数度量吗?【英文标题】:Analysis Services 2005 OLAP Cubes : Can I create a distinct count measure on a nvarchar column? 【发布时间】:2008-11-26 11:37:41 【问题描述】:

我正在尝试使用单个度量创建一个多维数据集。此度量是“名称”列的不同计数。如果度量设置为“计数”类型,则多维数据集可以完美运行。但是,当我设置不同的计数时,我得到了这个错误:

“OLAP 存储引擎中的错误:为不同计数记录指定的排序顺序不正确”

我在一些博客中读到,您只能对数字列进行不同的计数。我看不出一个很好的理由,我在官方文档中找不到该信息。然而,这可能是真的。无论如何,我真的被这个问题困住了。我有哪些选择?

【问题讨论】:

【参考方案1】:

我的回答对你来说可能为时已晚,但希望这可以帮助其他有同样问题的人。

    转到解决方案资源管理器中的数据源视图 查找包含需要聚合的 GUID 列的表 右键单击所选表的标题并选择“创建命名计算” 给它一个名字 在表达式字段中键入以下内容: CAST(ColumnName as varchar(36))

此解决方案来自此链接 http://www.bi-dw.info/sql-server-tips/distinct_count-measure-on-uniqueidentifier.htm

【讨论】:

+1 让我头疼不已......很惊讶如果没有解决方法它就无法做到这一点。【参考方案2】:

Google,尤其是 Eggheadcafe 提供了解决方案:

从 SQL Server Management Studio 连接到 Analysis Services 右键单击 Analysis Services 服务器名称(即最顶部的 Analysis Services 链接) 选择属性 勾选显示高级(全部)属性 找到以下设置 OLAP \ Process \ CheckDistinctRecordSortOrder 将此值设置为 0 点击确定 在 Visual Studio 或 BIDS 中打开您的 OLAP。 处理立方体。

【讨论】:

【参考方案3】:

我在尝试对 INT ID 列进行不同计数时遇到了这个问题。在花了很长时间查看未知成员设置和维度使用设置之后,我发现了另一个建议,即 Distinct Count 度量不喜欢 NULL 值。将 WHERE COLUMN IS NOT NULL 添加到此不同计数度量值组的分区查询中解决了我的问题。

这是建议: "OLAP 存储引擎中的错误:为不同计数记录指定的排序顺序不正确。

检查 distinctcount 列不包含空值。如果是,则可以通过分区定义中的查询从度量值组中省略这些(假设不同计数度量值在其自己的度量值组中)"

【讨论】:

【参考方案4】:

我会回答自己,也许这对其他人有帮助。

简短的回答是肯定的。

我创建了一些结构相同但只有几行测试的测试表。多维数据集与这些数据完美配合。

所以,我猜原始表中有一些损坏的数据,或者可能是一些罕见的字符。

【讨论】:

【参考方案5】:

你是对的,你可以对 nvarchar 列进行不同的计数。

这可能与奇怪的字符或您的排序规则设置有关。

您可以尝试处理度量值组的较小子集以尝试隔离问题行。

【讨论】:

【参考方案6】:

这可能是由于排序规则设置造成的。 Sql server 默认具有 SQL_Latin1_General_CP1_CI_AS,因为 SSAS 使用 Windows 排序规则 Latin1_General。 如果您更改正在执行不同计数的列上的排序规则,我认为将解决问题

【讨论】:

【参考方案7】:

德比在我的情况下提供了正确的答案。就我而言,我试图在 SSDT(VS 2012)中处理挖掘模型,但我遇到了错误。

在我对生成用作数据源的表的查询进行了一些更正后,错误开始了。我的猜测是它在我对查询进行更正之前没有在某个地方引入了一些 NULLS,因此源表(挖掘模型在此之前处理得很好)。由于我的菜鸟名声,我无法投票支持德比。

【讨论】:

【参考方案8】:

我遇到了同样的问题,我发现我的数据中有特殊字符/符号阻止处理多维数据集。很可能,多维数据集无法使用特殊字符对数据进行排序。

我能够通过使用以下函数将数据转换为哈希字节字符串来解决该问题:

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32)

【讨论】:

以上是关于Analysis Services 2005 OLAP 多维数据集:我可以在 nvarchar 列上创建不同的计数度量吗?的主要内容,如果未能解决你的问题,请参考以下文章

Analysis Services 属性层次结构和属性关系

SQL Analysis Services OLAP TIME 维度

使用 IronPython 在 SQL Server Analysis Services 上执行查询

使用 Python 查询 SQL Server Analysis Services (SSAS) 多维数据集数据

DB 排序规则与 Analysis Services 排序规则不同

对 Analysis Services 的 VBA Reptitive MDX 查询