行列式 - IBM

文章推薦指數: 80 %
投票人數:10人

當您定義非唯一行列式時,應該指定分組依據。

這樣做會向IBM® Cognos® 軟體表明,當與該行列式相關聯的索引鍵或屬性在資料中重複時,它應該套用聚集函數並進行分組,以 ... 行列式 行列式透過表示查詢主題中的子集或資料群組來反映精度,可用來確保此重複資料的正確聚集。

行列式與資料來源中索引鍵和索引的概念最為密切相關,它們是根據資料來源中的唯一索引鍵和索引資訊匯入的。

建議您經常檢閱匯入的行列式,並在必要時修改這些行列式或建立其他行列式。

透過修改行列式,您可以置換資料來源中的索引和索引鍵資訊,將其取代為更符合產生報告和分析所需要的資訊。

透過新增行列式,您可以表示與應用程式相關的重複資料群組。

以下「時間」範例中「日」是唯一行列式的範例。

「月份」是非唯一行列式的範例;「月份」中的索引鍵根據特定月份的日次而重複。

當您定義非唯一行列式時,應該指定分組依據。

這樣做會向IBM®Cognos®軟體表明,當與該行列式相關聯的索引鍵或屬性在資料中重複時,它應該套用聚集函數並進行分組,以避免重複計數。

不建議您指定同時選取唯一識別和分組依據或兩者都不選取的行列式。

年份索引鍵 月份索引鍵 月份名稱 日索引鍵 日名稱 2006 200601 2006年1月 20060101 2006年1月1日,星期日 2006 200601 2006年1月 20060102 2006年1月2日,星期一 您可以如下所示為此資料集定義三個行列式-兩個分組依據行列式(「年份」和「月份」),以及一個唯一行列式(「日」)。

此概念與層次和階層的概念類似,但不相同。

行列式名稱 索引鍵 屬性 唯一識別 分組依據 年份 年份索引鍵 無 否 是 月份 月份索引鍵 月份名稱 否 是 日 日索引鍵 日名稱月份索引鍵 月份名稱 年份索引鍵 是 否 在此情況下,我們針對每一個行列式只使用一個索引鍵,因為每一個索引鍵都包含可識別資料內群組的足夠資訊。

如果「月份」索引鍵未包含足夠的資訊可闡明月份所屬的年份,則「月份」通常會成為一個問題。

如果「月份」索引鍵無法唯一識別月份屬於哪個特定年份,請在「月份」行列式的索引鍵定義中併入「年份」索引鍵。

附註:雖然您可以在沒有「年份」環境定義的情況下建立可對月份進行分組的行列式,但這不是常用的產生報告選擇,因為這會將所有年份2月的所有資料分在同一組,而不只是2006年2月的所有資料。

使用具有多部分索引鍵的行列式 在上述「時間」維度範例中,一個索引鍵就足以識別行列式的每一組資料,但並不是所有情況都如此。

例如,下列「地理位置」維度針對一個行列式除外的所有其他行列式都使用多部分索引鍵定義。

地區 地區索引鍵 州/省索引鍵 城市索引鍵 北美 美國 伊利諾州 春田(美國伊利諾州首府) 北美 美國 密蘇里州 春田(美國伊利諾州首府) 北美 美國 加州 都柏林 歐洲 愛爾蘭 n/a 都柏林 與有關「時間」的範例類似,您可以如下所示為此資料集定義三個行列式-兩個分組依據行列式(「地區」和「州/省」),以及一個唯一行列式(「城市」)。

行列式名稱 索引鍵 屬性 唯一識別 分組依據 地區 地區索引鍵 無 否 是 州/省 州/省索引鍵 無 否 是 城市 地區索引鍵 州/省索引鍵 城市索引鍵 無 是 否 在此情況下,我們使用「地區索引鍵」、「州/省索引鍵」和「城市索引鍵」來確保「城市」的唯一性。

這樣做是因為在我們提供的資料中,部分城市名稱在各州或各省間重複出現,而這些州或省又在地區中重複出現。

行列式是依其指定的順序進行評估 行列式中沒有階層概念,但有計算順序。

