TGViewer
Channel Public Channel
Data Science. SQL hub

Data Science. SQL hub

@sqlhub

По всем вопросам- @workakkk

@itchannels_telegram - 🔥лучшие ит-каналы

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo

#VRHSZ
Subscribers
35.9K
Photos
1.2K
Videos
99
Links
1.2K

Showing posts older than #1052 · Back to latest

Older Posts 10 shown
Post #1051 4.78K
Вы можете присваивать столбцу значение по УМОЛЧАНИЮ при добавлении или изменении строк с помощью ключевого слова DEFAULT



INSERT INTO ... VALUES ( DEFAULT, ... )

UPDATE ... SET ... = DEFAULT


#SQL #ORACLE

@sqlhub
  • 👍 25
  • ❤ 5
  • 🔥 2
Post #1050 5.18K
💻DDL лог в PostgreSQL. Описание и пример создания журнала DDL операций

Неплохая статья, в которой рассматривается пример создания DDL лога в PostgreSQL – это своего рода журнал DDL операций.
Подробно описывается, как реализовывать DDL лог с помощью триггеров событий.

Структура статьи
⏩Что такое DDL лог и зачем он нужен

⏩Как создать DDL Log в PostgreSQL

⏩Триггеры событий в PostgreSQL
— Типы событий
— Команды DDL, на которые срабатывают триггеры событий
— Функции для триггеров событий
— Функции для получения информации в событийных триггерах
— Команда CREATE EVENT TRIGGER

⏩Пример создания DDL лога в PostgreSQL
— Таблица для хранения информации
— Функция, которая будет вызываться при наступлении события
— Создание событийных триггеров
— Пример работы DDL лога

📎 Статья

@sqlhub
  • 👍 11
  • ❤ 4
  • 🔥 1
Post #1040 6.19K
💻Сложные SELECT в PostgreSQL

Отличная статья, в которой обсуждаются:
⏩Операции над множествами (UNION, INTERSECT, EXCEPT)
⏩Common Table Expression, CTE (WITH)
⏩Оконные функции (WINDOW / OVER)
⏩Расширенные возможности агрегатных функций (GROUP BY)
⏩Функции в исходной выборке (FROM)
⏩Соединения (JOIN) и выражения подзапросов
⏩Управление порядком выполнения

📎 Статья

@sqlhub
  • 👍 20
  • ❤ 5
  • 🔥 3
  • 🎉 1
Post #1038 4.54K
💻Поговорим немного о автогенерации первичного ключа

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

⏩Автогенерация работает по следующим принципам:
— Внутри базы создается отдельный счетчик, который привязывается к каждой таблице
— Счетчик увеличивается на единицу при вставке новой строки
— Получившееся значение записывается в поле, которое помечается как автогенерируемое

⏩Автогенерацию первичного ключа часто называют автоинкрементом (autoincrement). Что переводится как автоматическое увеличение и напоминает операцию инкремента из программирования ++.

⏩До определенного момента механизм автоинкремента был реализован по-своему в каждой СУБД разными способами. Это создавало проблемы при переходе от одной СУБД к другой и усложняло реализацию программного слоя доступа к базе данных.

⏩Эта функциональность добавлена в стандарт SQL:2003, то есть очень давно. И только в 2018 году PostgreSQL в версии 10 стал его поддерживать. Такой автоинкремент известен под именем GENERATED AS IDENTITY:
CREATE TABLE colors (
-- Одновременное использование и первичного ключа и автогенерации
id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
name varchar(255)
);

INSERT INTO colors (name) VALUES ('Red'), ('Blue');

SELECT * FROM colors;

-- id name
-- 1 Red
-- 2 Blue

Если удалить запись с id равным двум и вставить еще одну запись, то значением поля id будет 3. Автогенерация не связана с данными в таблице. Это отдельный счетчик, который всегда увеличивается. Так избегаются вероятные коллизии и ошибки, когда один и тот же идентификатор принадлежит сначала одной записи, а потом другой.

⏩Вот его структура из документации:
column_name type GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY[ ( sequence_option ) ]


@sqlhub
  • ❤ 12
  • 🔥 5
  • 👍 2
  • 👎 2
  • 🥰 2
Post #1036 4.34K
🖥 Harlequin — SQL IDE в вашем терминале

Функции, которые вы ожидаете от IDE, работают прямо в вашем терминале". Среди этих функций:

- Каталог данных: просмотр таблиц, столбцов и их типов.
- Редактор запросов.
- Окно для отображения результатов (возможность вывода 1M+ записей).
- Экспорт результатов и история запросов.

▪Github

@sqlhub
  • 👍 16
  • ❤ 2
  • 🔥 2
  • 🤔 2
  • 🥰 1
Post #1034 3.96K
💻Пару полезных советов при работе с PostgreSQL

