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

Так, стоп. а почему с 21:53?

46 ответов

73 просмотра

потому что это оно вошло в фильтр по часу where dif<1

Kirill-Leontev Автор вопроса
GS
потому что это оно вошло в фильтр по часу where di...

нет. вошло 22:27. у него разница меньше часа с 21:53. а у 21:53 с 12:23 разница 9 часов, оно ожидаемо не вошло

Kirill Leontev
нет. вошло 22:27. у него разница меньше часа с 21:...

все верно, должны войти записи 24/07/2021 22:27:42 и 24/07/2021 21:53:52

Kirill-Leontev Автор вопроса
GS
все верно, должны войти записи 24/07/2021 22:27:42...

21:53 не должно войти входят записи у которых дата - лаг(дата) меньше часа дата=22:27 лаг(дата)=21:53 - меньше часа, входит дата=21:53 лаг(дата)=12:23 - девять часов, не входит

У вас тут dt без to_date

Kirill-Leontev Автор вопроса

что верно? вы говорите что 21:53 должно войти я говорю вам что оно не дожно войти ровно по тому условию которое вы написали в запросе

ZhekaPPP
У вас тут dt без to_date

где нужно to-date? в lag (dt ignore nulls,1,dt) ??? я просто после вашего замечания добавила в сортировку

Kirill Leontev
что верно? вы говорите что 21:53 должно войти я го...

меньше часа, оно и вошло, что не так? я же не указала больше часа вытяните мне

ZhekaPPP
Везде нужно

сейчас попробую

Kirill-Leontev Автор вопроса
GS
меньше часа, оно и вошло, что не так? я же не указ...

вы выводите строки, у которых разница между текущей и предыдущей датой менее часа. у 22:27 она менее часа (предыдущая дата 21:53), поэтому строка попала в выборку. у 21:53 она более часа (предыдущая дата 12:23, разница 9 часов), поэтому строка не попала в выборку. я не знаю что еще тут сказать 🤷‍♂️

Kirill Leontev
вы выводите строки, у которых разница между текуще...

так мой вопрос как раз в ттом, почему входит 9:38 и как это можно обыграть

Kirill-Leontev Автор вопроса
GS
так мой вопрос как раз в ттом, почему входит 9:38 ...

9-38 входит потому что она сравнивается с самой собой (потому что это самая ранняя дата; по умолчанию лаг вернул бы для нее нулл, но вы написали его так, что он вместо нулла возвращает саму дату 9-38). результат сравнения ноль минут ноль секунд, это меньше часа, строка попадает в выборку

Kirill Leontev
9-38 входит потому что она сравнивается с самой со...

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

Kirill-Leontev Автор вопроса
GS
я поняла, что она по умолчанию достает самую ранню...

нет, она не достает по умолчанию самую раннюю дату, она достает саму себя то что вы написали это аналог nvl(lag(dt) over(... ), dt)

ZhekaPPP
Везде нужно

тут вообще бред какой-то вытянул даты даже другого отправителя

а почему именно эту дату по умолчанию? потому что она самая первая так?

Kirill-Leontev Автор вопроса
GS
а почему именно эту дату по умолчанию? потому что ...

на пальцах lag(dt, 1, dt) over(partition by sender order by dt) читается так: "найди предыдущую dt для sender из текущей строки; если предыдущей dt нет, используй вместо предыдущей dt значение dt из текущей строки"

Kirill Leontev
на пальцах lag(dt, 1, dt) over(partition by sender...

а что у нас является текущей строкой? когда если оставить lag(dt) без оффсета и заполнения по умолчанию выходит текущей строчкой только 348 24.07.2021 22:27:42 24.07.2021 21:53:52 по какой логике он по умолчанию принимает 24/07/2021 9:38:28? потому что она самая первая? или как ? ну в принципе как бы оно правильно не называлось, вопрос мой заключался как можно было обыграть установив по умолчанию значение которое нужно

да просто написать не <1 а >0 и <1

Kirill-Leontev Автор вопроса
GS
а что у нас является текущей строкой? когда если о...

тоже на пальцах у вас по строкам идет цикл, на каждом шаге цикла выполняется функция lag. для "текущей" строки (для той, на которой сейчас остановился цикл) функция lag находит "предыдущую" строку, и берет из нее значение dt. если "предыдущей" строки не существует (если "текущая" самая первая) - по умолчанию возвращается null. если задать для для функции lag третий аргумент dt, то в ситуации, когда "предыдущей" строки нет, она возьмет dt из "текущей". это то, что произошло у вас - для 9-38 "предыдщей" строки нет, поэтому dt взяли из "текущей". разница между ними - ноль, поэтому строка в выборке.

Kirill Leontev
тоже на пальцах у вас по строкам идет цикл, на ка...

хорошо) это я поняла, в общем возвращаясь к своему вопросу. ничего с этим поделать таки нельзя?

