提交4
This commit is contained in:
parent
5f096b2d69
commit
6e036cc51b
248
996/doirs/dhsf_engine.sql
Normal file
248
996/doirs/dhsf_engine.sql
Normal file
@ -0,0 +1,248 @@
|
||||
CREATE TABLE `ods_active_role` ( `game_id` INT NOT NULL, `role_id` VARCHAR(64) NOT NULL, `ds` VARCHAR(64) NOT NULL, `user_account` varchar(64), `server_id` INT, `role_name` VARCHAR(50), `create_time` BIGINT) UNIQUE KEY (`game_id`, `role_id`,`ds`) DISTRIBUTED BY HASH ( `game_id`, `role_id`) BUCKETS 10
|
||||
|
||||
CREATE TABLE `ods_platform_order` (
|
||||
`game_id` INT NOT NULL,
|
||||
`order_id` varchar(100) NOT NULL,
|
||||
`game_name` varchar(30),
|
||||
`user_id` int,
|
||||
`user_account` varchar(50),
|
||||
`user_nickname` varchar(30),
|
||||
`role_id` varchar(50),
|
||||
`role_name` varchar(100),
|
||||
`server_id` varchar(50),
|
||||
`server_name` varchar(30),
|
||||
`platform_id` INT,
|
||||
`promote_id` INT,
|
||||
`amount` DECIMAL(10, 2),
|
||||
`status` tinyint NOT NULL,
|
||||
`pay_time` INT,
|
||||
`pay_way` tinyint,
|
||||
`pay_company` varchar(20),
|
||||
`ip` varchar(50),
|
||||
`is_box_pay` tinyint,
|
||||
`scene` tinyint,
|
||||
`prod_id` INT,
|
||||
`prod_name` varchar(30),
|
||||
`main_server_id` INT,
|
||||
`refund_type` tinyint
|
||||
|
||||
) UNIQUE KEY ( `game_id`,`order_id`) DISTRIBUTED BY HASH ( `game_id`,`order_id`) BUCKETS 32
|
||||
|
||||
|
||||
CREATE TABLE `ods_platform_user` (
|
||||
`game_id` INT NOT NULL,
|
||||
`user_id` BIGINT NOT NULL,
|
||||
`user_account` varchar(30),
|
||||
`platform_id` INT,
|
||||
`promote_id` INT,
|
||||
`create_time` BIGINT,
|
||||
`channel` varchar(20)
|
||||
)
|
||||
UNIQUE KEY (`game_id`, `user_id`)
|
||||
DISTRIBUTED BY HASH (`game_id`, `user_id`) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE `ods_role` (
|
||||
`game_id` INT NOT NULL COMMENT "游戏ID",
|
||||
`server_id` INT NOT NULL COMMENT "服务器ID",
|
||||
`role_id` VARCHAR(64) NOT NULL COMMENT "角色ID",
|
||||
`user_account` VARCHAR(64) COMMENT "用户账号",
|
||||
`role_name` VARCHAR(64) COMMENT "角色名称",
|
||||
`job` INT COMMENT "职业",
|
||||
`level` INT COMMENT "等级",
|
||||
`exp` BIGINT COMMENT "经验值",
|
||||
`relevel` INT COMMENT "转生等级",
|
||||
`platform_id` VARCHAR(64) COMMENT "平台ID",
|
||||
`create_time` DATETIME COMMENT "创建时间", -- 修正:TIMESTAMP → DATETIME
|
||||
`ds` VARCHAR(64) COMMENT "日期分区", -- 优化:VARCHAR → DATE
|
||||
`main_server_id` INT COMMENT "主服ID"
|
||||
)
|
||||
ENGINE = OLAP -- 必须显式指定表引擎[1,6](@ref)
|
||||
UNIQUE KEY (`game_id`, `server_id`, `role_id`)
|
||||
|
||||
DISTRIBUTED BY HASH (`game_id`, `server_id`, `role_id`) BUCKETS 32
|
||||
;
|
||||
|
||||
CREATE TABLE ods_role_duration (
|
||||
game_id INT NOT NULL,
|
||||
server_id INT NOT NULL,
|
||||
role_id VARCHAR(64) NOT NULL,
|
||||
create_time DATETIME,
|
||||
user_account VARCHAR(64),
|
||||
duration INT,
|
||||
level INT,
|
||||
role_name VARCHAR(64)
|
||||
) UNIQUE KEY (game_id, server_id, role_id, create_time)
|
||||
DISTRIBUTED BY HASH (game_id, server_id, role_id, create_time) BUCKETS 32
|
||||
;
|
||||
|
||||
|
||||
CREATE TABLE ods_order (
|
||||
game_id int NOT NULL,
|
||||
order_id VARCHAR(64) NOT NULL,
|
||||
status int NOT NULL,
|
||||
user_account VARCHAR(64),
|
||||
role_id VARCHAR(64),
|
||||
server_id int,
|
||||
platform_id VARCHAR(64),
|
||||
product_id VARCHAR(64),
|
||||
amount bigint,
|
||||
create_time DATETIME,
|
||||
ds VARCHAR(64),
|
||||
receive_time DATETIME,
|
||||
pay_company VARCHAR(64),
|
||||
pay_type int
|
||||
|
||||
)
|
||||
UNIQUE KEY (game_id, order_id, status)
|
||||
DISTRIBUTED BY HASH (game_id, order_id, status) BUCKETS 32;
|
||||
|
||||
CREATE TABLE ods_server_user (
|
||||
game_id int NOT NULL,
|
||||
server_id int NOT NULL,
|
||||
user_account VARCHAR(64) NOT NULL,
|
||||
role_id VARCHAR(64),
|
||||
role_name VARCHAR(64),
|
||||
|
||||
platform_id VARCHAR(64),
|
||||
create_time DATETIME,
|
||||
ds VARCHAR(64)
|
||||
)
|
||||
UNIQUE KEY (game_id, server_id, user_account) DISTRIBUTED BY HASH (game_id, server_id, user_account) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_user (
|
||||
game_id int NOT NULL,
|
||||
user_account VARCHAR(64) NOT NULL,
|
||||
role_id VARCHAR(64),
|
||||
role_name VARCHAR(64),
|
||||
server_id int,
|
||||
platform_id VARCHAR(64),
|
||||
create_time DATETIME,
|
||||
ds VARCHAR(64)
|
||||
)
|
||||
UNIQUE KEY (game_id, user_account) DISTRIBUTED BY HASH (game_id, user_account) BUCKETS 32;
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE TABLE ods_platform_user (
|
||||
game_id int NOT NULL,
|
||||
user_id int NOT NULL,
|
||||
user_account VARCHAR,
|
||||
platform_id int,
|
||||
promote_id int,
|
||||
create_time bigint,
|
||||
channel VARCHAR
|
||||
)
|
||||
UNIQUE KEY (game_id, user_id) DISTRIBUTED BY HASH (game_id, user_id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_platform_login (
|
||||
game_id int NOT NULL,
|
||||
user_id bigint NOT NULL,
|
||||
user_account VARCHAR(100),
|
||||
promote_id int,
|
||||
platform_id int,
|
||||
login_time int NOT NULL,
|
||||
login_ip VARCHAR(50)
|
||||
) ENGINE = OLAP DISTRIBUTED BY HASH (game_id, user_id) BUCKETS 32
|
||||
;
|
||||
|
||||
|
||||
CREATE TABLE juhe_user (
|
||||
id bigint NOT NULL,
|
||||
account VARCHAR,
|
||||
register_time bigint,
|
||||
register_ip VARCHAR,
|
||||
external_id VARCHAR,
|
||||
device_id VARCHAR,
|
||||
game_id int,
|
||||
game_name VARCHAR,
|
||||
device VARCHAR,
|
||||
channel_id VARCHAR,
|
||||
package_id VARCHAR,
|
||||
channel VARCHAR,
|
||||
channel_uid VARCHAR
|
||||
)
|
||||
UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE juhe_order (
|
||||
id bigint NOT NULL,
|
||||
user_external_id VARCHAR,
|
||||
game_identient VARCHAR,
|
||||
game_name VARCHAR,
|
||||
server_id VARCHAR,
|
||||
server_name VARCHAR,
|
||||
game_player_id VARCHAR,
|
||||
game_player_name VARCHAR,
|
||||
order_number VARCHAR,
|
||||
game_order_number VARCHAR,
|
||||
pay_order_number VARCHAR,
|
||||
product_id VARCHAR,
|
||||
props_name VARCHAR,
|
||||
pay_amount DECIMAL(10,2),
|
||||
create_time bigint,
|
||||
pay_time bigint,
|
||||
pay_status int,
|
||||
pay_game_status int,
|
||||
ip VARCHAR,
|
||||
deviceinfo VARCHAR,
|
||||
channel_id VARCHAR,
|
||||
package_id VARCHAR,
|
||||
channel VARCHAR
|
||||
)
|
||||
UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE game_server (
|
||||
game_id int NOT NULL,
|
||||
id int NOT NULL,
|
||||
mid int,
|
||||
name VARCHAR(50),
|
||||
isconfirm tinyint,
|
||||
del tinyint,
|
||||
state tinyint,
|
||||
open_time int,
|
||||
space_id int,
|
||||
space_type tinyint,
|
||||
engine_version VARCHAR(255),
|
||||
server_type VARCHAR(16),
|
||||
kuafu_game_id VARCHAR(20)
|
||||
)
|
||||
UNIQUE KEY (game_id, id) DISTRIBUTED BY HASH (game_id, id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE gm_space (
|
||||
id int NOT NULL,
|
||||
gm_uid int NOT NULL,
|
||||
space_name VARCHAR(50),
|
||||
space_type int,
|
||||
buy_time int,
|
||||
stime int,
|
||||
etime int,
|
||||
server_id int,
|
||||
state tinyint
|
||||
)
|
||||
UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
||||
|
||||
CREATE TABLE ods_across_server (
|
||||
id int NOT NULL,
|
||||
game_id int NOT NULL,
|
||||
serverids VARCHAR(100),
|
||||
status tinyint,
|
||||
create_time DATETIME NOT NULL
|
||||
)
|
||||
UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE cq_game_merge (
|
||||
id bigint NOT NULL,
|
||||
game_id int,
|
||||
start_id int,
|
||||
end_ids VARCHAR,
|
||||
isconfirm int,
|
||||
merge_time int
|
||||
)
|
||||
UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
239
996/doirs/sdk_statis.sql
Normal file
239
996/doirs/sdk_statis.sql
Normal file
@ -0,0 +1,239 @@
|
||||
CREATE TABLE ods_active_account (
|
||||
appid bigint NOT NULL,
|
||||
channel VARCHAR(64) NOT NULL,
|
||||
user_id VARCHAR(64) NOT NULL,
|
||||
ds VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_width int,
|
||||
device_height int,
|
||||
device_id VARCHAR(64),
|
||||
device_lang VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
servid VARCHAR(64),
|
||||
role_id VARCHAR(64)
|
||||
)
|
||||
UNIQUE KEY (appid, channel, user_id, ds) DISTRIBUTED BY HASH (appid, channel, user_id, ds) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_active_device (
|
||||
appid bigint NOT NULL,
|
||||
device_id VARCHAR(64) NOT NULL,
|
||||
channel VARCHAR(64) NOT NULL,
|
||||
ds VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_width int,
|
||||
device_height int,
|
||||
device_lang VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
user_id VARCHAR(64),
|
||||
servid VARCHAR(64),
|
||||
role_id VARCHAR(64)
|
||||
)
|
||||
UNIQUE KEY (appid, device_id, channel, ds) DISTRIBUTED BY HASH (appid, device_id, channel, ds) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_active_role (
|
||||
appid bigint NOT NULL,
|
||||
channel VARCHAR(64) NOT NULL,
|
||||
role_id VARCHAR(64) NOT NULL,
|
||||
ds VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_id VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
user_id VARCHAR(64),
|
||||
servid VARCHAR(64),
|
||||
job_id VARCHAR(64),
|
||||
role_level VARCHAR(64),
|
||||
role_name VARCHAR(64),
|
||||
job_name VARCHAR(64),
|
||||
server_name VARCHAR(64)
|
||||
)
|
||||
UNIQUE KEY (appid, channel, role_id, ds) DISTRIBUTED BY HASH (appid, channel, role_id, ds) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_newly_account (
|
||||
appid bigint NOT NULL,
|
||||
user_id VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
channel VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_width int,
|
||||
device_height int,
|
||||
device_id VARCHAR(64),
|
||||
device_lang VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
ds VARCHAR(64) NOT NULL
|
||||
)
|
||||
UNIQUE KEY (appid, user_id) DISTRIBUTED BY HASH (appid, user_id) BUCKETS 32;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE ods_newly_device (
|
||||
appid bigint NOT NULL,
|
||||
device_id VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
channel VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_width int,
|
||||
device_height int,
|
||||
device_lang VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
user_id VARCHAR(64),
|
||||
ds VARCHAR(64) NOT NULL
|
||||
)
|
||||
UNIQUE KEY (appid, device_id) DISTRIBUTED BY HASH (appid, device_id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_newly_role (
|
||||
appid bigint NOT NULL,
|
||||
|
||||
role_id VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
channel VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_id VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
user_id VARCHAR(64),
|
||||
servid VARCHAR(64),
|
||||
|
||||
ds VARCHAR(64) NOT NULL,
|
||||
job_id VARCHAR(64),
|
||||
role_level VARCHAR(64),
|
||||
role_name VARCHAR(64),
|
||||
job_name VARCHAR(64),
|
||||
server_name VARCHAR(64)
|
||||
)
|
||||
UNIQUE KEY (appid, role_id) DISTRIBUTED BY HASH (appid, role_id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_payment_object (
|
||||
appid bigint NOT NULL,
|
||||
channel VARCHAR(64) NOT NULL,
|
||||
typd VARCHAR(64) NOT NULL,
|
||||
typv VARCHAR(64) NOT NULL,
|
||||
ds VARCHAR(64) NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
event_time bigint
|
||||
)
|
||||
UNIQUE KEY (appid, channel, typd, typv, ds) DISTRIBUTED BY HASH (appid, channel, typd, typv, ds) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE ods_payment_order (
|
||||
appid bigint NOT NULL,
|
||||
order_id VARCHAR(64) NOT NULL,
|
||||
status int NOT NULL,
|
||||
gmid bigint,
|
||||
app_ver VARCHAR(64),
|
||||
sdk_ver VARCHAR(64),
|
||||
channel VARCHAR(64),
|
||||
country VARCHAR(64),
|
||||
province VARCHAR(64),
|
||||
city VARCHAR(64),
|
||||
isp VARCHAR(64),
|
||||
ip VARCHAR(64),
|
||||
device_id VARCHAR(64),
|
||||
device_model VARCHAR(64),
|
||||
device_brand VARCHAR(64),
|
||||
device_os VARCHAR(64),
|
||||
device_type VARCHAR(64),
|
||||
event_time bigint,
|
||||
user_id VARCHAR(64),
|
||||
amount bigint,
|
||||
platform VARCHAR(64),
|
||||
servid VARCHAR(64),
|
||||
role_id VARCHAR(64),
|
||||
prodid VARCHAR(64),
|
||||
prod_name VARCHAR(64),
|
||||
ds VARCHAR(64) NOT NULL
|
||||
)
|
||||
UNIQUE KEY (appid, order_id, status) DISTRIBUTED BY HASH (appid, order_id, status) BUCKETS 32;
|
||||
|
||||
|
||||
|
||||
CREATE TABLE game_channel (
|
||||
id VARCHAR NOT NULL,
|
||||
name VARCHAR,
|
||||
game_id bigint
|
||||
) UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
||||
|
||||
|
||||
CREATE TABLE gm_apply (
|
||||
id bigint NOT NULL,
|
||||
name VARCHAR,
|
||||
platform bigint,
|
||||
status bigint,
|
||||
uid bigint,
|
||||
account VARCHAR,
|
||||
create_time bigint,
|
||||
bind_game_id bigint,
|
||||
bind_type bigint,
|
||||
bind_appid bigint,
|
||||
bind_game_type bigint,
|
||||
appid VARCHAR
|
||||
)
|
||||
UNIQUE KEY (id) DISTRIBUTED BY HASH (id) BUCKETS 32;
|
||||
|
33
996/doirs/备份语句.sql
Normal file
33
996/doirs/备份语句.sql
Normal file
@ -0,0 +1,33 @@
|
||||
show load warnings on 'http://10.0.8.10:8040/api/_load_error_log?file=__shard_8/error_log_insert_stmt_74aeb570d44748a-a0f64c2db75e399c_74aeb570d44748a_a0f64c2db75e399c'
|
||||
|
||||
|
||||
SHOW PARTITIONS FROM ods_active_account;
|
||||
|
||||
CREATE TABLE `dwd_retention_act_m` (
|
||||
`game_id` int NOT NULL,
|
||||
`user_id` bigint NOT NULL,
|
||||
`ds` date NULL,
|
||||
`rd` int NULL
|
||||
) ENGINE = OLAP
|
||||
DUPLICATE KEY(`game_id`, `user_id`, `ds`, rd)
|
||||
PARTITION BY RANGE(`ds`) (
|
||||
-- 手动添加预建分区(示例:2025-02-01 至 2025-07-01)
|
||||
PARTITION p202502 VALUES LESS THAN ("2025-03-01"),
|
||||
PARTITION p202503 VALUES LESS THAN ("2025-04-01"),
|
||||
PARTITION p202504 VALUES LESS THAN ("2025-05-01"),
|
||||
PARTITION p202505 VALUES LESS THAN ("2025-06-01"),
|
||||
PARTITION p202506 VALUES LESS THAN ("2025-07-01")
|
||||
)
|
||||
DISTRIBUTED BY HASH(ds, `game_id`) BUCKETS 32
|
||||
PROPERTIES (
|
||||
"min_load_replica_num" = "1", -- 建议≥1,避免写入失败
|
||||
"dynamic_partition.enable" = "true",
|
||||
"dynamic_partition.time_unit" = "MONTH",
|
||||
"dynamic_partition.time_zone" = "Asia/Shanghai",
|
||||
"dynamic_partition.start" = "-5", -- 关键修改:创建过去5个月分区
|
||||
"dynamic_partition.end" = "3", -- 保留未来3个月分区
|
||||
"dynamic_partition.buckets" = "32",
|
||||
"dynamic_partition.prefix" = "p", -- 建议用短前缀(如"p")
|
||||
"dynamic_partition.history_partition_num" = "5", -- 保留历史分区数
|
||||
"storage_medium" = "hdd"
|
||||
);
|
75
996/doirs/建表语句.sql
Normal file
75
996/doirs/建表语句.sql
Normal file
@ -0,0 +1,75 @@
|
||||
CREATE TABLE `yin_tmp` (
|
||||
`game_id` int NOT NULL,
|
||||
`role_id` varchar(64) NOT NULL,
|
||||
`ds` date NOT NULL,
|
||||
`server_id` int NULL,
|
||||
`user_account` varchar(50) NULL
|
||||
) ENGINE = OLAP UNIQUE KEY(`game_id`, `role_id`, `ds`) PARTITION BY RANGE(`ds`) () DISTRIBUTED BY HASH(`game_id`) BUCKETS 32 PROPERTIES (
|
||||
"min_load_replica_num" = "-1", -- 不强制要求所有副本加载完成
|
||||
"dynamic_partition.enable" = "true", -- 开启动态分区功能。Doris 将根据后续规则自动管理分区生命周期
|
||||
"dynamic_partition.create_history_partition" = "true", -- 自动创建历史分区
|
||||
"dynamic_partition.time_unit" = "DAY", -- 分区粒度按天划分
|
||||
"dynamic_partition.time_zone" = "Asia/Shanghai", -- 指定分区生成的时区
|
||||
"dynamic_partition.start" = "-185", -- 保留最近 185 天的分区
|
||||
"dynamic_partition.end" = "3", -- 预创建未来 3 天的分区
|
||||
"dynamic_partition.prefix" = "p_", -- 分区名前缀。
|
||||
"storage_medium" = "hdd", -- 存储策略
|
||||
"dynamic_partition.hot_partition_num" = "7" -- 最近7天分区存SSD
|
||||
);
|
||||
|
||||
SHOW PARTITIONS FROM yin_tmp;
|
||||
|
||||
|
||||
insert into yin_tmp (game_id, role_id, ds, server_id, user_account)
|
||||
select '1' game_id,'1' role_id,STR_TO_DATE('20250626','%Y%m%d') ds,1 server_id,'1' user_account
|
||||
|
||||
|
||||
show load warnings on 'http://10.0.8.10:8040/api/_load_error_log?file=__shard_740/error_log_insert_stmt_2fac3a52b4c74b34-b59367b2b7ec133c_2fac3a52b4c74b34_b59367b2b7ec133c'
|
||||
|
||||
|
||||
drop table monthly_sales;
|
||||
|
||||
CREATE TABLE `dwd_platform_login_m` (
|
||||
`game_id` int NOT NULL,
|
||||
`user_id` bigint NOT NULL,
|
||||
`ds` date NULL,
|
||||
`user_account` varchar(100) NULL,
|
||||
`promote_id` int NULL,
|
||||
`platform_id` int NULL,
|
||||
`login_time` int NOT NULL,
|
||||
`login_ip` varchar(50) NULL
|
||||
)
|
||||
ENGINE = OLAP DUPLICATE KEY(`game_id`, `user_id`, `ds`)
|
||||
PARTITION BY RANGE(`ds`) ()
|
||||
DISTRIBUTED BY HASH(`game_id`) BUCKETS 32
|
||||
PROPERTIES (
|
||||
"min_load_replica_num" = "-1",
|
||||
"dynamic_partition.enable" = "true",
|
||||
"dynamic_partition.time_unit" = "MONTH",
|
||||
"dynamic_partition.time_zone" = "Asia/Shanghai",
|
||||
"dynamic_partition.start" = "-24",
|
||||
"dynamic_partition.end" = "3",
|
||||
"dynamic_partition.buckets" = "32",
|
||||
"dynamic_partition.create_history_partition" = "true",
|
||||
"dynamic_partition.prefix" = "p_",
|
||||
"storage_medium" = "hdd"
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE `dwd_retention_act` (
|
||||
`game_id` int NOT NULL,
|
||||
`user_id` bigint NOT NULL,
|
||||
`ds` date NULL,
|
||||
`rd` int NULL
|
||||
) ENGINE = OLAP DUPLICATE KEY(`game_id`, `user_id`, `ds`,rd) PARTITION BY RANGE(`ds`) () DISTRIBUTED BY HASH(ds,`game_id`) BUCKETS 32 PROPERTIES (
|
||||
"min_load_replica_num" = "-1",
|
||||
"dynamic_partition.enable" = "true",
|
||||
"dynamic_partition.time_unit" = "DAY",
|
||||
"dynamic_partition.time_zone" = "Asia/Shanghai",
|
||||
"dynamic_partition.start" = "-24",
|
||||
"dynamic_partition.end" = "3",
|
||||
"dynamic_partition.buckets" = "32",
|
||||
"dynamic_partition.create_history_partition" = "true",
|
||||
"dynamic_partition.prefix" = "p_",
|
||||
"storage_medium" = "hdd"
|
||||
);
|
10314
996/doirs/日期表.sql
Normal file
10314
996/doirs/日期表.sql
Normal file
File diff suppressed because it is too large
Load Diff
82
996/doirs/物化视图.sql
Normal file
82
996/doirs/物化视图.sql
Normal file
@ -0,0 +1,82 @@
|
||||
刷新配置
|
||||
build_mode 刷新时机
|
||||
物化视图创建完成是否立即刷新。
|
||||
|
||||
IMMEDIATE:立即刷新,默认方式。
|
||||
DEFERRED:延迟刷新。
|
||||
refresh_method 刷新方式
|
||||
COMPLETE:刷新所有分区。
|
||||
AUTO:尽量增量刷新,只刷新自上次物化刷新后数据变化的分区,如果不能感知数据变化的分区,只能退化成全量刷新,刷新所有分区。
|
||||
refresh_trigger 触发方式
|
||||
ON MANUAL 手动触发
|
||||
|
||||
用户通过 SQL 语句触发物化视图的刷新,策略如下
|
||||
|
||||
--检测基表的分区数据自上次刷新后是否有变化,刷新数据变化的分区
|
||||
REFRESH MATERIALIZED VIEW mvName AUTO;
|
||||
--不校验基表的分区数据自上次刷新后是否有变化,直接刷新物化视图的所有分区。
|
||||
REFRESH MATERIALIZED VIEW mvName COMPLETE;
|
||||
--只刷新指定的分区。
|
||||
REFRESH MATERIALIZED VIEW mvName partitions(partitionName1,partitionName2);
|
||||
--ON SCHEDULE 定时触发
|
||||
-- 定时全量
|
||||
CREATE MATERIALIZED VIEW mv_6
|
||||
REFRESH COMPLETE ON SCHEDULE EVERY 10 hour
|
||||
AS
|
||||
SELECT * FROM lineitem;
|
||||
-- 定时增量
|
||||
CREATE MATERIALIZED VIEW mv_8
|
||||
REFRESH AUTO ON COMMIT
|
||||
PARTITION by(l_shipdate)
|
||||
AS
|
||||
SELECT * FROM lineitem;
|
||||
--ON COMMIT 自动触发 (Apache Doris 2.1.4 版本起支持此功能)
|
||||
CREATE MATERIALIZED VIEW mv_8
|
||||
REFRESH AUTO ON COMMIT
|
||||
PARTITION by(l_shipdate)
|
||||
AS
|
||||
SELECT * FROM lineitem;
|
||||
-- BUILD IMMEDIATE 创建完立即刷新
|
||||
CREATE MATERIALIZED VIEW mv_1_0
|
||||
BUILD IMMEDIATE
|
||||
REFRESH AUTO
|
||||
ON MANUAL
|
||||
DISTRIBUTED BY RANDOM BUCKETS 2
|
||||
AS
|
||||
SELECT
|
||||
l_linestatus,
|
||||
to_date(o_orderdate) as date_alias,
|
||||
o_shippriority
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN lineitem ON l_orderkey = o_orderkey;
|
||||
-- 延迟刷新 BUILD DEFERRED
|
||||
CREATE MATERIALIZED VIEW mv_1_1
|
||||
BUILD DEFERRED
|
||||
REFRESH COMPLETE
|
||||
ON SCHEDULE EVERY 1 DAY STARTS '2024-12-01 20:30:00'
|
||||
PROPERTIES ('replication_num' = '1')
|
||||
AS
|
||||
SELECT
|
||||
l_linestatus,
|
||||
to_date(o_orderdate) as date_alias,
|
||||
o_shippriority
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN lineitem ON l_orderkey = o_orderkey;
|
||||
|
||||
-------
|
||||
CREATE MATERIALIZED VIEW mv_yinzhou
|
||||
BUILD IMMEDIATE -- 创建后立即全量刷新
|
||||
REFRESH AUTO -- 优先增量刷新(仅刷新变化分区)
|
||||
ON SCHEDULE EVERY 1 DAY -- 每日执行一次
|
||||
STARTS '2025-06-27 03:15:00' -- 首次刷新时间(次日凌晨3:15)
|
||||
DISTRIBUTED BY HASH(l_linestatus) BUCKETS AUTO -- 自动分桶
|
||||
AS
|
||||
SELECT
|
||||
l_linestatus,
|
||||
to_date(o_orderdate) as date_alias,
|
||||
o_shippriority
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN lineitem ON l_orderkey = o_orderkey;
|
32
996/doirs/物化视图1.sql
Normal file
32
996/doirs/物化视图1.sql
Normal file
@ -0,0 +1,32 @@
|
||||
CREATE MATERIALIZED VIEW mv_demo
|
||||
PARTITION BY (pay_date) -- 关键分区声明
|
||||
BUILD DEFERRED
|
||||
REFRESH AUTO ON SCHEDULE EVERY 1 DAY START ('2025-06-27 03:00:00')
|
||||
DISTRIBUTED BY HASH(game_id, user_id) BUCKETS AUTO
|
||||
PROPERTIES (
|
||||
'replication_num' = '1',
|
||||
'partition_refresh_number' = '1',
|
||||
'partition_sync_limit' = '1', -- 仅同步最近1分区
|
||||
'partition_sync_time_unit' = 'DAY' -- 按天同步
|
||||
)
|
||||
AS
|
||||
SELECT
|
||||
a.game_id,
|
||||
a.user_id,
|
||||
b.reg_date,
|
||||
a.pay_date,
|
||||
a.amount,
|
||||
(a.pay_date - b.reg_date) AS rd
|
||||
FROM (
|
||||
SELECT
|
||||
game_id,
|
||||
user_id,
|
||||
pay_date,
|
||||
SUM(amount) AS amount
|
||||
FROM ods_platform_order
|
||||
WHERE status = 1
|
||||
GROUP BY game_id, user_id, pay_date
|
||||
) a
|
||||
INNER JOIN ods_platform_user b
|
||||
ON a.user_id = b.user_id AND a.game_id = b.game_id
|
||||
;
|
30
996/pg/分区表.sql
Normal file
30
996/pg/分区表.sql
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
|
||||
CREATE TABLE active_account_list (
|
||||
game_identity TEXT NOT NULL,
|
||||
platform_id INTEGER NOT NULL,
|
||||
channel_id INTEGER NOT NULL,
|
||||
user_id TEXT NOT NULL,
|
||||
ds DATE NOT NULL,
|
||||
create_time TIMESTAMPTZ NOT NULL,
|
||||
receive_time TIMESTAMPTZ,
|
||||
PRIMARY KEY (game_identity, platform_id, channel_id, user_id, ds)
|
||||
) PARTITION BY RANGE (ds);
|
||||
|
||||
CREATE EXTENSION pg_partman;
|
||||
|
||||
SELECT extname, extversion FROM pg_extension WHERE extname = 'pg_partman';
|
||||
|
||||
SELECT e.extname, n.nspname
|
||||
FROM pg_extension e
|
||||
JOIN pg_namespace n ON e.extnamespace = n.oid
|
||||
WHERE e.extname = 'pg_partman';
|
||||
|
||||
|
||||
SELECT public.create_parent(
|
||||
p_parent_table => 'public.active_account_list',
|
||||
p_control => 'ds', -- 分区键字段
|
||||
p_interval => '1 day', -- 按天分区
|
||||
p_premake => 30 -- 预创建未来30天分区
|
||||
);
|
||||
|
1
996/动态表/1备份
Normal file
1
996/动态表/1备份
Normal file
@ -0,0 +1 @@
|
||||
REFRESH DYNAMIC TABLE ods.yinzhou_dynamic_demo;
|
52
996/动态表/建表.sql
Normal file
52
996/动态表/建表.sql
Normal file
@ -0,0 +1,52 @@
|
||||
BEGIN;
|
||||
|
||||
/*
|
||||
DROP TABLE ods.yinzhou_dynamic_demo;
|
||||
*/
|
||||
|
||||
-- Type: TABLE ; Name: yinzhou_dynamic_demo; Owner: sdk_statis_test_developer
|
||||
|
||||
SET LOCAL SEARCH_PATH TO 'public';
|
||||
CREATE DYNAMIC TABLE ods.yinzhou_dynamic_demo (
|
||||
ds,
|
||||
id,
|
||||
name,
|
||||
device_cut,
|
||||
user_cut
|
||||
)with (
|
||||
orientation = 'column',
|
||||
storage_format = 'orc',
|
||||
binlog_level = 'replica',
|
||||
binlog_ttl = '864000',
|
||||
bitmap_columns = 'ds,name',
|
||||
dictionary_encoding_columns = 'ds:auto,name:auto',
|
||||
distribution_key = 'ds,id',
|
||||
table_group = 'sdk_statis_test_tg_default',
|
||||
table_storage_mode = 'hot',
|
||||
time_to_live_in_seconds = '3153600000',
|
||||
auto_refresh_enable='true',
|
||||
full_auto_refresh_interval='1 hour',
|
||||
full_auto_refresh_schd_start_time='immediate',
|
||||
full_guc_hg_computing_resource='local',
|
||||
refresh_mode='full'
|
||||
) AS SELECT
|
||||
t1.ds,t2.ID,
|
||||
t2.NAME,
|
||||
UNIQ ( device_id ) device_cut,
|
||||
UNIQ ( user_id ) user_cut
|
||||
FROM
|
||||
"ods_track_log" t1
|
||||
INNER JOIN "public"."gm_apply" FOR SYSTEM_TIME AS OF PROCTIME() t2
|
||||
ON t1.appid = t2."id"
|
||||
GROUP BY
|
||||
t1.ds,
|
||||
t2.ID,
|
||||
t2.NAME;
|
||||
|
||||
|
||||
|
||||
COMMENT ON TABLE ods.yinzhou_dynamic_demo IS NULL;
|
||||
ALTER TABLE ods.yinzhou_dynamic_demo OWNER TO sdk_statis_test_developer;
|
||||
|
||||
|
||||
END;
|
43
996/动态表/建表1.sql
Normal file
43
996/动态表/建表1.sql
Normal file
@ -0,0 +1,43 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE DYNAMIC TABLE ods.yinzhou_dynamic_demo2 (
|
||||
ds,
|
||||
id,
|
||||
name,
|
||||
device_cut,
|
||||
user_cut
|
||||
)with (
|
||||
orientation = 'column',
|
||||
storage_format = 'orc',
|
||||
binlog_level = 'replica',
|
||||
binlog_ttl = '864000',
|
||||
bitmap_columns = 'ds,name',
|
||||
clustering_key = 'ds,id,name',
|
||||
dictionary_encoding_columns = 'ds:auto,name:auto',
|
||||
distribution_key = 'ds,id',
|
||||
table_group = 'sdk_statis_test_tg_default',
|
||||
table_storage_mode = 'hot',
|
||||
time_to_live_in_seconds = '3153600000',
|
||||
auto_refresh_enable='true',
|
||||
incremental_auto_refresh_interval='2 minutes',
|
||||
incremental_auto_refresh_schd_start_time='immediate',
|
||||
incremental_guc_hg_computing_resource='local',
|
||||
refresh_mode='incremental'
|
||||
) AS SELECT
|
||||
t1.ds,t2.ID,
|
||||
t2.NAME,
|
||||
UNIQ ( device_id ) device_cut,
|
||||
UNIQ ( user_id ) user_cut
|
||||
FROM
|
||||
"ods_payment_order" t1
|
||||
INNER JOIN "public"."gm_apply" FOR SYSTEM_TIME AS OF PROCTIME() t2
|
||||
ON t1.appid = t2."id"
|
||||
GROUP BY
|
||||
t1.ds,
|
||||
t2.ID,
|
||||
t2.NAME;
|
||||
|
||||
|
||||
|
||||
|
||||
END;
|
137
test.sql
Normal file
137
test.sql
Normal file
@ -0,0 +1,137 @@
|
||||
INSERT INTO ads_new_device_ltv_statis
|
||||
SELECT appid, channel, ds, new_add, SUM(CASE
|
||||
WHEN rd >= 0 AND pd <= 0 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv1, SUM(CASE
|
||||
WHEN rd >= 1 AND pd <= 1 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv2, SUM(CASE
|
||||
WHEN rd >= 2 AND pd <= 2 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv3, SUM(CASE
|
||||
WHEN rd >= 3 AND pd <= 3 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv4, SUM(CASE
|
||||
WHEN rd >= 4 AND pd <= 4 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv5, SUM(CASE
|
||||
WHEN rd >= 5 AND pd <= 5 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv6, SUM(CASE
|
||||
WHEN rd >= 6 AND pd <= 6 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv7, SUM(CASE
|
||||
WHEN rd >= 7 AND pd <= 7 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv8, SUM(CASE
|
||||
WHEN rd >= 8 AND pd <= 8 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv9, SUM(CASE
|
||||
WHEN rd >= 9 AND pd <= 9 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv10, SUM(CASE
|
||||
WHEN rd >= 10 AND pd <= 10 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv11, SUM(CASE
|
||||
WHEN rd >= 11 AND pd <= 11 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv12, SUM(CASE
|
||||
WHEN rd >= 12 AND pd <= 12 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv13, SUM(CASE
|
||||
WHEN rd >= 13 AND pd <= 13 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv14, SUM(CASE
|
||||
WHEN rd >= 14 AND pd <= 14 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv15, SUM(CASE
|
||||
WHEN rd >= 15 AND pd <= 15 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv16, SUM(CASE
|
||||
WHEN rd >= 16 AND pd <= 16 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv17, SUM(CASE
|
||||
WHEN rd >= 17 AND pd <= 17 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv18, SUM(CASE
|
||||
WHEN rd >= 18 AND pd <= 18 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv19, SUM(CASE
|
||||
WHEN rd >= 19 AND pd <= 19 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv20, SUM(CASE
|
||||
WHEN rd >= 20 AND pd <= 20 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv21, SUM(CASE
|
||||
WHEN rd >= 21 AND pd <= 21 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv22, SUM(CASE
|
||||
WHEN rd >= 22 AND pd <= 22 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv23, SUM(CASE
|
||||
WHEN rd >= 23 AND pd <= 23 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv24, SUM(CASE
|
||||
WHEN rd >= 24 AND pd <= 24 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv25, SUM(CASE
|
||||
WHEN rd >= 25 AND pd <= 25 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv26, SUM(CASE
|
||||
WHEN rd >= 26 AND pd <= 26 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv27, SUM(CASE
|
||||
WHEN rd >= 27 AND pd <= 27 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv28, SUM(CASE
|
||||
WHEN rd >= 28 AND pd <= 28 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv29, SUM(CASE
|
||||
WHEN rd >= 29 AND pd <= 29 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv30, SUM(CASE
|
||||
WHEN rd >= 30 AND pd <= 30 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv31, SUM(CASE
|
||||
WHEN rd >= 45 AND pd <= 45 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv45, SUM(CASE
|
||||
WHEN rd >= 60 AND pd <= 60 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv60, SUM(CASE
|
||||
WHEN rd >= 90 AND pd <= 90 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv90, SUM(CASE
|
||||
WHEN rd >= 120 AND pd <= 120 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv120, SUM(CASE
|
||||
WHEN rd >= 150 AND pd <= 150 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv150, SUM(CASE
|
||||
WHEN rd >= 180 AND pd <= 180 THEN payment_amount
|
||||
ELSE 0
|
||||
END) AS ltv180
|
||||
FROM (
|
||||
SELECT a.appid, a.channel, a.ds, a.newly_device AS new_add, TIMESTAMPDIFF(day, b.ds, a.ds) AS rd, b.rd AS pd,
|
||||
b.payment_amount
|
||||
FROM (
|
||||
SELECT appid, (CASE
|
||||
WHEN GROUPING(channel) = 0 THEN channel
|
||||
ELSE '__default__'
|
||||
END) AS channel, ds, COUNT(user_id) AS newly_device
|
||||
FROM ods_newly_device
|
||||
WHERE ds >= '${lastdate_180}' AND ds <= '${bizdate}'
|
||||
GROUP BY GROUPING SETS((appid, ds), (appid, channel, ds))
|
||||
) AS a
|
||||
LEFT JOIN (
|
||||
SELECT appid, channel, rd, ds, SUM(amount) AS payment_amount
|
||||
FROM dwd_ltv_new_device
|
||||
WHERE ds >= '${lastdate_180}' AND rd >= 0 AND rd <= 180
|
||||
GROUP BY GROUPING SETS((appid, ds, rd), (appid, channel, ds, rd))
|
||||
) AS b
|
||||
ON a.appid = b.appid AND a.channel = b.channel AND a.ds = b.ds
|
||||
) AS c
|
||||
GROUP BY appid,
|
||||
channel,
|
||||
ds,
|
||||
new_add;
|
Loading…
x
Reference in New Issue
Block a user