优化job_one_game

This commit is contained in:
尹舟 2025-04-09 15:37:22 +08:00
parent abfc5c4d2c
commit b59f5f1e34
11 changed files with 343 additions and 50 deletions

View File

@ -1,6 +1,5 @@
from utils.read_sql_files import read_one_game_sql_files from utils.read_sql_files import read_one_game_sql_files
from utils.execute_sql import select_execute_sql from utils.execute_sql import select_execute_sql
from utils.read_sql_files import read_sql_files
def dim(game_information): def dim(game_information):
@ -22,7 +21,7 @@ def ads(game_information):
def job_one_game(): def job_one_game():
sql_params = "49,50,51" sql_params = "123,122"
sql_str = f"select relation_id,game_channel_id,game_identity,game_platform_id from dim.game_product_relation where relation_id IN ({sql_params})" sql_str = f"select relation_id,game_channel_id,game_identity,game_platform_id from dim.game_product_relation where relation_id IN ({sql_params})"
game_information = select_execute_sql(sql_str) game_information = select_execute_sql(sql_str)
@ -34,23 +33,14 @@ def job_one_game():
"${platform_id}": str(game[3]) "${platform_id}": str(game[3])
} }
print(game_information_dic) print(game_information_dic)
# dim(game_information_dic) dim(game_information_dic)
# dwd(game_information_dic) dwd(game_information_dic)
# dws(game_information_dic) dws(game_information_dic)
# ads(game_information_dic) ads(game_information_dic)
def rerun():
# read_sql_files('dim')
read_sql_files('dwd_before')
read_sql_files('dwd_after')
read_sql_files('dws_before')
read_sql_files('dws_after')
read_sql_files('ads')
if __name__ == '__main__': if __name__ == '__main__':
rerun() job_one_game()

View File

@ -1,37 +1,30 @@
from utils.loadconfig import get_path from utils.read_sql_files import read_sql_files
from utils.log import Log from utils.log import Log
from utils.date_time import get_variable_parameter
from utils.execute_sql import execute_sql def dim():
read_sql_files('dim')
def read_sql_files(directory, day): def dwd():
log = Log().getlog() read_sql_files('dwd_before')
directory = get_path() + directory read_sql_files('dwd_after')
try:
with open(directory, 'r', encoding='utf-8') as f:
content = f.read()
# 遍历字典,将字符串中的占位符替换为对应的值
for key, value in get_variable_parameter(day).items():
content = content.replace(key, str(value))
log.info(f"文件路径: {directory}")
try:
returnstr = execute_sql(content)
log.info(f"执行结果: {returnstr}")
log.info("-" * 50)
except Exception as e:
log.error(f"执行 SQL 文件 {directory} 时出现错误: {e}")
except UnicodeDecodeError:
log.error(f"文件 {directory} 编码格式可能不是utf-8无法正确读取请检查。")
except Exception as e:
log.error(f"读取文件 {directory} 时出现错误: {e}")
def dws():
read_sql_files('dws_before')
read_sql_files('dws_after')
def ads():
read_sql_files('ads')
if __name__ == '__main__': if __name__ == '__main__':
# 遍历300到0 log = Log().getlog()
for day in range(301): log.info(f"---------job开始执行:---------")
read_sql_files('/sql/ads/user_retention.sql', day) dim()
dwd()
dws()
ads()

View File

@ -0,0 +1,34 @@
-- 数据概览
INSERT INTO ads.data_screen(relation_id,prodid,ds,ds_type,ds_name,order_amount,money,processed_amount,"cost")
SELECT t1.relation_id
,t1.product_id prodid
,t.ds
,t.ds_type
,t.ds_name
,SUM(t.order_amount) order_amount
,SUM(t2.money) money
,0 processed_amount
,SUM(COALESCE(t3.cost,0)) AS "cost"
FROM dwd.order_df t
INNER JOIN dim.game_product_relation t1
ON t.game_channel_id = t1.game_channel_id
AND t.game_identity = t1.game_identity
AND t.game_platform_id = t1.game_platform_id
INNER JOIN dwd.revenue_df t2 on t1.relation_id=t2.relation_id
AND t.ds=t2.ds
and t.ds_type=t2.ds_type
left join "ads"."ad_data" t3
on t1.relation_id=t3.relation_id
and t.ds=t3.ds
and t.ds_type=t3.ds_type
where t1.relation_id='${relation_id}'
GROUP BY t1.relation_id
,t1.product_id
,t.ds
,t.ds_type
,t.ds_name
ON CONFLICT (relation_id,ds,ds_type) DO
UPDATE SET prodid = EXCLUDED.prodid,order_amount = EXCLUDED.order_amount,money = EXCLUDED.money
,processed_amount = EXCLUDED.processed_amount,"cost" = EXCLUDED."cost"
;

