我有一個用於學習目的的簡化示例多維數據集,並嘗試找出更復雜的問題。MDX/SSAS某些值超過總和的總和 - 計算成功/失敗率
立方體代表一個小型Web服務器日誌,
- 命中數作爲衡量
- 主機名維
- HTTP狀態代碼爲維度
我能得到每臺主機的點擊次數以及MDX的http狀態碼的細目
SELECT NON EMPTY { [Measures].[CNT HITS] } ON COLUMNS,
NON EMPTY { ([DIM NOS STATUSCODE].[Statuscode].[Statuscode].ALLMEMBERS *
[DIM NOS HOST].[HOST].[HOST].ALLMEMBERS) } ON ROWS
FROM [DW]
現在我想要通過各種HTTP狀態代碼將羣組顯示成功點擊率(所有2xx狀態代碼)的百分比,不成功點擊率的百分比(所有非2xx狀態代碼)。
我可以用SQL來做這件事,但是我很遺憾怎麼用MDX做到這一點。例如與SQL我會怎麼做:
select HOST,
sum(CNT_HITS) as HITS ,
SUM(CASE WHEN s.statuscode div 100 = 2 THEN CNT_HITS ELSE 0 END)/sum(CNT_HITS) * 100 as success_percent,
SUM(CASE WHEN s.statuscode div 100 = 2 THEN 0 ELSE CNT_HITS END)/sum(CNT_HITS) * 100 as failed_percent,
sum(CASE WHEN s.statuscode = 401 THEN CNT_HITS ELSE 0 END)/sum(CNT_HITS) * 100 as auth_fail_percent
from FACT_NOS_HTTPLOG fact
group by HOST;
而對於在上面的截圖中顯示的數據,我會得到
+-----------------+------+-----------------+----------------+-------------------+
| HOST | HITS | success_percent | failed_percent | auth_fail_percent |
+-----------------+------+-----------------+----------------+-------------------+
| www.example.com | 1610 | 93.1677 | 6.8323 | 6.2112 |
| www.test.com | 50 | 0.0000 | 100.0000 | 0.0000 |
+-----------------+------+-----------------+----------------+-------------------+
但我怎麼能做到這一點與MDX?
你能有一些更多的細節展開,我不能完全理解我應該做的 - 儘管這聽起來像一個不那麼靈活的解決方案.-什麼,如果明天我想根據其他一些HTTP狀態另一組範圍 ?另外 - 你什麼意思沒有任何mdx?我還能從SSAS獲取數據嗎? – binary01
@ binary01(提高)這個解決方案將是最高效的 – whytheq
@ binary01如果你還需要更多的細節讓我知道。 –