修正时区
This commit is contained in:
parent
3b75cb3999
commit
67eb6d7271
@ -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']
|
||||||
|
Loading…
Reference in New Issue
Block a user