0.4.1: L2ver2 finished

This commit is contained in:
2026-01-24 00:43:05 +08:00
parent 879f63302c
commit 1deda4393c
8 changed files with 1277 additions and 271 deletions

Binary file not shown.

View File

@@ -12,7 +12,67 @@ CREATE TABLE IF NOT EXISTS dim_players (
domain TEXT,
created_at INTEGER, -- Timestamp
updated_at INTEGER, -- Timestamp
last_seen_match_id TEXT -- To track when this info was last updated
last_seen_match_id TEXT,
uuid TEXT,
email TEXT,
area TEXT,
mobile TEXT,
user_domain TEXT,
username_audit_status INTEGER,
accid TEXT,
team_id INTEGER,
trumpet_count INTEGER,
profile_nickname TEXT,
profile_avatar_audit_status INTEGER,
profile_rgb_avatar_url TEXT,
profile_photo_url TEXT,
profile_gender INTEGER,
profile_birthday INTEGER,
profile_country_id TEXT,
profile_region_id TEXT,
profile_city_id TEXT,
profile_language TEXT,
profile_recommend_url TEXT,
profile_group_id INTEGER,
profile_reg_source INTEGER,
status_status INTEGER,
status_expire INTEGER,
status_cancellation_status INTEGER,
status_new_user INTEGER,
status_login_banned_time INTEGER,
status_anticheat_type INTEGER,
status_flag_status1 TEXT,
status_anticheat_status TEXT,
status_flag_honor TEXT,
status_privacy_policy_status INTEGER,
status_csgo_frozen_exptime INTEGER,
platformexp_level INTEGER,
platformexp_exp INTEGER,
steam_account TEXT,
steam_trade_url TEXT,
steam_rent_id TEXT,
trusted_credit INTEGER,
trusted_credit_level INTEGER,
trusted_score INTEGER,
trusted_status INTEGER,
trusted_credit_status INTEGER,
certify_id_type INTEGER,
certify_status INTEGER,
certify_age INTEGER,
certify_real_name TEXT,
certify_uid_list TEXT,
certify_audit_status INTEGER,
certify_gender INTEGER,
identity_type INTEGER,
identity_extras TEXT,
identity_status INTEGER,
identity_slogan TEXT,
identity_list TEXT,
identity_slogan_ext TEXT,
identity_live_url TEXT,
identity_live_type INTEGER,
plus_is_plus INTEGER,
user_info_raw TEXT
);
CREATE INDEX IF NOT EXISTS idx_dim_players_uid ON dim_players(uid);
@@ -38,12 +98,67 @@ CREATE TABLE IF NOT EXISTS fact_matches (
server_ip TEXT,
server_port INTEGER,
location TEXT,
has_side_data_and_rating2 INTEGER,
match_main_id INTEGER,
demo_url TEXT,
game_mode INTEGER,
game_name TEXT,
map_desc TEXT,
location_full TEXT,
match_mode INTEGER,
match_status INTEGER,
match_flag INTEGER,
status INTEGER,
waiver INTEGER,
year INTEGER,
season TEXT,
round_total INTEGER,
cs_type INTEGER,
priority_show_type INTEGER,
pug10m_show_type INTEGER,
credit_match_status INTEGER,
knife_winner INTEGER,
knife_winner_role INTEGER,
most_1v2_uid INTEGER,
most_assist_uid INTEGER,
most_awp_uid INTEGER,
most_end_uid INTEGER,
most_first_kill_uid INTEGER,
most_headshot_uid INTEGER,
most_jump_uid INTEGER,
mvp_uid INTEGER,
response_code INTEGER,
response_message TEXT,
response_status INTEGER,
response_timestamp INTEGER,
response_trace_id TEXT,
response_success INTEGER,
response_errcode INTEGER,
treat_info_raw TEXT,
round_list_raw TEXT,
leetify_data_raw TEXT,
data_source_type TEXT CHECK(data_source_type IN ('leetify', 'classic', 'unknown')), -- 'leetify' has economy data, 'classic' has detailed xyz
processed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_fact_matches_time ON fact_matches(start_time);
CREATE TABLE IF NOT EXISTS fact_match_teams (
match_id TEXT,
group_id INTEGER,
group_all_score INTEGER,
group_change_elo REAL,
group_fh_role INTEGER,
group_fh_score INTEGER,
group_origin_elo REAL,
group_sh_role INTEGER,
group_sh_score INTEGER,
group_tid INTEGER,
group_uids TEXT,
PRIMARY KEY (match_id, group_id),
FOREIGN KEY (match_id) REFERENCES fact_matches(match_id) ON DELETE CASCADE
);
-- 4. Fact: Match Player Stats (Wide Table)
-- Aggregated stats for a player in a specific match
CREATE TABLE IF NOT EXISTS fact_match_players (
@@ -82,8 +197,12 @@ CREATE TABLE IF NOT EXISTS fact_match_players (
jump_count INTEGER,
damage_total INTEGER,
damage_received INTEGER,
damage_receive INTEGER,
damage_stats INTEGER,
assisted_kill INTEGER,
awp_kill INTEGER,
awp_kill_ct INTEGER,
awp_kill_t INTEGER,
benefit_kill INTEGER,
day TEXT,
defused_bomb INTEGER,
@@ -94,6 +213,8 @@ CREATE TABLE IF NOT EXISTS fact_match_players (
end_1v5 INTEGER,
explode_bomb INTEGER,
first_death INTEGER,
fd_ct INTEGER,
fd_t INTEGER,
first_kill INTEGER,
flash_enemy INTEGER,
flash_team INTEGER,
@@ -139,6 +260,8 @@ CREATE TABLE IF NOT EXISTS fact_match_players (
throw_harm_enemy INTEGER,
uid INTEGER,
year TEXT,
sts_raw TEXT,
level_info_raw TEXT,
PRIMARY KEY (match_id, steam_id_64),
FOREIGN KEY (match_id) REFERENCES fact_matches(match_id) ON DELETE CASCADE
@@ -177,8 +300,12 @@ CREATE TABLE IF NOT EXISTS fact_match_players_t (
jump_count INTEGER,
damage_total INTEGER,
damage_received INTEGER,
damage_receive INTEGER,
damage_stats INTEGER,
assisted_kill INTEGER,
awp_kill INTEGER,
awp_kill_ct INTEGER,
awp_kill_t INTEGER,
benefit_kill INTEGER,
day TEXT,
defused_bomb INTEGER,
@@ -189,6 +316,8 @@ CREATE TABLE IF NOT EXISTS fact_match_players_t (
end_1v5 INTEGER,
explode_bomb INTEGER,
first_death INTEGER,
fd_ct INTEGER,
fd_t INTEGER,
first_kill INTEGER,
flash_enemy INTEGER,
flash_team INTEGER,
@@ -234,6 +363,8 @@ CREATE TABLE IF NOT EXISTS fact_match_players_t (
throw_harm_enemy INTEGER,
uid INTEGER,
year TEXT,
sts_raw TEXT,
level_info_raw TEXT,
PRIMARY KEY (match_id, steam_id_64),
FOREIGN KEY (match_id) REFERENCES fact_matches(match_id) ON DELETE CASCADE
);
@@ -270,8 +401,12 @@ CREATE TABLE IF NOT EXISTS fact_match_players_ct (
jump_count INTEGER,
damage_total INTEGER,
damage_received INTEGER,
damage_receive INTEGER,
damage_stats INTEGER,
assisted_kill INTEGER,
awp_kill INTEGER,
awp_kill_ct INTEGER,
awp_kill_t INTEGER,
benefit_kill INTEGER,
day TEXT,
defused_bomb INTEGER,
@@ -282,6 +417,8 @@ CREATE TABLE IF NOT EXISTS fact_match_players_ct (
end_1v5 INTEGER,
explode_bomb INTEGER,
first_death INTEGER,
fd_ct INTEGER,
fd_t INTEGER,
first_kill INTEGER,
flash_enemy INTEGER,
flash_team INTEGER,
@@ -327,6 +464,8 @@ CREATE TABLE IF NOT EXISTS fact_match_players_ct (
throw_harm_enemy INTEGER,
uid INTEGER,
year TEXT,
sts_raw TEXT,
level_info_raw TEXT,
PRIMARY KEY (match_id, steam_id_64),
FOREIGN KEY (match_id) REFERENCES fact_matches(match_id) ON DELETE CASCADE
);

View File

@@ -0,0 +1,90 @@
path,group
data.group_1_team_info.logo_url,data.*
data.group_1_team_info.team_domain,data.*
data.group_1_team_info.team_id,data.*
data.group_1_team_info.team_name,data.*
data.group_1_team_info.team_tag,data.*
data.group_2_team_info.logo_url,data.*
data.group_2_team_info.team_domain,data.*
data.group_2_team_info.team_id,data.*
data.group_2_team_info.team_name,data.*
data.group_2_team_info.team_tag,data.*
data.group_N[].friend_relation,data.*
data.level_list[].elo,data.*
data.level_list[].elo_type,data.*
data.level_list[].group_id,data.*
data.level_list[].level_id,data.*
data.level_list[].level_image,data.*
data.level_list[].level_name,data.*
data.level_list[].remark,data.*
data.level_list[].rise_type,data.*
data.level_list[].shelves_status,data.*
data.room_card.attrs.flagAnimation,data.*
data.room_card.attrs.flagAnimationTime,data.*
data.room_card.attrs.flagViewUrl,data.*
data.room_card.attrs.flagViewVideo,data.*
data.room_card.attrs.flagViewVideoTime,data.*
data.room_card.attrs.getWay,data.*
data.room_card.attrs.mallJumpLink,data.*
data.room_card.attrs.matchViewUrlLeft,data.*
data.room_card.attrs.matchViewUrlRight,data.*
data.room_card.attrs.mvpSettleAnimation,data.*
data.room_card.attrs.mvpSettleColor,data.*
data.room_card.attrs.mvpSettleViewAnimation,data.*
data.room_card.attrs.pcImg,data.*
data.room_card.attrs.rarityLevel,data.*
data.room_card.attrs.sort,data.*
data.room_card.attrs.sourceId,data.*
data.room_card.attrs.templateId,data.*
data.room_card.category,data.*
data.room_card.createdAt,data.*
data.room_card.describe,data.*
data.room_card.displayStatus,data.*
data.room_card.getButton,data.*
data.room_card.getUrl,data.*
data.room_card.getWay,data.*
data.room_card.id,data.*
data.room_card.name,data.*
data.room_card.onShelf,data.*
data.room_card.propTemplateId,data.*
data.room_card.shelfAt,data.*
data.room_card.sysType,data.*
data.room_card.updatedAt,data.*
data.round_sfui_type[],data.*
data.season_type,data.*
data.uinfo_dict.<steamid>.avatar_url,data.*
data.uinfo_dict.<steamid>.college_id,data.*
data.uinfo_dict.<steamid>.country_id,data.*
data.uinfo_dict.<steamid>.credit,data.*
data.uinfo_dict.<steamid>.domain,data.*
data.uinfo_dict.<steamid>.gender,data.*
data.uinfo_dict.<steamid>.identity,data.*
data.uinfo_dict.<steamid>.language,data.*
data.uinfo_dict.<steamid>.nickname,data.*
data.uinfo_dict.<steamid>.plus_info,data.*
data.uinfo_dict.<steamid>.province,data.*
data.uinfo_dict.<steamid>.province_name,data.*
data.uinfo_dict.<steamid>.reg_date,data.*
data.uinfo_dict.<steamid>.region,data.*
data.uinfo_dict.<steamid>.region_name,data.*
data.uinfo_dict.<steamid>.status,data.*
data.uinfo_dict.<steamid>.steamid_64,data.*
data.uinfo_dict.<steamid>.trusted_score,data.*
data.uinfo_dict.<steamid>.trusted_status,data.*
data.uinfo_dict.<steamid>.uid,data.*
data.uinfo_dict.<steamid>.username,data.*
data.uinfo_dict.<steamid>.username_spam_status,data.*
data.uinfo_dict.<steamid>.uuid,data.*
data.user_stats.map_level.add_exp,data.*
data.user_stats.map_level.map_exp,data.*
data.user_stats.plat_level.add_exp,data.*
data.user_stats.plat_level.plat_level_exp,data.*
data.weapon_list.defuser[],data.*
data.weapon_list.item[],data.*
data.weapon_list.main_weapon[],data.*
data.weapon_list.other_item[],data.*
data.weapon_list.secondary_weapon[],data.*
trace_id,other
trace_id,other
trace_id,other
trace_id,other
1 path group
2 data.group_1_team_info.logo_url data.*
3 data.group_1_team_info.team_domain data.*
4 data.group_1_team_info.team_id data.*
5 data.group_1_team_info.team_name data.*
6 data.group_1_team_info.team_tag data.*
7 data.group_2_team_info.logo_url data.*
8 data.group_2_team_info.team_domain data.*
9 data.group_2_team_info.team_id data.*
10 data.group_2_team_info.team_name data.*
11 data.group_2_team_info.team_tag data.*
12 data.group_N[].friend_relation data.*
13 data.level_list[].elo data.*
14 data.level_list[].elo_type data.*
15 data.level_list[].group_id data.*
16 data.level_list[].level_id data.*
17 data.level_list[].level_image data.*
18 data.level_list[].level_name data.*
19 data.level_list[].remark data.*
20 data.level_list[].rise_type data.*
21 data.level_list[].shelves_status data.*
22 data.room_card.attrs.flagAnimation data.*
23 data.room_card.attrs.flagAnimationTime data.*
24 data.room_card.attrs.flagViewUrl data.*
25 data.room_card.attrs.flagViewVideo data.*
26 data.room_card.attrs.flagViewVideoTime data.*
27 data.room_card.attrs.getWay data.*
28 data.room_card.attrs.mallJumpLink data.*
29 data.room_card.attrs.matchViewUrlLeft data.*
30 data.room_card.attrs.matchViewUrlRight data.*
31 data.room_card.attrs.mvpSettleAnimation data.*
32 data.room_card.attrs.mvpSettleColor data.*
33 data.room_card.attrs.mvpSettleViewAnimation data.*
34 data.room_card.attrs.pcImg data.*
35 data.room_card.attrs.rarityLevel data.*
36 data.room_card.attrs.sort data.*
37 data.room_card.attrs.sourceId data.*
38 data.room_card.attrs.templateId data.*
39 data.room_card.category data.*
40 data.room_card.createdAt data.*
41 data.room_card.describe data.*
42 data.room_card.displayStatus data.*
43 data.room_card.getButton data.*
44 data.room_card.getUrl data.*
45 data.room_card.getWay data.*
46 data.room_card.id data.*
47 data.room_card.name data.*
48 data.room_card.onShelf data.*
49 data.room_card.propTemplateId data.*
50 data.room_card.shelfAt data.*
51 data.room_card.sysType data.*
52 data.room_card.updatedAt data.*
53 data.round_sfui_type[] data.*
54 data.season_type data.*
55 data.uinfo_dict.<steamid>.avatar_url data.*
56 data.uinfo_dict.<steamid>.college_id data.*
57 data.uinfo_dict.<steamid>.country_id data.*
58 data.uinfo_dict.<steamid>.credit data.*
59 data.uinfo_dict.<steamid>.domain data.*
60 data.uinfo_dict.<steamid>.gender data.*
61 data.uinfo_dict.<steamid>.identity data.*
62 data.uinfo_dict.<steamid>.language data.*
63 data.uinfo_dict.<steamid>.nickname data.*
64 data.uinfo_dict.<steamid>.plus_info data.*
65 data.uinfo_dict.<steamid>.province data.*
66 data.uinfo_dict.<steamid>.province_name data.*
67 data.uinfo_dict.<steamid>.reg_date data.*
68 data.uinfo_dict.<steamid>.region data.*
69 data.uinfo_dict.<steamid>.region_name data.*
70 data.uinfo_dict.<steamid>.status data.*
71 data.uinfo_dict.<steamid>.steamid_64 data.*
72 data.uinfo_dict.<steamid>.trusted_score data.*
73 data.uinfo_dict.<steamid>.trusted_status data.*
74 data.uinfo_dict.<steamid>.uid data.*
75 data.uinfo_dict.<steamid>.username data.*
76 data.uinfo_dict.<steamid>.username_spam_status data.*
77 data.uinfo_dict.<steamid>.uuid data.*
78 data.user_stats.map_level.add_exp data.*
79 data.user_stats.map_level.map_exp data.*
80 data.user_stats.plat_level.add_exp data.*
81 data.user_stats.plat_level.plat_level_exp data.*
82 data.weapon_list.defuser[] data.*
83 data.weapon_list.item[] data.*
84 data.weapon_list.main_weapon[] data.*
85 data.weapon_list.other_item[] data.*
86 data.weapon_list.secondary_weapon[] data.*
87 trace_id other
88 trace_id other
89 trace_id other
90 trace_id other