This commit is contained in:
尹舟 2025-07-11 15:32:31 +08:00
parent 5f096b2d69
commit 6e036cc51b
12 changed files with 11286 additions and 0 deletions

248
996/doirs/dhsf_engine.sql Normal file
View 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
View 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;

View 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"
);

View 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

File diff suppressed because it is too large Load Diff

View 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;

View 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
View 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
View File

@ -0,0 +1 @@
REFRESH DYNAMIC TABLE ods.yinzhou_dynamic_demo;

52
996/动态表/建表.sql Normal file
View 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
View 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
View 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;