SQL Server 2008 MDX學習筆記之結果集Sets使用技巧
作者:邀月
本文我們主要介紹了SQL Server 2008 MDX學習筆記之結果集Sets使用技巧,是通過具體的實例來介紹的,希望本次的介紹能夠對您有所幫助。
SQL Server 2008 MDX學習筆記之結果集Sets使用技巧是本文我們主要要介紹的內容,接下來就讓我們從以下的幾個例子中區(qū)了解結果集Sets的使用技巧吧。
Sets的基本技巧
在Analysis Service中,Set代表元組(Tuples)的集合。在一個Set內部,獨立的元組被用逗號隔開,如下:
- {
- ([Product].[Category].[Accessories]),
- ([Product].[Category].[Bikes]),
- ([Product].[Category].[Clothing]),
- ([Product].[Category].[Components])
- }
下面我們組裝一個基本的Sets
打開MDX查詢編輯器,如下:
例4-1
- SELECT
- {
- ([Date].[Calendar].[CY 2002], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2003], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2004], [Geography].[Country].[United States])
- } ON COLUMNS,
- {
- ([Product].[Category].[Accessories]),
- ([Product].[Category].[Bikes]),
- ([Product].[Category].[Clothing]),
- ([Product].[Category].[Components])
- } ON ROWS
- FROM [Step-by-Step];
我們增加一個元組([Product].[Subcategory].[Mountain Bikes]),如下:
例4-2
- SELECT
- {
- ([Date].[Calendar].[CY 2002], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2003], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2004], [Geography].[Country].[United States])
- } ON COLUMNS,
- {
- ([Product].[Category].[Accessories]),
- ([Product].[Category].[Bikes]),
- ([Product].[Category].[Clothing]),
- ([Product].[Category].[Components]),
- ([Product].[Subcategory].[Mountain Bikes])
- } ON ROWS
- FROM [Step-by-Step];
- /*
- Executing the query ...
- Members belong to different hierarchies in the function.
- 函數(shù)中指定的兩個集具有不同的維數(shù)。
- Execution complete
- */
我們使用相同維數(shù)的用戶層次結構[Product Categories],修改如下:
例4-3
- SELECT
- {
- ([Date].[Calendar].[CY 2002], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2003], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2004], [Geography].[Country].[United States])
- } ON COLUMNS,
- {
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Bikes]),
- ([Product].[Product Categories].[Clothing]),
- ([Product].[Product Categories].[Components]),
- ([Product].[Product Categories].[Mountain Bikes])
- } ON ROWS
- FROM [Step-by-Step];
- /* CY 2002 CY 2003 CY 2004
- United States United States United States
- Accessories $61,263.90 $151,136.35 $76,027.18
- Bikes $14,716,804.14 $16,139,984.68 $7,951,335.55
- Clothing $317,939.41 $495,443.62 $197,590.92
- Components $2,526,542.06 $3,284,551.84 $1,137,105.72
- Mountain Bikes $6,970,418.73 $5,832,626.02 $2,539,198.92
- */
下面這個查詢有類似錯誤:
例4-4
- SELECT
- {
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2002]),
- ([Date].[Calendar].[CY 2003], [Geography].[Country].[United States]),
- ([Date].[Calendar].[CY 2004], [Geography].[Country].[United States])
- } ON COLUMNS,
- {
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Bikes]),
- ([Product].[Product Categories].[Clothing]),
- ([Product].[Product Categories].[Components]),
- ([Product].[Product Categories].[Mountain Bikes])
- } ON ROWS
- FROM [Step-by-Step];
- /*
- Executing the query ...
- Query (2, 4) Two sets specified in the function have different dimensionality.
- 函數(shù)中指定的兩個集具有不同的維數(shù)。
- Execution complete
- */
正確應為:
例4-5
- SELECT
- {
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2002]),
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2003]),
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2004])
- } ON COLUMNS,
- {
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Bikes]),
- ([Product].[Product Categories].[Clothing]),
- ([Product].[Product Categories].[Components]),
- ([Product].[Product Categories].[Mountain Bikes])
- } ON ROWS
- FROM [Step-by-Step];
我們可以這樣改變順序,并增加一個行:
例4-6
- SELECT
- {
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2004]),
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2003]),
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2002])
- } ON COLUMNS,
- {
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Bikes]),
- ([Product].[Product Categories].[Clothing]),
- ([Product].[Product Categories].[Components]),
- ([Product].[Product Categories].[Mountain Bikes])
- } ON ROWS
- FROM [Step-by-Step];
查詢結果如下:
- /* United States United States United States
- CY 2004 CY 2003 CY 2002
- Accessories $76,027.18 $151,136.35 $61,263.90
- Accessories $76,027.18 $151,136.35 $61,263.90
- Bikes $7,951,335.55 $16,139,984.68 $14,716,804.14
- Clothing $197,590.92 $495,443.62 $317,939.41
- Components $1,137,105.72 $3,284,551.84 $2,526,542.06
- Mountain Bikes $2,539,198.92 $5,832,626.02 $6,970,418.73
- */
多出的重復行怎么辦?我們可以使用distinct函數(shù)(http://msdn.microsoft.com/zh-cn/library/ms146033.aspx)
例4-6
- SELECT
- {
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2004]),
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2003]),
- ([Geography].[Country].[United States], [Date].[Calendar].[CY 2002])
- } ON COLUMNS,
- DISTINCT(
- {
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Accessories]),
- ([Product].[Product Categories].[Bikes]),
- ([Product].[Product Categories].[Clothing]),
- ([Product].[Product Categories].[Components]),
- ([Product].[Product Categories].[Mountain Bikes])
- }
- ) ON ROWS
- FROM [Step-by-Step];
- /* United States United States United States
- CY 2004 CY 2003 CY 2002
- Accessories $76,027.18 $151,136.35 $61,263.90
- Bikes $7,951,335.55 $16,139,984.68 $14,716,804.14
- Clothing $197,590.92 $495,443.62 $317,939.41
- Components $1,137,105.72 $3,284,551.84 $2,526,542.06
- Mountain Bikes $2,539,198.92 $5,832,626.02 $6,970,418.73
- */
關于SQL Server 2008 MDX學習筆記之結果集Sets使用技巧的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】
- SQL Server數(shù)據(jù)庫DataRelation的應用示例詳解
- SQL Server 2008 MDX應用之檢索集合中的元組
- SQL Server 2005/2008中的CTE應用之遞歸查詢
- SQL Server 2008數(shù)據(jù)庫學習筆記之MDX查詢示例
- 淺析SQL Server數(shù)據(jù)庫SSIS導入IIS日志的簡單步驟
責任編輯:趙鵬
來源:
博客園