⑴ 前端圖表如果處理大量數據該怎麼辦
淺談一下Cognos處理大數據的思路,僅針對10.2.1以下的版本,對於10.2.1當中引入的hadloop等分布式數據倉庫等不做介紹。我們主要從一個一般中等項目當中,用怎樣的思路來優化我們的查詢。
我們主要從3個思路來思考大數據的處理
一、資料庫層次
現在主流的Cognos項目,主要的開發模式還是基於rolap的dmr報表建模。因此,資料庫的優化就顯得由為重要。主要通過以下幾個方面優化我們的資料庫:
(1)維度id,維度層次id等關鍵減縮欄位建立索引建立、維護。
(2)根據數據量的大小,按時間等進行分區優化。
(3)高速緩沖表MQT的使用
(4)表空間、緩沖池設置等
(5)資料庫性能優化
二、Cognos Server優化
Cognos優化包括對配置文件的優化,集群的搭建,服務和日誌的開啟等基於cognos 軟體安裝,配置的優化,主要包括以下幾個方面:
2.1 apache 配置優化
Timeout(超時)/MaxKeepAliveRequests(最大的請求數)/KeepAliveTimeout(請求超時)的優化配置
2.2Cognos自帶tomcat配置調優
(1)可修改TOMCAT配置文件CRN_ROOT\tomcat.\conf\server.xml。其參數集中在行:
可以對maxProcessors(最大進程數)/AcceptCount(最大連接數) ConnectionTimeout(連接超時)進行修改
(2)文件路徑:CRN_ROOT\tomcat.\conf\web.xml
可以對session-timeout進行修改.
2.3Cognos sever配置文件優化
2.3.1 reportservice.xml優化
文件路徑:CRN_ROOT\ webapps\p2pd\WEB-INF\services\ reportservice.xml
註:修改文件後,重啟服務後配置生效。
包括以下參數 max_process(交互報表處理進程數,和cpu有關) inger_process(交互報表初始化進程數,和cpu優關)
max_non_affine_connections_per_process(交互報表所佔線程數) idle_process_check_interval_ms(空閑檢測時間)
queue_time_limit_ms(報表服務隊列時間限制) async_wait_timeout_ms(Dispatcher請求等待同步時間)
2.3.2 batchreportservice.xml
文件路徑:CRN_ROOT\ webapps\p2pd\WEB-INF\services\ batchreportservice.xml
註:修改文件後,重啟服務後配置生效。
包括以下參數 max_process(服務批量報表處理所佔進程數) linger_process(服務批量報表處理初始化進程數)
max_non_affine_connections_per_process(服務批量報表處理所佔線程數) idle_process_check_interval_ms(空閑進程檢測時間間隔)
idle_process_max_idle_ticks(空閑進程檢測標記) queue_time_limit_ms(批量報表處理排隊時間限制) async_wait_timeout_ms(Dispatcher請求等待同步時間)
2.3.3 CQEConfig.xml
主要是與資料庫參數設置,文件路徑:CRN_ROOT\configuration\ CQEConfig.xml.sample
註:將CQEConfig.xml.sample文件名修改為CQEConfig.xml後,重啟服務後配置生效。
可以修改以下參數:Timeout(應用資料庫連接超時設置) PoolSize(應用資料庫連接池最大連接數設置) queryReuse(查詢緩沖設置)
2013-07-08 0
分享
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
2.3.4 ppds_cfg.xml
主要進行緩存和日誌參數設置,文件路徑:\cognos\c8\configuration\ ppds_cfg.xml
註:重啟服務後配置生效。
可以修改以下參數:ReadCacheSize(可減少用戶訪問時伺服器的磁碟IO。提高訪問速度。) pcQueryLogFile(建議生產環境關閉該日誌的跟蹤,一般默認也是關閉狀態)
2.4 Cognos content store優化
2.4.1優化內容庫連接服務
內容庫最好外配為db2 oracle等資料庫,不要用自帶的derby.因為項目中的日誌信息會非常多,嚴重影響內容庫的效率。
Cognos Administration,在系統下選擇選擇對應的服務,選擇ContentManagerService的屬性,設置相應的連接參數信息。
2.4.2日誌優化
適當開啟各個cognos服務的日誌級別,越高級的級別對應更詳細,更明確的日誌,但也會影響整個系統的效率。
這是一把雙刃劍,需要適當調整。日誌級別設置得越高,就越降低系統性能。通常情況下,您可以將級別設置為
「最小」或「基本」來收集錯誤,或設置為「請求」來收集錯誤和警告。
2.5提高訪問資料庫速度
Cognos和資料庫間參數在cer\bin\cogdm.ini文件中,(根據版本不同是安裝目錄的數字,根據連接的資料庫不同,是對應資料庫名稱的關鍵字)
以oracle資料庫為例,參數在cogdmor.ini文件中,打開這個文件查找字元串Fetch Number of Rows=去掉這行前面的分號,將10改成2000;
這樣這行就成了Fetch Number of Rows=2000,表示是每次從資料庫取2000條數據。其他資料庫基本上都有類似的配置。用以提高從資料庫中提取數據的速度。
2.6加大緩存
cer\bin\Cer.ini(*根據版本不同是安裝目錄的數字):
SortMemory=5120
(這里 SortMemory 單位是 2kbytes,5120代表 2k x 5120 = 10M)(技巧:一般 SortMemory 取空閑內存的十分之一到八分之一大小)
2.7修改cognos configuration中的參數來優化
在cognos configuration中有很多參數可以優化來提高整體軟體的運行效率,比如增加內存、增加查詢緩存
2.8分布式部署
分布式部署可以大大提升Cognos伺服器的負載能力,同時容錯保護功能可以使伺服器更為穩定的運行,很好的支持大用戶量的並發使用。
2013-07-08 0
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
3.報表設計優化
Cognos報表作為一個工具,在非cube模式下,最終我們執行報表查詢的時候,我們的報表發送到資料庫進行查詢的本質還是sql,所以,在我們製作一張報表的時候,我們要盡可能的利用fm,rs當中的功能,優化報表最終執行生成的SQL實現整個報表的優化。而CUBE模式下,我們更多要考慮配置、存放和資料庫大小所造成的影響,下面我會細細說來。
2013-07-08 0
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
3.1 FM建模優化
3.1.1手寫SQL定製查詢主題
右鍵點擊查詢主題的菜單項Edit Definition…可以進入SQL語句編寫框,調整查詢主題的SQL語句。默認情況下,這里的SQL語句為Cognos SQL類型。如果需要編寫應用資料庫可以直接運行的本地SQL需要將這里的SQL類型進行設置。點擊右上方的Options按鈕,選擇SQL Settings標簽頁,選擇SQL Type為Native。這個時候,我們手寫SQL就非常注重這個SQL的優化,盡量避免SELECT *,用EXISTS替代IN,多使用DECODE來進行判斷,條件語句注意點等常用SQL優化策略,編寫對應的SQL.
3.1.2盡量使用特定數據的資料庫函數
在菜單項Actions中選擇Specify Package Function List…指定報表定製中可以使用的資料庫函數列表。將除應用資料庫意外的其他資料庫類型從Selected function sets中選到Available function sets中,盡量使用特定資料庫的自帶函數可以提高查詢效率。
3.1.3表關聯設定
在建立表關聯盡量避免使用外關聯關系(包括左外關聯、右外關聯、全外關聯)。外關聯的使用會使資料庫的查詢壓力驟增,從而影響前端報表的生成。在星型結構、雪花型結構的數據倉庫模型中,盡量按照一對一、一對多的關聯關系設定維表與實事表之間的關聯,Cognos Server會依照這里的關聯關系自動優化提交給資料庫的SQL語句。如果關聯關系中出現了環狀連接關系,可以通過別名表或是快捷鍵的方式解決環狀連接問題.
3.1.4Edit Governors查詢性能設置
在菜單項Project中選擇Edit Governors,可以設置查詢的查詢性能
Report table limits 該屬性設置報表中運行SQL所涉及的TABLE數量
Data retrieval limits 該屬性設置報表中運行SQL返回結果的數量
Query execution time limits 該屬性設置報表中運行SQL的執行時間
Large text items limit 該屬性設置報表中運行SQL返回大文字塊的字元數量限制
2013-07-08 0
答案對人有幫助,有參考價值1
曾力 - Cognos講師、Cognos獨立顧問、數據倉庫架構師 2013-07-08 回答
3.2 RS報表調優
3.2.1報表函數的使用
在報表函數的使用上,盡可能使用應用資料庫能夠解析的本地資料庫函數,函數列表中的通用函數,在處理時會將函數放在報表伺服器進行運算,從而增大了報表伺服器的性能開銷。
3.2.2 觀察查詢的SQL
我們選擇查詢頁面,GENERATE SQL/MDX觀察這個報表生成的SQL並進行不斷優化,
3.3.33.2 RS報表調優
3.2.1報表函數的使用
在報表函數的使用上,盡可能使用應用資料庫能夠解析的本地資料庫函數,函數列表中的通用函數,在處理時會將函數放在報表伺服器進行運算,從而增大了報表伺服器的性能開銷。
3.2.2 觀察查詢的SQL
我們選擇查詢頁面,GENERATE SQL/MDX觀察這個報表生成的SQL並進行不斷優化,
3.3.3查詢欄位、查詢表順序調整
根據資料庫的優化策略,可能需要將查詢欄位的順序進行調整,可以在Data Items窗口中進行設置。查詢SQL語句中,From關鍵字後面的表順序是按照select關鍵字後出現的欄位順序進行設置的。在為表順序進行設置時,屬性為Identifier或Attribute的欄位比屬性為Fact的欄位在為表排序時的優先順序要高,即,先以Identifier、Attribute欄位的出現順序為表進行排序,如果沒有上述兩類欄位,才以Fact欄位的出現順序為表進行排序。
3.3.4聚合前後設置過濾條件
將過濾條件的Application屬性設置為After aggregation或Before aggregation可以調整過濾條件在聚合前或是聚合後生效。After aggregation生成過濾條件的SQL語句使用的是關鍵字having,而Before aggregation生成過濾條件的SQL語句使用的是關鍵字where。
3.3.5取消報表自動分組提高明細報表查詢速度
如果報表要展現明細數據,不想使用任何匯總,我們可以到此報表對應的查詢中將自動分組屬性定義為否。修改地方:對象的屬性Auto Group & Summarize可以設置當前SQL語句的查詢中是否加入distinct、sum、group by這樣的關鍵字。默認情況下,該屬性設置為Yes,可以根據查詢情況關掉此開關項,減少SQL語句的復雜度。
3.3.6自動排序設置
在Query的Auto-sort屬性中可以為查詢設置是否自動排序。如果選擇是,則會在生成的SQL語句中自動加入Order By關鍵字,排序欄位將自動根據數據項的屬性進行設置(如果查詢欄位的usage屬性為Attribute、Identifier則排序,如果為Fact則不排序);如果選擇否、則不排序;如果選擇最小,則根據數據項的排序屬性進行排序設置。默認值為最小。
3.3.7報表Processing設置
在Query的Processing屬性中可以為查詢設置SQL的處理設置。Cognos Report Studio會將報表的所有設置首先轉換為Cognos SQL提交給報表伺服器,伺服器在進行必要處理後,會將SQL語句轉換為應用資料庫本地執行的SQL語句,進行資料庫處理。為提高報表的處理速度,要盡可能的將報表的處理運算放在資料庫進行,以保證其運行速度。將該屬性設置為Database only會將報表頁面生成的Cognos SQL不經報表伺服器處理全部轉換為資料庫能夠執行的本地資料庫SQL,如果將該屬性設置為Limited Local,則將報表頁面生成的Cognos SQL先進行必要的報表伺服器運算,然後再將剩餘的部分提交給資料庫進行本地SQL的處理。默認值為Framework中為Datasource對象的設置的queryProcessing屬性。
3.3.8使用With子句
在Query的Use SQL With Clause屬性中可以為查詢設置是否使用With子句。部分資料庫例如Oracle支持With關鍵字,當查詢中嵌套子查詢時,可以通過With子句的使用,減輕報表伺服器對Cognos SQL的處理,從而提升報表的運行性能。如果將該屬性設置為Yes,則允許使用With關鍵字,查詢中生成的Native SQL將出現With子句;如果將該屬性設置為No,雖然拒絕使用With關鍵字。默認值為Framework中Edit Governors下的Use WITH clause when generating SQL屬性設置。
3.3.9報表伺服器本地緩存設置
在Query的Use Local Cache屬性中可以為查詢設置是否使用本地緩存。如果將該屬性設置為Yes,則啟用伺服器的本地緩存,伺服器將為查詢結果保存在session中,當用戶在瀏覽器內再次打開同一張報表時,查詢結果將取自緩存,從而減輕了資料庫的負載壓力;如果將該屬性設置為No,則禁用伺服器的本地緩存,查詢結果全部取自資料庫的實時數據。默認值為Framework中Edit Governors下的Allow usage of local cache屬性設置。
我用的是finereport,比這個方便
⑵ MDX解決方案的編輯推薦
該書是《MDX解決方案》的第2版,這本權威指南解釋了為什麼MDX(MultiDimensionaleXpressions)是目前用於維度應用程序的最流行語言。通過學習《MDX解決方案》,您將掌握如何創建高效的多維度數據倉庫,同時還可以掌握訪問和分析數據的必要技能,從而能夠作出更好的商業決策。
《MDX解決方案》在簡要闡述了MDX語言的語法及語義之後,直接轉向MDX的使用,其中提供了豐富而又實用的MDX示例。本版對第1版的內容進行了大量(超過60%)的修改與更新,新增了許多分析型應用問題。本版不僅涵蓋了MDX語言本身的改動,還結合最新版本的及HyperionEssbase講解了具體實現的變化。
《MDX解決方案》主要適用於想學習和熟練掌握MDX的開發人員、咨詢師和管理人員。
《MDX解決方案》主要內容
針對Microsoft與Hyperion產品的具體應用
組合不同的MDX函數來解決各種問題的技術與技巧
SQLServer2005AnalysisServices的功能,以及與先前版本相比它與MDX之間關系的變化
MDX的標准語法,這些語法能夠很好地處理許多伺服器的構建並增強它們的功能
MDX運算符、函數及相關連接設置的詳細附錄
⑶ java導出報表70多個欄位sql比較復雜,有沒有什麼好的實現工具,能保證報錶速度(排除sql外)
您好,用SSAS吧,都有.
我們公司系統是這樣實現的.
1.用一個函數得到一個明細表,該明細表包括用戶感興趣的各個維度,並且該函數的參數是用戶感興趣的查詢條件.
2.按用戶要求先將用戶需要的維度列出來,比如說按時間斷,按商品類型,按門店,地區等等.然後給每一種方式在第1步的基礎上動態生成SQL語句.至於交叉,就要先從第一步中獲取交叉值列表,比如說按地區交叉,則先從第一步的表中將所有的地區查出,再用case when生成動態的行列轉換語句.
3.一般來說,用前兩步就已經能達到用戶的要求,我們公司還有一個數據分析的圖形化工具,也是在第一步的基礎上,由用戶自定義維度和深度的,實現方法就不知道了,應該是mdx來的
簡單舉個例子,比如說要對公司銷售數據進行統計,維度包括 時間,地區,商品品牌,查詢銷量,銷售金額
那可以用一個函數 fn_getSales(beginday,endday,area,matgroup),四個參數由用戶在界面上選擇或輸入,函數從銷售明細表中返回一個表,包含 時間(day),區域(area),商品品牌(brand),銷量(digit),銷售金額(totalmoney)的明細數據表.
統計的話,比如說要按商品品牌分組,那隻要生成動態語句:
select matgroup,sum(digit),sum(totalmoney) from fn_getSales(beginday,endday,area,matgroup) group by matgroup即可.
如果要按地區進行交叉,按商品品牌分組的統計數據,則先取得地區列表
select area from fn_getSales(beginday,endday,area,matgroup) group by area
將得到的area記錄下來,到一個數組,或到一個臨時表都行
然後拼裝行列轉換的SQL語句
select matgroup,
sum(case 地區1 then digit else 0 end) as 地區1銷量,
sum(case 地區1 then totalmoney else 0 end) as 地區1銷售金額,
sum(case 地區2 then digit else 0 end) as 地區2銷量,
sum(case 地區2 then totalmoney else 0 end) as 地區2銷售金額,
....循環將所有的地區這樣列出
from fn_getSales(beginday,endday,area,matgroup)
這樣就得到了每一種商品在每個地區的銷量和銷售金額分布情況
如果這種東西寫多了你就會發現完全可以將拼裝方法固定下來,都是有規律的,你可以寫一個專門用於拼裝SQL的類,這時候就會很容易了。
⑷ MDX解決方案的目錄
第1章MDX入門1
1.1什麼是MDX1
1.2查詢基礎2
1.3軸框架:名稱與編號4
1.4大小寫敏感與布局5
1.5構造簡單的MDX6
1.5.1逗號(,)與冒號(:)6
1.5.2.Members7
1.5.3使用.Children獲得一個成員的子成員8
1.5.4使用Descendants()獲取一個成員的後代成員9
1.6去除查詢結果中的空切片11
1.7MDX中的注釋13
1.8MDX數據模型:元組和集14
1.8.1元組14
1.8.2集16
1.8.3查詢17
1.9更多基本詞彙18
1.9.1CrossJoin()18
1.9.2Filter()20
1.9.3Order()22
1.10查詢成員屬性24
1.11查詢單元屬性26
1.12客戶端結果數據布局27
1.13小結28
第2章計算成員和命名集簡介29
2.1採用計算成員形式的維度計算29
2.2計算成員作用域30
2.2.1計算成員和查詢的WITH部分31
2.2.2公式的優先順序(求解順序)32
2.3基本的計算函數37
2.3.1算術操作符37
2.3.2概要統計操作符37
2.3.3Avg()函數38
2.3.4Count(),.Count38
2.3.5DistinctCount()函數(Microsoft擴展)39
2.3.6Sum()函數39
2.3.7Max()函數40
2.3.8Median()函數40
2.3.9Min()函數40
2.3.10NonEmptyCount()函數(Hyperion擴展)41
2.3.11Stdev()和Stddev()函數41
2.3.12StdevP()和StddevP()函數(Microsoft擴展)41
2.3.13Var()和Variance()函數42
2.3.14VarP()和VarianceP()函數(Microsoft擴展)42
2.4補充的函數42
2.5命名集簡介44
2.6小結47
第3章MDX中的通用計算和選擇49
3.1MDX中的元數據引用函數51
3.2多種比率﹑均值﹑百分比和分配52
3.3貢獻率(同一層次結構中級別之間的簡單比率)52
3.3.1對總額的貢獻率53
3.3.2使用.CurrentMember函數53
3.3.3使用.Parent函數53
3.3.4使用.CurrentMember函數和.Parent函數獲得父對象份額53
3.3.5使用Ancestor函數54
3.3.6使用.CurrentMember函數和Ancestor函數計算祖先對象的份額54
3.3.70作除數的處理56
3.4基本分配56
3.4.1基於另一種比率的數量比例分配56
3.4.2沿層次結構的非加權分配57
3.5均值57
3.5.1簡單均值57
3.5.2加權均值58
3.6基於時間的引用和時間序列的計算60
3.6.1各時期(Period-to-Period)的引用和計算60
3.6.2去年同期的引用和計算61
3.7本年至今的聚合61
3.8移動均值和52周的最高價/最低價63
3.9使用LastPeriods()選擇基於目標成員的時間范圍65
3.10沿不同維度的不同聚合(使用MDX的半加性度量)65
3.11混合聚合:非時間總和,沿時間的均值、最小值與最大值66
3.12混合聚合:非時間總和,沿時間維度的期初/期末結餘66
3.13對於緩慢變化值的余額轉結和最後輸入的結余報告67
3.14查找數據全部輸入的最後時間成員71
3.15在MDX表達式中使用成員屬性(計算和分類)71
3.16處理邊界條件(超出范圍的成員,0或其他作除數)74
3.16.1處理不足的范圍尺寸74
3.16.2處理不足的層次結構深度75
3.16.3處理錯誤的級別引用75
3.16.40作除數的處理76
3.17小結77
第4章MDX查詢上下文與執行79
4.1查詢中的單元上下文和解析次序80
4.1.1查詢的執行階段80
4.1.2單元求值(對任何單元)87
4.1.3解析NONEMPTY軸89
4.1.4解析AS2005中的HAVING子句90
4.1.5循環上下文和.CurrentMember函數92
4.1.6AS2005中成員的相互聯系:強層次結構性、自存在性和屬性關系93
4.2在AS2005中修改多維數據集上下文96
4.2.1CREATESUBCUBE語句97
4.2.2在AS2005中的FROM子句中使用SELECT103
4.2.3無限遞歸:在計算上下文可能遇到的「陷阱」106
4.2.4特定產品解析次序的使用106
4.3非數據:無效數字、NULL(空)和無效成員109
4.3.1無效計算:0作除數和數字錯誤109
4.3.2空單元的語義110
4.3.3無效位置112
4.4計算中的單元屬性優先順序114
4.4.1顯示格式化的優先順序115
4.4.2計算單元中的數據類型116
4.5操作中多維數據集的上下文117
4.6KPI中的多維數據集上下文117
4.7AS2005中全局、會話和指定查詢計算之間的定義的可見性117
4.8小結119
第5章命名集與集的別名121
5.1命名集:作用域和上下文121
5.2命名集的常規使用122
5.3集的別名124
5.3.1集的別名的示例124
5.3.2深入了解集的別名126
5.3.3當集的別名是必需的情況128
5.4小結130
第6章MDX中的排序和分類131
6.1函數131
6.2典型的Top-N選擇132
6.2.1加入分類數(使用Rank()函數)134
6.2.2在集中取得Top-N的後代成員及其他關聯成員138
6.3獲得最少/最多元組以達到臨界值140
6.4獲取元組TopN百分比142
6.5在維度次序中放置成員/元組(首先/最後放置祖先成員)143
6.6集的反向排序144
6.7小結145
第7章MDX高級應用147
7.1將父對象/祖先成員排在子對象之後(而不是之前)148
7.2返回成員下面的子樹,並連同成員一起返回其祖先成員148
7.3使用Generate()將元組操作轉化為集操作149
7.4日期計算/日期算術150
7.5對行/列/軸上選擇的成員定義比率(而非對指定維度定義比率)153
7.6基於報表的父對象總額,報表總額的貢獻率156
7.6.1方法1:唯一的標准MDX方法156
7.6.2方法2:在AnalysisServices中考慮使用VisualTotals()161
7.6.3方法3:使用AS2005子多維數據集163
7.7層次結構中越過級別的層次結構排序164
7.8基於多重規則的單個集排序165
7.9多重層排序或多重維度排序166
7.9.1對每個維度採取相同排序規則的嵌套排序166
7.9.2依據不同標準的嵌套維度排序167
7.10Pareto分析與累積和169
7.11返回top-selling(最暢銷)產品(或其他重要的名稱)作為度量173
7.12已選成員集的最新事件174
7.13積聚大量數據所需的時間集(建立沿時間向前或向後合計的集)177
7.14乘法聚合(乘積代替加和)180
7.15通過集中的並列分類包含所有元組184
7.16公用維度時間分析186
7.17樣本分析188
7.18小結195
第8章使用MicrosoftAnalysisServices的屬性數據模型197
8.1統一維度模型197
8.2維度199
8.2.1屬性、層次結構與聯系201
8.2.2維度查詢205
8.2.3成員屬性207
8.2.4父-子層次結構209
8.2.5Time維度210
8.3多維數據集211
8.3.1維度關系214
8.3.2角色扮演維度217
8.3.3透視圖217
8.3.4鑽取218
8.4UDM中的計算模型218
8.5在UDM上定義安全性219
8.6小結224
第9章HyperionEssbase中屬性維度和成員屬性的用法225
9.1UDA與屬性225
9.2在查詢軸檢索UDA和屬性值226
9.3在計算中使用UDA和屬性227
9.4基於UDA和屬性值選擇基維度成員227
9.4.1使用Attribute函數選擇基於共用屬性值的成員228
9.4.2使用WithAttr函數選擇基於屬性值的成員229
9.4.3使用UDA函數選擇共用UDA值的成員230
9.5用IN連接基成員和屬性層次結構230
9.5.1連接基成員及其實際屬性成員231
9.5.2連接屬性成員及其屬性值231
9.6小結232
第10章通過外部函數擴展MDX233
10.1配合MDX使用存儲過程234
10.2ADOMD伺服器對象237
10.2.1表達式239
10.2.2元組生成器239
10.2.3集生成器240
10.2.4MDX240
10.2.5上下文241
10.2.6伺服器元數據對象242
10.3AMO.NET託管存儲過程243
10.4靜態函數與非靜態函數的性能評估244
10.4.1調試.NET存儲過程245
10.4.2NULL、ERROR()與異常等方面的附加程序設計246
10.4.3使用存儲過程以獲得動態安全性248
10.4.4COMDLL存儲過程251
10.5參數與返回類型的深入討論251
10.6用於COM存儲過程的MDX函數256
10.6.1SetToStr()與TupleToStr()256
10.6.2Members()、StrToSet()與StrToTuple()256
10.7外部函數示例:TimeSpanUntilSum()函數258
10.8載入和使用存儲過程260
10.9存儲過程名稱解析261
10.10在MDX中調用存儲過程262
10.11對存儲過程的其他考慮因素263
10.12小結263
第11章通過MDX改變多維數據集和維度環境265
11.1在會話中改變維度的默認成員266
11.2維度回寫操作266
11.2.1創建新成員267
11.2.2在維度中移動成員267
11.2.3刪除成員268
11.2.4更新成員定義268
11.3刷新單元數據與維度成員269
11.4把數據寫回多維數據集269
11.4.1標准單元寫回270
11.4.2提交與回滾270
11.4.3使用UPDATECUBE270
11.5小結273
第12章MicrosoftAnalysisServices中計算的多種方法275
12.1計算機制概述276
12.1.1度量的固有聚合276
12.1.2使用一元運算符匯總277
12.1.3自定義成員公式279
12.1.4計算成員280
12.1.5單元計算283
12.1.6條件格式化287
12.2各類計算如何交互288
12.2.1無單元計算的交互288
12.2.2單元計算傳遞289
12.2.3使用求解順序來決定傳遞中的公式293
12.2.4計算成員本身不是聚合的294
12.2.5自定義匯總、自定義成員與計算單元結果的固有聚合295
12.3使用不同計算技術時應注意的問題295
12.4小結296
第13章AnalysisServices2005中的MDX腳本297
13.1MDX腳本基礎297
13.1.1什麼是MDX腳本297
13.1.2計算語句299
13.1.3子多維數據集300
13.1.4賦值與聚合303
13.1.5賦值與計算成員307
13.1.6賦值與命名集308
13.2MDX腳本以及更復雜的多維數據集309
13.2.1多屬性層次結構309
13.2.2用戶層次結構315
13.2.3父子屬性層次結構316
13.2.4多對多維度317
13.2.5事實維度與引用維度319
13.2.6半累加性度量與非累加性度量319
13.2.7一元運算符與自定義成員公式321
13.3高級MDX腳本323
13.3.1定義帶有SCOPE的子多維數據集323
13.3.2MDX表達式賦值326
13.3.3給子多維數據集賦予一個錯誤的值329
13.3.4將單元屬性值賦給子多維數據集330
13.3.5條件賦值331
13.4現實世界中的MDX腳本332
13.4.1TimeIntelligence向導332
13.4.2回顧基本分配335
13.5小結336
第14章增強客戶端的交互337
14.1使用鑽取338
14.1.中針對鑽取的改進與改變338
14.1.2鑽取MDXI339
14.1.3與鑽取相關的重要問題340
14.1.4鑽取MDXII342
14.1.5鑽取安全性343
14.2使用操作343
14.2.1使用操作能夠做什麼?344
14.2.2操作的目標347
14.2.3定義操作348
14.2.4與操作相關的編程注意事項351
14.2.5刪除操作354
14.3使用KPI355
14.3.1創建KPI355
14.3.2MDXKPI函數358
14.3.3使用KPI359
14.4小結361
第15章客戶端編程基礎363
15.1ADOMD.NET基礎364
15.1.1先決條件365
15.1.2建立連接365
15.2處理元數據366
15.2.1獲取構架行集366
15.2.2使用構架行集時的互操作性問題367
15.2.3使用元數據對象模型367
15.2.4使用元數據對象模型時的互操作性問題368
15.2.5維度特性368
15.2.6處理ADOMD.NET元數據緩存369
15.3執行查詢370
15.3.1執行命令370
15.3.2參數化命令371
15.3.3使用CellSet對象372
15.3.4關於從查詢中獲取信息的更多細節376
15.3.5關鍵性能指標381
15.4執行操作382
15.5處理「平展的」MDX結果383
15.6小結387
第16章優化MDX389
16.1從AnalysisServices2000到AnalysisServices2005的體系結構改動390
16.2優化集操作391
16.2.1交叉聯接集合之上求和391
16.2.2交叉聯接集之上進行篩選393
16.2.3優化TopCount()和BottomCount()394
16.2.4AnalysisServices2005中的NonEmpty函數395
16.2.5優化排序:Order()396
16.2.6針對較大數據集查詢的UnOrder函數397
16.3優化求和397
16.4將計算設計在資料庫中(將成員屬性放入度量中以及新的MDX函數MemberValue中)398
16.5MDX腳本優化400
16.5.1計算的細節400
16.5.2避免葉級別的計算401
16.5.3在多維數據集設計中避免葉級別計算402
16.5.4度量值表達式優化葉級別計算403
16.5.5葉級別計算的MDX腳本優化404
16.5.6AnalysisServices2005:使用屬性層次結構而不是成員屬性406
16.5.7AnalysisServices2005:使用Scope來替代IIF407
16.6在MDX腳本中避免使用慢速函數409
16.6.1為了更好的性能而改變計算邏輯:流計算409
16.6.2使用伺服器本地特性而不是腳本來進行與聚合相關的計算411
16.7小結412
第17章使用本地多維數據集413
17.1選擇使用何種語法414
17.2使用CREATECUBE語句414
17.2.1過程概述414
17.2.2CREATECUBE語句剖析415
17.2.3定義維度416
17.2.4級別417
17.2.5定義度量422
17.2.6添加命令423
17.2.7ROLAP與MOLAP424
17.2.8INSERTINTO語句剖析424
17.2.9多維數據集目標425
17.2.10INSERTINTO中的OPTIONS子句427
17.2.11SELEC子句428
17.2.12構造提示430
17.2.13從本地多維數據集到伺服器多維數據集431
17.2.14匯總與自定義成員公式431
17.3使用CREATEGLOBALCUBE語句433
17.3.1過程概述433
17.3.2CREATEGLOBALCUBE語句剖析433
17.3.3定義度量434
17.3.4定義維度434
17.3.5定義級別435
17.3.6定義切片成員435
17.3.7需要注意的事項436
17.4使用分析服務腳本語言436
17.4.1過程概述436
17.4.2ASSL語句剖析437
17.4.3安全性437
17.5小結438
附錄AMDX函數與運算符參考439
附錄B影響MDX的連接參數523
附錄C單元與成員的內部屬性541
附錄D格式化字元串編碼551
附錄E學習資源559
……
⑸ 請問MDX是什麼意思
多維表達式
MDX是OLAP多維立方體查詢語言,支持定義和操作多維對象和數據,在功能上類似於關系資料庫查詢語言SQL。它語法豐富,執行效率高,功能強大,是OLAP伺服器與外界交互的專用語言。
以下出自 《SQL Server 2005 聯機叢書》
多維表達式 (MDX) 是一種功能完備、基於語句的腳本語言,用於定義、使用以及從 Microsoft SQL Server 2005 Analysis Services (SSAS) 中的多維對象中檢索數據。MDX 提供以下幾種語言功能:
用於創建、刪除以及使用多維對象的數據定義語言 (DDL) 語句。
用於從多維對象中檢索操作數據的數據操作語言 (DML) 語句。
用於管理作用域、上下文以及 MDX 腳本內的流控制的腳本語言語句。
用於操作從多維對象中檢索的數據的大量運算符和函數。
使用用戶定義函數擴展 MDX 的功能。
MDX 在很多方面與關系資料庫常用的 SQL 語法類似,但 MDX 不是 SQL 語言的擴展。事實上,MDX 所提供的一些功能也可由 SQL 提供,盡管不是那麼有效或直觀。
⑹ MS Sql 查詢 集合運算的交並補如何寫
你是要在MDX查詢中使用嗎?(我怕你誤以為是T-SQL里邊的函數),MDX查詢是不能直接像T-SQL語句那樣在查詢分析器里執行的。
在MDX查詢里,你要明白集合的概念就很容易掌握了。
其實MDX示常式序里就帶了EXCEPT的用法:
select
{[Measures].[Unit Sales]} on columns,
order(except([Promotion Media].[Media Type].members,{[Promotion Media].[Media Type].[No Media]}),[Measures].[Unit Sales],DESC) on rows
from Sales
T-SQL里查詢的話,可以用union,in和not in來查詢,這要看你的具體數據了。