View File

@ -0,0 +1,63 @@
-- 汇总游戏数据
INSERT INTO ads.game_data(relation_id,prodid,ds,ds_type,ds_name,active_user_cut,play_user_cut,order_amount,new_active_user_cut,
new_play_user_cut,new_order_amount)
SELECT
relation_id,
prodid,
ds,
ds_type,
ds_name,
active_user_cut,
play_user_cut,
order_amount,
new_active_user_cut,
new_play_user_cut,
new_order_amount
FROM (
SELECT t1.relation_id,
t1.product_id AS prodid,
t.ds,
'd' AS ds_type,
'' AS ds_name,
SUM(CASE WHEN t.type = 'hyzh' THEN active_user_cut ELSE 0 END) AS active_user_cut,
SUM(CASE WHEN t.type = 'hyzh' THEN play_user_cut ELSE 0 END) AS play_user_cut,
SUM(CASE WHEN t.type = 'hyzh' THEN order_amount ELSE 0 END) AS order_amount,
SUM(CASE WHEN t.type = 'xzh' THEN active_user_cut ELSE 0 END) AS new_active_user_cut,
SUM(CASE WHEN t.type = 'xzh' THEN play_user_cut ELSE 0 END) AS new_play_user_cut,
SUM(CASE WHEN t.type = 'xzh' THEN order_amount ELSE 0 END) AS new_order_amount
FROM dws.game_user_data t
INNER JOIN dim.game_product_relation t1 ON
t.game_channel_id = t1.game_channel_id AND
t.game_identity = t1.game_identity AND
t.game_platform_id = t1.game_platform_id
where t.ds<='${bizdate}' and t1.relation_id='${relation_id}'
GROUP BY t1.relation_id, t1.product_id, t.ds
UNION ALL
SELECT t1.relation_id,
t1.product_id AS prodid,
t.ds,
'm' AS ds_type,
'' AS ds_name,
SUM(CASE WHEN t.type = 'hyzh' THEN active_user_cut ELSE 0 END) AS active_user_cut,
SUM(CASE WHEN t.type = 'hyzh' THEN play_user_cut ELSE 0 END) AS play_user_cut,
SUM(CASE WHEN t.type = 'hyzh' THEN order_amount ELSE 0 END) AS order_amount,
SUM(CASE WHEN t.type = 'xzh' THEN active_user_cut ELSE 0 END) AS new_active_user_cut,
SUM(CASE WHEN t.type = 'xzh' THEN play_user_cut ELSE 0 END) AS new_play_user_cut,
SUM(CASE WHEN t.type = 'xzh' THEN order_amount ELSE 0 END) AS new_order_amount
FROM dws.game_user_data_month t
INNER JOIN dim.game_product_relation t1 ON
t.game_channel_id = t1.game_channel_id AND
t.game_identity = t1.game_identity AND
t.game_platform_id = t1.game_platform_id
where t1.relation_id='${relation_id}'
GROUP BY t1.relation_id, t1.product_id, t.ds
) tt
ON CONFLICT (relation_id,ds,ds_type) DO UPDATE SET prodid=EXCLUDED.prodid,ds_name = EXCLUDED.ds_name, active_user_cut = EXCLUDED.active_user_cut ,play_user_cut = EXCLUDED.play_user_cut
,order_amount = EXCLUDED.order_amount,new_active_user_cut = EXCLUDED.new_active_user_cut,new_play_user_cut = EXCLUDED.new_play_user_cut,new_order_amount = EXCLUDED.new_order_amount
;

View File

