Таблицы Dax vs M (power query) - лучший способ объединения больших таблиц. - PullRequest
1 голос
/ 25 апреля 2020

Как лучше всего объединить две большие таблицы одинаковой структуры по вертикали? Каждая таблица составляет около 2 млн строк. Есть ли преимущество в производительности , чтобы сделать это в M, а не в DAX?

M подход

BigTable_M  = Table.Combine( {Table1, Table2} )

DAX подход

BigTable_DAX = UNION ( 'Table1', 'Table2' )

У меня такое ощущение, что M way загружает таблицы два раза. Отдельно каждый первичный источник (Table1 и Table2), а затем снова обе таблицы при загрузке строк в BigTable_M. Есть ли какая-либо причина страдать от этой двойной нагрузки для повышения производительности позже?

По этой статье кажется, что M быстрее.

https://www.sqlbi.com/articles/comparing-dax-calculated-columns-with-power-query-computed-columns/

Ответы [ 2 ]

3 голосов
/ 25 апреля 2020

Лучше всего сначала сделать это в M / Power Query, прежде чем загружать данные в модель данных. Вы всегда хотите, чтобы модель данных была быстрой и отзывчивой при минимальных затратах на вычисления. Я всегда рекомендую работать с самого низкого уровня, например, если вы можете сделать это в исходном коде, сделайте это там, а затем, если вы не можете сделать это, сделайте это в Power Query, и, в крайнем случае, сделайте это в Dax /. Power Pivot часть. Это хорошо работает, если вы работаете с базой данных, поскольку вы позволяете технологии, предназначенной для тяжелого подъема / перемещения данных, а не делать все это в Power BI.

Если вы работаете с файлами, то было бы лучше сделать это в части Power Query, насколько это возможно, и снова позволить механизму Power Pivot работать как можно быстрее.

При консультировании с моделями данных клиентов, как Power BI, так и службами анализа, большинство проблема заключается в том, чтобы делать что-то в модели данных, а не делать это раньше. Например, преобразования типов данных, замена строк, итерационные вычисления, ранжирование и т. Д. c, которые лучше всего сделать задолго до того, как они попадут в модель.

2 голосов
/ 26 апреля 2020

Делая это в редакторе запросов, вы можете выбрать загрузку только комбинированной таблицы в модель данных, в то время как Table1 и Table2 существуют просто как промежуточные таблицы. Это должно решить вашу проблему с двойной загрузкой таблиц.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...