Microstrategy文档 - 匹配具有相同值的不同属性

时间:2015-04-30 10:00:16

标签: attributes document matching microstrategy

我正在构建一个具有仪表板外观的文档。 我正在使用单选按钮来选择年份。 遗憾的是,在我的一个数据集中,属性year是另一个属性,即使包含完全相同的值。 如何根据文档中的值来解决匹配属性的问题?

基本上我想单击单选按钮2013并选择包含名为year的属性的graph1中的值2013,并在包含名为year-of-observation的属性的graph2中选择。

我告诉了你。

我在包含观察年份的报告中添加了一个高级资格证书:

 [Year]@ID = [Obs-Year]@ID

然后我将属性年添加到报告中。

但是当我尝试执行报告时出现以下错误:

  

报告:xxxxxxxxxxx

     

工作:8600588

     

状态:执行失败

     

错误:SQL生成完成   QueryEngine遇到错误:报告在表ANSWERS和YEAR之间的第1遍中包含交叉连接。根据笛卡尔连接设置中止执行。   组件的Process方法出错:QueryEngineServer,Project xxxxxx,Job 8600588,错误代码= -2147212544。

     

开始时间:15:13:50

1 个答案:

答案 0 :(得分:1)

您不能......或者您可以尝试使用year-of-observation在报告中添加属性年份并设置过滤年份=观察年份,此时可能会发生许多事情:

  1. 如果两个属性没有关系,则年份的查找表将以交叉连接的形式添加到报表查询中,但您不必担心,因为过滤器会将结果限制为正确的。

  2. 如果其中一个属性是另一个属性的父级,则不会有交叉连接,然后删除过滤器,但仔细检查结果(以防万一)

  3. 如果年份已经映射到报告使用的其中一个事实表格中,那么您在年度和观察年份之间没有1:1的对应关系,您可能会得到错误的结果。

  4. 同时

    假设一年又一年,观察和没有关系的,如果他们在同一个表的同一查找列映射(无别名,无作用识别)的MicroStrategy将只使用一个查找两个属性,所以没有必要对于过滤器。

    建议之词

    无论如何,将不同的逻辑实体(如两个属性)分开是一个很好的做法,但是(可能不是你的情况)当它们是同一个东西时只需使用一个。

    高级

    另一种可能的解决方案是使用关系:您可以尝试将年份父项视为观察年份,然后在报告中包含缺少的年份属性,但如果这确实可行取决于您的架构,如果您已经有年度和观察年份的孩子,那么最终可能会出现混乱的层次结构路径。

    交叉加入错误

    如果您遵循解决方案#1,您可能会收到与交叉连接相关的错误。发生这种情况是因为SQL引擎试图保护您免受交叉连接(通常是一件坏事)。

    要禁用此错误,您需要更改报告的以下VLDB属性(如果您有许多使用交叉连接的报告,也可以在项目级别更改它:)

    VLDB Properties -> Joins -> Cartesian Joins Warning