Примеры настроек ссылочной целостности

Примеры настроек ссылочной целостности

Пример 1. Использование «Частичного соответствия» при неполных данных в справочнике

Исходные данные:

  • Есть таблица фактов продаж, содержащая:

    • идентификатор товара (ID товара);

    • сумму выручки (Сумма продаж).

  • Есть таблица товаров (справочник), где для каждого ID товара указано его Название.

Проблема:
В таблице товаров отсутствуют строки для некоторых ID (например, новые товары ещё не завели в справочнике). При этом в таблице фактов продажи по этим товарам есть – суммы по ним хранятся, но связать их с названием нечем.

Что произойдёт при стандартной настройке «Полное соответствие»:
При построении отчёта (например, таблица с колонками «Название товара» и «Сумма продаж») будут показаны только те строки, для которых название найдено в справочнике. Строки фактов с отсутствующим названием исключатся из выборки.
Как результат – общая сумма продаж (Total) окажется занижена, потому что продажи по товарам без названия не попадут в расчёт.

Как помогает опция «Частичное соответствие»:
Если в настройках связи (между таблицей фактов и таблицей товаров) для ссылочной целостности таблицы фактов выбрать «Частичное соответствие», то:

  • в отчёт попадут все строки таблицы фактов, включая те, для которых нет соответствующей записи в справочнике товаров.

  • для таких строк в колонке «Название товара» будет отображаться пустая ячейка.

  • суммы по всем продажам (в том числе и по товарам без названия) учтутся при подсчёте общих итогов.

    empty.png

В результате общая сумма продаж отображается корректно, а аналитик видит, какие именно позиции требуют дополнения справочника (пустые ячейки в названиях).

Пример 2. «Частичное соответствие» для отображения всех товаров, даже с нулевыми продажами

Исходные данные:

  • Таблица товаров (справочник) содержит все необходимые названия товаров. В ней нет пропусков – для каждого товара есть ID и Название.

  • Таблица фактов продаж содержит столбцы ID товара и Сумма продаж, но в столбце Сумма продаж отсутствуют записи для некоторых товаров (например, товар не был продан и ячейки остались незаполненными).

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

Как помогает опция «Частичное соответствие»:
Чтобы в визуализации отображались все товары, включая те, по которым продаж не было, для таблицы фактов в настройках связи необходимо выбрать опцию «Частичное соответствие». В этом режиме строки из таблицы товаров сохраняются в результате, даже если соответствующие данные в таблице фактов отсутствуют.

Дополнительно для корректного отображения показателей мы создадим DAX-меру, заменяющую пустые значения суммы продаж на ноль:

Продажи = IF( ISBLANK(SUM(fact_sales[amount])), 0, SUM(fact_sales[amount]) )

Результат в визуализации:

table2.png

В результате при построении таблицы:

  • Общая сумма продаж по мере «Продажи» будет рассчитана верно (с учётом нулей).

  • Аналитик видит весь ассортимент товаров, включая те, которые ещё не продавались.

  • Пустые ячейки заменены на понятные нули, что исключает неверную интерпретацию.


Смотрите также

Формирование модели данных для визуализации
Настройка ссылочной целостности