⏩Используйте отдельные схемы для разных модулей
Скажем, вам необходимо реализовать систему рассылки пуш-уведомлений на android-устройства клиентов. Вы пишете сервис, который будет работать с FCM. Пишете функции в вашей БД, которые будут выдавать списки token-текст (да там много полей вообще).
Так вот, необходимо, чтобы такие ручки для разных модулей (бэкендов) лежали в отдельных схемах.

⏩Используйте группы ролей и назначайте гранты именно на роли
Предположим, что вы реализовали пункт выше, теперь ваш сервис должен подключаться к БД и крутить свои запросы. Но под каким пользователем? Не будет же он бегать под postgres или admin?)

⏩Используйте расширения
PostgreSQL — это мощная СУБД. Но и она не может быть универсальной. Не надо полагать, что всё делается штатными средствами PostgreSQL. Так-же не надо пробовать писать свои системы чего-либо.

⏩Храните дататайм в timestamptz
Возьмите за привычку в БД всегда хранить timestampTZ и когда-нибудь Вам скажут большое спасибо за это.

⏩Используйте метрики. Пользуйтесь pg_stat_statements
Так-же рекомендую сразу установить расширения для мониторинга запросов (например pg_stat_statements)

⏩В функциях лучше использовать CTE и длинные запросы, чем временные таблицы
PostgreSQL всегда временные таблицы кладёт на диск, это займёт много времени. Используйте табличные выражения. Да и лучше всё писать одним оператором.

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

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

⏩Старайтесь не пихать всё в TOAST
Наверное сразу стоит добавить и тот пункт, что не надо хранить в TOAST ( например json/text с дефолтным параметром хранения ) аналитические данные.

📎 Статья

@sqlhub
  • 👍 18
  • ❤ 5
  • 🔥 1
  • 🤔 1
Post #1032 3.95K
🖥 Как проверить, является ли строка продолжением предыдущей.

В статье показано, как с помощью matching в Oracle #SQL найти серию последовательных строк с начальной даты и до конечной:

MATCH_RECOGNIZE (
...
PATTERN (str e+)
DEFINE e AS start_date = PREV(end_date) + 1 --start is 1 day after previous end
)

https://how2ora-en.blogspot.com/2023/01/how-to-check-if-row-is-continuation-of.html

@sqlhub
  • 👍 9
  • ❤ 3
  • 🔥 2
Post #1030 3.82K
💎 Квантизация нейросетевых моделей

Интересная статья, в которой ML-разработчик Яндекса рассказывает, что такое квантизация и как она помогает экономить ресурсы, разбирает типы данных и объясняет, что квантизовать, чтобы улучшить эффективность модели.

Автор также рассказывает, что такое выбросы, как они портят жизнь ML-инженерам, а также как с ними бороться.

📎Статья

@sqlhub
  • ❤ 6
  • 👍 3
  • 😁 2
  • 🔥 1
Post #1027 3.86K
💻Временная таблица в базе данных SQL

⏩Временная таблица SQL (temp table) — это таблица, которая создается и используется в контексте определенного сеанса или транзакции в СУБД. Она предназначена для хранения временных данных, которые нужны на короткое время и не требуют постоянного хранения.

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

⏩Чтобы создать временную таблицу, можно использовать инструкцию CREATE TABLE с ключевым словом TEMPORARY или TEMP перед именем таблицы:
CREATE TEMPORARY TABLE temp_table (
id INT,
name VARCHAR(50),
age INT
);

Что тут происходит:
— Инструкция CREATE TEMPORARY TABLE используется для создания временной таблицы.
— temp_table — это имя, которое присваивается временной таблице. Имя можно выбрать любое.
— Внутри круглых скобок мы определяем столбцы временной таблицы.
— В данном примере временная таблица temp_table имеет три столбца: id типа INT, name типа VARCHAR(50) и age типа INT.
— При необходимости мы можем добавить дополнительные столбцы, указав их имена и типы данных.
— Временная таблица автоматически удаляется в конце сеанса или при завершении сеанса.

⏩Или вот ещё пример.
Допустим, у нас есть большой набор данных, и мы хотим выполнить сложный анализ или вычисления на меньшей части этих данных. Для такого анализа можно создать временную таблицу, содержащую только необходимые строки и столбцы.
-- Создать временную таблицу с подмножеством данных
CREATE TEMPORARY TABLE subset_data AS
SELECT column1, column2, column3
FROM original_table
WHERE condition;

-- Анализ подмножества данных
SELECT column1, AVG(column2) AS average_value
FROM subset_data
GROUP BY column1;

-- Удалить временную таблицу
DROP TABLE subset_data;


📎 Читать подробнее

@sqlhub
  • ❤ 16
  • 👍 9
  • 🔥 3
Post #1025 3.93K
Представьте, что у вас есть несколько таблиц Postgres, с которыми вам нужно работать и обрабатывать данные из таблиц с помощью Pandas по расписанию.

Как вы можете этого добиться?

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

https://pypi.org/project/kestra/

@sqlhub
  • ❤ 10
  • 🔥 3
  • 🤔 2
  • 👍 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →