База знаний типичных ошибок курса Data Governance с диагностикой, причинами и пошаговыми решениями. Используйте фильтры для поиска по модулю и категории проблемы, или Cmd+K для поиска по тексту ошибки.
Data Governance -- это набор политик, ролей и процессов, обеспечивающих правильное управление данными. Data Management -- это практическая реализация этих политик (ETL, хранение, бэкапы). Governance определяет правила, Management их выполняет. DMBOK2 чётко разделяет эти области.
Курс использует DMBOK2 (русское издание, ISBN 978-5-9693-0404-8) как терминологический авторитет. Другие источники могут использовать иные переводы. Например: "Data Steward" = "Стюард данных" (не "Администратор данных"), "Data Lineage" = "Происхождение данных" (не "Линейность данных").
Модель зрелости использует 5 уровней: 1 (Initial/Ad-hoc), 2 (Managed), 3 (Defined), 4 (Quantitatively Managed), 5 (Optimizing). Общий уровень определяется средним арифметическим с округлением вниз (floor). Если хотя бы одно измерение ниже целевого -- общий уровень не может превышать среднее.
Data Owner -- бизнес-руководитель, ответственный за данные домена (принимает решения). Data Steward -- операционный эксперт, обеспечивающий качество и соответствие стандартам (выполняет политики). Data Custodian -- технический специалист, управляющий инфраструктурой хранения (поддерживает системы).
Pyodide runner имеет жёсткий лимит 10 секунд на выполнение. Типичные причины: бесконечный цикл (while True без break), вложенные циклы O(n^3) на больших данных, рекурсия без базового случая, print() в цикле (вывод замедляет выполнение).
SQL код-челленджи используют sql.js (SQLite в браузере). Тестовые таблицы создаются автоматически из раздела setup в конфигурации челленджа. Ошибка возникает при обращении к таблице с неверным именем или при использовании синтаксиса, несовместимого с SQLite.
JSON-validator проверяет структуру строго: все обязательные поля должны присутствовать, типы значений должны совпадать (строка vs число), массивы должны содержать минимальное количество элементов. Лишние поля обычно допускаются, но пропущенные -- нет.
YAML-validator чувствителен к отступам. Типичные ошибки: смешивание табов и пробелов (YAML допускает только пробелы), непоследовательные отступы (2 vs 4 пробела в одном файле), пропущенный пробел после двоеточия, неправильная вложенность списков.
js-sandbox runner захватывает возвращаемое значение функции (return), а не вывод в console. console.log() выводит в лог для отладки, но не является результатом выполнения. Тесты проверяют именно return value.
Несоответствие поля lessonSlug в JSON-файле квиза и фактического пути MDX-файла урока. Квиз привязывается к уроку через lessonSlug, и если путь не совпадает -- квиз не находится и не отображается.
Quality dimensions имеют строгие формулы. Completeness = (non-null values / total values) * 100. Accuracy проверяется по reference dataset. Freshness -- разница между current_timestamp и last_updated. Ошибки возникают при неправильном округлении, игнорировании пустых строк ("" vs NULL), или неверной обработке граничных случаев.
dbt использует специфическую YAML структуру для тестов. Частые ошибки: неправильная вложенность columns внутри models, пропуск обязательного поля name, неверный синтаксис custom test (config: severity: warn вместо правильного формата).
Great Expectations использует декларативный подход: каждый expectation определяет ожидаемое свойство данных. Ошибки возникают при неправильных параметрах (mostly vs. strict), неверных пороговых значениях, или непонимании разницы между column-level и table-level expectations.
PII-классификация в курсе использует rule-based подход (фиксированные паттерны, не ML). Ошибки: неполный набор паттернов (пропущены email, phone, passport), нечувствительность к регистру (Email vs email), ложноположительные из-за слишком широких паттернов (любое слово "name" помечается как PII).
Consent management имеет несколько граничных случаев: согласие может быть partial (на одни цели дано, на другие нет), может быть отозвано (revoked -- дата отзыва позже даты согласия), может истечь (expired -- превышен срок действия). Все три случая должны обрабатываться отдельно.
Format-preserving masking должен сохранять структуру оригинальных данных. Email: j***@example.com (первая буква + маска + домен). Телефон: ***-***-1234 (маска + последние 4 цифры). ИНН: ********12 (маска + последние 2). Нарушение формата делает данные непригодными для тестирования.
В RBAC/ABAC при конфликте правил (одно разрешает, другое запрещает) применяется принцип deny-overrides: запрет всегда побеждает. Ошибки возникают при неправильной оценке порядка правил или непонимании наследования ролей (роль с deny на уровне группы перекрывает allow на уровне пользователя).
Governance-диаграммы (OrgChart, MaturityModel, ClassificationTree и др.) -- это React-компоненты, требующие client:load для гидрации в Astro. Если пропущена директива client:load, компонент рендерится только на сервере и не интерактивен. Другие причины: неправильный формат props (nodes вместо tree), пропущенные обязательные поля.
RegulationRef использует createPortal для span-based popover (не div, чтобы не ломать inline HTML в MDX). Popover появляется при hover (desktop) или touch (mobile). Проблемы: z-index конфликт с другими элементами, overflow:hidden на родительском контейнере, или отсутствие client:load на компоненте.
) -- не оборачивайте в div
Квиз привязывается к уроку через lessonSlug в JSON-файле. Если lessonSlug не совпадает с путём MDX-файла, квиз не будет отображён. Также возможно: JSON-файл содержит ошибку валидации (Zod schema), или квиз пуст (0 вопросов).
Прогресс сохраняется в localStorage браузера. Если localStorage переполнен, отключён, или используется приватный режим -- прогресс не сохраняется. Также: разные URL (с www и без) имеют разные localStorage хранилища.