scripts/bi/today_dau.py

63 lines
1.6 KiB
Python

from lib.all import *
from lib.odps import *
# 今日dau
class S:
def __init__(self):
self.mysql_db_bi = Mysql(
"172.31.37.71", 3306, "bi", "root", "Wishpal@2023"
)
self.myodps = new_my_odps()
def __del__(self):
self.mysql_db_bi.close()
# 获取dau
def get_today_dau_data(self):
sql = '''
SELECT device,
COUNT(DISTINCT mid) AS dau
FROM
(
SELECT mid,
MAX(CONCAT(frominfo,"_",GET_JSON_OBJECT(opt,'$.dt'))) AS device
FROM actionlog
WHERE CONCAT(ym,day) = "{}"
AND type="auth" AND stype="token"
AND mid>0 AND frominfo!=""
GROUP BY mid
)
GROUP BY device
'''.format(get_time_str_by_ts(get_today_zero_time(), "%Y%m%d"))
print(sql)
dau_app_android = 0
dau_app_ios = 0
dau_h5 = 0
docs = self.myodps.exec_odps_and_to_diclist(sql)
for doc in docs:
device = safe_get_str(doc, "device")
dau = safe_get_int(doc, "dau")
if device == "production_0":
dau_app_android += dau
elif device == "production_1":
dau_app_ios += dau
elif device.find("h5") >= 0:
dau_h5 += dau
dau_total = dau_app_android + dau_app_ios + dau_h5
print(
dau_total, dau_app_android, dau_app_ios, dau_h5
)
# 写入
sql_u = "update today_dau set app_android=%s, app_ios=%s, h5_android=%s, total=%s where id=1"
ret = self.mysql_db_bi.exec(sql_u, (dau_app_android, dau_app_ios, dau_h5, dau_total))
print("update finish, ret: {}".format(ret))
s = S()
s.get_today_dau_data()