Привет всем, я Дугу Фэн. Начиная с этой недели, я буду стараться каждую неделю давать вам отличные рекомендации по проектам с открытым исходным кодом.
Проекты с открытым исходным кодом не только способствуют развитию и популяризации технологий, но и создают платформу для обмена знаниями, сотрудничества и инноваций для разработчиков и сообществ пользователей по всему миру. Только стоя на плечах гигантов, мы можем видеть дальше. Мы также должны уделять больше внимания проектам с открытым исходным кодом, не только изучать их богатые знания, но и искать возможности внести свой собственный вклад в дело открытого исходного кода.
Без лишних слов, рекомендуемый сегодня всем проект с открытым исходным кодом называется SQLLineage.
SQLLineage это использование Python развитый SQL Анализатор родословной. оно направлено на предоставление SQL Подробно проанализировать кровное родство и отношения зависимости.
Адрес домашней страницы Github: https://github.com/reata/sqllineage
Текущий рейтинг — 891, последняя версия — v1.4.8, основной язык разработки — Python.
Проще говоря, SQLLineage — это инструмент анализа происхождения SQL, и благодаря универсальности SQL при анализе данных SQLLineage это одинданные Родословнаяанализироватьинструмент。
Происхождение данных (Данные Lineage), также переводится как происхождение данных, оба Происхождение данных (Данные Lineage)относится к отслеживаниюданныепуть от источника к месту назначения,В том числе и ее поток и трансформацию на протяжении всего жизненного цикла данных ииспользовать. Основная цель Data LINEAGE — предоставить полную предварительную визуализацию изменений потока данных.,Это помогает организациям понять, откуда берутся данные, какие этапы они проходят и как в конечном итоге их используют.
Кровное родство данных является важной частью управления данными Юаня.,Собрав данные элемента, вы можете создать родословную данных путем анализа.,Это повышает прозрачность данных,Простота аудита и соблюдения требований,Другими словами, кровь данных безопасна в данных.,Область управления данными имеет большое значение.
А SQLLineage может выполнять несколько SQL-анализов, чтобы быстро понять все тонкости кровного родства, поэтому это артефакт анализа данных кровного родства.
Предположим, есть такой SQL.
С помощью SQLLineage вы можете быстро генерировать кровные родства на уровне таблицы.
Вы также можете выйти за пределы уровня родословной.
В этом случае взаимосвязь между данными будет ясна с первого взгляда.
В то же время SQLLineage также поддерживает различные преобразователи анализа синтаксиса SQL.,Независимо от того, используем ли мы его напрямую,Или анализировать его коды очень полезно.
SQLLineage также предоставляет следующую богатую функциональную поддержку.
упрощать SQL анализировать: SQLLineage Обеспечивает простой и легкий в использовании интерфейс для понимания. SQL Исходные и целевые таблицы для запросов, не нужно беспокоиться о сложных SQL процесс разбора.
Эффективный анализатор библиотеки: использовать sqlfluff и sqlparse Подождите,пока библиотека проанализирует SQL Заказ,анализировать AST,ииспользовать networkx Графическая библиотека хранит информацию о происхождении.
Легко установить ииспользовать: может пройти PyPI Быстрая установка и анализ с помощью простых операций командной строки. SQL Запрос.
Некоторые более продвинутые варианты использования:
SQLLineage разработан Python, поэтому может быть очень удобно устанавливать компоненты, связанные с Python.
Вы можете установить его напрямую с помощью pip
pip install sqllineage
Также можно пройти на github для установки
pip install git+https://github.com/reata/sqllineage.git
Есть два способа,идтианализироватьsql。доступный-e
прямойанализироватьодинsqlзаявление,Здесь анализировать показывает исходную таблицу и целевую таблицу:
$ sqllineage -e "insert into db1.table1 select * from db2.table2"
Statements(#): 1
Source Tables:
db2.table2
Target Tables:
db1.table1
такжедоступный-f
Приходитьпрямойанализироватьодинsqlдокумент:
$ sqllineage -f foo.sql
Statements(#): 1
Source Tables:
db1.table_foo
db1.table_bar
Target Tables:
db2.table_baz
Это также можно сделать для двух последовательных SQL-запросов: анализировать:
$ 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результат выполнения。
$ 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
关键字Приходитьобозначениехотетьиспользоватьизанализироватьдвигатель:
$ 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.
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
Ключевые слова для продолжения Спуск по рейтингуанализировать
$ 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
Наконец, вы можете использовать следующую команду, чтобы запустить веб-браузер для отображения кровного родства.
sqllineage -g -f foo.sql
Поторопитесь и испытайте это~