2017-03-23 74 views
0

我倒了好幾個網站,包括這個網站,到目前爲止都是徒勞的。我需要創建一張描述員工流失率的圖表,該圖表必須在1年內計算。 (正如我標題說我要麼13期或12個月去的選項:都是1年等效)請看看我的數據集的以下「樣本版本」:Report Builder 3.0 - MDX - 移動金額

Year | Trimester | Period | Date End of Period | Departures | Avg total Employees 
2015   1   1  yyyy-mm-dd 00:00:00  2   100 
2015   1   2  yyyy-mm-dd 00:00:00  3   99 
2015   1   3  yyyy-mm-dd 00:00:00  4   98 
2015   2   4  yyyy-mm-dd 00:00:00  0   102 
2015   2   5  yyyy-mm-dd 00:00:00  1   100 
2015   2   6  yyyy-mm-dd 00:00:00  0   98 
2015   3   7  yyyy-mm-dd 00:00:00  4   99 
2015   3   8  yyyy-mm-dd 00:00:00  3   96 
2015   3   9  yyyy-mm-dd 00:00:00  4   100 
2015   3   10  yyyy-mm-dd 00:00:00  0   98 
2015   4   11  yyyy-mm-dd 00:00:00  0   97 
2015   4   12  yyyy-mm-dd 00:00:00  2   99 
2015   4   13  yyyy-mm-dd 00:00:00  3   98 
2016   1   1  yyyy-mm-dd 00:00:00  2   100 
2016   1   2  yyyy-mm-dd 00:00:00  4   97 
2016  [...] 

FYI平均員工總數=([員工總數]。[期末] + [員工總數] [期初])/ 2

以下是我目前看到的圖表(道歉,標籤用法文)

enter image description here

:出發/平均佔員工總數 順便說一句,因爲你一定能注意到,橙色是企圖通過將添加計算系列計算系列屬性選擇移動,以獲得期望的結果平均值:嘗試失敗。

所以這裏是我的問題:我想要的是1個系列,顯示12個月累計值每個期間。也就是說,請根據我的數據集見下例以上:

當前2016年,期間1 = 2/100 = 2%

通緝的結果2016年一年,期間1 =(2 +3 + 2 + 0 + 0 + 4 + 3 + 4 + 0 + 1 + 0 + 4 + 3)/((100 + 100)/ 2)= 26%,即加上最後13個週期的偏差和[2016P01 + 2015P13 + 2015P12 + [+] 2015P03 + 2015P02)

因此,換句話說,我需要獲得一個圖表,顯示每個週期的營業額值將是一個百分比,肯定會在20-30%左右,而不是噸他當前0-4%(根據我的數據集值)。任何想法?

謝謝大家!

EDIT1 我發現,通過使用RunningValue函數: =RunningValue(Fields!Turnover.Value, Sum, Nothing)它給一些接近我想要什麼,但不太依然。我基本上需要一個在過去13個時期範圍內的「Runningtotal」......如果存在的話=/

p.s. Fields!Turnover.Value = Fields!Departure.Value/Fields!Avg_total_Employees.Value

EDIT2 首先,謝謝艾倫。去FWD,這裏就是我的實際DS的屏幕截圖樣本: enter image description here

:一個我輸入了這一個之間的細微差別是,我需要提供營業TX1(包括所有員工)和營業額Tx2(不包括退休)。因此,我創建了下面的計算成員(截圖的左下角),並且由於我的TX1從我的DS中的[平均佔員工總數]和[離開]移除和Tx2佔了兩個:

退休人員數:Départs_ret = ([Measures].[Nb Départs],[Départ].[Départ].&[112337])

Turnover1:Tx1 = ([Measures].[Nb Départs])/([Measures].[Nb Matricules Actifs (Moyen)])

Turnover2:Tx2 = (([Measures].[Nb Départs])-([Measures].[Départs_ret]))/([Measures].[Nb Matricules Actifs (Moyen)]))])

以文本的形式我的MDX查詢如下:

WITH MEMBER [Measures].[Départs_ret] AS ([Measures].[Nb Départs],[Départ].[Départ].&[112337]) 
MEMBER [Measures].[Tx1] AS ([Measures].[Nb Départs])/([Measures].[Nb Matricules Actifs (Moyen)]) 
MEMBER [Measures].[Tx2] AS (([Measures].[Nb Départs])-([Measures].[Départs_ret]))/([Measures].[Nb Matricules Actifs (Moyen)]) 
SELECT NON EMPTY { [Measures].[Tx1], [Measures].[Tx2] } 
ON COLUMNS, NON EMPTY { ([Période Financière].[PF - Année Financière].[PF - Année Financière].ALLMEMBERS * 
[Période Financière].[PF - Trimestre No].[PF - Trimestre No].ALLMEMBERS * 
[Période Financière].[PF - Période Financière No].[PF - Période Financière No].ALLMEMBERS * 
[Période Financière].[PF - Date Fin Période].[PF - Date Fin Période].ALLMEMBERS) } 
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM (SELECT (-{ [Période Financière].[PF - Année Financière - Trimestre].[PF - Année Financière].&[2014], [Période Financière].[PF - Année Financière - Trimestre].[PF - Année Financière].&[2013], [Période Financière].[PF - Année Financière - Trimestre].[PF - Année Financière].&[2012] }) 
ON COLUMNS FROM (SELECT (STRTOSET(@[PériodeFinancièrePFAnnéeFinancière], CONSTRAINED)) 
ON COLUMNS FROM [Historique Employés PerFin])) 
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 
如果個

