Вы находитесь здесь:
Общедоступные измерения в Tableau Semantics
Анализируйте и сравнивайте данные в нескольких таблицах фактов, соединяя их посредством одних таблиц измерений. Создавайте сложный, актуальный для бизнеса анализ чистым и надежным способом, избегая повторяющихся взаимосвязей и исключая циклы в семантической модели.
В большинстве наборов данных разные бизнес-домены отслеживают собственные события отдельно: Продажи отслеживают транзакции, маркетинг отслеживает кампании, запас отслеживает уровни запасов и т. д. Каждый из этих бизнес-процессов представлен в виде таблицы фактов, содержащей базовые показатели и транзакционные данные, связанные с этим доменом.
Чтобы эти данные были значимыми, каждая таблица фактов связывается с одной или несколькими таблицами измерений, например, «Продукты», «Даты», «Кампании», «Клиенты» или «Поставщики». Измерения описывают факты и позволяют пользователям группировать, фильтровать или агрегировать их (например, по дате, категории продукта, по сегменту клиента).
Часто разные таблицы фактов используют одинаковые измерения. Например, маркетинг и продажи связаны с продуктами и датами.
Если таблицы фактов связаны с общим измерением, ваша организация может выровнять данные и проанализировать значения вместе, что позволит вам:
- Сравнение затрат на кампанию от маркетинга и дохода от продаж по продукту
- Разбивка уровней запасов и показателей продаж по поставщику или клиенту
- Анализируйте действия службы поддержки наряду с поведением покупки и возврата.
Такие запросы охватывают разные таблицы фактов, в то время как общедоступные измерения предоставляют точки подключения, позволяющие объединять эти факты и исследовать их параллельно.
Для поддержки этого в семантической модели вводится понятие общих таблиц. Если таблица измерений обозначена общедоступной, система знает, что ее можно использовать для безопасного подключения нескольких таблиц фактов. Это включает чистый, свободный от цикла многофакторный анализ и обеспечивает корректную интерпретацию и выполнение запросов семантической моделью в доменах.
Связанные и несвязанные таблицы
Дополнительным ключевым понятием в общедоступных таблицах является разница между связанными и несвязанными таблицами.
Две таблицы считаются связанными, если они напрямую связаны определенной взаимосвязью. Запросы между связанными таблицами работают корректно: система использует определенный путь для присоединения к ним.
Если две таблицы совершенно не связаны, то есть у них нет прямого или общего подключения, система не может определить, как объединить их данные, и запрос не будет выполнен.
В некоторых случаях таблицы соединяются только посредством общего измерения. При запросе полей из обеих таблиц фактов без добавления поля из общедоступной таблицы и отсутствии агрегации полей система выполняет кросс-объединение. Это значит, что каждая строка из одной таблицы фактов объединена с каждой строкой из другой, поскольку общий ключ для их выравнивания отсутствует.
Например, если «Продажи» и «Маркетинг» связаны с общей таблицей «Продукты», и вы запрашиваете [Продажи].[К оличество продаж] и [Маркетин г].[Потратить] без [Продук ты].[ Имя продукта], система просто объединит все строки продаж со всеми строками маркетинга.
Во избежание этого, запрос должен содержать поле из общей таблицы, например, «Продукт» или «Дата», которое выступает в качестве ключа объединения и предоставляет общую ось для группировки и агрегации значений в двух фактах.
Общедоступные измерения позволяют анализировать данные из таблиц, которые в противном случае были бы изолированы, но только при правильном использовании в запросе.
Деревья фактов и их структура
Дерево фактов - это группа таблиц, принадлежащих одной бизнес-области и связанных друг с другом. Обычно она содержит одну или несколько таблиц фактов вместе с таблицами измерений.
Эта структура — не просто концепция моделирования, она создается системой автоматически при выполнении запроса. Деревья фактов - это способ внутренней систематизации таблиц семантического слоя для правильной оценки общедоступных измерений.
В примере диаграммы выше Marketing - это таблица фактов, связанная с общедоступными таблицами Products and Dates. Таким образом формируется дерево фактов. Продажи - это еще одна таблица фактов, которая подключается к тем же общедоступным измерениям, образуя отдельное дерево фактов. Эта структура позволяет системе понять, как каждое дерево работает независимо, но при этом включить кросс-анализ деревьев посредством общих измерений.
Деревья фактов должны оставаться свободными от цикла. Циклы вносят двусмысленность: если система может попасть в одну таблицу по нескольким путям, она может не знать, по какому пути идти или как правильно применять фильтры и агрегации. По этой причине создание новой взаимосвязи, которая вводит цикл, например, подключение Marketing напрямую к подкатегории (которая уже доступна посредством продукта), не разрешено.
Как общедоступные измерения влияют на запросы
Общедоступные измерения не только помогают структурировать семантические модели, но и определяют поведение запросов во время выполнения, обеспечивая точные результаты и последовательную логику.
Например, вы анализируете связь между маркетинговыми расходами и количеством продаж. Эти два показателя поступают из разных таблиц фактов: Marketing and Sales. Сами по себе они не могут быть выровнены значимо, поскольку нет общего контекста для их группировки. Если вы просто перетаскиваете оба поля в запрос без использования общей ссылки, система не может сопоставить строки и может вернуть вводящие в заблуждение результаты или даже сбой.
Однако, как только вы добавляете два общедоступных измерения, например, «Продукт» и «Дата», ситуация меняется. Ниже перечислены вопросы, которые могут быть заданы: «Сколько мы потратили на маркетинг по каждому продукту и месяцу и сколько единиц было продано?»
Поскольку продажи и маркетинг связаны с продуктами и датами (общие таблицы), система теперь может выровнять оба показателя корректно -- по продукту, по месяцу -- и вернуть значимые агрегированные результаты:
| Продукт | месяц | Расходы на маркетинг | Количество продаж |
|---|---|---|---|
| Велосипед | Янв 2024 | 5 000 | 12 |
| Велосипед | февраль 2024 | null | 8 |
| Автомобиль | Янв 2024 | 10,320 | 22 |
| Автомобиль | февраль 2024 | 5 000 | 10 |
Алгоритм фильтрации
Фильтры применяются таким образом, чтобы избежать изменения данных из несвязанных таблиц.
- При применении фильтра к полю, связанному с конкретным фактом, например, «Тип маркетинга», фильтруется только таблица фактов, а не любой другой факт или общедоступное измерение.
- При применении фильтра к общедоступному измерению, например, имени продукта или дате, он применяется ко всем связанным таблицам фактов.
Этот алгоритм предотвращает удаление фильтрами несвязанных записей. Например, при выборе параметра «Онлайн» в фильтре «Тип маркетинга» обновляются только расходы на маркетинг — количество продаж остается неизменным.
Деревья фактов должны оставаться свободными от цикла. Циклы вносят двусмысленность: если система может попасть в одну таблицу по нескольким путям, она может не знать, по какому пути идти или как правильно применять фильтры и агрегации. По этой причине создание новой взаимосвязи, которая вводит цикл, например, подключение Marketing напрямую к подкатегории (которая уже доступна посредством продукта), не разрешено.
Вычисляемые поля и содержание дерева фактов
Вычисляемые поля должны соответствовать границам дерева фактов. Например, при создании вычисляемого поля уровня строки:
IF [Поддержка].[Приоритет] <= 1 ТОГДА "Высокий" ЕЩЕ "Низкий"
-- это поле действительно, пока оно находится в одном дереве фактов (в данном случае поддержка). Вы можете использовать его для анализа схем или фильтрации действий, связанных с поддержкой, по таким измерениям, как «Клиент» или «Продукт» (если эти измерения общедоступны), и все будет выглядеть как ожидалось.
Однако, при попытке создания вычисляемого поля, охватывающего несколько таблиц фактов, например:
[Запас].[Количество] + [Продажи].[Количество продаж]
-- платформа выдаст ошибку. Он пытается объединить данные уровня строки из двух разных деревьев фактов, и система не может разрешить общий уровень детализации для этого выражения. Каждое дерево фактов имеет собственную независимую детализацию и контекст фильтрации.
Чтобы получить допустимые вычисления кросс-фактов, необходимо агрегировать каждый факт отдельно, а потом объединить эти агрегаты на уровне представления:
SUM([Запас].[Количество]) + SUM([Продажи].[Количество продаж])
Это выражение разрешено, поскольку обе меры агрегируются до их объединения, а агрегация ограничена уровнем продукта или любым измерением в представлении.
Ограничения общедоступных измерений и деревьев фактов
- Таблицы фактов должны оставаться отключенными друг от друга. Они не могут быть объединены напрямую. Любое подключение между ними должно происходить только посредством общих таблиц измерений.
- Вычисляемые поля уровня строки, будь то измерения или меры, должны полностью содержаться в одном дереве фактов.
- Общая таблица не может быть связана с другой общедоступной таблицей, а затем с таблицей фактов. Другими словами, в пути подключения между любой таблицей фактов и ее измерениями может существовать только одна общедоступная таблица. Например, если «Продукты» являются общедоступной таблицей, связанной с датами (другой общедоступной таблицей), а потом оба связаны с продажами, эта структура не поддерживается.
- При фильтрации полей из нескольких деревьев фактов в одном запросе эти фильтры должны быть объединены посредством условия AND, а не ИЛИ.
- Создание новой общедоступной таблицы
Используйте общедоступные таблицы для связывания нескольких таблиц фактов посредством общего измерения, чтобы сравнить записи в разных таблицах. Это поддерживает чистоту и четкость модели данных и обеспечивает корректное поведение фильтров в разных наборах данных.
