Мова запитів Beancount - SQL-подібні фінансові запити
Beancount має потужну, SQL-подібну мову запитів (BQL), яка дозволяє вам розрізати, розби вати та аналізувати ваші фінансові дані з точністю. Незалежно від того, чи хочете ви створити швидкий звіт, зневадити запис або виконати складний аналіз, опанування BQL є ключем до розкриття повного потенціалу вашої книги обліку у вигляді звичайного тексту. Цей посібник ознайомить вас з її структурою, функціями та найкращими практиками. 🔍
Структура та виконання запитів
Основою BQL є її знайомий, SQL-натхненний синтаксис. Запити виконуються за допомогою інструменту командного рядка bean-query, який обробляє ваш файл книги обліку та повертає результати безпосередньо у ваш термінал.
Базовий формат запиту
Запит BQL складається з трьох основних пунктів: SELECT, FROM та WHERE.
SELECT <ціль1>, <ціль2>, ...
FROM <вираз-фільтрації-записів>
WHERE <вираз-фільтрації-постингу>;
SELECT: Вказує, які стовпці даних ви хочете отримати.FROM: Фільтрує цілі транзакції до їх обробки.WHERE: Фільтрує окремі рядки постингу після вибору транзакції.
Дворівнева система фільтрації
Розуміння різниці між пунктами FROM та WHERE має вирішальне значення для написання точних запитів. BQL використовує дворівневий процес фільтрації.
-
Рівень транзакції (
FROM) Цей пункт впливає на цілі транзакції. Якщо транзакція відповідає умовіFROM, вся транзакція (включ но з усіма її постингами) передається на наступний етап. Це основний спосіб фільтрації даних, оскільки він зберігає цілісність системи бухгалтерського обліку подвійного запису. Наприклад, фільтраціяFROM year = 2024вибирає всі транзакції, які відбулися у 2024 році. -
Рівень постингу (
WHERE) Цей пункт фільтрує окремі пости в межах транзакцій, вибраних пунктомFROM. Це корисно для представлення та для зосередження на конкретних частинах транзакції. Однак слід пам'ятати, що фільтрація на цьому рівні може "зламати" цілісність транзакції у вихідних даних, оскільки ви можете бачити лише одну сторону запису. Наприклад, ви можете вибрати всі пости до вашого рахункуExpenses:Groceries.
Модель даних
Щоб ефективно запитувати ваші дані, вам потрібно зрозуміти, як Beancount їх структурує. Книга обліку - це список директив, але BQL в основному зосереджується на записах Transaction.