@ -0,0 +1,41 @@
-- 处理逻辑说明
-- 1.first_user是用户首次登陆时间 和ods.order 订单表
-- 2.用户首次登陆去关联订单表获取用户的再那一天下单多少钱
INSERT INTO ads.order_ltv ( relation_id,prodid,ds,num,order_amount,ltv0,ltv1,ltv2,ltv3,ltv4,ltv5,ltv6,ltv7,ltv14,ltv30,ltv60,ltv90,ltv150,ltv300)
SELECT
t1.relation_id,
t1.prodid,
t1.ds,
COUNT(DISTINCT t1.user_id) AS num,
COALESCE(SUM(pay_amount),0) order_amount,
SUM(CASE WHEN t2.ds_date=t1.ds_date THEN pay_amount ELSE 0 END) AS ltv0,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 1 THEN pay_amount ELSE 0 END) AS ltv1,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 2 THEN pay_amount ELSE 0 END) AS ltv2,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 3 THEN pay_amount ELSE 0 END) AS ltv3,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 4 THEN pay_amount ELSE 0 END) AS ltv4,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 5 THEN pay_amount ELSE 0 END) AS ltv5,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 6 THEN pay_amount ELSE 0 END) AS ltv6,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 7 THEN pay_amount ELSE 0 END) AS ltv7,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 14 THEN pay_amount ELSE 0 END) AS ltv14,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 30 THEN pay_amount ELSE 0 END) AS ltv30,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 60 THEN pay_amount ELSE 0 END) AS ltv60,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 90 THEN pay_amount ELSE 0 END) AS ltv90,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 150 THEN pay_amount ELSE 0 END) AS ltv150,
SUM(CASE WHEN (t2.ds_date-t1.ds_date) <= 300 THEN pay_amount ELSE 0 END) AS ltv300
FROM
dim.first_user t1
LEFT JOIN
"dwd"."order_user_df" t2
ON
t1.relation_id = t2.relation_id
AND t1.user_id = t2.user_id
AND t2.ds_date-t1.ds_date IN (0,1,2,3,4,5,6,7,14,30,60,90,150,300)
where t1.ds>='${300_days_later}' and t1.relation_id='${relation_id}'
GROUP BY
t1.relation_id, t1.prodid, t1.ds
ON CONFLICT (relation_id,prodid,ds)
DO UPDATE SET num = EXCLUDED.num,order_amount = EXCLUDED.order_amount,ltv0 = EXCLUDED.ltv0,ltv1 = EXCLUDED.ltv1,ltv2 = EXCLUDED.ltv2,ltv3 = EXCLUDED.ltv3,ltv4 = EXCLUDED.ltv4,ltv5 = EXCLUDED.ltv5,ltv6 = EXCLUDED.ltv6,ltv7 = EXCLUDED.ltv7
,ltv14 = EXCLUDED.ltv14,ltv30 = EXCLUDED.ltv30,ltv60 = EXCLUDED.ltv60,ltv90 = EXCLUDED.ltv90,ltv150 = EXCLUDED.ltv150,ltv300 = EXCLUDED.ltv300
;

View File

