Происхождение на уровне полей: от плитки дашборда до столбца в хранилище
Происхождение на уровне таблиц говорит вам, что дашборд касается таблицы. Происхождение на уровне столбцов говорит, какие дашборды сломаются, если вы удалите столбец. Вот в чём разница, почему последний переход труден и как читать карту, не утонув в ней.
Столбец вот-вот удалят, сменят ему тип или переименуют. В этот момент два вопроса звучат одинаково. Первый: какие дашборды касаются этой таблицы. Второй: какие дашборды сломаются.
Происхождение на уровне таблиц отвечает на первый. На широкой таблице оно вернёт сорок дашбордов. Два из них используют столбец, и теперь кому-то придётся открыть сорок рабочих книг, чтобы найти эти два. Отчёт верен и почти бесполезен.
Происхождение на уровне столбцов отвечает на второй, и именно поэтому дополнительная работа по достижению этой гранулярности того стоит.
Цепочка, переход за переходом
Плитка дашборда показывает лист, а лист использует поля.
Каждое поле это либо вычисление, либо прямая ссылка в источник данных.
Вычисление использует другие поля, иногда на несколько уровней вглубь, иногда через несколько источников данных.
Поле источника данных отображается на столбец в физической таблице.
У этой таблицы есть таблицы выше по потоку, через представления и преобразования, вплоть до места, куда данные попали впервые.
Каждый переход пересекает границу системы. У каждой системы своё представление о том, что такое имя. Именно там живёт проблема, а не в рисовании графа.
Последний переход
Здесь возникают две проблемы. Обе найдены при исследовании живых хранилищ, а не при чтении о них.
Имена приходят в кавычках своего диалекта. API метаданных возвращает полное имя, заключённое в кавычки так, как это делает его собственный диалект. Другой движок такую строку как есть не примет.
Регистр важен. Привязки в Snowflake чувствительны к регистру, а имя без кавычек приводится к верхнему регистру. Привяжите имя в сыром виде, и оно не совпадёт ни с одной строкой.
Тихий ноль это худший сбой в происхождении данных. Пустой результат выглядит ровно как чистый ответ. Связь, которая подключена, настроена правильно и ничему не соответствует, читается как среда без каких-либо зависимостей.
Решение в том, чтобы нормализовать перед каждым запросом к хранилищу, а не в конце. Сегменты Snowflake без кавычек приводятся к верхнему регистру. Имена Databricks освобождаются от кавычек и приводятся к нижнему регистру прямо в SQL. Полное имя разбивается на сегменты, а не разбирается поиском по строке.
Откуда берутся связи столбцов
Snowflake
Собственная функция происхождения учётной записи, с ограничением по расстоянию, чтобы глубокий граф не разрастался без конца. Запасной вариант через account usage покрывает старые учётные записи, где этой функции нет.
Databricks
system.access.column_lineage. Настоящее происхождение от столбца к столбцу, которое ведёт сама платформа, и это самое сильное доказательство из доступных.
Palantir AIP
Типы связей, читаемые с каждого типа объекта по очереди. Это собственный граф соединений онтологии, и направление, в котором они идут, то, которое объявляет платформа, а не выведенное из имён.
Tableau
Metadata API. Он отвечает на уровне столбцов, когда каталог проиндексировал настолько глубоко, и на уровне таблиц, когда нет. Этот случай нужно обрабатывать, а не считать несуществующим.
Сопоставление по имени
Мост от поля источника данных к столбцу хранилища по имени. Используется только там, где совпадение уникально, и всегда помечается как сопоставленное.
Четвёртый заслуживает пристального взгляда, и продукт его даёт. Мост, сопоставленный по имени, помечается как сопоставленный и никогда не показывается как данные каталога. Догадка, помеченная как догадка, полезна. Догадка, тихо возведённая в факт, портит всю карту, включая те части, которые были верны.
Скажите, какой гранулярности вы достигли
Карта происхождения должна сообщать, какой гранулярности она достигла, и называть то, что её дополнило. Каталог может ответить на уровне таблиц. Списки столбцов, полученные из хранилища, затем завершают работу, и карта говорит ровно это.
Это звучит как мелочь из области хороших манер. На деле это разрыв между картой, по которой можно принимать решения, и картой, которую нужно проверять вручную. Карта, которая всегда заявляет гранулярность столбцов, время от времени будет ошибаться и никогда не скажет, когда именно.
Как читать карту, не утонув
Полный граф реальной среды на уровне столбцов трудно прочитать целиком. Тысячи узлов это не карта. Это текстура.
Первая загрузка показывает костяк на уровне таблиц. Нажмите на одну карточку, и откроется только её собственная гранулярность: её столбцы и поля, которые из них вытекают. Это один переход, а не всё замыкание. Затем компоновка подстраивается, чтобы открытое оказалось в поле зрения.
Такое поведение родилось из двух раундов реального использования, в обе стороны. Сначала попробовали показывать всё, и это было непригодно. Ответом оказалось локальное раскрытие, а не уменьшенный граф: другая идея, и лучшая.
Для чего это использовать
Оценка влияния перед изменением схемы. Вы получаете реальный список затронутых дашбордов, а не широкий.
Отслеживание числа до его источника, когда два дашборда расходятся и оба автора уверены в своей правоте.
Поиск дашбордов, которые опираются на таблицу, владельцем которой никто не хочет признаваться.
Передача кому-то самодостаточной карты, по которой можно кликать, экспортированной в один HTML-файл. Она работает без сервера и без интернета.
Об экспорте стоит знать. Разговоры об управлении ведутся с людьми, у которых нет логина и которые его не получат. Файл, который они могут открыть, лучше приглашения, которое они не примут.
Семантический слой даёт метрике один дом. Каждый инструмент, который вычисляет метрику, читает этот единственный дом. Все получают одно и то же число. Вот что это значит на практике и что меняется, когда у вас больше одного хранилища.
Управлением называют четыре вещи: сертификацию, владение, устаревший контент и контроль изменений. Здесь каждая из них записана как проверка, которую можно запустить, а не как цель, которую можно провозгласить. Речь также пойдёт о том единственном изменении, которое проходит визуальную проверку и всё равно ошибочно.
Утверждение это предложение. Доказательство это то, что второй человек может проверить, не спрашивая вас. Что должен содержать аудиторский след, что на самом деле доказывает хеш, и чего требовать от любого инструмента, который заявляет, что его создаёт.