Analysis Services 2005 OLAP 多维数据集:我可以在 nvarchar 列上创建不同计数度量吗?
题
我正在尝试用单个度量创建一个立方体。该度量是“名称”列的不同计数。如果度量设置为“计数”类型,则多维数据集可以正常工作。但是,当我设置不同计数时,我收到此错误:
“OLAP 存储引擎中的错误:为不同计数记录指定的排序顺序不正确”
我在一些博客中读到,您只能对数字列进行不同的计数。我看不出这样做的充分理由,并且在官方文档中找不到该信息。然而,这可能是真的。无论如何,我真的被这个问题困扰了。我有什么选择?
解决方案
我的回答对你来说可能太晚了,但希望这可以帮助其他有同样问题的人。
- 转到解决方案资源管理器中的数据源视图
- 查找包含需要聚合的 GUID 列的表
- 右键单击所选表的标题并选择“创建命名计算”
- 给它起个名字
- 在表达式字段中输入以下内容: CAST(列名为 varchar(36))
该解决方案来自此链接http://www.bi-dw.info/sql-server-tips/distinct_count-measure-on-uniqueidentifier.htm
其他提示
谷歌,特别是 Eggheadcafe 提供了一个解决方案来拯救:
- 从 SQL Server Management Studio 连接到 Analysis Services
- 右键单击 Analysis Services 服务器名称(即最上面的 Analysis Services 链接)
- 选择属性
- 选中显示高级(全部)属性
- 找到以下设置
- OLAP \ Process \ CheckDistinctRecordSortOrder
- 将此值设置为 0
- 单击“确定”
- 在 Visual Studio 或 BIDS 中打开 OLAP。
- 处理立方体。
我会回答自己,也许这是对别人有帮助的。
简短的回答是YES。
我已创建具有相同结构的一些测试表,但只是一些测试行。立方体与该数据完美地工作。
所以,我想有原始表的一些腐败的数据,或者一些罕见的字符。
您是对的,你可以在一个nvarchar列做一个重复计数。
这可能是一些做奇怪的字符或与您的排序规则设置。
您可以尝试处理所述度量组的较小的子集,以尝试和隔离问题行。
它可以是由于核对设置。 SQL Server有通过其中的SSAS使用Windows排序规则Latin1_General默认SQL_Latin1_General_CP1_CI_AS。 如果您更改列的排序规则在其上做重复计数,我认为会解决这个问题。
我有这个问题试图使上的INT ID列中的重复计数。消费时代看着未知成员设置和尺寸使用设置后,我发现了另一个建议,即重复计数度不喜欢NULL值。添加WHERE COLUMN IS NOT NULL的分区查询此重复计数度量值组解决了我的问题。
这是建议: “OLAP存储引擎中的错误:对重复计数记录指定的排序顺序不正确
检查distinctcount列不包含空值。如果是的话,可以将这些从度量组经由分区定义的查询中省略(假设重复计数度量值是在它自己的度量组)“
德比在我的处境提供了正确的答案。就我而言,我试图来处理SSDT挖掘模型(VS 2012)和我得到的错误。
开始的错误之后我提出了一些修正,生成我用作我的数据源一个表的查询。我的猜测是,它引入了一些NULLS的地方,我没有之前我做了更正我的查询,因此源表(挖掘模型之前处理就好了)。我无法投票最多德比由于我的小白声誉。
我面临同样的问题,我发现有特殊字符/在我的数据,从处理所述立方体防止符号。最有可能的,立方体无法使用特殊字符的数据进行排序。
我是能够通过使用下面的函数中的数据变换为串hashbyte解决该问题:
SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32)