diff --git a/models/to_sql.py b/models/to_sql.py index bb41778..443b6c8 100644 --- a/models/to_sql.py +++ b/models/to_sql.py @@ -1,14 +1,9 @@ -import datetime from typing import List, Tuple import sqlalchemy as sa from sqlalchemy.sql import func from sqlalchemy import create_engine, column, and_, desc, table, or_ import pandas as pd -TIME_ZONE_MAP = { - 8: 'Asia/Shanghai' -} - PROPHET_TIME_GRAIN_MAP = { "PT1S": "S", "PT1M": "min", @@ -23,16 +18,16 @@ PROPHET_TIME_GRAIN_MAP = { } TIME_GRAIN_EXPRESSIONS = { - 'PT1S': lambda col, zone: func.toStartOfSecond(func.toTimeZone(col, zone)).label('date'), - 'PT1M': lambda col, zone: func.toStartOfMinute(func.toTimeZone(col, zone)).label('date'), - 'PT5M': lambda col, zone: func.toStartOfFiveMinute(func.toTimeZone(col, zone)).label('date'), - 'PT10M': lambda col, zone: func.toStartOfTenMinutes(func.toTimeZone(col, zone)).label('date'), - 'PT15M': lambda col, zone: func.toStartOfFifteenMinutes(func.toTimeZone(col, zone)).label('date'), - # 'PT0.5H': lambda col, zone: func.toStartOfMinute(func.toTimeZone(col, zone)).label('date'), - 'PT1H': lambda col, zone: func.toStartOfHour(func.toTimeZone(col, zone)).label('date'), - 'P1D': lambda col, zone: func.toStartOfDay(func.toTimeZone(col, zone)).label('date'), - 'P1W': lambda col, zone: func.toMonday(func.toTimeZone(col, zone)).label('date'), - 'P1M': lambda col, zone: func.toStartOfMonth(func.toTimeZone(col, zone)).label('date'), + 'PT1S': lambda col, zone: func.toStartOfSecond(func.addHours(col, zone)).label('date'), + 'PT1M': lambda col, zone: func.toStartOfMinute(func.addHours(col, zone)).label('date'), + 'PT5M': lambda col, zone: func.toStartOfFiveMinute(func.addHours(col, zone)).label('date'), + 'PT10M': lambda col, zone: func.toStartOfTenMinutes(func.addHours(col, zone)).label('date'), + 'PT15M': lambda col, zone: func.toStartOfFifteenMinutes(func.addHours(col, zone)).label('date'), + # 'PT0.5H': lambda col, zone: func.toStartOfMinute(func.addHours(col, zone)).label('date'), + 'PT1H': lambda col, zone: func.toStartOfHour(func.addHours(col, zone)).label('date'), + 'P1D': lambda col, zone: func.toStartOfDay(func.addHours(col, zone)).label('date'), + 'P1W': lambda col, zone: func.toMonday(func.addHours(col, zone)).label('date'), + 'P1M': lambda col, zone: func.toStartOfMonth(func.addHours(col, zone)).label('date'), } @@ -75,17 +70,16 @@ class ToSql: select_exprs = [self.columns.get(item) for item in select_exprs] time_particle_size = self.get_time_particle_size() start_data, end_data = self.get_date_range() - time_zone = TIME_ZONE_MAP[self.get_zone_time()] + time_zone = self.get_zone_time() select_exprs.insert(0, TIME_GRAIN_EXPRESSIONS[time_particle_size](self.columns['#event_time'], time_zone)) - date_range = pd.date_range(start_data, end_data, freq=PROPHET_TIME_GRAIN_MAP[time_particle_size], - tz=time_zone).tolist() + date_range = pd.date_range(start_data, end_data, freq=PROPHET_TIME_GRAIN_MAP[time_particle_size]).tolist() groupby = [item.name for item in select_exprs] for event in self.events: event_name = event['event_name'] where = [ - self.columns['#event_time'] >= start_data, - self.columns['#event_time'] <= end_data, + func.addHours(self.columns['#event_time'], time_zone) >= start_data, + func.addHours(self.columns['#event_time'], time_zone) <= end_data, self.columns['#event_name'] == event_name ] analysis = event['analysis']