184 похожих чатов

Доброе утро всем любителям шарад и загадок 🙂 Памагите с запросом,

ибо не хватает познаний во встроенных агрегирующих функциях 🙁

дано: 3 таблицы:
1) traffic - траффик с фаервола с разобранными по типам пакетами и количеством отправленных/полученных Bytes + ip-адреса
2) dns - сопоставление ip-адреса и dns-имени
3) windows_security - логи windows с логинами пользователей и dns-именами компьютеров
само-собой в каждой таблице имеется EventTime

нужно: отобразить таблицу с логинами пользователей, что запускали torrent-ы в выбранный промежуток времени ( конечная цель - grafana )

предполагаемый порядок действий следующий:
1) выбрать логины пользователей за указаный промежуток времени ( поля Login + ComputerName )
2) добавление в выборку к ComputerName информации о ip-адресе компьютера поле IP ( из таблицы dns )
3) добавление к выборке по полю IP из таблицы traffic информации о наличии трафика по протоколу torrent
но, данный порядок затрагивает лишь доменные windows компьютеры , а по факту может оказаться, что torrent запускались на условно серверах, что не прописаны в dns.
поэтому, есть второй порядок действий, который частично уже работает:
1) выбрать информацию о наличии torrent траффика c полями ip-адрес MegaBytesSent MegaBytesReceived MegaBytes
2) добавление в выборку к ip-адресу информации ComputerName ( из таблицы dns )
3) выбрать логины пользователей за указаный промежуток времени что пользовали torrent

Тот запрос, что имеется к настоящему моменту. частично работает, но, не предполагает того, что в обозначеный промежуток времени terrent-траффик суммируется и не предполагает что за обозначенный промежуток времени за компьютером могли работать несколько пользователей.

SELECT
IP,
ComputerName,
MegaBytesSent,
MegaBytesReceived,
MegaBytes,
TargetUserName
FROM
(
SELECT
IP,
ComputerName,
MegaBytesSent,
MegaBytesReceived,
MegaBytes
FROM
(
SELECT
IP,
(sum(Bytes) / 1000000) AS MegaBytes,
(sum(BytesSent) / 1000000) AS MegaBytesSent,
(sum(BytesReceived) / 1000000) AS MegaBytesReceived,
FROM
traffic
WHERE
EventDate BETWEEN today() - 2 AND today()
AND Application = 'torrent'
AND IP LIKE '192.%'
GROUP BY
IP
HAVING
MegaBytes > 10
) ANY
LEFT JOIN (
SELECT
IP,
ComputerName
FROM
dns
) USING (IP)
) ANY
INNER JOIN (
SELECT
EventTime,
ComputerName,
TargetUserName
FROM
windows_security
WHERE
EventDate BETWEEN today() - 2 AND today()
AND EventID = 4624
AND (
LogonType = '7'
OR LogonType = '2'
)
) USING ComputerName

Какими еще функциями следует воспользоваться, чтобы сделать такую хитрую сортировку?
Если кто-то сталкивался с аналогичными задачами, то, можете просто накидать полезных для меня функций.

1 ответов

6 просмотров

По хорошему надо все это собрать в одну таблицу еще до КХ (на этапе ETL). А так, надо сначало сджойнить, а потом уже считать sum (группировать). Для джойна по несовпадающим промежуткам времени можно округлять (например до часа) или использовать ASOF JOIN.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта