Основи Оновлення та Видалення Даних
Свайпніть щоб показати меню
У стандартних Data Lakes оновлення або видалення окремого рядка майже неможливе без переписування всього набору даних. Оскільки Delta Lake використовує журнал транзакцій, він підтримує стандартні SQL-команди UPDATE та DELETE, що дозволяє виконувати точкові зміни у ваших таблицях.
У попередньому розділі розглядалося читання та підсумовування даних. Однак дані рідко залишаються статичними — ви можете виявити, що партія записів про діаманти має некоректні ціни або певний тип "cut" потрібно видалити з ваших звітів.
Оскільки таблиця diamonds є Delta-таблицею, її можна змінювати так само, як і традиційну базу даних.
1. Оновлення записів
Команда UPDATE дозволяє змінювати значення у певних рядках, які відповідають умові. Наприклад, якщо всі діаманти з "Fair" cut отримали підвищення ціни на 10%:
UPDATE workspace.workshop.diamonds
SET price = price * 1.1
WHERE cut = 'Fair'
- SET — Визначає нове значення для стовпця
- WHERE — Критично важливо. Без оператора
WHEREбуде оновлено ціну для кожного діаманта у всій таблиці
2. Видалення записів
Команда DELETE остаточно видаляє рядки з таблиці. Використовується, коли дані більше не актуальні або були завантажені помилково.
DELETE FROM workspace.workshop.diamonds
WHERE carat > 5.0
Ця команда знаходить усі діаманти вагою понад 5 каратів і видаляє їх з актуальної версії таблиці.
3. Перевірка після змін
Після виконання оновлення або видалення завжди слід перевіряти зміни за допомогою простого запиту SELECT count, щоб переконатися, що операція виконана коректно.
-- Verify how many 'Fair' diamonds are left (count should be the same, but prices changed)
SELECT count(*) FROM workspace.workshop.diamonds WHERE cut = 'Fair'
4. Безпека оновлень Delta
Під час виконання DELETE або UPDATE Delta Lake не видаляє дані зі старих файлів безпосередньо. Замість цього використовується трьохетапний процес:
- Старі файли позначаються як "недійсні"
- Записуються нові файли з оновленими даними
- Зміни фіксуються у Transaction Log
Саме тому Time Travel продовжує працювати навіть після видалення — старі дані залишаються у попередніх версіях файлів таблиці, доки історія не буде очищена вручну.
5. Найкраща практика: Тестування за допомогою SELECT
Перед виконанням команди DELETE або UPDATE завжди перевіряйте свій фільтр спочатку за допомогою SELECT.
- Замість:
DELETE FROM diamonds WHERE color = 'J' - Спочатку спробуйте:
SELECT * FROM diamonds WHERE color = 'J'
Якщо результати SELECT показують саме ті рядки, які ви плануєте видалити, можна безпечно виконувати команду DELETE.
1. Що відбувається, якщо виконати команду UPDATE без WHERE?
2. Чи призводить виконання команди DELETE для Delta-таблиці до миттєвого видалення даних із хмарного сховища назавжди?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат