Обходной путь для вычисляемого объекта в Power BI Pro: поток данных в Power BI

Tags: Power BI

Ранее мы писали о том, что такое поток данных и каковы сценарии его использования. Мы также писали о Computed Entity и его важной роли для производительности и происхождения данных. Тем не менее, вычисляемый объект является платной функцией. Бывают случаи, когда вам действительно не нужны премиальные функции Power BI, и тогда необходимость использования вычисляемого объекта может быть ограничительной. Вы хотите сослаться на другой объект, а затем вам понадобится вычисляемый объект в качестве примера. В этой статье мы покажем вам некоторые обходные пути, которые можно использовать для выполнения работы, без необходимости использования вычисляемого объекта, и даже использовать его с обычными учетными записями Power BI Pro.

Необходимое условие

Если вы новичок в потоках данных, мы рекомендуем прочитать эти статьи заранее:

Часть 1. Каковы варианты использования потока данных для вас в Power BI?

Часть 2. Начало работы с потоками данных в Power BI

Часть 3: Что такое общая модель данных и зачем она нужна?

Часть 4: Связанные и вычисляемые объекты. Потоки данных в Power BI, часть 4

Определение проблемы

Вычисляемый объект будет генерироваться всякий раз, когда вы создаете ссылку из другого запроса. В большинстве случаев вы создаете ссылку из других запросов, прежде чем объединять их вместе, например,  Append или Merge. Однако есть много других сценариев, которыми вы можете ссылаться на другие запросы. Если вы хотите узнать больше о ссылке, прочитайте мою статью о разнице между Reference и Duplicate в Power Query.

В качестве примера сценария, который вы в конечном итоге используете Computed Entity, вот пример:

Когда вычисляемый объект не нужен

Представьте, что у нас есть две таблицы, и мы хотим объединить их, используя опцию Append. Наши таблицы выглядят следующим образом:

Course1Students

 

Course2Students

 

Теперь предположим, что вы хотите объединить строки этих двух таблиц в одну таблицу под названием Course Students. Это можно сделать с помощью действия Append (ранее мы объяснили, что такое Append и чем оно отличается от Merge). Можно начать с одной таблицы, затем использовать Combine и Append Queries, а затем выбрать вторую таблицу;

 

Этот метод работает отлично. Теперь ваша Course1Students будет таблицей, включающей все строки из обеих таблиц;

 

Когда может понадобиться Computed Entity

Вышеприведенный сценарий, однако, не всегда актуален. Иногда вам нужно сохранить исходные запросы, а также создать новый запрос, который является результатом Append. Если вы хотите сделать это, вы можете сделать это, используя Append Queries as New:

 

Или создание ссылки из запроса, а затем добавление оттуда.

 

Любое из вышеуказанных действий приведет к созданию Computed Entity

 

Как видите, маленький значок молнии рядом с новым объектом показывает, что это Computed Entity. А вычисляемый объект требует возможности Premium Power BI. Чтобы узнать больше о Computed Entity, прочитайте эту статью.

Иногда, если вам на самом деле не нужно использовать емкость премиум-класса (например, размер данных невелик и может быть легко выполнен без необходимости в нем), вы можете применить один из  нижеприведенных обходных путей, чтобы получить эту возможность даже без необходимости в вычисляемом объекте.

Важно прочитать перед чтением Обходного пути

Обратите внимание, что мы не говорим, что вам следует избегать создания вычисляемого объекта. Мы говорим, что если вам действительно не нужны дополнительные мощности, и вам это нужно только потому, что вам нужно создать вычисляемый объект для вашего решения, а объем данных невелик, и для его обработки фактически требуется выделенная емкость, тогда вы можете избежать этого с помощью некоторых обходных путей.

Если какой-либо из приведенных выше критериев не подходит для вашего сценария потока данных, мы настоятельно рекомендуем использовать Computed Entity, так как он очень поможет с производительностью вашей реализации преобразования данных.

Обходной путь: избегайте вычисляемого объекта, если он вам не нужен

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

Используйте Append или Merge, но без опции As New

Вы уже видели в приведенном выше примере: если вы используете Append Queries  вместо Append Queries as New, то у вас вообще не будет вычисляемого объекта. Только если вы используете Append Queries as New или Merge Queries as New, вы в конечном итоге создаете вычисляемый объект. Так что избегайте по возможности этих двух вариантов.

 

Внимание! Использование параметров  Append или Merge Queries без As New приведет к преобразованию текущего объекта в результат операции Merge или Append. Если вы не хотите преобразовывать существующий объект и хотите оставить его как есть, вам нужно будет использовать параметры As New.

