代码之家  ›  专栏  ›  技术社区  ›  rgargente Chelsea Urquhart

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

  •  2
  • rgargente Chelsea Urquhart  · 技术社区  · 16 年前

    我正试图用一个度量值创建一个立方体。此度量值是一个“名称”列的非重复计数。如果度量值设置为“计数”类型,则多维数据集工作正常。但是,当我设置非重复计数时,我会得到以下错误:

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

    我在一些博客中读到,你只能在数字列上有一个独特的计数。我看不出一个很好的理由,也找不到官方文件上的信息。然而,这可能是真的。不管怎样,我真的陷在这个问题上了。我有什么选择?

    8 回复  |  直到 8 年前
        1
  •  7
  •   kclim1002    15 年前

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

    1. 转到解决方案资源管理器中的数据源视图
    2. 查找包含需要聚合的guid列的表
    3. 右键单击所选表的标题并选择“创建命名计算”
    4. 给它起个名字
    5. 在“表达式”字段中键入以下内容: 强制转换(列名为varchar(36))

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

        2
  •  3
  •   derby    13 年前

    谷歌,尤其是Eggheadcafe找到了一个解决方案:

    • 从SQL Server Management Studio连接到Analysis Services
    • 右键单击Analysis Services服务器名称(即最上面的Analysis Services链接)
    • 选择属性
    • 选中“显示高级(全部)”属性
    • 查找以下设置
    • OLAP\进程\检查区别记录排序顺序
    • 将此值设置为0
    • 单击确定
    • 在Visual Studio或BIDS中打开您的OLAP。
    • 处理多维数据集。
        3
  •  0
  •   rgargente Chelsea Urquhart    16 年前

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

    简短的回答是“是”。

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

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

        4
  •  0
  •   Darren Gosbell    15 年前

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

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

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

        5
  •  0
  •   Kanishk    15 年前

    可能是由于排序规则设置。默认情况下,SQL Server具有SQL拉丁语通用词,正如SSAS使用Windows排序规则拉丁语通用词一样。 如果您更改对其进行非重复计数的列的排序规则,我认为可以解决问题。

        6
  •  0
  •   Davos    11 年前

    我在尝试对int id列进行非重复计数时遇到了这个问题。在花了很长时间研究未知的成员设置和维度使用设置之后,我发现了另一个建议,即不同的计数度量不喜欢空值。向这个不同计数度量值组的分区查询添加where列不为空解决了我的问题。

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

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

        7
  •  0
  •   user3246543    9 年前

    德比在我的情况下给出了正确的答案。在我的例子中,我尝试在SSDT中处理一个挖掘模型(vs 2012),但我得到了错误。

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

        8
  •  0
  •   pso    8 年前

    我也面临同样的问题,我发现我的数据中有一些特殊的字符/符号阻止了对多维数据集的处理。最有可能的是,多维数据集无法使用特殊字符对数据进行排序。

    我可以使用以下函数将数据转换成hashbyte字符串来解决这个问题:

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