修复empty

This commit is contained in:
wuaho 2021-10-29 16:01:14 +08:00
parent f75f9c97c6
commit aec4ebf825
2 changed files with 25 additions and 7 deletions

View File

@ -54,6 +54,8 @@ async def query_sql(
sql = data_in.sql sql = data_in.sql
sql = sql.replace('$game', game) sql = sql.replace('$game', game)
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
df_to_stream = DfToStream((df, 'result')) df_to_stream = DfToStream((df, 'result'))
with df_to_stream as d: with df_to_stream as d:
export = d.to_stream() export = d.to_stream()
@ -93,6 +95,8 @@ async def event_model_export(request: Request,
sql = item['sql'] sql = item['sql']
event_name = item['event_name'] event_name = item['event_name']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
continue
if 'date' in df: if 'date' in df:
df.sort_values('date', inplace=True) df.sort_values('date', inplace=True)
try: try:
@ -288,7 +292,7 @@ async def retention_model(request: Request,
sql = res['sql'] sql = res['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty: if df.empty:
return schemas.Msg(code=0, msg='无数据', data=None) return schemas.Msg(code=-9, msg='无数据', data=None)
date_range = res['date_range'] date_range = res['date_range']
unit_num = res['unit_num'] unit_num = res['unit_num']
@ -361,6 +365,8 @@ async def retention_model_export(request: Request,
sql = data['sql'] sql = data['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
df_to_stream = DfToStream((df, '留存分析')) df_to_stream = DfToStream((df, '留存分析'))
with df_to_stream as d: with df_to_stream as d:
export = d.to_stream() export = d.to_stream()
@ -386,6 +392,8 @@ async def retention_model_del(
title = await crud.event_mana.get_show_name(db, game, event_a) title = await crud.event_mana.get_show_name(db, game, event_a)
title = f'{title}用户数' title = f'{title}用户数'
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
concat_data = [] concat_data = []
df = pd.concat([df, pd.DataFrame(concat_data, columns=df.columns)]) df = pd.concat([df, pd.DataFrame(concat_data, columns=df.columns)])
df['date'] = df['date'].apply(lambda x: x.date()) df['date'] = df['date'].apply(lambda x: x.date())
@ -473,6 +481,8 @@ async def funnel_model(
groupby = res['groupby'] groupby = res['groupby']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
# 补齐level数据 # 补齐level数据
concat_data = [] concat_data = []
for key, tmp_df in df.groupby(['date'] + groupby): for key, tmp_df in df.groupby(['date'] + groupby):
@ -616,6 +626,8 @@ async def retention_model_export(request: Request,
mime = mimetypes.guess_type(file_name)[0] mime = mimetypes.guess_type(file_name)[0]
sql = res['sql'] sql = res['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
interval_type = res['interval_type'] interval_type = res['interval_type']
analysis = res['analysis'] analysis = res['analysis']
groupby = res['groupby'] groupby = res['groupby']
@ -734,6 +746,8 @@ async def scatter_model(
res = await analysis.scatter_model_sql() res = await analysis.scatter_model_sql()
sql = res['sql'] sql = res['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
df.fillna(0, inplace=True) df.fillna(0, inplace=True)
df['values'] = df['values'].astype(int) df['values'] = df['values'].astype(int)
interval_type = res['interval_type'] interval_type = res['interval_type']
@ -858,6 +872,8 @@ async def trace_model_sql(
res = await analysis.trace_model_sql() res = await analysis.trace_model_sql()
sql = res['sql'] sql = res['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
chain_dict = defaultdict(dict) chain_dict = defaultdict(dict)
nodes = {'流失'} nodes = {'流失'}
for event_names, count in zip(df['event_chain'], df['values']): for event_names, count in zip(df['event_chain'], df['values']):
@ -923,6 +939,8 @@ async def user_property_model_export(
sql = data['sql'] sql = data['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='无数据', data=None)
df_to_stream = DfToStream((df, '用户属性')) df_to_stream = DfToStream((df, '用户属性'))
with df_to_stream as d: with df_to_stream as d:
export = d.to_stream() export = d.to_stream()
@ -944,12 +962,11 @@ async def user_property_model(
quota = res['quota'] quota = res['quota']
groupby = res['groupby'] groupby = res['groupby']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if len(df) == 0: if df.empty:
return schemas.Msg(code=0, msg='无数据', data=None) return schemas.Msg(code=-9, msg='无数据', data=None)
# 没有分组 # 没有分组
data = {'groupby': groupby} data = {}
title = []
if not groupby: if not groupby:
data['总体'] = int(df['values'][0]) data['总体'] = int(df['values'][0])
@ -957,7 +974,6 @@ async def user_property_model(
else: else:
sum_s = df.groupby(groupby)['values'].sum() sum_s = df.groupby(groupby)['values'].sum()
data = dict()
for key, val in sum_s.items(): for key, val in sum_s.items():
if isinstance(key, tuple): if isinstance(key, tuple):
key = ','.join([str(i) for i in key]) key = ','.join([str(i) for i in key])

View File

@ -54,7 +54,7 @@ async def ltv_model_sql(
ltv_n = res['ltv_n'] ltv_n = res['ltv_n']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty: if df.empty:
return schemas.Msg(code=-1, msg='查无数据') return schemas.Msg(code=-9, msg='查无数据')
df.fillna(0, inplace=True) df.fillna(0, inplace=True)
for d in set(res['date_range']) - set(df['date']): for d in set(res['date_range']) - set(df['date']):
df.loc[len(df)] = 0 df.loc[len(df)] = 0
@ -116,6 +116,8 @@ async def ltv_model_export(request: Request,
sql = data['sql'] sql = data['sql']
df = await ckdb.query_dataframe(sql) df = await ckdb.query_dataframe(sql)
if df.empty:
return schemas.Msg(code=-9, msg='查无数据')
df_to_stream = DfToStream((df, 'ltv')) df_to_stream = DfToStream((df, 'ltv'))
with df_to_stream as d: with df_to_stream as d:
export = d.to_stream() export = d.to_stream()