Важное замечание об использовании этого параметра заключается в том, что если вы не настроите исходные объекты на отключение загрузки, это все равно будет считаться вычисляемым объектом. Поэтому для выполнения этого обходного пути необходимо выполнить следующее действие. Если вы не отключите загрузку для исходных объектов, вы получите следующее сообщение:

 

Установите исходные объекты на отключение загрузки

Не всегда можно использовать запросы слияния или добавления запросов без параметра As New. Таким образом, вы можете использовать его, как упоминалось ранее в этой статье. В этих случаях, если вам больше не нужен исходный объект, вы можете снять с него загрузку. Это возможно, если щелкнуть правой кнопкой мыши исходную таблицу и снять флажок с Enable Load. Вот вычисляемый объект, созданный опцией Append Queries as New:

 

Теперь вы можете щелкнуть правой кнопкой мыши на Course1Students и снять галочку с Enable Load для нее, а также сделать то же самое для Course2Students:

 



Тот же процесс действителен при создании ссылки из запроса. Затем вы можете снять флажок Enable Load в исходном запросе, и у вас больше не будет вычисляемого объекта.

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

Иногда, однако, вам все еще нужно, чтобы там находился оригинальный объект, а также указанный. В этих сценариях предлагается использовать Duplicate.

Используйте Duplicate вместо Reference

Если вы используете опцию Reference, вы получите новый объект - Computed Entity. Однако, если вы используете Duplicate из исходного объекта, тогда из него не будет вычисляемого объекта, и вы можете выполнить остальные преобразования в нем.

 

Внимание: дубликат создаст копию объекта со всеми примененными шагами в качестве нового объекта. Два объекта после дублирующего действия будут полностью отделены друг от друга, и преобразование, примененное к одному, не повлияет на другое.

Если вам не нужно это поведение и вы хотите использовать один из объектов в качестве основной таблицы для преобразований, а другую таблицу для продолжения преобразования, начиная с того места, где завершился первый запрос, вам нужно использовать Reference. Чтобы узнать больше о разнице между Reference и Duplicate, прочитайте эту статью.

В качестве примера этого обходного пути мы можем сделать реализацию следующим образом:

В одной из наших предыдущих статей ранее мы объясняли, как создать общее измерение из нескольких таблиц, у нас было три таблицы, в каждой из которых указан номер продукта. Мы объяснили, что мы можем создать копию каждой таблицы, используя ссылку, а затем объединить их вместе. Используя этот метод, если мы применим какие-либо изменения в исходных таблицах, то все ссылочные таблицы будут иметь изменения соответственно, потому что мы использовали опцию Reference.

Однако, если вы хотите сделать это в потоке данных и не хотите, чтобы происходило создание вычисляемого объекта, вы можете сделать это с помощью Duplicate.

 

После создания дубликата для каждой таблицы вы можете снять флажок для них с Enable load .

 



И затем вы можете добавить их в новый объект, не создавая вычисляемый объект:

 

Но будьте осторожны: стоимость обслуживания этого метода высока. Потому что все изменения, которые вы вносите в исходные таблицы, затем должны быть выполнены снова в дублированных таблицах, или вы должны копировать M-скрипт из исходной таблицы в дублирующую таблицу каждый раз после этого.

Предостережение: синхронизируйте преобразования источника с дублированным объектом

При использовании дубликата два объекта будут отделены друг от друга, и если вы примените какие-либо преобразования в исходном объекте, новый объект не будет иметь этого преобразования. Вам нужно будет синхронизировать их. В этом типе сценария мы обычно используем опцию Reference, чтобы убедиться, что они автоматически синхронизируются. Тем не менее, поскольку этот пост посвящен тому, как это сделать без необходимости в таких вещах, Вот как сохранить их синхронизированными, используя копирование сценария М.

Вы можете щелкнуть правой кнопкой мыши по исходному объекту и перейти к Advanced Editor:

 

Затем скопируйте весь скрипт M:

 

Затем перейдите в расширенный редактор второго объекта (дублированный объект) и вставьте его туда.

Если у вас есть какие-либо дальнейшие преобразования, примененные в дублированном объекте, вы должны убедиться, что вы храните их там, например:

 

Резюме

Вычисляемый объект хорош для производительности преобразования потока данных, поскольку он будет хранить выходные данные исходной таблицы в хранилище озера данных Azure. Он также будет синхронизирован с преобразованиями из исходной таблицы. Однако вам может не потребоваться дополнительная емкость в Power BI, а размер набора данных для вас может быть слишком мал, и все же вы хотите использовать такие функции, как добавление или объединение таблиц. Если вычисляемый объект ограничивает вас, вы можете применить некоторые обходные пути, как указано в этой статье. Тем не менее, будьте осторожны, что каждый обходной путь сопровождается побочным эффектом. Обязательно прочтите о них, прежде чем применять в своем решении.

 

No Comments

Add a Comment