@ -0,0 +1,53 @@
-- 处理逻辑说明
-- 1.用到了first_user 和 lately_order_user 这两个表来计算ltv
-- first_user是用户首次登陆时间
-- lately_user是用户最后一次登陆时间
-- 2.用户首次登陆去关联用户最后一次登陆时间他们的时间差就是用户的流失时间
INSERT INTO ads.order_retention ( relation_id,prodid,ds,num,ltv1,ltv2,ltv3,ltv4,ltv5,ltv6,ltv7,ltv14,ltv30,ltv60,ltv90,ltv150,ltv300)
select
t1.relation_id
,t1.prodid
,t1.ds
,count(distinct t1.user_id) AS num
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 1 then 1 ELSE 0 END) AS ltv1
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 2 then 1 ELSE 0 END) AS ltv2
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 3 then 1 ELSE 0 END) AS ltv3
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 4 then 1 ELSE 0 END) AS ltv4
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 5 then 1 ELSE 0 END) AS ltv5
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 6 then 1 ELSE 0 END) AS ltv6
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 7 then 1 ELSE 0 END) AS ltv7
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 14 then 1 ELSE 0 END) AS ltv14
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 30 then 1 ELSE 0 END) AS ltv30
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 60 then 1 ELSE 0 END) AS ltv60
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 90 then 1 ELSE 0 END) AS ltv90
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 150 then 1 ELSE 0 END) AS ltv150
,SUM(CASE WHEN t2.ds_date-t1.ds_date = 300 then 1 ELSE 0 END) AS ltv300
from
"dwd"."order_user_df" t1
left join
dwd.active_df t2
on t1.relation_id=t2.relation_id
and t1.user_id=t2.user_id
AND t2.ds_date-t1.ds_date IN (1,2,3,4,5,6,7,14,30,60,90,150,300)
where t1.ds>='${300_days_later}' and t1.ds<='${bizdate}' and t1.relation_id='${relation_id}'
group by t1.relation_id
,t1.prodid
,t1.ds
ON CONFLICT (relation_id,prodid,ds) DO UPDATE SET
num = CASE WHEN EXCLUDED.num <> 0 THEN EXCLUDED.num ELSE ads.order_retention.num END,
ltv1 = CASE WHEN EXCLUDED.ltv1 <> 0 THEN EXCLUDED.ltv1 ELSE ads.order_retention.ltv1 END,
ltv2 = CASE WHEN EXCLUDED.ltv2 <> 0 THEN EXCLUDED.ltv2 ELSE ads.order_retention.ltv2 END,
ltv3 = CASE WHEN EXCLUDED.ltv3 <> 0 THEN EXCLUDED.ltv3 ELSE ads.order_retention.ltv3 END,
ltv4 = CASE WHEN EXCLUDED.ltv4 <> 0 THEN EXCLUDED.ltv4 ELSE ads.order_retention.ltv4 END,
ltv5 = CASE WHEN EXCLUDED.ltv5 <> 0 THEN EXCLUDED.ltv5 ELSE ads.order_retention.ltv5 END,
ltv6 = CASE WHEN EXCLUDED.ltv6 <> 0 THEN EXCLUDED.ltv6 ELSE ads.order_retention.ltv6 END,
ltv7 = CASE WHEN EXCLUDED.ltv7 <> 0 THEN EXCLUDED.ltv7 ELSE ads.order_retention.ltv7 END,
ltv14 = CASE WHEN EXCLUDED.ltv14 <> 0 THEN EXCLUDED.ltv14 ELSE ads.order_retention.ltv14 END,
ltv30 = CASE WHEN EXCLUDED.ltv30 <> 0 THEN EXCLUDED.ltv30 ELSE ads.order_retention.ltv30 END,
ltv60 = CASE WHEN EXCLUDED.ltv60 <> 0 THEN EXCLUDED.ltv60 ELSE ads.order_retention.ltv60 END,
ltv90 = CASE WHEN EXCLUDED.ltv90 <> 0 THEN EXCLUDED.ltv90 ELSE ads.order_retention.ltv90 END,
ltv150 = CASE WHEN EXCLUDED.ltv150 <> 0 THEN EXCLUDED.ltv150 ELSE ads.order_retention.ltv150 END,
ltv300 = CASE WHEN EXCLUDED.ltv300 <> 0 THEN EXCLUDED.ltv300 ELSE ads.order_retention.ltv300 END
;

View File

@ -0,0 +1,65 @@
-- 收入数据汇总
INSERT INTO ads.revenue_data ( relation_id,prodid,ds,ds_type,ds_name,channel,channel_type_name,merchant_name,platform_name,order_amount,money,active_num)
SELECT t1.relation_id
,t1.product_id prodid
,t.ds
,t.ds_type
,t.ds_name
,t1.channel_id channel
,t1.channel_name channel_type_name
,t1.merchant_name merchant_name
,t1.platform_name platform_name
,SUM(COALESCE(tt4.order_amount,0)) order_amount
,SUM(COALESCE(tt5.money,0)) money
,SUM(COALESCE(tt3.active_num,0)) active_num
FROM (
SELECT game_channel_id
,game_identity
,game_platform_id
,ds
,ds_type
,ds_name
FROM dwd.active_account_df
UNION
SELECT game_channel_id
,game_identity
,game_platform_id
,ds
,ds_type
,ds_name
FROM dwd.order_df
) t
INNER JOIN dim.game_product_relation t1
ON t.game_channel_id = t1.game_channel_id
AND t.game_identity = t1.game_identity
AND t.game_platform_id = t1.game_platform_id
LEFT JOIN dwd.active_account_df tt3
ON t.game_channel_id = tt3.game_channel_id
AND t.game_identity = tt3.game_identity
AND t.game_platform_id = tt3.game_platform_id
AND t.ds = tt3.ds
AND t.ds_type = tt3.ds_type
LEFT JOIN dwd.order_df tt4
ON t.game_channel_id = tt4.game_channel_id
AND t.game_identity = tt4.game_identity
AND t.game_platform_id = tt4.game_platform_id
AND t.ds = tt4.ds
AND t.ds_type = tt4.ds_type
left JOIN dwd.revenue_df tt5 on t1.relation_id=tt5.relation_id
AND tt4.ds=tt5.ds
and tt4.ds_type=tt5.ds_type
where t1.relation_id='${relation_id}'
group by t1.relation_id
,t1.product_id
,t.ds
,t.ds_type
,t.ds_name
,t1.channel_id
,t1.channel_name
,t1.merchant_name
,t1.platform_name
ON CONFLICT (relation_id,channel,merchant_name,platform_name,ds,ds_type)
DO UPDATE SET prodid = EXCLUDED.prodid,order_amount = EXCLUDED.order_amount,money = EXCLUDED.money,
active_num = EXCLUDED.active_num
;

