我正在构建一个具有仪表板外观的文档。 我正在使用单选按钮来选择年份。 遗憾的是,在我的一个数据集中,属性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
答案 0 :(得分:1)
您不能......或者您可以尝试使用year-of-observation
在报告中添加属性年份并设置过滤年份=观察年份,此时可能会发生许多事情:
如果两个属性没有关系,则年份的查找表将以交叉连接的形式添加到报表查询中,但您不必担心,因为过滤器会将结果限制为正确的。
如果其中一个属性是另一个属性的父级,则不会有交叉连接,然后删除过滤器,但仔细检查结果(以防万一)
如果年份已经映射到报告使用的其中一个事实表格中,那么您在年度和观察年份之间没有1:1的对应关系,您可能会得到错误的结果。
同时强>
假设一年又一年,观察和没有关系的,如果他们在同一个表的同一查找列映射(无别名,无作用识别)的MicroStrategy将只使用一个查找两个属性,所以没有必要对于过滤器。
建议之词
无论如何,将不同的逻辑实体(如两个属性)分开是一个很好的做法,但是(可能不是你的情况)当它们是同一个东西时只需使用一个。
高级
另一种可能的解决方案是使用关系:您可以尝试将年份父项视为观察年份,然后在报告中包含缺少的年份属性,但如果这确实可行取决于您的架构,如果您已经有年度和观察年份的孩子,那么最终可能会出现混乱的层次结构路径。
交叉加入错误
如果您遵循解决方案#1,您可能会收到与交叉连接相关的错误。发生这种情况是因为SQL引擎试图保护您免受交叉连接(通常是一件坏事)。
要禁用此错误,您需要更改报告的以下VLDB属性(如果您有许多使用交叉连接的报告,也可以在项目级别更改它:)
VLDB Properties -> Joins -> Cartesian Joins Warning