Size: a a a

pgsql – PostgreSQL

2020 July 23

SG

Sergey Gr in pgsql – PostgreSQL
Туко
Подскажите, есть ли в постгресе "из коробки" версионирование данных в таблицах ? Или какое расширение можно заюзать для этого ?
Из коробки нет, только под капотом. pg_dirtyread
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Kirill
Так а в запросе же группировка есть
WITH t(id,partition_id,data) AS (
 VALUES (1, 1, 'two'::text), (1, 2, NULL), (1, 3, NULL), (1, 4, 'four'), (1, 5, NULL), (1, 6, 'one'),
        (2, 1, NULL), (2, 2, 'three'), (2, 3, NULL)
)
SELECT *, COALESCE(max(data) OVER (PARTITION BY id ORDER BY partition_id))
 FROM t;
источник

VY

Victor Yegorov in pgsql – PostgreSQL
ваш вариант работает на показанных данных. если данные меняются, то работает не так, как вы просили
источник

K

Kirill in pgsql – PostgreSQL
Victor Yegorov
ваш вариант работает на показанных данных. если данные меняются, то работает не так, как вы просили
Понял ошибку
источник

K

Kirill in pgsql – PostgreSQL
Victor Yegorov
ваш вариант работает на показанных данных. если данные меняются, то работает не так, как вы просили
У меня задумка была следующая, получить окно с помощью OVER и получить первое NOT NULL значение с помощью COALESCE, но не могу понять как мне получить окно с текстом из столбца data
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Kirill
У меня задумка была следующая, получить окно с помощью OVER и получить первое NOT NULL значение с помощью COALESCE, но не могу понять как мне получить окно с текстом из столбца data
у вас группой является запись где "text" IS NOT NULL с последющими несколькими записями где "text" IS NULL в пределах одного id.
надо каким-то образом обозначить эту группу
источник

K

Kirill in pgsql – PostgreSQL
Victor Yegorov
у вас группой является запись где "text" IS NOT NULL с последющими несколькими записями где "text" IS NULL в пределах одного id.
надо каким-то образом обозначить эту группу
все верно id один, т. к. окно не должно попадать на другие id, а вот partition_id ведь разный
источник

K

Kirill in pgsql – PostgreSQL
и в рамках одного id partition id всегда уникальный
источник

VY

Victor Yegorov in pgsql – PostgreSQL
а как это влияет на те данные, которые вам менять надо — кроме порядка, конечно?
источник

AF

Alexey Filippov in pgsql – PostgreSQL
Ребят, всем доброго времени суток!
Есть задача - написать небольшой биллинг. Есть несколько вопросов:
1)Как лучше всего осуществлять логику работы - через триггеры самого постгреса или программно?
2)Раз в месяц будут происходить списания, и, как вы понимаете, для этого нужен будет планировщик. Что в данном случае лучше использовать - стороннюю библиотеку (расширение, модуль - не знаю как правильно) или системный планировщик (хотелось бы осуществить всю логику средствами базы, но "увы", да "ах") ? Если библиотеку, то какую именно?
источник

NS

Nikolai Semenov in pgsql – PostgreSQL
мне от словосочетания "небольшой биллинг" хочется плакать..
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Alexey Filippov
Ребят, всем доброго времени суток!
Есть задача - написать небольшой биллинг. Есть несколько вопросов:
1)Как лучше всего осуществлять логику работы - через триггеры самого постгреса или программно?
2)Раз в месяц будут происходить списания, и, как вы понимаете, для этого нужен будет планировщик. Что в данном случае лучше использовать - стороннюю библиотеку (расширение, модуль - не знаю как правильно) или системный планировщик (хотелось бы осуществить всю логику средствами базы, но "увы", да "ах") ? Если библиотеку, то какую именно?
1) программно
2) сторонний сервис
источник

AF

Alexey Filippov in pgsql – PostgreSQL
Nikolai Semenov
мне от словосочетания "небольшой биллинг" хочется плакать..
Та ну че началось-то... :с
источник

VY

Victor Yegorov in pgsql – PostgreSQL
ы-ы-ы… я по верхам тут одним рассказывал как биллинг написать, 5 часов.
источник

AF

Alexey Filippov in pgsql – PostgreSQL
Ilia Zviagin
1) программно
2) сторонний сервис
Ага, спасибо. А можно немного разъяснений по этим пунктам? С чем, например, связано отданное предпочтение программной обработки?
источник

AF

Alexey Filippov in pgsql – PostgreSQL
Victor Yegorov
ы-ы-ы… я по верхам тут одним рассказывал как биллинг написать, 5 часов.
Всм в этом чате? Если да, то обязательно ознакомлюсь
источник

VY

Victor Yegorov in pgsql – PostgreSQL
нет. я устану столько по клавишам стучать.
источник

K

Kirill in pgsql – PostgreSQL
Victor Yegorov
а как это влияет на те данные, которые вам менять надо — кроме порядка, конечно?
Вот так можно
WITH t(id,partition_id,data) AS (
 VALUES (1, 1, 'two'::text), (1, 2, NULL), (1, 3, NULL), (1, 4, 'four'), (1, 5, NULL), (1, 6, 'one'),
        (2, 1, NULL), (2, 2, 'three'), (2, 3, NULL)
)
select id ,partition_id ,TEXT ,coalesce(text, substring(max(right('000000'||partition_id, 6)||text)over(partition by id order by partition_id),7)) as xz
from my_table
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Kirill
Вот так можно
WITH t(id,partition_id,data) AS (
 VALUES (1, 1, 'two'::text), (1, 2, NULL), (1, 3, NULL), (1, 4, 'four'), (1, 5, NULL), (1, 6, 'one'),
        (2, 1, NULL), (2, 2, 'three'), (2, 3, NULL)
)
select id ,partition_id ,TEXT ,coalesce(text, substring(max(right('000000'||partition_id, 6)||text)over(partition by id order by partition_id),7)) as xz
from my_table
да, вроде работает
источник

NS

Nikolai Semenov in pgsql – PostgreSQL
Victor Yegorov
ы-ы-ы… я по верхам тут одним рассказывал как биллинг написать, 5 часов.
мы уже сколько пишем, но нам ещё надо PCI DSS покрыться
источник