前面在“
用PBI分析上市公司財務數(shù)據(jù)(一)
”中主要介紹了數(shù)據(jù)的獲取、清洗,但要在PBI中實現(xiàn)動態(tài)的交互式分析,搭建模型是至關重要的一步。所謂模型可以理解為表以及表與表之間的關系,模型建的好,后續(xù)維護管理就比較容易,度量值的編寫也就會相對容易。那么如何才能建立合理模型呢?
筆者認為要具備以下條件:一是理解業(yè)務數(shù)據(jù),知道主要分析的指標及潛在的報表分析需求;二是對DAX表達計算邏輯、特性有一定的了解。
題外話:
EXCEL中最難的函數(shù)可能就是查找引用函數(shù)了,如vlookup,index,match,lookup等,特別這些函數(shù)的數(shù)組用法,如果涉及到三維引用,大部分人都會弄暈,可能一個公式半天都弄不明白,也許好不容易弄明白了,過段時間又忘記了。不過這些在PBI中將不會存在,PBI將通過模型的建立,表與表之間的關聯(lián)不再與數(shù)據(jù)呈現(xiàn)的物理位置有關,只需要理解“上下文”這個概念。
言歸正傳,下面來講下如何建立模型:
第一步:分析數(shù)據(jù)特點
從數(shù)據(jù)的結構來講,上市公司歷年的財務報表,數(shù)據(jù)關系還是比較簡單的,但是,數(shù)據(jù)也有其特點,如果沒有財務基礎知識的話,可能在寫度量值時會犯一些錯誤。
首先要清楚:資產(chǎn)負債表是一類,利潤表和現(xiàn)金流量表屬另一類!
資產(chǎn)負債表是時點數(shù)據(jù),它實際上是反映公司自成立以來每個時點資產(chǎn)負債情況,如果在后面度量值寫成=SUM(資產(chǎn)負債表項目),那這個度量值在一個時間段內將毫無意義,因為把各個時點的數(shù)據(jù)直接相加,沒有實際意義。
首先,時間和公司名稱這兩個維度是必須,也很容易發(fā)現(xiàn)。但是后面報表科目應該怎么處理呢?其實我們能夠發(fā)現(xiàn),后面的報表科目其實也是一個維度,按照“
用PBI分析上市公司財務數(shù)據(jù)(一)
”處理完成后的數(shù)據(jù),其實是一個二維表.如果后續(xù)導出到EXCEL使用,或是直接打印出來閱讀,或是用來做某幾個指標的數(shù)理統(tǒng)計分析,這類二維表是合適的,但如果需要在PBI中分析,呈現(xiàn)更細致的微觀分析報告,那么需要對數(shù)據(jù)進行降維處理,也就是要將后面的科目列進行逆透視操作。具體操作如下:
在PQ編輯器中對查詢生成的資產(chǎn)負債表選擇除公司代碼、報告日期之外的其他列后右擊,選擇逆透視列,完成后更改下列名,如下:
最后,將生成的本表改名為財務報表。
雖然分析維度可以在模型建立后反復修改或添加,但由于分析維度對模型建立影響較大,因此,模型建立初最好要確定主要的分析維度。
第三步:確定分析模型所需的表,
并設定表與表之間的關系
根據(jù)上面第二步分析得知,我們至少要有三個維度表,即時間、公司、科目維度表,有了這三個維度表后,我們就可以在后面分析中根據(jù)這些維度對數(shù)據(jù)進行切片計算。
由于待分析的財務報表數(shù)據(jù)中,日期字段僅一個即報表日期,因此建立日期表我們無需考慮過多因素,直接用DAX函數(shù) calendarauto()建立,該函數(shù)直接掃描現(xiàn)有模型中的日期,自動建立涵蓋現(xiàn)有日期字段的日期表。
具體操作如下:點擊建模=》新表 ,輸入 :日期表 = CALENDARAUTO()
年 = YEAR([Date]) 季度 = ROUNDUP(MONTH([Date])/3,0) 季度名稱 = "Q"&[季度] 年季名稱 = [年]&[季度名稱]
在自動生成的日期建立這些字段主要是便于后期篩選和計算。
2、 建立公司維度表
公司維度表,即待分析的公司基本信息,在“用PBI分析上市公司財務數(shù)據(jù)(一)”中其實就已經(jīng)在上交所網(wǎng)上得到了相關的數(shù)據(jù),如下:3、?建立科目維度表
通過前面的分析,我們還需要一張表科目信息表用來關聯(lián)財務報表數(shù)據(jù),由于科目維度信息表比較固定,更新次數(shù)少,我們可以先在EXCEL中手工維護好后導入PBI中。我們將科目維度表整理成以下樣式,其中科目對照列是用來與財務報表建立關聯(lián)的列。在PQ中選擇現(xiàn)金流量表科目列=》在功能區(qū)選擇轉換=》格式=》添加后綴
考慮到原來的科目中每個都有萬元,直接顯示顯示出來不好看,因此,我們增加一列用來在報表可視化中顯示出來的名稱即項目名稱列,為了讓顯示出來的項目顯示出層級,更加好看,可以在項目名稱的前后增加這個字簽,模擬縮進效果,(該字符在查詢時可見,在可視化時不可見)如下:
先編寫一個基礎度量值: 值合計 = SUM('財務報表'[值])
資產(chǎn)負債表項目我們一般是分析期初和期末金額及結構的變化,因此我們需要建立以下度量:
(1)期末金額
期末 =VAR EndDate=MAX('日期表'[Date])//取得所選日期的最大值VAR EndAmount=CALCULATE([值合計],'日期表'[Date]=EndDate)//計算期末金額returnIF(EndAmount=0,BLANK(),EndAmount)//隱藏項目金額為0的科目
期初 =VAR CURyear=MAX('日期表'[年])VAR beginAmt=CALCULATE([期末],FILTER(ALL('日期表'),'日期表'[年]=CURyear-1&& '日期表'[季度]=4))returnbeginAmt
(3)變動金額
變動?=?IF(ISBLANK([期末]),BLANK(),????????? [期末]-[期初])
(4)變動率
變動率 = DIVIDE([變動],[期初]) 期末流動比率 =DIVIDE(CALCULATE([期末] ,'科目表'[科目對照]="流動資產(chǎn)合計(萬元)"),CALCULATE([期末] ,'科目表'[科目對照]="流動負債合計(萬元)"))
期末資產(chǎn)負債率 =DIVIDE(CALCULATE([期末] ,'科目表'[科目對照]="負債合計(萬元)"),CALCULATE([期末] ,??'科目表'[科目對照]="資產(chǎn)總計(萬元)"))
期末現(xiàn)金比率 =DIVIDE( CALCULATE([期末] ,?'科目表'[科目對照]?in?{"貨幣資金(萬元)","交易性金融資產(chǎn)(萬元)"}),?CALCULATE([期末] ,'科目表'[科目對照]="流動負債合計(萬元)"))
第五步,數(shù)據(jù)可視化 1.? 資產(chǎn)項目,選擇矩陣
3、選擇卡片圖,依次將流動比率、現(xiàn)金比率、資產(chǎn)負債率用三個卡片圖顯示
4、將公司簡稱、年、季度名稱分別加入到三個切片器
調整格式,效果如下:
作者 張震 | 編輯 沐笙?
—— End ——
PowerBI財務分析課程推薦
網(wǎng)易云課堂 掃碼