[Рекомендация проекта с открытым исходным кодом] Общий инструмент анализа происхождения данных SQL — Sqllineage
[Рекомендация проекта с открытым исходным кодом] Общий инструмент анализа происхождения данных SQL — Sqllineage

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

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

Без лишних слов, рекомендуемый сегодня всем проект с открытым исходным кодом называется SQLLineage.

SQLLineage это использование Python развитый SQL Анализатор родословной. оно направлено на предоставление SQL Подробно проанализировать кровное родство и отношения зависимости.

Адрес домашней страницы Github: https://github.com/reata/sqllineage

Текущий рейтинг — 891, последняя версия — v1.4.8, основной язык разработки — Python.

1. Обзор

Проще говоря, SQLLineage — это инструмент анализа происхождения SQL, и благодаря универсальности SQL при анализе данных SQLLineage это одинданные Родословнаяанализироватьинструмент。

Происхождение данных (Данные Lineage), также переводится как происхождение данных, оба Происхождение данных (Данные Lineage)относится к отслеживаниюданныепуть от источника к месту назначения,В том числе и ее поток и трансформацию на протяжении всего жизненного цикла данных ииспользовать. Основная цель Data LINEAGE — предоставить полную предварительную визуализацию изменений потока данных.,Это помогает организациям понять, откуда берутся данные, какие этапы они проходят и как в конечном итоге их используют.

Кровное родство данных является важной частью управления данными Юаня.,Собрав данные элемента, вы можете создать родословную данных путем анализа.,Это повышает прозрачность данных,Простота аудита и соблюдения требований,Другими словами, кровь данных безопасна в данных.,Область управления данными имеет большое значение.

А SQLLineage может выполнять несколько SQL-анализов, чтобы быстро понять все тонкости кровного родства, поэтому это артефакт анализа данных кровного родства.

Предположим, есть такой SQL.

С помощью SQLLineage вы можете быстро генерировать кровные родства на уровне таблицы.

Вы также можете выйти за пределы уровня родословной.

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

В то же время SQLLineage также поддерживает различные преобразователи анализа синтаксиса SQL.,Независимо от того, используем ли мы его напрямую,Или анализировать его коды очень полезно.

2. Основные характеристики

SQLLineage также предоставляет следующую богатую функциональную поддержку.

упрощать SQL анализировать: SQLLineage Обеспечивает простой и легкий в использовании интерфейс для понимания. SQL Исходные и целевые таблицы для запросов, не нужно беспокоиться о сложных SQL процесс разбора.

Эффективный анализатор библиотеки: использовать sqlfluff и sqlparse Подождите,пока библиотека проанализирует SQL Заказ,анализировать AST,ииспользовать networkx Графическая библиотека хранит информацию о происхождении.

Легко установить ииспользовать: может пройти PyPI Быстрая установка и анализ с помощью простых операций командной строки. SQL Запрос.

Некоторые более продвинутые варианты использования:

  • Обработка нескольких операторов SQL: Может анализировать, содержать несколько SQL Запросите оператор, чтобы идентифицировать промежуточную таблицу.
  • Подробные результаты происхождения: Предоставьте подробные результаты анализа предков для каждого SQL Может быть отображена информация о происхождении утверждения.
  • знание диалекта: Поддержка различных SQL Диалекты для размещения различных ключевых слов и синтаксиса.
  • Спуск по рейтингу: поддерживать Спуск по рейтингуанализировать, показывая родословные всех столбцов.
  • Родословная Визуализация: Графическая поддержка результатов поиска предков. Предварительный просмотр на уровне таблицы и Спуск можно просмотреть в браузере. по Представление рейтинга в ориентированном ациклическом графе (DAG).

3. Установка, развертывание и использование

SQLLineage разработан Python, поэтому может быть очень удобно устанавливать компоненты, связанные с Python.

Установить

Вы можете установить его напрямую с помощью pip

Язык кода:javascript
копировать
pip install sqllineage

Также можно пройти на github для установки

Язык кода:javascript
копировать
pip install git+https://github.com/reata/sqllineage.git

анализировать

