CREATE MEMBER 陳述式 (MDX)

更新: 2006 年 12 月 12 日

建立導出成員。

語法

CREATE [ SESSION ] [HIDDDEN] [ CALCULATED ] MEMBER CURRENTCUBE | Cube_Name.Member_Name 
      AS MDX_Expression
      [,Property_Name = Property_Value, ...n]
......[,SCOPE_ISOLATION = CUBE]

引數

  • Member_Name
    提供成員名稱的有效字串運算式。指定完整名稱,以在量值維度以外的維度中建立成員。如果不提供完整成員名稱,則將在量值維度中建立成員。
  • MDX_Expression
    有效的多維度運算式 (MDX) 運算式。
  • Property_Name
    提供導出成員屬性名稱的有效字串。
  • Property_Value
    定義導出成員屬性值的有效純量運算式。

備註

CREATE MEMBER 陳述式定義的導出成員可在整個工作階段中使用,因此,亦可用於工作階段期間的多個查詢。如需詳細資訊,請參閱<建立工作階段範圍導出成員 (MDX)>。

您也可以定義供單一查詢使用的導出成員。若要定義受限於單一查詢的導出成員,您可以在 SELECT 陳述式中使用 WITH 子句。如需詳細資訊,請參閱<建立查詢範圍導出成員 (MDX)>。

Property_Name 可以參考標準或選擇性導出成員屬性。本主題稍後會列出標準成員屬性。以沒有 SESSION 值的 CREATE MEMBER 而建立的導出成員會擁有工作階段範圍。此外,導出成員定義內的字串會以雙引號分隔。這跟以 OLE DB 定義的方法不同,以 OLE DB 定義的方法指定以單引號來分隔字串。

指定目前連接之 Cube 以外的 Cube 會導致發生錯誤。因此,您應該使用 CURRENTCUBE 取代 Cube 名稱,來代表目前的 Cube。

如需 OLE DB 定義之成員屬性的詳細資訊,請參閱 OLE DB 文件集。

標準屬性

每個導出成員都有一組預設屬性。當用戶端應用程式連接到 Microsoft SQL Server 2005 Analysis Services (SSAS) 時,預設屬性是直接或可以受到支援,由系統管理員決定。

可能會有其他的成員屬性可用,視 Cube 定義而定。以下屬性會呈現與 Cube 中維度層級相關的資訊。

屬性識別碼 意義

SOLVE_ORDER

當導出成員參考另一個導出成員 (亦即,導出成員彼此交叉) 時,指定解析導出成員的順序。

FORMAT_STRING

指定用戶端應用程式可在顯示資料格值時,使用的 Microsoft Office 樣式格式字串。

VISIBLE

決定是否可以看見結構描述資料列集中的導出成員。可見的導出成員可以使用 AddCalculatedMembers 函數新增到集合。非零的值代表可以看見導出成員。此屬性的預設值是 Visible

不可見的導出成員 (此值會設為零) 一般會在較為複雜的導出成員中作為中間步驟。其他成員類型 (例如,量值) 也可以參考這些導出成員。

NON_EMPTY_BEHAVIOR

指定要在解析空白資料格時,用以決定導出成員行為的量值或集合。

範圍

導出成員可發生在下表列出的其中一個範圍內。

  • 查詢範圍
    導出成員的可見性與存留期間受限於查詢。導出成員是在個別查詢中定義。查詢範圍可覆寫工作階段範圍。如需詳細資訊,請參閱<建立查詢範圍導出成員 (MDX)>。
  • 工作階段範圍
    導出成員的可見性與存留期間受限於其建立所在的工作階段。(如果 DROP MEMBER 陳述式是在導出成員上發出,存留期間就會比工作階段期間短)。CREATE MEMBER 陳述式會以工作階段範圍建立導出成員。

範圍隔離

在 SQL Server 2005 Analysis Services 中,當 Cube 多維度運算式 (MDX) 指令碼包含導出成員時,會預設為先解析導出成員後,再解析任何工作階段範圍的計算和任何查詢定義的計算。此行為與 SQL Server 2000 Analysis Services 中的行為不同,後者可以明確使用求解順序,在兩個 Cube 層級的計算之間插入工作階段範圍或查詢定義的計算。這種行為上的差異,可能導致 SQL Server 2005 Analysis Services 中的查詢或工作階段範圍的導出成員無法傳回所需的結果。

ms144787.note(zh-tw,SQL.90).gif附註:
在某些狀況下,Aggregate (MDX) 函數和 VisualTotals (MDX) 函數不會表現這種行為。

SQL Server 2005 Analysis Services 中的行為讓一般用戶端應用程式可以使用包含複雜計算的 Cube,而不須考慮到計算的特定實作。但是在某些狀況下,您可能希望先執行工作階段或查詢範圍的導出成員,然後再執行 Cube 中的某些計算,而且 Aggregate 函數和 VisualTotals 函數都不適用。SQL Server 2000 Analysis Services 是透過在 Cube 和工作階段或查詢範圍導出成員兩處小心設定 SOLVE_ORDER 屬性,來啟用這種行為。若要在 SQL Server 2005 Analysis Services 中啟用相同的行為,請使用 SCOPE_ISOLATION 計算屬性。

ms144787.note(zh-tw,SQL.90).gif附註:
SCOPE_ISOLATION 計算屬性是 SQL Server 2005 Analysis Services Service Pack 2 (SP2) 中新增的屬性。

範例

下列指令碼是必須使用 SCOPE_ISOLATION 計算屬性才能產生正確結果的狀況範例。

Cube 的 MDX 指令碼:

CREATE MEMBER CURRENTCUBE.Measures.ProfitRatio AS 'Measures.[Store Sales]/Measures.[Store Cost]', SOLVE_ORDER = 10

MDX 查詢:

WITH MEMBER [Customer].[Customers].[USA]. USAWithoutWA AS
[Customer].[Customers].[Country].&[USA] - [Customer].[Customers].[State Province.&[WA], SOLVE_ORDER=5
SELECT {USAWithoutWA} ON 0 FROM SALES
WHERE ProfitRatio

上述查詢需要的結果是 USA 扣除 WA 後的銷售額與 USA 扣除 WA 後的 Store Cost 兩者的比率。上述查詢在 SQL Server 2000 Analysis Services 中會傳回需要的結果,但在 SQL Server 2005 Analysis Services 中則不會傳回需要的結果。在 SQL Server 2005 Analysis Services 中,它會傳 USA 的比率減去 WA 比率,這是沒有意義的結果。若要得到需要的結果,您可以使用 SCOPE_ISOLATION 計算屬性。

使用 SCOPE_ISOLATION 計算屬性的 MDX 查詢:

WITH MEMBER [Customer].[Customers].[USA]. USAWithoutWA AS
[Customer].[Customers].[Country].&[USA] - [Customer].[Customers].[State Province.&[WA], SOLVE_ORDER=5
,SCOPE_ISOLATION=CUBE
SELECT {USAWithoutWA} ON 0 FROM SALES
WHERE ProfitRatio

請參閱

其他資源

MDX 資料定義陳述式 (MDX)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

變更的內容:
  • 更新內容以反映 SQL Server 2005 Analysis Services 功能及作業。

2006 年 12 月 12 日

變更的內容:
  • 更新內容,來反映 Service Pack 2 新加入的範圍隔離屬性。