當IBMCognos軟體查看從查詢主題中選取的項目時,會依照在行列式標籤中設定的順序,逐一將它們與每一個行列式(索引鍵和屬性)進行比較。

這樣一來,IBMCognos軟體即可選取最符合的行列式。

在下列範例中,當月、當月日次和本地化月份名稱等屬性與「月份」索引鍵相關聯。

提交的查詢參照上述任一屬性時,「月份」行列式就是第一個可滿足符合準則的行列式。

如果不需要任何其他屬性,則行列式的計算會止於「月份」,並且此行列式將用於SQL中的group和for子句。

在同時包括該維度的其他屬性的情況下,如果這些屬性與前一個行列式不相符,則IBMCognos軟體會繼續計算,直到找到符合項或行進至最後一個行列式。

因此,唯一行列式具有與之關聯的所有查詢項目。

如果找不到其他符合項,則會使用整個資料集的唯一索引鍵來判斷對資料進行分組的方式。

使用行列式的時機 當行列式可用來解決與資料精度相關的各種問題時,在下列主要情況下您應該一律使用行列式: 作為維度進行作業的查詢主題具有多個精度層次,並且將以不同的索引鍵集結合至事實資料。

例如,「時間」具有多個層次,它以「月份」索引鍵結合至「庫存」,以「日」索引鍵結合至「銷售」。

如需相關資訊,請參閱何謂多事實、多精度查詢?。

需要對重複的索引鍵或屬性進行計數或執行其他聚集函數。

例如,「時間」具有「月份」索引鍵和「當月日次」這一屬性,每日都有這個屬性。

如果您要在報告中使用「當月日次」,則不會希望計算該月份每日「當月日次」的總和。

而是希望取得所選擇「月份」索引鍵的「當月日次」的唯一值。

在SQL中,即為XMIN(DaysinthemonthforMonth_Key)。

CognosSQL中也有一個Groupby子句。

下列是一些需要使用行列式的不常見情況: 從資料來源擷取文字BLOB資料時,您要唯一識別資料列。

查詢BLOB需要其他索引鍵或索引類型資訊。

如果資料來源中沒有此資訊,您可以使用行列式新增。

置換從資料來源匯入且與為產生報告建立的關係相互衝突的行列式。

在查詢主題存取BLOB資料時,您無法使用多區段索引鍵。

使用摘要查詢,必須從查詢的摘要部分個別擷取BLOB資料。

若要執行此作業,您需要一個可唯一識別列的索引鍵,並且該索引鍵不能具有多個區段。

指定的結合所使用的索引鍵比為查詢主題指定的唯一行列式所使用的索引鍵少。

如果您的結合建置在由關係的0..1或1..1端的唯一行列式的索引鍵所參照的直欄子集基礎之上,則會出現衝突。

可透過修改關係以與行列式完全一致,或修改行列式以支援關係來解決衝突。

您想要置換從資料來源匯入且與為產生報告建立的關係相互衝突的行列式。

例如,行列式存在於適用多個直欄的兩個查詢主題上,但這兩個查詢主題之間的關係僅使用這些直欄的子集。

如果不適合在關係中使用其他直欄,請修改查詢主題的行列式資訊。

指定行列式的位置 行列式應該指定於已定義報告時所使用關係之層的查詢主題。

例如,如果所有關係結合是建立在資料庫(匯入)層,則請在該層驗證或指定行列式。

如果您建立業務層(建議這麼做以便使報告與基礎的資料來源隔離),並在該處定義關係結合,則行列式應該指定在該層。

讓關係和行列式在業務層可以簡化查詢規劃,因為 IBM CognosAnalytics 不必在模型裡進一步往下遍訪,即可適當地規劃查詢。

指定行列式 行列式可控制查詢主題的精度。

行列式對SQL的影響 您必須瞭解行列式對所產生的SQL的影響。

行列式會影響資料的分組和聚集(包括其他與該查詢主題具有關係的查詢主題,以及查詢主題本身)。

上層主題:查詢主題



請為這篇文章評分?