2015-04-30 46 views
0

我正在用類似於儀表板的外觀構建文檔。 我使用單選按鈕選擇年份。 不幸的是,在我的一個數據集中,屬性year是另一個屬性,即使它包含完全相同的值。 如何根據文檔中的值來解決匹配屬性的問題?Microstrategy文檔 - 使用相同的值匹配differen屬性

基本上我想單擊單選按鈕2013並在包含名爲year的屬性的graph1中選擇值2013,並在包含名爲year-of-observation的屬性的graph2中選擇值2013。


我照你告訴我的那樣做了。

我增加了一個先進的資格fiolter到包含一年的觀察報告:

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

然後我添加的屬性年度報告。

但是當我嘗試執行報告有以下錯誤:

Report: xxxxxxxxxxx

Job: 8600588

Status: Execution failed

Error: SQL Generation Complete QueryEngine encountered error: The report contains a cross join in pass 1 between tables ANSWERS and YEAR. Execution is aborted per the cartesian join setting.. Error in Process method of Component: QueryEngineServer, Project xxxxxx , Job 8600588, Error Code= -2147212544.

Starting Time: 15:13:50

回答

1

你不能...或者你可以嘗試用year-of-observation添加屬性今年的報告,並把過濾一年=一年的觀察,在這一點上很多事情都可能發生:

  1. 如果這兩個屬性都沒有關係,對於今年的查找表將被添加到交叉報表查詢加入,但你不不用擔心,因爲過濾器會將結果限制在正確的範圍內。

  2. 如果屬性之一是另一方的父母,你會不會有交叉連接,然後取出過濾器,但仔細檢查結果(以防萬一)

  3. 如果今年已經映射到一個在報告中使用的事實表中,你和年度和觀察年之間沒有1:1的對應關係,你可能會得到錯誤的結果。

此外

假設一年又一年,觀察和沒有關係的,如果他們在同一個表的同一查找列(無別名,無作用識別)的MicroStrategy將使用映射只有一個查找兩個屬性,所以不需要過濾器。

提醒

的話反正它是一個很好的做法,以保持不同的邏輯實體(如兩個屬性)分開的,但(可能不是你的情況下),當他們是同樣的事情只是使用一個。

先進水平

另一種可能的解決方案是關係發揮:你可以嘗試讓今年的觀察之年的父母,然後包括在丟失在報告年度屬性,但如果這取決於你的模式,這真的是可行的,如果你已經有年齡和觀察年的孩子,你最終可能會遇到凌亂的層次結構路徑。

交叉聯接錯誤

如果你遵循的解決方案#1,你可以收到與交叉聯接錯誤。發生這種情況是因爲SQL引擎試圖保護您免受交叉連接(通常是一件壞事)。

要禁用此錯誤,你需要更改下列VLDB屬性的報告(或者你可以在項目層面,如果你有很多跨報道加入也改變它):

VLDB Properties -> Joins -> Cartesian Joins Warning 
+0

編輯的問題。與我得到的錯誤。請幫助:) – AndreA

+0

您需要更改VLDB設置。我修改了我的答案 – mucio