屬性屬性 - 群組屬性成員
適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
成員群組是連續維度成員的系統產生集合。 Microsoft SQL Server SQL Server Analysis Services 中,屬性的成員可以透過稱為離散化的程式,分組成數個成員群組。 階層中的層級包含成員群組或成員,但不包含兩者。 當商務使用者流覽包含成員群組的層級時,他們會看到成員群組的名稱和儲存格值。 SQL Server Analysis Services 為了支持成員群組所產生的成員稱為群組成員,看起來像是一般成員。
屬性上的 DiscretizationMethod 屬性會控制成員的分組方式。
DiscretizationMethod 設定 | 描述 |
---|---|
無 | 顯示成員。 |
自動 | 選取最能代表數據的方法:EqualAreas 方法或 Clusters 方法。 |
EqualAreas | 嘗試將 屬性中的成員分割成包含相同成員數目的群組。 |
叢集 | 嘗試將屬性中的成員分割成群組,方法是取樣定型數據、初始化為數個隨機點,以及執行數個 Expectation-Maximization (EM) 叢集演算法的反覆專案。 此方法很有用,因為它適用於任何分佈曲線,但在處理時間方面成本更高。 |
屬性上的 DiscretizationNumber 屬性會指定要顯示的群組數目。 如果屬性設定為預設值 0,SQL Server Analysis Services 會根據 DiscretizationMethod 属性的設定,藉由取樣或讀取數據來判斷群組數目。
成員群組中的成員排序順序是使用 屬性的 OrderBy 屬性來控制。 根據這個排序順序,成員群組中的成員會連續排序。
成員群組的常見用法是從具有少數成員的層級向下切入到具有許多成員的層級。 若要讓使用者在層級之間向下切入,請將層級屬性上的 DiscretizationMethod 屬性變更為上表所述的其中一個離散化方法,該層級包含多個成員,從 None。 例如,用戶端維度包含具有500,000個成員的用戶端名稱屬性階層。 您可以重新命名此屬性用戶端群組,並將 DiscretizationMethod 屬性設定為 Automatic,以在屬性階層成員層級上顯示成員群組。
若要向下切入至每個群組中的個別用戶端,您可以建立另一個系結至相同數據表數據行的用戶端名稱屬性階層。 然後,根據兩個屬性建立新的用戶階層。 最上層會以 [用戶端群組] 屬性為基礎,而較低層級會以 [用戶端名稱] 屬性為基礎。 IsAggregatable 屬性會在這兩個屬性上 True。 然後,使用者可以展開階層上的 [全部] 層級來檢視群組成員,然後展開群組成員以檢視階層的分葉成員。 若要隱藏群組或用戶端層級,您可以將 AttributeHierarchyVisible 屬性設定為 對應屬性上的 False。
命名範本
建立成員群組時,會自動產生成員組名。 除非您指定命名範本,否則會使用預設命名範本。 您可以針對屬性的 NameColumn 屬性,在 Format 選項中指定命名範本,以變更這個命名方法。 針對屬性 NameColumn 屬性所使用的數據行系結,Translations 集合中指定的每個語言,可以重新定義不同的命名範本。
Format 設定會使用下列字串表示式來定義命名範本:
<Naming template> ::= <First definition> [;<Intermediate definition>;<Last definition>]
<First definition> ::= <Name expression>
<Intermediate definition> ::= <Name expression>
<Last definition> ::= <Name expression>
<First definition>
參數只適用於離散化方法所產生的第一個或唯一成員群組。 如果未提供選擇性參數 <Intermediate definition>
和 <Last definition>
,則 <First definition>
參數會用於針對該屬性產生的所有量值群組。
<Last definition>
參數只適用於離散化方法所產生的最後一個成員群組。
<Intermediate bucket name>
參數會套用至離散化方法所產生的第一個或最後一個成員群組以外的每個成員群組。 如果產生兩個或更少的成員群組,則會忽略此參數。
<Bucket name>
參數是一個字串表達式,可以併入一組變數來表示成員或成員群組資訊,做為成員組名的一部分:
變數 | 描述 |
---|---|
%{First bucket member} | 要包含在目前成員群組中之第一個成員的成員名稱。 |
%{Last bucket member} | 要包含在目前成員群組中之最後一個成員的成員名稱。 |
%{上一個貯體最後一個成員} | 指派給上一個成員群組之最後一個成員的成員名稱。 |
%{下一個貯體第一個成員} | 要指派給下一個成員群組之第一個成員的成員名稱。 |
%{Bucket Min} | 要指派給目前成員群組的成員最小值。 |
%{Bucket Max} | 要指派給目前成員群組的成員最大值。 |
%{Previous Bucket Max} | 要指派給上一個成員群組的成員最大值。 |
%{Next Bucket Min} | 要指派給下一個成員群組的成員最小值。 |
默認命名範本 "%{First bucket member} - %{Last bucket member}"
,以提供與舊版 SQL Server Analysis Services 的相容性。
注意
若要在命名範本中包含分號(;)為常值字元,請在前面加上百分比 (%) 字元。
例
下列字串表示式可用來分類 Adventure Works DW 多維度範例 SQL Server Analysis Services 資料庫中 Customer 維度的 Yearly Income 屬性,其中 Yearly Income 屬性會使用成員群組:
“小於 %{Next Bucket Min};在 %{First bucket member} 與 %{Last bucket member}之間;大於 %{Previous Bucket Max}」
將新成員新增至現有的成員群組
如果新的成員新增至維度,則會藉由比較成員與目前成員群組配置的值,指派給適當的成員群組。
如果在上一個成員群組的最後一個成員與下一個成員群組的第一個成員之間插入成員,新成員就會成為上一個成員群組的最後一個成員。
使用離散化屬性更新維度
當您處理維度時,離散化屬性只會使用完整更新來重新重譯 (ProcessFull)。 若要重新重新串行化屬性,您必須執行維度的完整更新。 如果離散化屬性的維度數據表已更新,且您使用累加式更新處理維度(ProcessAdd),則離散化屬性不會重新重譯。 新貯體的名稱和子系保持不變。 如需處理維度的詳細資訊,請參閱 處理 Analysis Services 物件。
使用限制
您無法在階層的最上層或最下層建立成員群組。 不過,如果您需要這樣做,您可以新增層級,如此一來,您想要建立成員群組的層級就不再是最上層或底層。 您可以將新增的 Visible 屬性設定為 False來隱藏新增的層級。
您無法在階層的兩個連續層級中建立成員群組。
使用 ROLAP 儲存模式的維度不支援成員群組。
如果更新包含成員群組之維度的維度數據表,而且後續會完整處理維度,就會產生一組新的成員群組。 新成員群組的名稱和子系可能與舊的成員群組不同。