成員群組是連續維度成員的系統產生集合。 在 Microsoft SQL Server Analysis Services 中,屬性的成員可以透過稱為離散化的程式,分組成數個成員群組。 階層中的層級包含成員群組或成員,但不包含兩者。 當商務使用者流覽包含成員群組的層級時,他們會看到成員群組的名稱和儲存格值。 Analysis Services 為了支持成員群組所產生的成員稱為群組成員,看起來像是一般成員。
屬性 DiscretizationMethod 上的 屬性會控制成員的分組方式。
DiscretizationMethod 設定 |
說明 |
|---|---|
None |
顯示所有成員。 |
Automatic |
選取最能代表數據的方法: EqualAreas 方法或 Clusters 方法。 |
EqualAreas |
嘗試將 屬性中的成員分割成包含相同成員數目的群組。 |
Clusters |
嘗試將屬性中的成員分割成群組,方法是透過對訓練數據進行取樣,初始化為多個隨機點,並執行多次 Expectation-Maximization(EM)聚類演算法的迭代。 此方法很有用,因為它適用於任何分佈曲線,但在處理時間方面成本更高。 |
DiscretizationNumber屬性上的 屬性會指定要顯示的群組數目。 如果屬性設定為預設值 0,Analysis Services 會根據屬性的 DiscretizationMethod 設定,藉由取樣或讀取數據來判斷群組數目。
成員群組中的成員排序是透過使用 OrderBy 屬性來控制。 根據這個排序順序,成員群組中的成員會連續排序。
成員群組的常見用法是從具有少數成員的層級向下切入到具有許多成員的層級。 若要讓使用者在層級之間深入探究,請將包含許多成員的層級屬性的DiscretizationMethod屬性從None變更為上表所述的其中一個離散化方法。 例如,用戶端維度包含具有500,000個成員的用戶端名稱屬性階層。 您可以重新命名此屬性用戶端群組, DiscretizationMethod 並將 屬性設定為 Automatic ,以在屬性階層成員層級上顯示成員群組。
若要向下切入至每個群組中的個別用戶端,您可以建立另一個系結至相同數據表數據行的用戶端名稱屬性階層。 然後,根據兩個屬性建立新的用戶階層。 最上層會以 [用戶端群組] 屬性為基礎,而較低層級會以 [用戶端名稱] 屬性為基礎。 屬性 IsAggregatable 會位於 True 這兩個屬性上。 接著,使用者可以展開階層中的 [全部] 層級來查看群組成員,並進一步展開群組成員以查看階層的末端成員。 若要隱藏群組或客戶端層級,您可以在對應的屬性上將 屬性設定 AttributeHierarchyVisible 為 False 。
命名範本
建立成員群組時,會自動產生成員組名。 除非您指定命名範本,否則會使用預設命名範本。 您可以在 屬性的 屬性選項NameColumn中Format指定命名範本,以變更這個命名方法。 不同命名範本可以針對用於 NameColumn 屬性的欄位綁定集合中指定的每一種語言重新定義。
這個 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> 是字串表示式,可以納入一組變數,以表示成員或成員群組資訊做為成員組名的一部分:
| 變數 | 說明 |
|---|---|
| %{第一桶成員} | 要包含在目前成員群組中之第一個成員的成員名稱。 |
| %{最後一個桶成員} | 要包含在目前成員群組中之最後一個成員的成員名稱。 |
| %{上一個貯體最後一個成員} | 指派給上一個成員群組之最後一個成員的成員名稱。 |
| %{下一個桶的第一個成員} | 指派給下一個成員群組的第一位成員的名稱。 |
| %{Bucket Min} | 要分配給當前成員群組的成員數量的最小值。 |
| %{桶的最大值} | 指派給目前成員群組的成員的最大值。 |
| %{上個桶的最大值} | 要指派給前一個成員群組的成員的最大值。 |
| %{下一存儲桶最小值} | 指派至下一個成員群組的成員之最低值。 |
默認命名範本是 "%{First bucket member} - %{Last bucket member}",以提供與舊版 Analysis Services 的相容性。
備註
若要在命名範本中將分號(;)作為文字字元納入,請在分號前加上百分號(%)字元。
範例
以下字串運算式可以用來分類 Adventure Works DW 2012 多維度範例 Analysis Services 資料庫中 Customer 維度的 Yearly Income 屬性,其中 Yearly Income 屬性使用成員群組:
“少於 %{Next Bucket Min}; 介於 %{First bucket member} 和 %{Last bucket member} 之間; 多於 %{Previous Bucket Max}”
將新成員新增至現有的成員群組
如果新的成員新增至維度,則會藉由比較成員與目前成員群組配置的值,指派給適當的成員群組。
如果在上一個成員群組的最後一個成員與下一個成員群組的第一個成員之間插入成員,新成員就會成為上一個成員群組的最後一個成員。
使用離散化屬性更新維度
當您處理維度時,已離散化的屬性只有在完整更新(ProcessFull)時才會重新離散化。 若要重新劃分屬性,您必須執行維度的完整更新。 如果離散化屬性的維度表已更新,且您使用累加式更新處理維度(ProcessAdd),則離散化屬性不會重新離散化。 新桶的名稱和子項目保持不變。 如需有關分析服務對象處理的詳細資訊,請參閱 處理分析服務對象的指引。
使用限制
您無法在階層的最上層或最下層建立成員群組。 不過,如果您需要這樣做,您可以新增層級,如此一來,您想要建立成員群組的層級就不再是最上層或底層。 您可以將新增
Visible的 層級設定為False,以隱藏新增的層級。您無法在階層的兩個連續層級中建立成員群組。
使用 ROLAP 儲存模式的維度不支援成員群組。
如果更新包含成員群組之維度的維度數據表,而且後續會完整處理維度,就會產生一組新的成員群組。 新成員群組的名稱和子系可能與舊的成員群組不同。