相關資料與結果:mysql
連接:https://pan.baidu.com/s/1bUKxYVmm1x5mpjpwetR2dQ
sql
本次案列的數據是來自某餐飲數據的日銷售狀況,基於已經提供的數據,須要在excel中作一個各個店面的分析儀,其KPI 指標相關以下:數據庫
該問題的難點仍是在於表之間的邏輯關係,以及相關業務知識。總之大體的效果要作成以下:spa
數據表一共有三張,包括:bill orderdetail shopdetail3d
他們的表結構以下:excel
而咱們的目的是得到不一樣店面的數據狀況,上面的三張表是不能知足這樣狀況的,因此我選擇先在MySQL中進行數據加工,再用Excel中利用power pivot生成數據透視表和數據透視圖,code
固然還有其餘一些操做,總體動態圖的展示等。blog
在MySQL中先創建 庫 MySQL_powerBI three
create database mysql_powerbi; use mysql_powerbi; -- Bill table create table Bill( billdate date not null, billnumber varchar(20) not null default '-', shopname varchar(20) not null default '-', billdiscount float not null default 0, paytime time not null, tablenumber int not null default 0, peoplecount int not null default 0 ); #導入數據 load data local infile 'D:/mysql_powerBI/data/-bill.csv' into table Bill fields terminated by ','; select * from Bill;
表 Bill 的狀況以下圖,一共有 682 行
-- OrderDetail table create table OrderDetail( billnumber varchar(20) not null default '-', detail varchar(20) not null default '-', pay int not null default 0 ); #導入數據 load data local infile 'D:/mysql_powerBI/data/-order.csv' into table OrderDetail fields terminated by ','; select * from OrderDetail;
表 OrderDetail 共有 3410 行,以下:圖片
-- ShopDetail table create table ShopDetail( ShopName varchar(20) not null default '-', twotable int not null default 0, threetable int not null default 0, fourtable int not null default 0, alltable int not null default 0 ); #導入數據 load data local infile 'D:/mysql_powerBI/data/-shop.csv' into table ShopDetail fields terminated by ','; select * from ShopDetail;
表 ShopDetail 共有 5 行,以下:
在確保上面的步驟無誤後,接下來進入數據加工階段,獲得咱們想要的數據
在進行數據加工以前必需要很是清楚的理解各表結構信息,否則根本沒有辦法作!通常來講,我都會畫一個表之間的鏈接關係來幫助本身進行數據處理,看看每一個表是怎麼來的
以orderdetail表的billnumber字段爲彙總依據,求出每條billnumber下pay的加總值。
新表字段:billnumber(單號)、pay(金額)
-- 數據加工 -- 建立單彙總金額表 Create table OrderGroup( select billnumber, sum(pay) as pay from OrderDetail group by billnumber ); select * from OrderGroup;
結果共682行,以下:
以billnumber爲關鍵字段關聯兩表,將OrderGroup表中的pay字段合併到Bill表中,並使用pay與billdiscount字段計算出折扣金額。
新表字段:全部Bill表中的字段、pay(金額)、rebate(折扣金額)
計算邏輯:Rebate = pay * billdiscount
-- 建立新單號詳細表 Create table NewBill( select b.*,o.pay,b.billdiscount * o.pay as rebate from bill as b left join ordergroup as o on b.billnumber = o.billnumber); select * from NewBill;
結果共682行 ,以下:
在原有shopdetail表字段基礎上計算並添加allseats字段
新表字段:全部ShopDetail表中的字段、allseats(總座位數)
計算邏輯:allseats = twotable * 2 + three * 3 + fourtable * 6 (這裏四人桌(含)都乘以6,你能夠理解爲過道也能夠坐人....)
-- 建立新店面狀況表 create table NewShopDetail( select *, (twotable * 2 + threetable * 3 + fourtable * 6) as allseats from shopdetail as s); select * from NewShopDetail;
結果共有5行,以下:
以billnumber爲關鍵字段關聯兩表,並用Bill表中的shopname與OrderDetail表中的全部字段組成新表
新表字段:shopname(店名)、OrderDetail表中的全部字段
-- 建立新點菜明細表 create table neworderdetail( select b.shopname,o.* from orderdetail as o left join bill as b on o.billnumber = b.billnumber ); select * from neworderdetail;
結果共有3410行,以下:
以shopname字段爲關鍵字段關聯兩表,並以shopname字段爲彙總條件,建立如下字段
新表字段:
店名: b.shopname
單數: b.billnumber的計數
人數: b.peoplecount的加總
折扣總金額: b.rebate的加總
店彙總金額: b.pay的加總
單均消費: b.pay的合計值/b.billnumber的計數值
人均消費: b.pay的合計值/b.peoplecount的合計值
總檯數: s.alltable
總座位數: s.allseats
翻檯率: b.billnumber的計數值/s.alltable
上座率: b.peoplecount的合計值/s.allseats
折扣率: b.rebate的合計值/b.pay的合計值
-- 建立店彙總信息表 create table ShopTotal( select b.shopname as 店名, count(b.billnumber) as 單數, sum(b.peoplecount) as 人數,sum(b.rebate) as 折扣總金額,sum(b.pay) as 店彙總金額, sum(b.pay)/count(b.billnumber) as 單均消費, sum(b.pay)/sum(b.peoplecount) as 人均消費, s.alltable as 總檯數, s.allseats as 總座位數, count(b.billnumber)/s.alltable as 翻檯率, sum(b.peoplecount)/s.allseats as 上座率, sum(b.rebate)/sum(b.pay) as 折扣率 from newbill as b left join newshopdetail as s on b.shopname = s.shopname group by b.shopname); select * from shoptotal;
結果共 5 行,完整以下:
基於mysql 的數據加工到這裏就完成了,在保證上面沒有問題的狀況下,接下來利用Excel 鏈接MySQL,將數據表導入power pivot進行數據透視表和數據透視圖的製做。
新建空白表格——數據——新建鏈接——從數據庫——從MySQL數據庫,在彈出的窗口中這樣填
肯定,彈出如下窗口,選擇 newbill neworderdetail shoptotal 三張表
在 加載 出下拉,選着 加載到
加載 完成後,進入excel界面,點擊 power pivot——管理數據模型——關係圖視圖
a: newbill 的 shopname 鏈接到 shoptotal 的 店名
b: neworderdetail de shopname 鏈接到 shoptotal 的 店名
返回到 數據視圖,在表 shoptotail 裏,計算以下兩個式子,目的是爲了創建 門店各自銷售金額與總的平均銷售金額的KPI
選中 門店各自銷售金額 ——建立kpi——度量值(門店總的平均銷售金額)———修改數值——肯定
接下來建立數據透視表,數據透視表下拉,選中數據透視表,建立以下數據透視表
在利用 複製,粘貼爲圖片鏈接到另外一張工做表,以下:
再來建立一個數據透視表,這裏以detail 分組,值爲 pay 更名 銷售額 和 billnumber 更名 銷量
建立數據透視圖:在newbill 表裏,以paytime小時分組,值是pay和billnumber,選擇組合圖,billnumber 用折線圖,添加第二座標,我是比較喜歡黑色,整理以下:
再把上面的第二個數據透視表,作成餅狀的數據透視圖
最後插入 切片器,選着 shoptotal[店名],鏈接全部的數據透視表 數據透視圖
最後檢驗一下,在切片器裏點擊 北新橋店, 結果以下:
在點擊 亞運村店, 結果以下:
經檢驗,沒有問題,到此保存,結束!
相關資料與結果: