Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Power Pivot. Подстановка значений из сгруппированной не связанной таблицы в модели данных., DAX
 
Доброго дня, уважаемые.
Возникла такая проблема, в модели данных имеются 2 таблицы, в обеих есть ключевое поле, но оно в них обеих не уникальное. Из-за этого связь между таблицами настроить не могу.
Что хочу: в модели данных в таблицу Продажи из примера подставить значения поля Остатки на начало дня из сгруппированной по полю Ключ таблицы Остатки
Возможно ли такое чудо? Прошу помочь с направлением раскопок. Скажите хоть какие функции использовать, а дальше если буду сильно тупить - уточню.
Заранее спасибо.
Изменено: PooHkrd - 23 Окт 2017 14:34:09
Вот горшок пустой, он предмет простой...
 
Доброе время суток.
Думаю, лучше при помощи power query сделать обобщенную твблицу измерение по столбцам код, товар, Отобрав, только уникальные пары в ней. Потом в модели данных соединить её с исходными
 
Пробовал, в реальной таблице 177 тыс строк, из них 165 тыс имеют уникальный идентификатор в столбце ключ. Группировку в PQ по этой таблице приходится делать по трем полям. И вот тут-то PQ подыхает, т.е. он просто не может выполнить Table.Group по такой таблице с такими параметрами за приемлимое время. По крайней мере я ждал минут 20 запрос так и не отработал. Вот думаю как объехать проблему.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Группировку в PQ по этой таблице приходится делать по трем полям
А зачем, если по файлу примеру у вас ключ код, ну, и дополняющее для человека название товара?
Если всё же три, тогда надо думать как создать уникальный ключ и разместить их не только в таблице измерений, но и фактах.

Что-то не очень вериться в тормоза с Table.Group. Попробуйте так
Код
glue = Продажи[[Код], [Товар]] & Остатки[[Код], [Товар]],
unique = Table.Distinct(glue)  
 
На самом деле ключ у меня код и город, но почему-то расчетный столбец в модели данных отсутствует, наверное не сохранил.
Короче победил проблему по-другому:
Сцепил через разделитель все три поля, которые нужно было получить в итоговой таблице,
Сгруппировал по сцепке
После группировки разделил столбцы
В результате получил таблицу с уникальным ключом, и всеми нужными столбцами теперь могу связывать таблицы.
Андрей, спасибо за подсказки. Проблема в общем-то решена.

По поводу тормозов Table.Group - это факт если нужно сгруппировать серьезный массив по трем полям и более. Так что сегодняшний вариант группировки со сцеплением-расцеплением возьму на вооружение. По одному полю данная функция работает очень быстро.

Но все таки то что я описал в первом посте реально ли сделать на DAX в принципе?
Изменено: PooHkrd - 24 Окт 2017 09:36:39
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
в принципе?
В принципе, да, если одна из факт таблиц содержит полный набор ключей и вам доступна https://www.sqlbi.com/articles/propagate-filters-using-treatas-in-dax/, можно попробовать и INTERSECT, если Максим Зеленский заглянет, то наверняка предложит ещё варианты. Но, по той же статье сравните скорость выполнения, использование таблицы изменения будет быстрее и заметно
 
Как всегда, крайне занимательная ссылка.
Огромное спасибо, Андрей.
Вот горшок пустой, он предмет простой...
 
Вряд ли я что-то добавлю к сказанному, тем более к "итальянцам" :)
F1 творит чудеса
 
Короче, попробовал. TREATAS у меня в Экселе нету, но оно и c INTERSECT отлично сработало.
Очень круто, буду закреплять, а то закидывать в модель по две-три почти одинаковых здоровых таблицы просто ради наличия физических связей между ними - слишком тяжелые файлы получаются.
С другой стороны увлекаться такой ерундой тоже не желательно, потом через месяц другой без поллитры в связях между таблицами не разберешься. Буду соблюдать баланс.

Еще раз огромное спасибо.
Вот горшок пустой, он предмет простой...
Страницы: 1
Читают тему (гостей: 1)
Наверх