Files
e-Book/6.Metabase與BI實戰入門:探索NBA數據背後的新視野/NBA games data/bi-sql.txt
T

291 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
資料分析的 View Point
****
1.球隊投籃命中率分析
對球隊的整體投籃命中率進行分析,區分兩分球、三分球和罰球命中率,通過雷達圖或餅圖來對比球隊的進攻效率,並與對手球隊進行比較。
2.球員得分趨勢分析
使用折線圖或柱狀圖分析球員每場比賽的得分變化趨勢,觀察球員的高峰與低谷時期。通過這些數據,可以預測球員在下一場比賽的表現走勢。
3.聯盟得分排行榜
顯示聯盟中場均得分最高的球員,按照得分由高到低進行排序,並且可以按照不同條件(如球員位置、場次數量)進行篩選。
>>>
某球團近10年平均每場得分趨勢
某球團某年度 1-12 月的平均每場得分趨勢
年度前10大進球王、籃板王、助攻王 >> sum(分數)
年度某球員1-12月份的得分(or 籃板)趨勢
全年度某球員的得分(or 籃板)趨勢
...
** NBA 球隊歷年年度總得分趨勢圖
** NBA 20xx 賽季指定球隊的場均數據
@@ 某年度 1-12 月的平均每場得分趨勢
洛杉磯湖人
金州勇士
Filter: SEASON + team_nick
** NBA 20xx 賽季年度進球前10名隊團
** NBA 20xx 賽季年度籃板前10名隊團
** NBA 20xx 賽季年度助攻前10名隊團
** NBA 20xx 賽季年度三分球前10名隊團
** NBA 球員歷年年度總得分趨勢圖
** NBA 20xx 賽季指定球員的場均數據
@@ 某年度 1-12 月的平均每場得分趨勢
LeBron James 洛杉磯湖人|小前鋒
Stephen Curry 金州勇士|控球後衛
Filter: SEASON + PLAYER_NAME
** NBA 20xx 賽季年度前10大進球王
** NBA 20xx 賽季年度前10大籃板王
** NBA 20xx 賽季年度前10大助攻王
** NBA 20xx 賽季年度前10大三分球王
>>>
*** Dashboard
成長曲線:追蹤球員或球隊在一個賽季中的表現變化,識別出漲勢或低谷期。
傷病分析:統計球員的上場時間與傷病情況,分析傷病對球員長期表現的影響。
*** 樞紐分析(維度)
某球團+依年度 的得分、籃板等統計
某球員+依年月 的得分、籃板等統計
Extra > Transfer > Load (ETL)
DW
============
game_full_record ETL 後的元資料
* 因為資料筆數較多,應該要整理多個 DW 以加快處理速度
> game_full_record >>> dw_player_statistics
> 以下應該都改取 dw, 可以出2份報表用來比對效能
* sum(PTS),sum(ABS)... group by team_id,player_id,年月
* 球員月平均得分等
> select team_nick,player_id,date_format(GAME_DATE_EST,"%Y%m") YM, count(team_nick) run_no,sum(PTS) PTS_SUM,sum(AST) AST_SUM,sum(REB) REB_SUM
from game_full_record where 1=1
group by team_nick,YM
order by 1,2,3
game_team_record
* sum(PTS),sum(ABS)... group by team_id,年月
* 球隊月平均得分等
> select team_nick,date_format(GAME_DATE_EST,"%Y%m") YM, count(team_nick) run_no,
sum(PTS) PTS_SUM,sum(AST) AST_SUM,sum(REB) REB_SUM,
sum(PTS)/count(team_nick) PTS_AVG,sum(AST)/count(team_nick) AST_AVG,sum(REB)/count(team_nick) REB_AVG
from game_team_record where 1=1
group by team_nick,YM
order by 1,2
*/
/*
全明細到 player 資料 View & Table (for compare performance)
*/
create view v_game_full_record AS
select
'home' gtype,
G.GAME_ID,
G.GAME_DATE_EST,
G.SEASON,
G.TEAM_ID_home TEAM_ID,T1.ABBREVIATION team_name,T1.NICKNAME team_nick,
D.PLAYER_ID,D.PLAYER_NAME,D.NICKNAME,
D.MIN, -- 上場分鐘數
D.FGM, -- 射門得分
D.FGA, -- 投籃出手數
D.FG_PCT, -- 投籃命中率
D.FG3M, -- 三分球命中
D.FG3A, -- 三分球出手數
D.FG3_PCT, -- 三分球命中率
D.FTM, -- 罰球命中
D.FTA, -- 罰球出手數
D.FT_PCT, -- 罰球命中率
D.OREB, -- 進攻籃板
D.DREB, -- 防守籃板
D.REB, -- 籃板球
D.AST, -- 助攻
D.STL, -- 抄截
D.BLK, -- 封蓋(火鍋)
D.`TO`, -- 失誤(Turnovers)
D.PF, -- 個人犯規(Personnal Foul)
D.PTS -- 得分(Number of points scored by the player)
from games G
left join games_details D on G.GAME_ID = D.GAME_ID and D.TEAM_ID = G.TEAM_ID_home -- 主隊
-- left join players p on D.PLAYER_ID = p.PLAYER_ID
left join teams T1 on T1.TEAM_ID = G.TEAM_ID_home -- 主隊
union all
select
'away' gtype,
G.GAME_ID,
G.GAME_DATE_EST,
G.SEASON,
G.TEAM_ID_away TEAM_ID,T2.ABBREVIATION team_name,T2.NICKNAME team_nick,
D.PLAYER_ID,D.PLAYER_NAME,D.NICKNAME,
D.MIN, -- 上場分鐘數
D.FGM, -- 射門得分
D.FGA, -- 投籃出手數
D.FG_PCT, -- 投籃命中率
D.FG3M, -- 三分球命中
D.FG3A, -- 三分球出手數
D.FG3_PCT, -- 三分球命中率
D.FTM, -- 罰球命中
D.FTA, -- 罰球出手數
D.FT_PCT, -- 罰球命中率
D.OREB, -- 進攻籃板
D.DREB, -- 防守籃板
D.REB, -- 籃板球
D.AST, -- 助攻
D.STL, -- 抄截
D.BLK, -- 封蓋(火鍋)
D.`TO`, -- 失誤(Turnovers)
D.PF, -- 個人犯規(Personnal Foul)
D.PTS -- 得分(Number of points scored by the player)
from games G
left join games_details D on G.GAME_ID = D.GAME_ID and D.TEAM_ID = G.TEAM_ID_away -- 客隊
left join teams T2 on T2.TEAM_ID = G.TEAM_ID_away -- 客隊
/*
全明細到 team 資料 View & Table (for compare performance)
*/
create view v_game_team_record AS
select
'home' gtype,
G.GAME_ID,
G.GAME_DATE_EST,
G.SEASON,
G.TEAM_ID_home TEAM_ID,
T1.ABBREVIATION team_name,
T1.NICKNAME team_nick,
-- team score
G.PTS_home PTS, -- 得分
G.FG_PCT_home FG_PCT, -- 投籃命中率
G.FT_PCT_home FT_PCT, -- 罰球百分比
G.FG3_PCT_home FG3_PCT, -- 三分球百分比
G.AST_home AST, -- 助攻
G.REB_home REB -- 籃板
from games G
left join teams T1 on T1.TEAM_ID = G.TEAM_ID_home -- 主隊
union all
select
'away' gtype,
G.GAME_ID,
G.GAME_DATE_EST,
G.SEASON,
G.TEAM_ID_away TEAM_ID,
T2.ABBREVIATION team_name,
T2.NICKNAME team_nick,
-- team score
G.PTS_away PTS, -- 得分
G.FG_PCT_away FG_PCT, -- 投籃命中率
G.FT_PCT_away FT_PCT, -- 罰球百分比
G.FG3_PCT_away FG3_PCT, -- 三分球百分比
G.AST_away AST, -- 助攻
G.REB_away REB -- 籃板
from games G
left join teams T2 on T2.TEAM_ID = G.TEAM_ID_away -- 客隊
/*
DW
球員每月比賽的統計數字
*/
dw_player_statistics
/*
球隊排行
*/
/*
球員排行
*/
從 NBA 球隊歷年年度總得分趨勢圖中,我們可以觀察出以下幾個重要資訊:
1. **球隊得分成長趨勢**:查看整體 NBA 的平均得分是否呈現增長或下降趨勢。例如,隨著比賽節奏、規則改變或是戰術趨勢的變化,整體聯盟的平均得分可能出現波動,反映出不同時期的比賽風格。例如,三分球比重增加、快速轉換進攻等可能會導致總得分上升。
2. **特定球隊的變化**:針對個別球隊來看,可以發現哪些球隊在特定時期得分表現顯著提升或下降。例如,當一支球隊進行大規模重建、引入新球星或改變教練策略時,得分表現可能出現顯著波動。這些變化可以從年度總得分的趨勢中窺探出。
3. **高峰與低谷**:觀察年度總得分的高峰和低谷。高峰可能出現在聯盟競爭激烈、明星球員輩出的年代,而低谷則可能與防守風氣興起或聯盟規則收緊相關。例如,90 年代 NBA 強調防守,所以得分較低;現今則重視進攻,得分普遍較高。
4. **規則變更的影響**:重大規則改變可能會影響球隊的年度得分,例如引入三分線、改變防守規則、或是限制區域防守。這些變化往往會改變比賽策略和節奏,進而影響球隊的年度總得分。
5. **聯盟風格的變遷**:過去 NBA 比賽較慢節奏,偏重防守;近年來,許多球隊強調快節奏和進攻,這種風格變遷可以從得分趨勢中觀察到。當聯盟逐步向更具觀賞性的進攻打法發展時,年度總得分通常也會增加。
### 主要觀察重點
- **時間軸上的波動**:某些年份是否有明顯的分數波動,找出原因。
- **球隊或聯盟層級的變動趨勢**:識別哪些球隊表現突出,是否有因人事或戰術改變而使得得分顯著增長的例子。
- **得分規律的變遷**:例如,隨著三分球數據崛起,得分模式和球隊間差異的變化。
從 NBA 某一賽季中指定球隊的場均數據,我們可以觀察出以下幾個重點:
1. **進攻效率**
- **場均得分**Points per Game, PPG)是進攻效率的重要指標,顯示球隊的得分能力。
- **場均助攻**Assists per Game, APG):反映球隊的配合和進攻組織能力,助攻數高通常意味著球隊進攻流暢、團隊合作良好。
- **場均三分命中數與命中率**:現代 NBA 非常重視三分球,這項數據顯示球隊的外線威脅程度及命中效率。
2. **防守能力**
- **場均失分**Points Allowed per Game, PA):顯示球隊防守端的表現,失分少的球隊通常擅長防守和壓制對手得分。
- **場均抄截與阻攻**:反映球隊的防守積極性及破壞對方進攻的能力,抄截數高意味著防守壓迫性強,阻攻數高則代表對禁區的防守能力。
3. **籃板掌控力**
- **場均籃板數**Rebounds per Game, RPG):包括進攻籃板和防守籃板,這項數據直接影響球隊的進攻和防守次數。進攻籃板多意味著球隊在錯失投籃後能爭取到更多的二次得分機會,而防守籃板多則限制對手的二次得分。
- **場均進攻籃板**Offensive Rebounds per Game, ORPG)與**場均防守籃板**Defensive Rebounds per Game, DRPG):區分籃板數據可以看出球隊在進攻和防守兩端的掌控力。
4. **球員效率和出手選擇**
- **場均投籃命中率**Field Goal Percentage, FG%)、**三分命中率**Three-Point Percentage, 3P%)、和**罰球命中率**Free Throw Percentage, FT%):這些數據反映球隊的整體進攻效率和得分穩定性。高命中率意味著球隊能有效把握得分機會。
- **場均出手數**:反映球隊的進攻節奏和風格,出手次數高的球隊通常打得更快。
5. **失誤控制**
- **場均失誤數**Turnovers per Game, TO):失誤控制是比賽勝負的關鍵之一,失誤數低表示球隊在進攻時更謹慎,不容易給對手快速反擊的機會。
6. **進攻節奏**
- **場均出手速度與比賽節奏**(Pace):比賽節奏決定了球隊打得是快速進攻(如跑轟戰術)還是穩健的進攻策略。高節奏通常意味著更頻繁的出手和高比分。
### 主要觀察重點
- **進攻與防守的平衡性**:對比場均得分與失分來分析球隊的攻防是否均衡。
- **效率數據的穩定性**:例如投籃命中率、罰球命中率等,這些數據能夠穩定的球隊通常在得分上具備穩定性。
- **核心戰術特點**:例如,三分球佔比高的球隊多半偏愛外線進攻,而場均籃板高的球隊多半有強勁的內線保護。
- **失誤與節奏控制**:尤其在關鍵時刻,控制失誤的能力與節奏能大幅提升球隊的競爭力。
觀察 NBA 某一賽季的年度前10大進球王,可以得出以下幾個重點:
1. **得分手段**
- **場均得分**Points per Game, PPG):是進球王的重要指標,數據越高顯示其在得分端的主導性。前10大進球王的場均得分可以顯示出當季頂尖球員的得分標準。
- **投籃分佈**:觀察這些球員是依靠三分球、中距離、還是禁區得分,能看出每位進球王的得分風格。例如,內線得分比例高的球員可能偏向禁區進攻,而三分出手高的球員則可能是射手型。
2. **效率**
- **投籃命中率**Field Goal Percentage, FG%):得分高但效率低,可能代表球員有大量出手但命中不穩。反之,得分和效率都高的球員代表其進攻能力極強,能高效轉化出手為得分。
- **三分命中率**與**罰球命中率**:這些數據顯示球員的進攻穩定性和全面性。三分命中率高意味著外線威脅大,罰球命中率高則代表該球員在關鍵時刻的穩定性。
3. **進攻多樣性與破壞力**
- **場均出手數**Field Goals Attempted per Game, FGA):觀察出手數和得分之間的關係,可以分辨出這些球員是否通過大量出手來取得高得分,或是少量出手也能有效率地得分。
- **罰球次數**Free Throws Attempted, FTA):高罰球次數的球員通常是進攻破壞力強、善於造犯規的球員,能頻繁突破對手防線並製造犯規。
4. **比賽節奏與出場時間**
- **出場時間**Minutes per Game, MPG):出場時間較多的球員通常會有較多得分機會,但若在有限的上場時間內仍能保持高得分,則表示其進攻效率極高。
- **比賽節奏影響**:在快節奏球隊中的球員通常會有更多得分機會,反映在得分數據中。
5. **角色與戰術定位**
- 進球王們所扮演的角色也能影響得分方式。比如控球後衛的得分多以三分球和突破為主,而內線球員則以禁區得分為主。這些進球王的角色定位能反映當季聯盟的戰術趨勢。
6. **球隊依賴性與帶隊表現**
- **得分佔比**:觀察這些球員在各自球隊中的得分佔比,可以看出球隊對其得分的依賴程度,進而判斷該球員的主導性。
- **比賽結果的影響**:這些高得分球員是否能有效帶領球隊贏得比賽。如果高得分和球隊勝率呈正相關,代表該球員的得分對球隊有積極影響。
### 主要觀察重點
- **得分與效率的平衡**:高得分但效率一般的球員是否比高效得分手更受青睞?
- **得分手段的多樣性**:球員得分的多樣性顯示其適應性,如能否應對防守壓力、突破重圍。
- **與聯盟趨勢的對應**:例如當季是否強調外線投射或快節奏,並觀察進球王們如何順應這種趨勢。