修正时区

This commit is contained in:
wuaho 2021-05-28 11:21:05 +08:00
parent 3b75cb3999
commit 67eb6d7271

View File

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