LINUX.ORG.RU
решено ФорумAdmin

Просчитать возраст договора

 , uql


0

1

Дано «Договоры.csv»

"Дата";"Контрагент";"ДатаДоговора";"Сумма";"Оплачено"
"2024-07-01 00:00:00";"Клиент1";"2024-06-21 00:00:00";100000;0
"2024-07-08 00:00:00";"Клиент1";"2024-06-21 00:00:00";100000;10000
"2024-07-08 00:00:00";"Клиент2";"2024-07-01 00:00:00";200000;0

Требуется показать «Возраст» договора.

Используется Плагин Infinity (тип CSV, парсер UQL, источник URL, формат Table). Cледующий UQL код нуждается в корректировке:

parse-csv --delimiter ";" | where "Контрагент" == '${Customer}'
| extend "start"=todatetime("ДатаДоговора")
| extend "end"=now()
| extend "x"=diff("start","end")
| project "Возраст"="x"
| order by "ДатаДоговора" desc | limit 1 

★★★★★

Последнее исправление: petav (всего исправлений: 1)

ну по логике задания «возраст» договора это не разница между текущей датой и датой в столбце «ДатаДоговора»

а, очевидно, между датой из столбца «Дата» и датой в столбце «ДатаДоговора»

иначе невозможно сделать автоматический тест задания, именно отсюда «очевидность»

Переделайте - тут все есть, что нужно для переделки

vyv ★★★
()
Последнее исправление: vyv (всего исправлений: 3)

А просто вычесть одну дату из другой нельзя? Как в pwsh:

$csv = gc Договоры.csv | ConvertFrom-Csv -d ';'
$format = 'd\ \d\a\y\s\,\ hh\:mm\:ss'
foreach ($d in $csv) {                                                                   
    
    (([datetime] $d.Дата) - ([datetime] $d.ДатаДоговора)).ToString($format)
}
10 days, 00:00:00
17 days, 00:00:00
7 days, 00:00:00
dmitry237 ★★★★
()
Ответ на: комментарий от dmitry237

Просто вычесть не получается. Варианты вокруг этого с предварительными преобразованиями типов не срабатывают.

Перебрал варианты. Возможностей не много https://grafana.com/docs/plugins/yesoreyeram-infinity-datasource/latest/query...

Возможно на UQL задача не решается. Поиском находятся решения использования данной математики только в SQL запросах.

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

О, так можно написать на PHP калькулятор дат с HTTP Get интерфейсом! Запустить на локальном хосте веб-сервер + локальный сайт, спросить http://localhost/2024-11-01/current, получить ответ!

PeleWin
()

Загрузил данные CSV в PostgreSQL

infocenter-# \COPY commerce FROM Договоры.csv DELIMITER ';' CSV HEADER;
Составил запрос для просчета Возраста
infocenter=# SELECT , now()::date-agreementdate::date AS time_remaining FROM commerce;
 agreement  | time_remaining 
------------+----------------
 Договор №2 |            538
 Договор №2 |            538
 Договор №3 |            537
 Договор №3 |            537
 Договор №4 |            536
 Договор №4 |            536
 Договор №5 |            535
 Договор №5 |            535
 Договор №6 |            534
 Договор №6 |            534
 Договор №7 |            533
 Договор №7 |              8
(12 rows)

infocenter=#

petav ★★★★★
() автор топика