Remove duplicate function

pull/68/head
Konstantin Gründger 2019-01-05 11:25:33 +01:00
rodzic 72f4e9377e
commit 9b1c4e71bf
2 zmienionych plików z 2 dodań i 74 usunięć

Wyświetl plik

@ -124,8 +124,7 @@ available commands:
show Show a logbook for <airport_name>.
[stats]
create_flights Create Flights.
create_stats Create DeviceStats, ReceiverStats and RelationStats.
create Create DeviceStats, ReceiverStats and RelationStats.
update_devices Update devices with data from stats.
update_receivers Update receivers with data from stats.
```

Wyświetl plik

@ -12,7 +12,7 @@ manager = Manager()
@manager.command
def create_stats(start=None, end=None):
def create(start=None, end=None):
"""Create DeviceStats, ReceiverStats and RelationStats."""
days = get_database_days(start, end)
@ -41,74 +41,3 @@ def update_devices():
result = update_devices_command(session=session)
print(result)
@manager.command
def create_flights(start=None, end=None):
"""Create Flights."""
days = get_database_days(start, end)
pbar = tqdm(days)
for single_date in pbar:
pbar.set_description(datetime.strftime(single_date, '%Y-%m-%d'))
result = _create_flights2d(session=session, date=single_date)
def _create_flights2d(session=None, date=None):
SQL = """
INSERT INTO flights2d
(
date,
device_id,
path
)
SELECT sq5.date,
sq5.device_id,
st_collect(sq5.linestring ORDER BY sq5.part) multilinestring
FROM (
SELECT sq4.timestamp::date AS date,
sq4.device_id,
sq4.part,
st_makeline(sq4.location ORDER BY sq4.timestamp) linestring
FROM (
SELECT sq3.timestamp,
sq3.location,
sq3.device_id,
sum(sq3.ping) OVER (partition BY sq3.timestamp::date, sq3.device_id ORDER BY sq3.timestamp) part
FROM (
SELECT sq2.t1 AS timestamp,
sq2.l1 AS location,
sq2.d1 device_id,
CASE
WHEN sq2.t1 - sq2.t2 < interval'100s'
AND st_distancesphere(sq2.l1, sq2.l2) < 1000 THEN 0
ELSE 1
END AS ping
FROM (
SELECT sq.timestamp t1,
lag(sq.timestamp) OVER (partition BY sq.timestamp::date, sq.device_id ORDER BY sq.timestamp) t2,
sq.location l1,
lag(sq.location) OVER (partition BY sq.timestamp::date, sq.device_id ORDER BY sq.timestamp) l2,
sq.device_id d1,
lag(sq.device_id) OVER (partition BY sq.timestamp::date, sq.device_id ORDER BY sq.timestamp) d2
FROM (
SELECT timestamp,
device_id,
location,
row_number() OVER (partition BY timestamp::date, device_id, timestamp ORDER BY error_count) message_number
FROM aircraft_beacons
WHERE timestamp::date = '{}' ) sq
WHERE sq.message_number = 1 ) sq2 ) sq3 ) sq4
GROUP BY sq4.timestamp::date,
sq4.device_id,
sq4.part ) sq5
GROUP BY sq5.date,
sq5.device_id
ON CONFLICT DO NOTHING;
"""
result = session.execute(SQL.format(date.strftime("%Y-%m-%d")))
insert_counter = result.rowcount
session.commit()
return "Inserted {} Flights for {}".format(insert_counter, date.strftime("%Y-%m-%d"))