diff --git a/api/api_v1/endpoints/xquery.py b/api/api_v1/endpoints/xquery.py index a845c00..36ea713 100644 --- a/api/api_v1/endpoints/xquery.py +++ b/api/api_v1/endpoints/xquery.py @@ -59,6 +59,8 @@ async def ltv_model_sql( df.loc[len(df)] = '0' df.loc[len(df) - 1, 'date'] = d days = (pd.Timestamp.now().date() - d).days + if days + 2 >= res['ltv_len']: + continue df.loc[len(df) - 1, f'LTV{days + 2}':] = '-' df.sort_values('date', inplace=True) df.rename(columns={'date': '注册日期'}, inplace=True) diff --git a/models/x_analysis.py b/models/x_analysis.py index 163e752..fb43c15 100644 --- a/models/x_analysis.py +++ b/models/x_analysis.py @@ -54,7 +54,7 @@ class XAnalysis: else: self.event_view = self.data_in.eventView self.events = self.data_in.events - for d in pd.date_range(self.event_view['startTime'],self.event_view['endTime'], freq='D', tz='UTC'): + for d in pd.date_range(self.event_view['startTime'], self.event_view['endTime'], freq='D', tz='UTC'): self.date_range.append(d.date()) self.global_filters = self._get_global_filters() @@ -130,7 +130,7 @@ class XAnalysis: quota = self.event_view['quota'] select_ltv = [] sumpay = [] - for i in range(1, days+2): + for i in range(1, days + 2): # select_ltv.append(func.round(sa.Column(f'sumpay_{i}') / sa.Column('cnt1'), 2).label(f'LTV{i}')) select_ltv.append( f"if(dateDiff('day', reg.date, now())<{i - 1}, '-',toString(round(sumpay_{i} / cnt1, 2))) AS LTV{i}") @@ -189,5 +189,6 @@ class XAnalysis: return {'sql': sql, 'quota': quota, 'start_date': self.event_view['startTime'][:10], 'end_date': self.event_view['endTime'][:10], - 'date_range': self.date_range + 'date_range': self.date_range, + 'ltv_len': days + 1 }