我道歉我的代碼分裂是不正確的做法,我試圖使它在某種程度上是合乎邏輯的SSRS簡單地把它作爲一個大blurp。

謝謝!

回答

0

澆在MDX的東西后,我找到了解決辦法。事實上,它必須在查詢設計器的文本模式下完成,並且必須使用Lag()函數。所以,這裏是我的DS貌似現在:

WITH 
MEMBER [Measures].[Total_déb] 
AS ([PF - Date Fin Période].CurrentMember.Lag(12), [Measures].[Nb Matricules Actifs (DtDeb)]) 
MEMBER [Measures].[Départ_YTD] 
AS 'SUM(
{[PF - Date Fin Période].CurrentMember.Lag(12):[PF - Date Fin Période].CurrentMember}, [Measures].[Nb Départs])' 
MEMBER [Measures].[Départ_ret_YTD] 
AS 'SUM(
{[PF - Date Fin Période].CurrentMember.Lag(12):[PF - Date Fin Période].CurrentMember}, ([Measures].[Nb Départs],[Départ].[Départ].&[112337]))' 
SELECT NON EMPTY { [Measures].[Total_déb], [Measures].[Départ_YTD], [Measures].[Départ_ret_YTD], [Measures].[Nb Total Employés Actifs (DtFin)] } ON COLUMNS, NON EMPTY 
{ ([Période Financière].[PF - Année Financière].[PF - Année Financière].ALLMEMBERS * [Période Financière].[PF - Trimestre No].[PF - Trimestre No].ALLMEMBERS * [Période Financière].[PF - Période Financière No].[PF - Période Financière No].ALLMEMBERS * [Période Financière].[PF - Date Fin Période].[PF - Date Fin Période].ALLMEMBERS) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS 
FROM (SELECT (-{ [Période Financière].[PF - Année Financière - Trimestre].[PF - Année Financière].&[2014], [Période Financière].[PF - Année Financière - Trimestre].[PF - Année Financière].&[2013], [Période Financière].[PF - Année Financière - Trimestre].[PF - Année Financière].&[2012] }) ON COLUMNS 
FROM (SELECT (STRTOSET(@[PériodeFinancièrePFAnnéeFinancière], CONSTRAINED)) ON COLUMNS FROM [Historique Employés PerFin])) 
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS 

這是我的DS的屏幕截圖現在: enter image description here

0

報表生成器是不是一個偉大的工具做相對運行聚集體。我對這個解決方案是基於SQL。我不知道你的數據結構,所以我不能給你寫一個查詢,但我會給出一個高層次的解釋。你會做的是以13週期抵消作爲條件將表加入自己。然後,您將能夠獲得從該子查詢的每個週期開始的總離開時間。這樣你只需要在報告中做相對簡單的計算。

0

我@StevenWhite同意,這是一段簡單的做這樣的事情在你的數據集。我設置的樣本中SQL小提琴這裏

http://sqlfiddle.com/#!3/9eecb7db59d16c80417c72d1/9722

的代碼如下: 2016年期間它給周圍26-27%的結果。基本計算方法是前12個'離職'的總和除以'平均員工總數'的平均值。在本例中它也包括當前時間段,但您可以通過在查詢結尾附近編輯BETWEEN子句來輕鬆調整範圍。

DECLARE @data TABLE ([Year] int, [Period] int, Departures float, [Avg Total Employees] float) 

INSERT INTO @data 
VALUES 
(2015, 1, 2, 100), 
(2015, 2, 3, 99), 
(2015, 3, 4, 98), 
(2015, 4, 0, 102), 
(2015, 5, 1, 100), 
(2015, 6, 0, 98), 
(2015, 7, 4, 99), 
(2015, 8, 3, 96), 
(2015, 9, 4, 100), 
(2015, 10, 0, 98), 
(2015, 11, 0, 97), 
(2015, 12, 2, 99), 
(2015, 13, 3, 98), 
(2016, 1, 2, 100), 
(2016, 2, 4, 97) 

-- add a CTE with a row number to help with joining ranges of records 
;WITH tmp AS 
(
    SELECT *, ROW_NUMBER() OVER(ORDER BY [Year], [Period]) as rn FROM @data 
) 

SELECT DISTINCT -- DISTINCT because we are not grouping, instead using windowed functions 
     a.[Year], a.[Period] 
     , CAST(SUM(b.Departures) OVER(PARTITION BY a.[Year], a.[Period])/AVG(b.[Avg Total Employees]) OVER(PARTITION BY a.[Year], a.[Period]) as float) AS TurnOverRate 
    FROM tmp a 
     JOIN tmp b on a.rn - b.rn between 0 and 12 -- raneg of periods to be included 
order by a.[Year], a.[Period] 
+0

感謝球員,遺憾的是,雖然我已經用SSRS工具有了很大的進步,這解決方案是我目前的SQL的知識矯枉過正,和所有我得到的是錯誤的彈出窗口(和花白的頭髮),因爲我想在我的查詢設計器來實現這一笑,但我倔強和執着,所以我會擺動在這一個。 –

+0

設計師贏了;處理這樣的事情,你必須在文本模式下進行。發佈查詢和一些示例數據,如果不清楚表中包含什麼,我今晚晚些時候會看一看。 –

+0

Srry艾倫的延遲,我無法昨天來上班,但非常感謝您的報價,我希望EDIT2提供了所有你建議的信息。 –