Kirill Leontev
с чем с этим?

с тем чтобы в результате вытянуть дату граничную и строку с данными ей соответствующую, тобишь 24/07/2021 21:53:52 тут дело вот в чем, мне как бы нужна эта граничная дата, так как мне нужно выловить подозрительные транзакции в периоде часа и сумму верхней границы тоже

GS
с тем чтобы в результате вытянуть дату граничную и...

да 3 параметр пусть уберет. а так и второй не нужен

Kirill-Leontev Автор вопроса
GS
с тем чтобы в результате вытянуть дату граничную и...

чтобы вытянуть 21:53 вам нужно изменить условие, которое исключает 21:53. условие на разницу в час. забудьте о лаг и 9 утра, они тут ни причем вообще

Kirill Leontev
чтобы вытянуть 21:53 вам нужно изменить условие, к...

да, лаг тут не помощник вероятно.. но чем тогда, чувствую, что код тогда увеличится и будет долгим

Kirill-Leontev Автор вопроса
GS
да, лаг тут не помощник вероятно.. но чем тогда, ч...

я вам говорил уже много раз - "нарисуйте" как будет выглядеть ожидаемая вами выборка для исходного набора данных. буквально, напишите все строки со всеми колонками.

Kirill Leontev
я вам говорил уже много раз - "нарисуйте" как буде...

Ладно, я на pyspark в питоне как-нибудь обыграю. Спасибо

Kirill-Leontev Автор вопроса
GS
Ладно, я на pyspark в питоне как-нибудь обыграю. С...

ну и результат будет "какой-нибудь"

Kirill Leontev
ну и результат будет "какой-нибудь"

Ну согласитесь, хотя вы со мной не согласитесь, оракл свой инструментал в оконных смещениях сжал, оконные границы со смещением unbounded и between тут не применительны, по умолчанию значение ставить с уточнением в смещении не позволяет…

Kirill-Leontev Автор вопроса
GS
Ну согласитесь, хотя вы со мной не согласитесь, ор...

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

GS
Ну согласитесь, хотя вы со мной не согласитесь, ор...

Что значит "сжал инструментал" и что значит "по умолчанию значение ставить с уточнением в смещении"?

Kirill Leontev
я ещё раз повторю: покажите, как должны выглядеть ...

Почему нужна верхняя граница времени - потому что предположительно в это время проходит подозрительная транзакция с определенной суммой в записи, которая должна быть вычислена. Таблица со значениеми идёт со временем, с суммой и отправителем. Подозрительным отправитель считается отправляющий в периоде меньше часа и в сумме не превышающий заявленную от заказчика. Поэтому я здесь применила лаг, чтобы сначала вычислить разницу по времени, далее обнаружила, что сумма не учитывается у верхнего периода времени подозрительного отправителя, то есть он тупо не попадает в расчёт (хотя должен). Так и пришли к тому что в значении по умолчанию устанавливается только как вы говорите только «текущая дата». Вот, что ещё мне пояснить? Так получается задала вопрос, а в итоге оправдываюсь, что не знаю

GS
Почему нужна верхняя граница времени - потому что ...

Можно перефразирую? "Сумма транзакций, отстоящих друг от друга менее чем на час не должна превышать определенного предела." Так?

Alexander Morozov
Можно перефразирую? "Сумма транзакций, отстоящих д...

Она должна быть учтена, да То есть: Отправитель Время Сумма 7 21:53 328 7 22:47 348 Когда мы высчитываем используя лаг, запись с суммой 348 в расчёт попадает, грубо говоря, а 328 нет.

GS
Она должна быть учтена, да То есть: Отправитель В...

А поскольку по дефолту lag(dt,1,dt) в dt попадает «текущая дата» - это дата, самая первая запись в таблице соответствующая данному отправителю и сумма соответствующая это строчке не та.

GS
Она должна быть учтена, да То есть: Отправитель В...

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

Kirill Leontev
ура

Ну извиняйте, если что-то не так пояснила

Alexander Morozov
Ну так и вычислите для каждой своей записи сумму в...

Теперь вы тут мне поясните, пожалуйста, что вы имели ввиду? Сумму посчитать несложно, если будут вытянуты соответсвующие ей записи. Вы какую функцию имели ввиду? Numstodinterval или как он там называется, я не помню уже

GS
Теперь вы тут мне поясните, пожалуйста, что вы име...

Вообще-то я имел в виду банальный join таблицы самой на себя.

Alexander Morozov
Вообще-то я имел в виду банальный join таблицы сам...

А, ну там дальше еще рекурсивный запрос у меня, чтобы начало цепочки определить и конец, поэтому думаю и без джойна справимся

GS
А, ну там дальше еще рекурсивный запрос у меня, чт...

Нужен список всех транзакций, помеченных как входящих в цепочку подозрительных или просто констатация наличия такой цепочки?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта