Je travaille sur un flux d'événements pour la première fois, ce qui fait que je n'ai pas fait grand-chose à grande échelle. J'essaye d'écrire le manuscrit de SQL pour me donner le temps de chargement du lobby de causerie une fois que l'utilisateur s'est connecté. Ci-dessous j'ai un exemple de script pour un ETL. Je veux savoir s'il y a une meilleure façon de faire qui rejoint ce que j'ai fait. J'ai également pensé à diviser les sous-requêtes en deux tables séparées et à faire une jointure à gauche, mais je ne suis pas certain de quelle manière est considérée comme optimale et meilleure. J'ai aussi pensé faire du CTE.Quelle est la méthode efficace d'auto-jonction d'un flux d'événements?
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
Le script ci-dessus que j'ai créé été fait en utilisant PostgreSQL
Je suis désolé si je suis impoli, mais n'est pas un ETL est utilisé précisément pour remplacer SQL avec plus de code visuel? Et en passant, quel est votre ETL? – AlainD
Eh bien ... ouais ETL mais la société est en train de passer à cette infrastructure et SPARK et d'autres outils après avoir été pris en considération alors que nous essayons de maintenir le fonctionnement de l'entreprise comme d'habitude. – codeBarer
Ok, alors qu'ils sont occupés à décider dans quelle direction ils vont effectuer la transition, peut-être que vous téléchargez [Kettle] (https://sourceforge.net/projects/pentaho/files/Data%20Integration). C'est un véritable ETL: c'est un travail, c'est gratuit, robuste, transparent pour SPARK et d'autres technos de sources de données, et vous pouvez copier/coller votre SQL directement, afin de continuer à fonctionner comme d'habitude, sous le radar. Exactement comme moi. (Note: je n'ai aucun intérêt commercial) – AlainD