Есть два способа,идтианализироватьsql。доступный-eпрямойанализироватьодинsqlзаявление,Здесь анализировать показывает исходную таблицу и целевую таблицу:

Язык кода:javascript
копировать
$ sqllineage -e "insert into db1.table1 select * from db2.table2"
Statements(#): 1
Source Tables:
    db2.table2
Target Tables:
    db1.table1

такжедоступный-fПриходитьпрямойанализироватьодинsqlдокумент:

Язык кода:javascript
копировать
$ sqllineage -f foo.sql
Statements(#): 1
Source Tables:
    db1.table_foo
    db1.table_bar
Target Tables:
    db2.table_baz

Это также можно сделать для двух последовательных SQL-запросов: анализировать:

Язык кода:javascript
копировать
$ sqllineage -e "insert into db1.table1 select * from db2.table2; insert into db3.table3 select * from db1.table1;"
Statements(#): 2
Source Tables:
    db2.table2
Target Tables:
    db3.table3
Intermediate Tables:
    db1.table1

доступный-v指令Приходить看每одинsqlрезультат выполнения。

Язык кода:javascript
копировать
$ sqllineage -v -e "insert into db1.table1 select * from db2.table2; insert into db3.table3 select * from db1.table1;"
Statement #1: insert into db1.table1 select * from db2.table2;
    table read: [Table: db2.table2]
    table write: [Table: db1.table1]
    table cte: []
    table rename: []
    table drop: []
Statement #2: insert into db3.table3 select * from db1.table1;
    table read: [Table: db1.table1]
    table write: [Table: db3.table3]
    table cte: []
    table rename: []
    table drop: []
==========
Summary:
Statements(#): 2
Source Tables:
    db2.table2
Target Tables:
    db3.table3
Intermediate Tables:
    db1.table1

обозначениеанализироватьустройство

В следующем примере можно использовать --dialect=postgres关键字Приходитьобозначениехотетьиспользоватьизанализироватьдвигатель:

Язык кода:javascript
копировать
$ sqllineage -e "insert into analyze select * from foo;"
Statements(#): 1
Source Tables:
    <default>.foo
Target Tables:
    
$ sqllineage -e "insert into analyze select * from foo;" --dialect=ansi
Statements(#): 1
Source Tables:
    <default>.foo
Target Tables:
    <default>.analyze

$ sqllineage -e "insert into analyze select * from foo;" --dialect=postgres
...
sqllineage.exceptions.InvalidSyntaxException: This SQL statement is unparsable, please check potential syntax error for SQL

намекать:используйте это Заказsqllineage --dialects Посмотрите, какие устройства анализа доступны.

Спуск по рейтингу

Вы можете использовать анализировать Спуск по рейтингу, например, следующий sql.

Язык кода:javascript
копировать
INSERT OVERWRITE TABLE foo
SELECT a.col1,
       b.col1     AS col2,
       c.col3_sum AS col3,
       col4,
       d.*
FROM bar a
         JOIN baz b
              ON a.id = b.bar_id
         LEFT JOIN (SELECT bar_id, sum(col3) AS col3_sum
                    FROM qux
                    GROUP BY bar_id) c
                   ON a.id = sq.bar_id
         CROSS JOIN quux d;

INSERT OVERWRITE TABLE corge
SELECT a.col1,
       a.col2 + b.col2 AS col2
FROM foo a
         LEFT JOIN grault b
              ON a.col1 = b.col1;

Можетиспользовать-lКлючевые слова для продолжения Спуск по рейтингуанализировать

Язык кода:javascript
копировать
$ sqllineage -f foo.sql -l column
<default>.corge.col1 <- <default>.foo.col1 <- <default>.bar.col1
<default>.corge.col2 <- <default>.foo.col2 <- <default>.baz.col1
<default>.corge.col2 <- <default>.grault.col2
<default>.foo.* <- <default>.quux.*
<default>.foo.col3 <- c.col3_sum <- <default>.qux.col3
<default>.foo.col4 <- col4

Визуализация

Наконец, вы можете использовать следующую команду, чтобы запустить веб-браузер для отображения кровного родства.

Язык кода:javascript
копировать
sqllineage -g -f foo.sql

Поторопитесь и испытайте это~

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose