【问题标题】:Error in specify relationship in data source view of ssas在 ssas 的数据源视图中指定关系时出错
【发布时间】:2016-10-21 08:41:51
【问题描述】:

当我试图通过数据源视图设置两个对象之间的关系时,出现此错误消息:-

底层数据库表包含不同数据类型的列(假设一个是int,另一个是smallintbigint)。请问有什么办法解决这个问题?

【问题讨论】:

    标签: sql-server ssas cube


    【解决方案1】:

    源列和目标列的数据类型不同

    我看不出这条消息有什么不清楚的地方。如果您有主键,则与该主键相关的任何外键都必须是相同的数据类型。

    如果你考虑range and storage requirements of the data types

    Data type   Range                                                    Storage
    bigint      -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807  8 Bytes
    int         -2,147,483,648 to 2,147,483,647                          4 Bytes
    smallint    -32,768 to 32,767                                        2 Bytes
    tinyint     0 to 255                                                 1 Byte
    

    您可以看到,列可以容纳的值范围在数据类型之间有很大差异。为了保持主键和外键之间的关系,类型必须相同,以便它可以容纳的值范围匹配。

    如果你有一个int 主键但有一个smallint 外键,那么外键列不可能保存大于 32,767 的值,而主键可以保存很多更大的价值。

    所以解决这个问题的方法是在创建关系之前更新你想用作外键的列的数据类型来匹配主键。

    【讨论】:

      【解决方案2】:

      对我来说,这是事实表的问题。 对于引用 DWH 中的视图的事实表,我们有一个命名查询。 好!我在视图中将此列(维度键列)硬编码为 -1,并在多维数据集中的命名查询中添加。 这将数据类型设为 System.int32 而不是 System.Decimal,因此我遇到了这个问题。

      我更改了视图(删除了硬编码值并直接从表中获取),从命名查询中删除了该列,然后再次添加它。这样就解决了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 2014-09-21
        相关资源
        最近更新 更多