View File

@ -0,0 +1,53 @@
-- 处理逻辑说明
-- 1.用到了first_user 和 lately_user 这两个表来计算ltv
-- first_user是用户首次登陆时间
-- lately_user是用户最后一次登陆时间
-- 2.用户首次登陆去关联用户最后一次登陆时间他们的时间差就是用户的流失时间
INSERT INTO ads.user_retention ( relation_id,prodid,ds,num,ltv1,ltv2,ltv3,ltv4,ltv5,ltv6,ltv7,ltv14,ltv30,ltv60,ltv90,ltv150,ltv300)
select
t1.relation_id
,t1.prodid
,t1.ds
,count(distinct t1.user_id) AS num
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 1 then 1 ELSE 0 END) AS ltv1
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 2 then 1 ELSE 0 END) AS ltv2
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 3 then 1 ELSE 0 END) AS ltv3
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 4 then 1 ELSE 0 END) AS ltv4
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 5 then 1 ELSE 0 END) AS ltv5
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 6 then 1 ELSE 0 END) AS ltv6
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 7 then 1 ELSE 0 END) AS ltv7
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 14 then 1 ELSE 0 END) AS ltv14
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 30 then 1 ELSE 0 END) AS ltv30
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 60 then 1 ELSE 0 END) AS ltv60
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 90 then 1 ELSE 0 END) AS ltv90
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 150 then 1 ELSE 0 END) AS ltv150
,SUM(CASE WHEN (t2.ds_date-t1.ds_date) = 300 then 1 ELSE 0 END) AS ltv300
from
dim.first_user t1
left join
dwd.active_df t2
on t1.relation_id=t2.relation_id
and t1.user_id=t2.user_id
AND t2.ds_date-t1.ds_date IN (1,2,3,4,5,6,7,14,30,60,90,150,300)
where t1.ds>='${300_days_later}' and t1.ds<='${bizdate}' and t1.relation_id='${relation_id}'
group by t1.relation_id
,t1.prodid
,t1.ds
ON CONFLICT (relation_id,prodid,ds) DO UPDATE SET
num = CASE WHEN EXCLUDED.num <> 0 THEN EXCLUDED.num ELSE ads.user_retention.num END,
ltv1 = CASE WHEN EXCLUDED.ltv1 <> 0 THEN EXCLUDED.ltv1 ELSE ads.user_retention.ltv1 END,
ltv2 = CASE WHEN EXCLUDED.ltv2 <> 0 THEN EXCLUDED.ltv2 ELSE ads.user_retention.ltv2 END,
ltv3 = CASE WHEN EXCLUDED.ltv3 <> 0 THEN EXCLUDED.ltv3 ELSE ads.user_retention.ltv3 END,
ltv4 = CASE WHEN EXCLUDED.ltv4 <> 0 THEN EXCLUDED.ltv4 ELSE ads.user_retention.ltv4 END,
ltv5 = CASE WHEN EXCLUDED.ltv5 <> 0 THEN EXCLUDED.ltv5 ELSE ads.user_retention.ltv5 END,
ltv6 = CASE WHEN EXCLUDED.ltv6 <> 0 THEN EXCLUDED.ltv6 ELSE ads.user_retention.ltv6 END,
ltv7 = CASE WHEN EXCLUDED.ltv7 <> 0 THEN EXCLUDED.ltv7 ELSE ads.user_retention.ltv7 END,
ltv14 = CASE WHEN EXCLUDED.ltv14 <> 0 THEN EXCLUDED.ltv14 ELSE ads.user_retention.ltv14 END,
ltv30 = CASE WHEN EXCLUDED.ltv30 <> 0 THEN EXCLUDED.ltv30 ELSE ads.user_retention.ltv30 END,
ltv60 = CASE WHEN EXCLUDED.ltv60 <> 0 THEN EXCLUDED.ltv60 ELSE ads.user_retention.ltv60 END,
ltv90 = CASE WHEN EXCLUDED.ltv90 <> 0 THEN EXCLUDED.ltv90 ELSE ads.user_retention.ltv90 END,
ltv150 = CASE WHEN EXCLUDED.ltv150 <> 0 THEN EXCLUDED.ltv150 ELSE ads.user_retention.ltv150 END,
ltv300 = CASE WHEN EXCLUDED.ltv300 <> 0 THEN EXCLUDED.ltv300 ELSE ads.user_retention.ltv300 END
;

