Ich arbeite zum ersten Mal an einem Event-Stream, so dass ich mich selbst nicht an einem Tisch angeschlossen habe. Ich versuche, SQL-Skript zu schreiben, um mir Ladezeit der Chat-Lobby zu geben, sobald der Benutzer sich eingeloggt hat. Unten habe ich ein Beispielskript für eine ETL. Ich möchte wissen, ob es einen besseren Weg gibt, Joins als das, was ich getan habe, zu tun. Ich habe auch darüber nachgedacht, die Unterabfragen in zwei separate Tabellen zu zerlegen und einen Linksbündnis zu machen, aber nicht sicher, welcher Weg als optimal und besser angesehen wird. Ich dachte auch daran, CTE zu machen.Was ist der effiziente Weg, sich selbst einem Ereignisstrom anzuschließen?
DROP TABLE IF EXISTS event_stream;
create table event_stream
(
event varchar(50),
action varchar(100),
userid int,
session_id int,
date timestamp
);
INSERT INTO event_stream(event, action, userid, date,session_id) VALUES
('login', 'success', 1, '2017-08-15 12:30',100),
('chatlobby','loaded', 1, '2017-08-15 12:30:10',100),
('entered_chatroom','chatroom1',1,'8/15/2017 12:31',100),
('login', 'success', 54, '2017-08-15 01:30',101),
('chatlobby','loaded', 54, '2017-08-15 01:30:05',101),
('entered_chatroom','chatroom2',54,'8/15/2017 01:31',101);
Select a.userid, a.session_id, b.date - a.date as load_time
from
(Select * from event_stream where event = 'login' and action='success') a
JOIN
(Select * from event_stream where event = 'chatlobby' and action = 'loaded') b
ON a.session_id = b.session_id
Das Skript oben I wurde unter Verwendung der PostgreSQL getan
Es tut mir leid, wenn ich unhöflich bin, aber ist nicht ein ETL genau verwendet, um SQL durch mehr visuellen Code zu ersetzen? Und was ist dein ETL? – AlainD
Nun ... ja, ETL, aber das Unternehmen wechselt zu dieser Infrastruktur und zu SPARK und anderen Tools, nachdem wir noch in Betracht gezogen wurden, während wir versuchen, das Geschäft wie gewöhnlich laufen zu lassen. – codeBarer
Ok, dann, während sie damit beschäftigt sind zu entscheiden, in welche Richtung sie wechseln werden, laden Sie vielleicht [Kettle] herunter (https://sourceforge.net/projects/pentaho/files/Data%20Integration). Es ist ein echtes ETL: Es funktioniert, es ist kostenlos, robust, transparent für SPARK und andere Datenquellen-Technos, und Sie können Ihr SQL direkt kopieren und einfügen, um das Geschäft wie gewohnt unter dem Radar zu betreiben. Genau wie ich. (Hinweis: Ich habe kein kommerzielles Interesse) – AlainD