儀表板範例 https://community.fabric.microsoft.com/t5/Data-Stories-Gallery/bd-p/DataStoriesGallery
PowerBI增益集-Microsoft PowerBI / Web Viewer
管理員開啟PowerBI 發行至WEB選項
下載視覺效果(須登入帳號) https://appsource.microsoft.com/en-us/marketplace/apps?page=1&src=office&product=power-bi-visuals
Lookup表(維度表)-交易表&數據表(事實表)-資料表
關聯的重要性
https://workspace.google.com/marketplace/app/formlimiter/538161738778
https://workspace.google.com/marketplace/app/form_notifications/573009629797
https://workspace.google.com/marketplace/app/form_ranger/387838027286
=IF(C2<D2,B2,"")
=IF(C3<D3,B3,"名額已額滿,後續報名將以候補方式等候遞補")
若要使用上面的資料來源,請將網址複製後再貼至文字檔中,再複製回PowerBI
圖示
1.先點選檔案,選擇在Excel Online中開起
2.於Excel Online中,點選[檔案]>[共用]>[內嵌],複製內嵌程式碼
4.於PowerBI中,選擇以WEB匯入,將紅色區段貼上後,將其中embed改為download,後段加上&app=Execl
5.確定後,即將資料匯入
https://onedrive.live.com/download?resid=AAXXXX @&authkey=AAXXXXXXX&em=x&app=Excel
內嵌程式碼範例:
> iframe width="402" height="346" frameborder="0" scrolling="no" src="https://onedrive.live.com/**embed**?resid=A7ABFC95198FF0DA%2111116&authkey=%21AKuCgRAJMDMdWHU&em=2&wdAllowInteractivity=False&wdHideGridlines=True&wdHideHeaders=True&wdDownloadButton=True&wdInConfigurator=True"></iframe
PowerBI中
https://onedrive.live.com/download?resid=A7ABFC95198FF0DA%2111116&authkey=%21AKuCgRAJMDMdWHU&em=2&app=excel
2.於Excel中,點選[檔案]>[資訊]>[複製路徑]
3.於PowerBI的查詢中,以web方式查詢,並貼上路徑
https://gesoft-my.sharepoint.com/personal/jocker229_gesoft_onmicrosoft_com/Documents/問卷.xlsx?web=1
** 此時要將網址後端的 ?web=1刪除
4.點選確定後即可匯入資料進來
5.若有更新資料,重新整理即可匯入
將問卷回覆匯入 Google 試算表,表單應用更彈性
不會程式沒關係!SurveyCake 手把手教學,讓你三分鐘就上手
但必須是Pro版本
https://blog.surveycake.com/survey-google-sheets-d9d97572b40c
Data Analysis Expressions
數據分析表達式
幫助您從模型中的原始資料建立新資料出來。
Excel公式引用為儲存格(A1),而DAX公式直接引用某張表中的某欄名稱
例如
銷售量=sum ('銷售表'[數量])
欄位名稱= 運算式
'資料表'[欄位]
related(要傳回的欄位)
傳回另一個表中的相關值,類似Vlookup
類似Query中的合併查詢,但只能針對單一欄位合併且必須建立起關聯性
行式儲存資料表(Column-based Storage)
有時候在樞紐分析表或是POWER BI,原有的資料如果不能滿足我們的需要,就需要建立新的資料行以及量值。
但 建立前先認識一下資料行與量值
名稱 | 說明 |
---|---|
資料行 | 必須存在表中 |
量值 | 以公式形式存在,不使用時不佔用記憶體 |
撰寫DAX時先了解到以下的基本概念
能被計算的數值,文字是不能被計算(除了計數),建議先確定好資料型態
雙線的打法
averagex(資料表, 運算式)
1_平均成本_averagex = averagex('交易資料','交易資料'[成本_單價]*'交易資料'[數量])
1_平均售價_averagex = averagex('交易資料','交易資料'[單價]*'交易資料'[數量])
countrows(資料表)
1_筆數_countrows = countrows('交易資料')
小備註:
迭代函數-X系列函數
https://www.powerbigeek.com/aggregate-x-functions/
sumx(資料表, 運算式)
1_售價_sumx = sumx('交易資料','交易資料'[單價]*'交易資料'[數量])
1_成本_sumx = sumx('交易資料','交易資料'[成本_單價]*'交易資料'[數量])
所有語法均須以半形輸入
成本_小計 = '交易資料'[成本_單價]X'交易資料'[數量]
售價小計 = '交易資料'[單價]X'交易資料'[數量]
成本_單價 = RELATED('商品資料'[成本單價])
單價 = RELATED('商品資料'[單價])
回收獎勵金 = '交易資料'[數量] * 3
單價 = RELATED('商品資料'[單價])
成本_單價 = RELATED('商品資料'[成本單價])
售價小計 = '交易資料'[單價] * '交易資料'[數量]
成本_小計 = '交易資料'[成本_單價] * '交易資料'[數量]
銷售筆數 = CALCULATE( COUNT('銷售'[單位價格]) , '銷售'[單位價格]>10 )
銷售筆數 = CALCULATE( 計算器 , 篩選器1 ,... )
calculate(計算器, 篩選器[, 篩選器2][, 篩選器3])
2_大筆_售價 = calculate('交易資料'[1_售價_sumx], '交易資料'[數量]>=50)
2_大筆_筆數 = calculate('交易資料'[1_筆數_countrows], '交易資料'[數量]>=50)
使用篩選條件時,可搭配使用calculate函數將運算式套上篩選條件後,計算出符合條件的結果,這組合可以想像成Excel的Countif
當有多個篩選準則時,可以使用和 (&&) 邏輯運算子來評估它們,這表示所有條件都必須是 TRUE,或是由或 (| |) 邏輯運算子,表示任一個條件都可以是 true。
若要用三個以上要使用 in {A,b,c,d} 。
簡單地說在計算中套用一個或多個篩選來決定結果或值。
in = CALCULATE([銷售量],
'產品表'[咖啡種類] in {"拿鐵","美式","卡布奇諾"})
若有特別要求,量值必須要限定資料行,若是要新增資料行,使用當前表中的資料行,則不受限
正確的寫法=CALCULATE([銷售量],'產品表'[咖啡種類]="拿鐵")
錯誤的寫法=CALCULATE([銷售量],[咖啡種類]="拿鐵")
但若是量值要引用已建立的量值,則可以不限定資料表,且量值不是依附於表而存在的,可以放在任意表的下面。
可使用Alt+Enter or Shift+Enter來分隔公式
樞紐分析表中可以藉由欄和列標籤的篩選按鈕以及交叉分析篩選器來套用篩選內容
那在 DAX 中可以使用 ALL, RELATED, FILTER, CALCULATE 和其他量值和資料行 等來進行篩選。
名稱 | 內容 | 範例 |
---|---|---|
ALL | 忽略所有套用的篩選後傳回所有資料列或是資料行的所有值 | =ALL(<table> ) =ALL(<table>,<table>[<column>],<table>[<column>],...) |
FILTER | 篩選表格中符合條件的資料列 *** 通常搭配整個資料表進行運算的公式 | = FILTER(<table>,<filter>) |
忽略所有套用的篩選條件(刪除篩選條件,擴大篩選範圍)
ex: All銷售量 = calculate( [銷售量],all('銷售數據表'))
引用的資料行必須來自同一張表,若要多張來源,就要用all(),all(),all()…
all(資料表)
3_售價_all = calculate('交易資料'[1_售價_sumx], all('交易資料'))
3_成本_all = calculate('交易資料'[1_成本_sumx], all('交易資料'))
3_大筆_售價_all = calculate('交易資料'[1_售價_sumx], filter('交易資料','交易資料'[數量]>=50), all('交易資料'))
或是
3_大筆_售價_all = CALCULATE('交易資料'[1_售價_sumx],'交易資料'[數量]>=50,all('交易資料'))
除了指定列之外,清除篩選條件,也就是「除…之外」
ex: Allexcept = calculate([銷售量]
,allexcept('產品表','產品表'[杯型])
)
杯型對資料篩選有影響,而其他不會對資料篩選有影響
對表中所顯示的篩選條件執行清除篩選,而其他篩選條件皆保留
sum公式回傳來得全部總和,那如何針對個別項目加總?
篩選器函數,無法單獨使用,通常與Calculate搭配,也可以與某些彙總函數搭配
例如 Countrows(Filter(資料表,篩選條件))來計算表的列數(筆數)
篩選表格中符合條件的資料列
FILTER('表',篩選條件)
何時會用到? 因之前的Calculate的條件只能針對固定值 (>10;=10;<>10 ..etc)
若要進一步判定就需用到Filter函數。
(可偵測資料行、量值、公式)
過濾 => CALCULATE('銷售'[加總],FILTER('銷售','銷售'[銷售數量]>10))
判定 => CALCULATE('銷售'[加總],FILTER('銷售','銷售'[銷售數量]>'銷售'[銷售目標]))
filter(資料表,篩選器)
2_大筆_售價 = calculate('交易資料'[1_售價_sumx], filter('交易資料','交易資料'[數量]>=50))
isfiltered('交易資料'[店家名稱])
判斷有無篩選
4_分店名_卡片 = if(isfiltered('交易資料'[店家名稱]),VALUES('交易資料'[店家名稱]),"未篩選")
4_分店營業額_卡片 = if(isfiltered('交易資料'[店家名稱]),'交易資料'[1_售價_sumx],"未篩選")
3_目標值 = {一個固定值, Ex: 300000}
在使用這些公式前,需要先定義日期資料表
還有兩條限制
1. 必須為唯一值
2. 資料必須為連續值,不可有間隔
–> 除非日期資料有符合限制的條件,才考慮使用日期智慧範圍
名稱 | 功用 |
---|---|
PREVIOUSDAY | 傳回前一日 |
PREVIOUSMONTH | 傳回前一月 |
PREVIOUSQUARTER | 傳回前一季 |
PREVIOUSYEAR | 傳回前一年 |
https://docs.microsoft.com/zh-tw/dax/parallelperiod-function-dax
PARALLELPERIOD(<dates>,<number_of_intervals>,<interval>)
8_上期_年 = CALCULATE('交易資料'[1_售價_sumx],PARALLELPERIOD('交易資料'[日期].[Date],-1,YEAR))
8_季度_上期 = CALCULATE('交易資料'[1_售價_sumx],PARALLELPERIOD('交易資料'[日期].[Date],-4,QUARTER))
8_月_上期 = CALCULATE('交易資料'[1_售價_sumx],PARALLELPERIOD('交易資料'[日期].[Date],-12,MONTH) )
parallelperiod(日期,間隔數(可為負),間隔)
8_年度_上期 = calculate('交易資料'[1_售價_sumx], parallelperiod('交易資料'[日期].[Date],-1,year))
8_季度_上期 = calculate('交易資料'[1_售價_sumx], parallelperiod('交易資料'[日期].[Date],-4,quarter))
8_月_上期 = calculate('交易資料'[1_售價_sumx], parallelperiod('交易資料'[日期].[Date],-12,month))
營收成長率的計算方式,可以分為:營收年增率(YoY)、營收季增率(QoQ)、營收月增率(MoM)。
主要是將目前的總收入與某一時期(月、季、年)來進行比較,可以使不同公司(尤其是同行或市場中)之間的比較更容易,常用來衡量一間公司的成長與發展
=(當年營收-去年營收)/去年營收x100%
=當季營收-上季營收)/上季營收x100%
=(當月營收-上月營收)/上月營收100%
YoYYoY年增長率(Year-on-year percentage,YoYYoY),是指當期的數據較去年同期變動多少,例如:甲公司今年11月營收115億元,去年11月營收為100億元,則營收YoY為15%
去(前)年同期都算YoY
其中,年營收有時候會用近四季營收合來計取代,年營收成長率和淨利成長率不一定相同,從季營收YoY來評估企業成長,因為年營收一年才能看一次,一般我們會使用季營收YoY來評估近期成長。
3_20201101_20211031 = CALCULATE('交易資料'[0_sumx],DATESBETWEEN('交易資料'[日期],"2020/11/1","2021/10/31"))
=(當年營收-去年營收)/去年營收x100%
=當季營收-上季營收)/上季營收x100%
與去年同期的季比較
=(當月營收-上月營收)/上月營收100%
與去年同期的月比較
6_營收年增率 = ('交易資料'[6_2021年度]-'交易資料'[6_2020年度])/'交易資料'[6_2020年度]
6_2021年度 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2021)
6_2020年度 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2020)
6_4月YoY = ('交易資料'[6_2021-4月]-'交易資料'[6_2020-4月])/'交易資料'[6_2020-4月]
6_2021-4月 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2021,'交易資料'[月]=4)
6_2020-4月 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2020,'交易資料'[月]=4)
6_第一季YoY = ('交易資料'[6_2021年度第一季]-'交易資料'[6_2020年度第一季])/'交易資料'[6_2020年度第一季]
6_2021年度第一季 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2021,'交易資料'[季]=1)
6_2020年度第一季 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2020,'交易資料'[季]=1)
或是
6_2021年度第一季 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2021,'交易資料'[月]<4)
6_2020年度第一季 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2020,'交易資料'[月]<4)
5_202101 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2021,'交易資料'[月]=1)
5_202001 = calculate('交易資料'[1_售價_sumx], '交易資料'[年度]=2020,'交易資料'[月]=1)
https://www.itsfun.com.tw/達成率/wiki-422322
if(條件,則,則) 第二個則可以省略,即傳回空值
switch 多條件
實例:
switch = switch(TRUE(),
'1-4月'[地區]="新北","北區",
'1-4月'[地區]="台中","中區",
'1-4月'[地區]="桃園","北區",
'1-4月'[地區]="上海","大陸",
"")
另一寫法 = switch('1-4月'[地區],"新北","北區","台中","中區","桃園","北區","")
區域 = switch(TRUE(),
'店家資料'[縣市]="台北市", "北區",
'店家資料'[縣市]="新北市", "北區",
'店家資料'[縣市]="台中市", "中區",
"南區"
或是
區域 = switch('店家資料'[縣市],
"台北市", "北區",
"新北市", "北區",
"台中市", "中區",
"南區"
小技巧:shift + enter 可以維持縮排
縣市2 = if('店家資料'[縣市]="高雄市", "Kaohsiung", '店家資料'[縣市])
餐點滿意度文字 = SWITCH(TRUE(),
'表單回應 1'[餐點滿意度]=1,"非常不滿意",
'表單回應 1'[餐點滿意度]=2,"不滿意",
'表單回應 1'[餐點滿意度]=3,"尚可",
'表單回應 1'[餐點滿意度]=4,"滿意","非常滿意")
課程滿意度文字 = SWITCH(TRUE(),
'表單回應 1'[課程滿意度?]=1,"非常不滿意",
'表單回應 1'[課程滿意度?]=2,"不滿意",
'表單回應 1'[課程滿意度?]=3,"尚可",
'表單回應 1'[課程滿意度?]=4,"滿意",
"非常滿意")
另一寫法
課程滿意度另一寫法 = SWITCH('表單回應 1'[課程滿意度?],
1,"非常不滿意",
2,"不滿意",
3,"尚可",
4,"滿意",
"非常滿意")
DAX進階
Profits YoY% Shape = IF([Profits YoY%]>0,UNICHAR(9650),UNICHAR(9660))
https://www.dotblogs.com.tw/RYNote/2021/01/18/172048
視覺篩選器:所選的物件
頁面篩選器:整個頁面
報表篩選器:整個Pbix
燕秋老師教學頻道-FB https://www.facebook.com/Hyonith2014/
燕秋老師教學頻道-YT https://www.youtube.com/燕秋老師教學頻道