View File

@ -1,6 +1,6 @@
-- 取登陆最早时间 逻辑:如果之前没出现过,那插入这条记录做最早用户登陆时间 -- 取登陆最早时间 逻辑:如果之前没出现过,那插入这条记录做最早用户登陆时间
-- 首次写入数据sql -- 首次写入数据sql
INSERT INTO dim.first_user(game_channel_id,game_identity,game_platform_id,relation_id,prodid,user_id,ds) INSERT INTO dim.first_user(game_channel_id,game_identity,game_platform_id,relation_id,prodid,user_id,ds,ds_date)
SELECT t2.game_channel_id SELECT t2.game_channel_id
,t2.game_identity ,t2.game_identity
,t2.game_platform_id ,t2.game_platform_id
@ -8,6 +8,7 @@ SELECT t2.game_channel_id
,t2.product_id prodid ,t2.product_id prodid
,t1.user_id ,t1.user_id
,min(ds) ds ,min(ds) ds
,TO_DATE(min(ds), 'YYYYMMDD') ds_date
FROM ods.active_account_list t1 FROM ods.active_account_list t1
inner join inner join
dim.game_product_relation t2 dim.game_product_relation t2
@ -24,5 +25,5 @@ GROUP BY t2.game_channel_id
ON CONFLICT (relation_id,user_id) ON CONFLICT (relation_id,user_id)
DO UPDATE SET game_channel_id = EXCLUDED.game_channel_id,game_identity = EXCLUDED.game_identity ,game_platform_id = EXCLUDED.game_platform_id DO UPDATE SET game_channel_id = EXCLUDED.game_channel_id,game_identity = EXCLUDED.game_identity ,game_platform_id = EXCLUDED.game_platform_id
,prodid = EXCLUDED.prodid,user_id = EXCLUDED.user_id,ds = EXCLUDED.ds ,prodid = EXCLUDED.prodid,user_id = EXCLUDED.user_id,ds = EXCLUDED.ds,ds_date = EXCLUDED.ds_date
; ;

View File

@ -8,7 +8,7 @@ SELECT channel_id game_channel_id
,'d' ds_type ,'d' ds_type
,'' ds_name ,'' ds_name
FROM ods.active_account_list FROM ods.active_account_list
WHERE ds>='${30_days_later}' and channel_id='${channel_id}' AND game_identity='${game_identity}' AND platform_id='${platform_id}' WHERE ds>='${30_days_later}' and ds <= '${bizdate}' and channel_id='${channel_id}' AND game_identity='${game_identity}' AND platform_id='${platform_id}'
GROUP BY ds GROUP BY ds
,channel_id ,channel_id
,game_identity ,game_identity
@ -22,7 +22,7 @@ SELECT channel_id game_channel_id
,'m' ds_type ,'m' ds_type
,'' ds_name ,'' ds_name
FROM ods.active_account_list FROM ods.active_account_list
WHERE ds>='${30_days_later}' and channel_id='${channel_id}' AND game_identity='${game_identity}' AND platform_id='${platform_id}' WHERE ds>='${30_days_later}' and ds <= '${bizdate}' and channel_id='${channel_id}' AND game_identity='${game_identity}' AND platform_id='${platform_id}'
GROUP BY channel_id GROUP BY channel_id
,game_identity ,game_identity
,platform_id ,platform_id

View File

@ -8,7 +8,7 @@ INNER JOIN dim.game_product_relation t2
ON t1.channel_id = t2.game_channel_id ON t1.channel_id = t2.game_channel_id
AND t1.game_identity = t2.game_identity AND t1.game_identity = t2.game_identity
AND t1.platform_id = t2.game_platform_id AND t1.platform_id = t2.game_platform_id
WHERE t1.ds>='${30_days_later}' and t1.channel_id='${channel_id}' AND t1.game_identity='${game_identity}' AND t1.platform_id='${platform_id}' WHERE t1.ds>='${30_days_later}' and ds <= '${bizdate}' and t1.channel_id='${channel_id}' AND t1.game_identity='${game_identity}' AND t1.platform_id='${platform_id}'
GROUP BY t2.relation_id GROUP BY t2.relation_id
,t1.user_id ,t1.user_id
,t1.ds ,t1.ds