| Version 2 (modified by , 5 hours ago) ( diff ) |
|---|
2A: DDL
2B: Полнење на табели со податоци
Преземањето и интеграцијата на податоците од надворешни извори е реализирано преку Python ETL скрипта, поради потребата од посложена обработка, трансформација и усогласување на податоците. Од друга страна, податоците кои не постојат во изворите се целосно синтетички генерирани преку SQL скрипти.
ETL скрипта
- seeding_script.py: ETL скрипта во која се извршуваат три pipelines за да се пополни базата. Изворите се CSV/JSON датотеки:
- Од StatsBomb се превземаат Match, Lineup и Event (со тоа и Event_type и Event_attribute). Полиња што изворот ги нема се генерираат: Player.date_of_birth, Stadium.capacity, Stadium.year_built. Coach_assignment не се дадени директно во изворот, скриптата ги пресметува датумите така што се собираат прво информациите за Coach на тимовите поединично (по натпревар) и потоа според датумите на натпреварите се прави проценка на почетокот и крајот на еден договор (Coach_assignment).
- football-data додава коефициенти и судии. Се откриваат bookmaker тројки (на пр. B365H/B365D/B365A - B365 е bookmaker, додека H,D,A се коефициентите за да победи домашниот тим, нерешено или гостинскиот тим соодветно). За секој ред се барa постоечки натпревар од StatsBomb, ако нема — се прескокнува. Реалните коефициенти се запишуваат, а потоа за секој натпревар се пресметуваат просечни веројатности (1/odds преку букмејкери), па се синтетизира серија „Generated" на секои 10 минути од натпреварот( финалниот SB-резултат се распределува линеарно низ 90 минути и веројатностите се поместуваат пропорционално на тековната голова разлика). Судиите добиваат генерирани датуми на раѓање и држави бидејќи овие податоци не се достапни во изворот.
- Transfermarkt ги полни трансферите и валуациите за играчите кои се веќе внесени од StatsBomb.
SQL скрипти
За некои од табелите нема никакви информации, па тие се генерираат одделно преку SQL скрипти:
- seat_generator.sql: Генерира седишта (Seat) според капацитетот на стадионот.
- ticket_generator.sql: Се избира случаен fill_rate за секој натпревар и според тоа се пресметуваат зафатените седишта за кои се издадени билети (Ticket).
- contract_generator.sql: Генерира договори за играчи (Player_contract) според Lineup и Match табелите.
- sponsor_generator.sql: Прво вметнува 24 компании (Sponsor), а потоа ги доделува на тимовите, така што секој тим во една сезона има 1-3 спонзори (Sponsor_deal).
Погледи (Views)
vw_head_to_head— Head‑to‑head по пар (2 тима): број на меѓусебни средби, победи/нерешени/порази, вкупно голови, датум на последен меѓусебен средба и резултатот од истата.vw_season_overview— Сезонски преглед по (дивизија, сезона): вкупно натпревари/голови, просек голови по меч, најголема голова разлика, најмногу комбинирани голови во еден меч и просечна посета (скенирани билети).vw_utilization— Искористеност на стадион по сезона: натпревари, капацитет × натпревари (понуда на седишта), издадени/скенирани билети, процент на скенирање, искористеност (sell‑through) просечна цена и вкупен приход од билети.vw_match_summary— Една редица по натпревар со основни податоци (сезона/дивизија, тимови, стадион, судија) и агрегати од табелата Event: резултат и картони (жолти/црвени/вкупно).vw_team_season_table— Табела по (сезона, тим): одиграни, победи/нерешени/порази, дадени/примени, гол-разлика и бодови, пресметано од резултатите по натпревари.vw_player_season_stats— Статистика по (играч, сезона) за тимот во кој имал најмногу настапи: настапи/стартерски/влегувања, проценка на минути, голови, асистенции и жолти/црвени картони.
Attachments (7)
- seeding_script.py (55.5 KB ) - added by 5 hours ago.
- ddl.sql (14.6 KB ) - added by 5 hours ago.
- views.sql (17.6 KB ) - added by 5 hours ago.
- contract_generator.sql (5.1 KB ) - added by 5 hours ago.
- seat_generator.sql (1.2 KB ) - added by 5 hours ago.
- sponsor_generator.sql (5.3 KB ) - added by 5 hours ago.
- ticket_generator.sql (1.7 KB ) - added by 5 hours ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.
