Передайте произвольную цену из ссылки Power BI в динамический параметр m
Динамический параметр m очень полезен в Power BI при использовании DirectQuery. Это связано с тем, что цены могут быть переданы из отчетов. Однако неясно, как можно передать требуемые значения. Динамические параметры должны быть привязаны к срезам или фильтрам и связаны с таблицами в базе данных. Значения, которые уже существуют где-то в наборе данных (например, в таблице измерений). Однако это не так. Существуют способы, позволяющие пользователям подчиняться динамическим М-параметрам. В данном материале будет показано, как это сделать.
Прежде всего, почему это полезно? Есть две причины разрешить передавать произвольные значения в динамический параметр m вместо того, чтобы фиксировать их в слайсере или фильтре обычным способом.
Появление списка возможных цен на измельчители или фильтры может быть дорогостоящим, особенно если столбец среза содержит тысячи или миллионы цен. Это замедляет работу отчета и может привести к появлению дополнительных вопросов в источнике DirectQuery, что может привести к проблемам с производительностью.
Значение, которое вы хотите передать, может отсутствовать в прямом источнике. Сценарии, в которых это полезно, очень похожи на сценарии, в которых вы хотите использовать параметры "что-если", но основное ограничение параметров "что-если" заключается в том, что вы должны вычислить все значения, которые хочет пользователь. Предварительно отберите и сохраните их в таблице. Что произойдет, если вам не нужно или вы не можете заранее подсчитать все значения входа?
Рассмотрим пример того, как можно передать необходимые значения в динамическом параметре M.
В базе данных образца SQL Server AdventureWorksDW2017 есть таблица с именем FactInternetSales со столбцом SalesoorDernumber, где последний пользователь может ввести число SalesorEnumbers и Предположим, что создан отчет Power BI, который позволяет пользователям целовать панель на основе панели. Предположим также, что для эффективного выполнения этого действия вам необходимо использовать динамический параметр M (что не так в AdventureWorksDW2017, но вполне может произойти в реальном мире). Ниже приведено изображение данных.
Для настройки в редакторе Power Query Editor требуется параметр M для хранения значения, вставляемого конечным пользователем. В этом примере параметр называется SalesOrderNumber.
Текущее значение (текущая цена) устанавливается на цену, которая не является действительным номером заказа на продажу, поэтому, если от пользователя не поступает импорт, никакие строки не будут возвращены из отчета.
Далее требуется задать вопрос для фильтрации таблицы FactInternetSales на основе этого параметра. Ниже приводится код М.
let source = sql. database ("localhost", "adventureworksdw2017"), dbo_factinternetsales = source [data], # "удалены другие столбцы" = table. selectcolumns (dbo_factinternetsales), filterlist = if), list. type) other # "отфильтрованные строки" = table. selectrows (# "удалены другие столбцы", каждый list. contains ( filterlist, [salesordernumber])) "отфильтрованные строки")
Здесь можно отметить два интересных момента: .
Код обрабатывает случай, когда пользователь вводит одно значение. В результате параметр SalesoorDernumber M будет либо текстовым, либо, если пользователь введет несколько значений, параметр SalesOrderNumber M будет списком. Более подробную информацию о процессе мультивыбора для динамических параметров см. в этой заметке.
Фактическая фильтрация выполняется с помощью функции list.contains m. Это сводится к источнику данных, связанному с SQL-сервером. Если вы используете другие источники, вам следует проверить, складывается ли запрос для list.contains.
В-третьих, вам нужна виртуальная таблица измерений с одним столбцом динамических параметров M для фиксации в отчете. Таблица измерений не должна содержать данных. Вот код M, который необходимо использовать (запрос называется dimsalesoordernumber):.
let source = #table (type table [salesoordernumber = text],.<>) источник.
Запрос возвращает таблицу с одним текстовым столбцом salesoordernanmumber.
После выхода из Power Query Editor, следующее, что вам нужно сделать, это соединить параметр SalesoorDernumberM со столбцом salesoordernumbernumber в DimsalesoorderNumberNumber.
Обратите внимание, что свойство множественного выбора активировано. Привязка к динамическому параметру m в таблице без строк означает, что нет возможности использовать обычную стрелку, так как в таблице нет значений для отображения стрелок.
Последняя проблема, которую необходимо решить, является самой важной. Как можно разрешить конечным пользователям вводить произвольные значения? Я знаю два способа: первый - использовать тип фильтра "is" в окне фильтра и "расширенный фильтр".
Встроенное окно фильтрации превосходно, но оно позволяет пользователю ввести только одно или два значения (если используется опция 'OR'). Также обратите внимание, что не все типы фильтров доступны при использовании динамического параметра M.
Если вам удобно использовать пользовательские визуальные эффекты, лучшим подходом будет использование пользовательского визуального эффекта Filter by List.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
10 причин, по которым профессионалы Power BI должны посетить SQLBits
В этом году SQLBits снова пройдет в марте на курорте Celtic Manor Resort в Уэльсе. Это крупнейшая конференция Microsoft Data Technology в Европе, а теперь, возможно, и в мире. Я уверен, что многие из вас, читающих эту статью, относятся к SQLBits так же, как и я, но если вы относительно недавно в мире Power BI, вы, возможно, не слышали о нем. Увидеть это - большое дело. Ниже приведены 10 причин, по которым профессионалам Power BI стоит посетить это мероприятие.
Пусть вас не отпугивает включение в название слова "SQL". Конференция включает большое количество материалов по Power BI. Ознакомьтесь со списком дат проведения тренингов и сессий на конференции и посмотрите (бесплатно!) записи сессий с предыдущих мероприятий здесь. на предыдущие мероприятия (бесплатно!) здесь.
Вы можете провести все мероприятие, посещая только сессии по Power BI, но есть также множество сессий по смежным технологиям, таким как SQL Server, Synapse и Azure Databricks. Также проводятся занятия по нетехническим темам, таким как публичные выступления и как их проводить. Независимые консультанты.
Почти все представители мира Power BI присутствуют там. Хотите лично увидеть Альберто Феррари или Адама и Патрика из "Парня в кубе"? Тогда идем!
Это общественное мероприятие и очень дешевое, поскольку никто не получает прибыли. На самом деле, даже если вы живете в США, вам может быть дешевле слетать в Великобританию, чем посетить аналогичную конференцию ближе к дому. Участники приезжают со всей Европы (особенно из Скандинавии).
У вас нет бюджета на обучение? Суббота 18 марта на 100% бесплатна для посещения - вам нужно только зарегистрироваться, и вы сможете провести весь день на конференции, не заплатив ни копейки.
Не можете путешествовать? Если вы не можете встретиться лично, есть виртуальный вариант, и вы можете посещать сеансы онлайн. Однако для того, чтобы ощутить всю полноту впечатлений, вы должны присутствовать лично.
Помимо возможностей для обучения, это отличное место для налаживания контактов. Я знаю многих людей, в том числе и себя, которые нашли новую работу и продвинулись по карьерной лестнице благодаря контактам, завязанным на SQLBits.
Являетесь ли вы единственным представителем власти в вашей организации? Чувствуете ли вы себя одиноко? Не уверены, что поступаете правильно? Познакомьтесь с людьми, которые выполняют ту же работу, что и вы, чтобы вы могли сравнивать заметки и жаловаться на пользователей.
Это также отличное место для знакомства с такими компаниями Power Bi, как Power Editor и Power Bi Sentinel, и получения информации об их продукции и услугах.
Самое главное - вы получите от этого удовольствие. Особенно если вы бывали на других технологических конференциях, но SQLBITS отличается от них, вы знаете, что это невероятно. С помощью вашего любимого инструмента BI. Они также очень дружелюбны, гостеприимны и не исключают исключений.
Надеюсь, это вас убедит! Если вы хотите узнать больше о SQLBITS и его производительности, вы можете найти это недавнее интервью с Саймоном Сабином на YouTube-канале моего коллеги Каспера Де Йона.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Понимание ошибки 'Во время оценки была нарушена периодическая ссылка'
При работе с редактором Power Query Editor в Power BI или Excel, особенно при редактировании M-кода, вы можете столкнуться со следующей ошибкой.
Выражение: 'Выражение: циклическая ссылка нарушена во время оценки'.
Что означает это сообщение? В чем причина этой ошибки? В этом сообщении блога я объясняю вам.
Первый шаг к пониманию того, что здесь происходит, - это понять, как мощные запросы оценивают шаги запроса. Об этом говорится гораздо подробнее, о чем вы можете прочитать здесь, но основы очень легко понять.M Рассмотрим следующий запрос.
Шаг 1 = 1, Шаг 2 = Шаг 1 + 5, Шаг 3 = Шаг 2*2 Шаг 3
Если вы вставите это сообщение в новый пустой запрос в редакторе Power Query, вы увидите три шага в разделе Applied Steps в правой части экрана.
Как вы можете себе представить, сам запрос возвращает значение 12.
Важно знать, что Power Query не оценивает шаги в том порядке, в котором они здесь представлены. То есть, он не оценивает сначала Шаг 1, затем Шаг 2, затем Шаг 3. Шаг 3, который необходим для вывода запроса, оценивается первым, а Шаг 2 оценивается следующим, поскольку для этого ему необходимо значение Шага 2. Затем оцените Шаг1, так как для оценки Шага2 необходимо значение Шага1. Шаг1 последний. Цепочка зависимостей между этими этапами может быть представлена следующим образом
Теперь рассмотрим следующий запрос M.
Шаг1=Шаг3, Шаг2=Шаг1+5, Шаг3=Шаг2*2 - Шаг3.
Изменение заключается в том, что Step1 устанавливается на значение Step3 вместо значения 1. Запрос выдает ошибку 'A circular reference occurred during evaluation'. Причина этого, вероятно, очевидна. Запрос возвращает значение Шага3. Для этого необходимо значение Шага2, для чего необходимо значение Шага1, для чего необходимо значение Шага3. Поэтому нет возможности вычислить результат запроса. Существует петля в зависимости между этапами.
Это круговая ссылка (также известная как "круговая ссылка") из сообщения об ошибке. Как вы можете себе представить, круговые ссылки очень легко создаются путем ручного редактирования кода M и изменения имени шага.
Эта ошибка также может возникнуть при использовании ссылочного запроса, т.е. если запрос Power Query использует вывод другого запроса Power Query в качестве источника данных. Например, предположим, что у вас есть запрос Query1 со следующим кодом M
Источник = Запрос 2 в Источнике
... И запрос с именем Query2 со следующим кодом M :
Пусть Источник = Запрос 1 в Источнике
Опять же, есть круговая ссылка: Запрос1 ссылается на вывод Запроса2, а Запрос2 ссылается на вывод Запроса1. Сообщение об ошибке, возвращаемое для Запроса2, следующее.
Ошибка в запросе 'Query1' Выражение: при оценке обнаружена кольцевая ссылка.
Дополнительная проблема в этом случае заключается в том, что если вы попытаетесь удалить только один из этих запросов, вы получите следующее сообщение об ошибке
Запрос "Query1" не может быть удален, поскольку на него ссылается другой запрос "Query2".
Оба запроса должны быть выбраны, а затем удалены, либо один из них должен быть отредактирован, чтобы удалить круговые ссылки.
И последнее, о чем следует упомянуть: в M возможна рекурсия. Это означает, что вы можете создавать пользовательские функции, которые вызывают сами себя (Мигель Эскобар подробно рассказал об этом). Эффективный способ решения проблемы.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
В нашем предыдущем посте мы показали, как обертывание запросов может часто использоваться для избежания ошибок "динамического источника данных" с источниками данных OData. Однако это не всегда возможно. В этом посте мы покажем, как это сделать, используя вместо этого опцию Query функции OData.Feed.
На первый взгляд, опция Query в OData.Feed очень похожа на опцию Query в Web.Contents. Конечно, его также можно использовать, чтобы избежать ошибок динамического источника данных (см. здесь и здесь). Это относится к одной точке. OData: Это можно использовать для добавления параметров запроса к URL-адресам OData. Однако документация не очень подробная, и есть один момент, который может сбить с толку при попытке его использования. Однако документация не очень подробная, и есть один непонятный момент при попытке его использования: его нельзя использовать вместе с опциями запроса системы OData, такими как $filter. Например, предположим, вы хотите запросить сущность People конечной точки OData образца TripPin, чтобы получить только людей, чье первое имя - Скотт. Это можно сделать следующим образом
let Source = OData.Feed("https://services. odata. org/TripPinRESTierService/People?$filter=FirstName eq 'Scott'", null, [Implementation = "2. 0"]) в Source.
Поскольку $filter является параметром запроса URL, можно попробовать использовать следующий код
let Source = OData. Feed( "https://services. odata. org/TripPinRESTierService/People", null, [ Implementation = "2. 0", Query = [ #"$filter" = "FirstName eq 'Scott'" ] ] ) в источнике.
К сожалению, это приводит к следующей ошибке.
Выражение: Ошибка: параметр пользовательского запроса OData.Feed не может начинаться с '$'.
Это способ Power Query указать, что параметры запросов системы OData всегда начинаются со знака $ и поэтому не могут быть использованы с параметрами запросов OData.Feed. Это сознательное решение команды разработчиков Power Query. Причина не объясняется. Сложный.
Однако вы можете использовать параметр запроса с пользовательскими параметрами запроса OData следующим образом.
let source = odata. feed ("https://services. odata. org/trippinrestierservice/people", null, [implementation = "2. 0", query = [# "debug-mode" = "true"])
Самое главное, можно использовать запрос ODATA. Оригинальный рассматриваемый URL:.
https://services. odata. org/trippinrestierservice/people?$ filter=firstname eq 'scott'
... Его можно переписать для использования параметра псевдонима следующим образом.
https://services. odata. org/trippinrestierservice/people?$ filter=firstname eq @fn& @fn = 'scott'
... Затем вы можете вызвать переделанную версию, используя параметры запроса следующим образом.
0, null, [implementation = "2. 0", query = [# "@f" = "scott '"]) Источник.
Псевдонимные параметры также могут быть использованы для вызова функций Odata Unbound. Например, вы можете вызвать функцию Trippin's getNearestairport следующим образом
let source = odata. feed ("https://services. odata. org/trippinrestierservice/getnearestairport(lat = @latitude, lon = @longitute)", null, [implementation = " 2. 0", query = [# "" = "100", # "@resudity" = "0"]), # "table" = record. totable (source) in # преобразование "Table to table" "
Наконец, он приводит пример запроса, который начинается с таблицы широт и длин и вызывает функцию getNearerestairport для каждой линии.
let source = #table (type table [locationlatitude = text, locationlongitude = text],), # "custom" = table. addcolumn (source, "functioncall", and odata. feed ("https: //services. odata) org/trippinrestierservice/getnearestairport (lat = @latitude, lon = @longitude) ", null, [implementation = "2. 0", query = [#" @latitude "= [locationlatiitude], #"]), #"Расширенный вызов функции" = table. expandRecordColumn (#" Custom "," functionCall ",") in #"Expanded FunctionCall "
Когда вы впервые публикуете базу данных, содержащую этот вопрос, в Power BI, вы получите сообщение о внутренней ошибке сервера от службы Trippin Odata. Однако вы можете успешно обновить набор данных и избежать этой ошибки и ошибки динамического источника данных. (Вам нужно будет проверить соединение для проверки пропуска).
Поделиться этим: нравится это: нравится это: нравится это: нравится это.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Я несколько раз писал в блоге об ошибках 'Dynamic Data Source' и функции Web.Contents (последний раз здесь ), но моя основная запись была здесь, OData.Data Source и функция OData.Feed. Самое главное, что решение проблемы выглядит одинаково для обеих функций, но это не так! На самом деле, решение может быть проще, чем вы думаете.
Давайте рассмотрим простой пример. Предположим, у вас есть таблица, содержащая три имени, и вы хотите отфильтровать раздел People (Люди) службы TripPin OData sample по этим именам.
), #"Добавлен пользовательский" = Таблица: AddColumn( Источник, "Person", each OData: Feed( "https://services. odata. org/TripPinRESTierService/People?$filter= FirstName eq '" & amp; amp; [Name] & amp; "'", null, [Implementation = "2. 0"] ) ), #"Expanded Person" = Table: ExpandTableColumn( #"Added Custom", "" Person", , ) в #"Expanded Person".
let Source = #table( type table [FirstName = text], , , >Этот код фильтрует сущность People по трем указанным именам, используя параметр системного запроса $filter. Это не самый эффективный код, но он отлично работает в Power BI Desktop. На выходе получаем следующее.
Однако когда вы публикуете его в службе Power BI, на странице конфигурации набора данных появляется следующая ошибка
Вы не можете запланировать обновление для этого набора данных, потому что следующий источник данных в настоящее время не поддерживает обновления
Если обратиться к документации, то функция OData.Feed имеет параметры запроса, как и функция Web.Contents, поэтому возможно, что то же решение, которое работает для Web.Contents, будет работать и для OData.Feed... Однако все не так просто. Чтобы объяснить почему, мне нужно написать еще один пост. (Обновление: этот пост находится здесь).
Вместо этого для достижения желаемого результата достаточно простой операции слияния между таблицей "Имена" и таблицей "Люди".
), #"Объединенные запросы" = Таблица: NestedJoin( Источник, , Люди, , "Люди", JoinKind. Inner ), #"Расширенные люди" = Таблица: ExpandTableColumn( #"Объединенные Queries", "People", , ) в #"Expanded People".
let Source = #table( type table [FirstName = text], , , >Основное отличие источника OData от других веб-служб заключается в том, что в источнике OData возможна обертка запросов. Конечно, если вы используете диагностику запросов для проверки вызовов, выполняемых к OData API, вы увидите, что выполняются следующие вызовы.
https://services. odata. org/trippinrestierservice/(2clastname
Машина запросов Power разрушила объединение и создала эффективный запрос, используя опцию $ filter и $ select system question без создания такого вопроса.
После публикации в службе Power BI набор данных успешно обновлен. Следует отметить последний важный момент. Необходимо убедиться, что параметры конфиденциальности данных, настроенные в службе Power BI Service для источника данных, позволяют свернуть запрос. Для получения дополнительной информации по этой теме вы можете посмотреть видео здесь, но если вам удобно отправлять данные из одного источника данных в другой, вы можете установить для всех своих источников данных уровень конфиденциальности "публичный". Re ok.
Поделиться этим: как это.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Новые оконные функции Dax (анонсированные здесь и подробно описанные в блоге Джеффри Ванга здесь и здесь) уже вызвали немалый ажиотаж - они очень мощные. Однако основные преимущества их использования до сих пор не упоминались. Они могут обеспечить гораздо лучший режим DirectionQuery, поскольку вы с большей вероятностью будете использовать суммы. Более того, самые быстрые наборы данных для прямого запроса - это те, которые могут использовать накопления (в идеале - импортные накопления) везде, где это возможно.
Чтобы это было легче понять, мы приведем очень простой набор данных, используя двухрежимную таблицу DirectQuery с событиями и датами, построенную на базе данных образца на сервере образца.
Давайте начнем с простой меры, которая добавляет цену в столбец SalesMount.
Salesamount = sum ('интернет-продажи' [salesamount])
Для использования в визуальной таблице со столбцом календаря в таблице дат, следующим образом: ...
... Power BI может получить необходимые данные в одном SQL-запросе. Здесь не показан весь вопрос, но он возвращает именно то, что вы ожидаете, если запустите его в SQL Server Management Studio.
Теперь предположим, что вы хотите рассчитать годовой рост. Для этого вам необходимо найти данные о продажах за предыдущий год. Один из способов сделать это в DAX - использовать функцию SameperiodSlastyEar следующим образом.
ly сумма продаж v1 = calculate([сумма продаж], sameperiodlastyear( 'date' [fulldatealternatekey]))
При использовании в таблице получается правильный результат.
Однако SQL-запрос, созданный для этого рисунка, вернет сумму продаж по дате, а не по году, поскольку HMM, talker и все функции временного анализа DAX решаются на уровне даты.
Если вы напишете показатель продаж за прошлый год, используя новую функцию смещения следующим образом:.
Сумма продаж v2 = расчет ([сумма продаж], смещение (-1, allSelected ('date' [candelaryear]), orderby ('date' [candelaryear], asc))))))
... Получите тот же результат, что и раньше:.
... Но SQL-запросы намного проще и возвращают данные до уровня года.
Я не специалист по SQL, поэтому не буду комментировать созданный SQL - в конце концов, он может измениться в будущем - но самое важное влияние этого заключается в том, что, скорее всего, в офсетной версии можно будет использовать итоги.
Например, если дополнительные таблицы добавляются путем импорта данных из панели событий в набор данных, концентрирующийся на годовом решении: ...
... И вы определяете его как таблицу митингов: ...
... Далее необходимо использовать вопрос гранулярного анализа года: ... Как вы можете себе представить, визуальный вопрос выше теряет ралли, используя меру, используемую Sameperiodlastyear, и переходит к событию DirectQuery.
Однако вопрос шкалы, в котором используется смещение, может использовать ралли и не имеет прямой активности.
Это только один пример. Почти наверняка существуют другие способы написать этот расчет без использования смещения. Это также попадает в ралли, но не так элегантно, как вариант со смещением. Более того, поскольку измерения становятся все более сложными, становится все труднее писать DAX, которые приводят к простому и эффективному SQL в DirectQuery, и новая функция работы с окнами здесь очень помогает.
Поделитесь этим на:.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Несколько недель назад мой коллега Дэни Хотер написал в блоге Azure Data Explorer пост о том, как использование столбцов событий в качестве измерений в режиме прямого запроса может привести к ошибкам в Power BI. Вы можете прочитать его здесь:.
В сообщении он сказал, что может воспроизвести такое же поведение на SQL-сервере, поэтому я подумал, что было бы неплохо привести пример, чтобы повысить осведомленность общественности, поскольку я полагаю, что он один из тех, кто использует функцию DirectQuery в источнике данных. Возможно, будет рассмотрен.
Contosoretaildw Рассмотрим прямой простой набор, созданный базой данных SAM SQL Server.
Здесь необходимо отметить два важных момента
FactOnlines Bable имеет более 12 миллионов строк
Столбец SalesOrderNumberNumber на панели FactOnlines является примером вырожденного измерения и представляет собой ключ измерения для таблицы фактов, которая не имеет связанной таблицы измерения. Обычно это тот случай, когда не имеет смысла создавать отдельную таблицу измерений, поскольку она имеет те же или почти те же частицы, что и таблица событий.
Здесь, если мы попытаемся создать простую визуальную таблицу с экспонатом, связанным с этим набором данных, у нас есть столбец SalesoorDernumbering, и измерение, суммирующее цены в столбце SalesMount (т.е., по определению
Набор результатов запроса внешнего источника данных превышает максимально допустимый размер в '1000000' строк.
Это не удивительно: каждый раз, когда PowerBI задает вопрос источнику данных, который возвращается более 1 миллиона раз, он получает эту ошибку в режиме DirectQuery. Max Intermedia row set count (максимальное количество промежуточных строк) используется для ограничения этого в премиум-классе. увеличиться, но если Power BI пытается получить очень большие объемы данных, то могут возникнуть другие проблемы с производительностью и памятью - перепроектировать воздействие, чтобы избежать этой проблемы. В этом примере вы должны спросить себя, зачем вам нужен экспонат с более чем миллионом таблиц (бизнес ответ был бы "экспорт в Excel", что является очень хорошей идеей). Это уже другая дискуссия...) .
Во многих случаях ошибок можно избежать, применяя фильтры к оптике. В моем примере фильтрация оптики для отображения только данных за 1 января 2007 года и применение фильтра к столбцу DateKey таблицы Dimdate означает, что SQL-запрос не выполняется и ошибка не возникает. Миллион рядов:.
Однако плохая новость заключается в том, что если вы используете для измерений чуть более сложный DAX, то, скорее всего, вы снова столкнетесь с той же ошибкой. Например, если вы создадите новое измерение со следующим определением: s
(0, s)
Error Demo = var s = [Sales Amount] return if(s>[Да, я знаю, что определение измерения не имеет смысла, но это просто способ разведения проблем].
[.... Ошибка отображается, даже если применен фильтр.
Почему это произошло; рассматривая с этой точки зрения различные SQL-вопросы, созданные Power BI, легко найти причину ошибки.
верх (1000001) [t1]. [storekey], [$ table]. [productkey] as [productkey], [$ table]. currencykey], [$ table]. [customerkey], [customerkey], [$ table]. [salesquantity], [$ table]. [salesamount] as [salesamount], [$ table], discountquantity], [$ table]. ([as [$ table])) [t1] as [t1]. [salesordernumber].
Почему поднимается этот вопрос? Почему нет места для применения фильтра по дате При выполнении запроса DAX Power BI делает следующее
Отправьте запрос на измерение для каждой уникальной таблицы измерения. В этом случае применяются только те фильтры, которые размещены непосредственно в таблице размеров.
Отправьте запрос на измерение для каждого измерения. В этом случае можно применить все фильтры.
Соединяет результаты 1 и 2.
В некоторых случаях, как в примере, где используются только меры SUM, можно оптимизировать запрос измерения и применить фильтры из таблицы измерения. В некоторых случаях, как в последнем примере выше, запрос на измерение не может быть выполнен и запрашивает все отдельные значения из таблицы фактов SalesOrderNumber. Вы можете обойти эту проблему, применив фильтр к столбцу Datekey в FactOnlineSales 1 января 2007 года вместо столбца Datekey в DimDate, и ошибки не возникнет. Используйте динамические параметры M для более детального управления сгенерированным запросом. Однако наилучшая практика заключается в том, чтобы не использовать большие столбцы таблицы фактов в качестве измерений. Это происходит независимо от того, является ли это законным вырожденным измерением или столбцом, который на самом деле должен быть отформатирован в другой таблице измерений.
[Спасибо Дэни Хотеру и Джеффри Вангу за предоставленную информацию для этой статьи].
Поделитесь этим:.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Поделитесь этим:.
Например:.
Например, так: загрузка.
Короткий ответ: да. Это слой метрик, хранилище метрик и ценный безголовый BI.
Я давно хотел написать об этом вопросе в блоге. На это есть две причины.
Клиенты, переходящие на Power BI, часто спрашивают меня, есть ли у Microsoft продукт или услуга, которые могут выступать в качестве семантического слоя, поэтому мне приходится объяснять, что Power BI уже является семантическим слоем.
Читая обсуждения некоторых крутых ребят в аналитике (например, Бенна Стэнсила, который мне очень нравится), у меня возникло ощущение, что Microsoft и Power BI живут в альтернативной вселенной, которую они не видят. Этот обмен мнениями в Twitter является хорошим примером.
Причина, по которой я еще не писал об этом в блоге, заключается в том, что Ауримас Рачас написал очень хорошую статью на эту тему в начале этого года.
Что еще я могу сказать? Заметка в блоге Ауримаса обладает достоинством беспристрастности. Я думаю, что было бы полезно добавить несколько мыслей с точки зрения инсайдера Microsoft. Эти взгляды являются моими собственными, а не официальными взглядами Microsoft, но я не ожидаю, что кто-то из моих коллег с ними не согласится.
Так является ли Power BI семантическим слоем?
Возвращаясь к главному вопросу. Независимо от того, хорошо ли Power BI продвигает себя как семантический уровень среди клиентов, мы уверены, что это так. На самом деле, мы всегда считали прародителей Power Bi Azure Analysis Services и SQL Server Analysis Services семантическими слоями на протяжении всей их 20-летней истории, и один из моментов, на который указывает Ауримас, заключается в том, что речь идет об осведомленности Один из моментов, на который указывает Ауримас, заключается в том, что речь идет о повышении осведомленности. Поскольку Power BI можно использовать как BI, команда Power BI Cat определенно работала со многими крупными клиентами, использующими Power BI как инструмент бизнес BI и семантического успеха. Экономическая команда Walmart является отличным примером, и в недавнем тематическом исследовании здесь (это старое видео также хорошо) прямо говорится об этом. Они используют Power BI в качестве "библиотеки семантических моделей" для миллиардов серий данных.
Предпочтение деталям.
Еще один важный момент, который отмечает Ауримас, заключается в том, что нынешнее предпочтение BI-инструментов - это тонкий слой "возложения вычислительных нагрузок на базу данных/склад (облако), где хранятся данные". Когда я только начинал работать в BI, дебаты велись между Molap и Rolap, и хотя за прошедшие годы маятник колебался в разные стороны, я не согласен с тем, что импорт против Directquery. Мое личное мнение сейчас не в моде: импорт и машины vertipaq всегда будут превосходить подходы, предполагающие создание SQL на основе внешних баз данных. требования (хотя в дополнение к добавлению SQL, мы видим, что Google Malloy очень интересен).Официальное руководство Microsoft гласит, что режим импорта и функциональность DirectQuery настолько важны, что, как показывает это видео Ferrari, функциональность импорта является по умолчанию выбор, как указано выше в примере Walmart, при использовании данных, которые слишком велики для режима импорта, можно комбинировать режим импорта и режим прямого запроса в сложных моделях для создания накопления ... Мы продолжаем инвестировать в усовершенствование прямого синтеза, включая горизонтальный синтез. Это поможет преодолеть разрыв между импортом и прямыми поставками.
dax или sql?
Подобно тому, как дебаты о MOLAP против ROLAP продолжаются уже более 20 лет, люди всегда спорили о том, является ли SQL правильным языком для выражения BI-запросов и вычислений, или же это другой язык (MDX, когда я начинал, DAX сегодня). требуется. Честно говоря, я думаю, что если бы SQL был правильным выбором, дебаты уже были бы решены, и уже существовала бы целая экосистема BI-продуктов, позволяющих разработчикам определять сложные измерения на SQL в легкодоступной форме. Понятно. Даже если мы признаем, что необходим другой язык (и специалисты Google Malloy согласны с этим), вопрос заключается в том, является ли DAX правильным решением проблемы, или другой подход будет лучше. Изучение DAX действительно сложно. но это скорее связано с концепциями, чем с самим синтаксисом. Вклад Марко Руссо здесь является отличным объяснением того, почему DAX прост, но не легок. Что касается концепций, я твердо убежден, что изучить такой мощный язык, как DAX, одинаково сложно. Кроме того, мы работаем над упрощением отладки DAX, например, с помощью функции EvaluateAndLog, и над упрощением написания вычислений с помощью готовящегося визуального средства вычислений, а также над многими другими подобными улучшениями, которые могут и должны быть реализованы в будущем.
Заключение.
Могут ли эти пункты изменить чье-либо мнение? Наверное, нет, тем более что эти вопросы больше относятся к религии, чем к чему-либо еще. Вы либо фанат Microsoft, либо тот, кто никогда не задумывался об использовании продуктов Microsoft. Это важно. Я видел всепобеждающие цифры использования Power BI, но не уверен, что это имеет значение. Я как никто другой люблю теоретические вопросы о семантических слоях, но что действительно важно, так это то, используется ли инструмент и приносит ли он пользу бизнесу Как быстро начать использовать Power BI: инструкция
Power BI - инструмент бизнес-анализа, позволяющий визуализировать данные. Маркетологи и специалисты по платному трафику в основном используют Power BI для создания интерактивных отчетов по интернет-рекламе, которыми можно поделиться с коллегами и клиентами.
Попробуйте BI-отчеты от eLama
Собирайте статистику из вашей рекламной системы и аналитики и загружайте ее в Google Data Studio и Power BI. Данные преобразуются в интерактивные графики и диаграммы и обновляются автоматически.
Однако есть и осложнения. Стандартные инструменты не могут загрузить данные из рекламных и аналитических систем в Power BI; существуют пользовательские коннекторы, которые могут помочь правильно подключить источники данных в Power BI, но они не строят модель данных.
Поэтому необходимы специальные службы, которые помогут загрузить данные в Power BI и построить модель данных. Один из таких инструментов предлагает компания eLama - BI Reports. Он автоматически собирает и соединяет данные из рекламных и аналитических систем и предоставляет интерактивные отчеты.
Этот документ покажет вам, как начать использовать Power BI сразу же с BI Reports.
Установка и настройка Power BI
Зарегистрируйтесь в Power BI и бесплатно загрузите Power BI Desktop. При регистрации вам нужно будет указать электронную почту вашей компании. Личные электронные письма не работают.
После регистрации вы можете начать работать с отчетами непосредственно в Power BI. Следуйте инструкциям, чтобы выбрать источник данных и создать отчет. Затем откройте шаблон отчета Power BI и войдите в свою учетную запись. Кнопка "Подключиться" находится в правом верхнем углу. Введите электронную почту и пароль, указанные при регистрации.
Установка и запуск Power BI занимает 3-4 минуты, и ваш отчет Power BI готов к работе.
Использование Power BI
Когда вы запускаете Power BI, появляется главное окно. Все, что вам нужно сделать, - это научиться ориентироваться в рабочем пространстве. Вот краткое описание того, что это такое и почему.
Кнопки "Запрос на изменение" и "Обновление" в верхнем меню. [Кнопка Change Query переводит вас в редактор запросов (см. ниже), где вы можете изменить источник данных (например, если вы составляете отчеты по нескольким клиентам, войдите в систему под другим именем пользователя).
[Используйте кнопку Обновить для обновления данных отчета.
Для отображения необходимых данных в отчете можно использовать фильтры на уровне страницы и в масштабе всего отчета. Например, данные, относящиеся к конкретной кампании. Доступны два фильтра: простой и расширенный. Простой фильтр работает по принципу поиска (введите слово, и все, содержащее это слово, будет искаться), а расширенный позволяет задать условия (например, "включает" и "не включает"). Чтобы добавить фильтр, нужно получить поле, содержащее необходимые параметры (например, имя_кампании или имя_источника), и перетащить его (щелкнув правой кнопкой мыши) в фильтр. Как только вы выберете фильтр, данные в отчете сразу же изменятся.
Таблица визуализации Power BI . Это набор элементов, которые можно использовать для создания графиков, гистограмм, диаграмм, таблиц, карт и других визуальных элементов.
Чтобы создать визуализацию, щелкните нужный пункт в меню Визуализация и добавьте меру из меню справа. Чтобы выбрать нужную меру, перейдите в самый правый раздел - Поля. Здесь вы найдете данные, которые можно включить в анализ статистики. Например, допустим, вы хотите создать круговую диаграмму на основе конверсий и устройств.
Сначала выберите Дисплей.
Если визуализация находится на странице отчета, вы можете, удерживая правую кнопку мыши, перемещать ее, чтобы изменить размер. Далее в разделе Measures выберите Conversions. Ниже найдите пункт Device и выберите имя (это имена устройств).
Для получения полного обзора достаточно трех щелчков мыши.
Описание различных типов визуализации см. в справке Microsoft.
Вы также можете изменить дизайн всей выставки или отдельных визуализаций. Например, вы можете изменить цвета, шрифты или фон. Это можно сделать с помощью валика. Необходимо щелкнуть на редактируемом элементе, а затем щелкнуть на ролике.
Например, вы хотите изменить цвет графика/диаграммы. Нажмите на ролик, выберите цвет данных и измените его на нужный цвет.
Можно также переименовать элемент, увеличить шрифт или изменить размер.
Благодаря визуализации вы можете создавать экспонаты, с которыми интересно работать. Сравните себя. Первый график - предыдущий, второй - текущий.
Аналогичным образом можно создавать всевозможные графики и диаграммы. Например, вы можете отображать клики, затраты, показы, CTR, CPA и CPC в разбивке по устройствам, типу сайта, кампании и географическому таргетингу.
Названия кампаний также могут быть использованы (и могут потребоваться) для облегчения анализа данных. В итоге получился шаблон для названий кампаний.
Размещение |Бренд |Челябинск |Челябинск Поиск
Ремонт |Категория |Самара
Ремонт |Общие |Moscow Smart Banner
1. решите, что вы хотите рекламировать. Например, если вы рекламируете клиента с множеством услуг или магазин с разнообразными товарами, вам следует создать отдельную рекламную кампанию для каждого товара/услуги.
2. следующий - семантика. Бренд, категория, общие вопросы и т.д.
3. гео. Здесь все понятно. Если есть разделение по географическим сегментам, включите его, в противном случае пропустите.
Типы кампаний: поисковые, сетевые, ретаргетинг, смарт-баннеры и т.д.
. В названиях кампаний может использоваться любое значение, свойство или атрибут. Важно: Учетная запись должна содержать только один тип названия кампании. Это облегчит работу с отчетом.
Это лишь пример Редактор вопросов
Запрос - это вся информация, которой располагает Power BI. Это и является основой отчета. Редактор запросов позволяет разделять названия кампаний (с помощью разделителей) и фильтровать статистику на основе атрибутов (географических, семантических и т.д.).
Чтобы перейти к редактору запросов, нажмите кнопку Редактировать запрос в верхнем меню. Затем найдите панель Кампании со списком кампаний. Затем щелкните правой кнопкой мыши на столбце имя_кампании и выберите Создать дубликат столбца.
Скопируйте столбец campaign_name так, чтобы оригинальный столбец остался, а копии столбцов можно было разделить атрибутами. Колонки будут скопированы". Щелкните правой кнопкой мыши "Копия имени_кампании" и выберите "Разделить столбец" - "По разделителю":
Power BI спросит вас, какой разделитель использовать. Определите содержание кампании. Обычно это знак подчеркивания (_) или вертикальный разделитель (|).
[Нажмите OK. Если имя кампании правильно структурировано, вы получите столбцы, содержащие атрибуты кампании. Каждый столбец можно переименовать, дважды щелкнув по его названию. Это даст вам структуру.
В редакторе запросов для удобства можно переименовать столбцы, а также значения. Например, замените английский язык на русский. Нужно щелкнуть правой кнопкой мыши на значении столбца и выбрать Replace Value (Заменить значение).
В появившемся окне введите новое значение и нажмите OK.
Чтобы сохранить все изменения, сделанные в редакторе запросов, нажмите Закрыть в левом верхнем углу.
Если позже вам понадобится изменить сохраненные значения или восстановить исходные, вы сможете это сделать. и применить Возвращение на выставку. В разделе "Поля" раздела "Кампании" вы теперь увидите новые функции. Вы можете использовать их для фильтрации данных.
Вы можете создавать срезы на основе интересующих вас атрибутов. Это полезно для фильтрации данных. Например, можно отображать статистику по семантике, направлению или географическому положению.
Таким же образом можно создавать диаграммы и другие графики. Например, вы можете просматривать конверсии для определенных областей бизнеса.
Все элементы выставки интерактивны и могут быть легко перемещены, увеличены/уменьшены или удалены. Пример.
Вы также можете изменить стиль таблиц :
Больше.
Еще одна простая в использовании функция - текстовое поле. С помощью текстового поля можно написать комментарии к отчету или, если отчет объемный, визуально определить страницы отчета. Например:.
Текстовое поле находится в верхнем меню. В этом случае можно выбрать шрифт, размер и использовать цилиндры для создания фона для текста.
В меню иллюстраций есть элемент, похожий на текстовое поле, который выделяет индикатор. Они называются "карты":.
Для использования: выберите карточку и добавьте индекс, который будет отображаться в поле "Измерение".
В заключение следует отметить, что Power BI - это полезный инструмент бизнес-аналитики, который помогает трейдерам и специалистам по платному трафику анализировать данные, визуализировать информацию и работать с четкими рекомендациями.Reports BI использует свои встроенные связи и готовую модель данных, чтобы Инструмент Elama поможет вам начать работу прямо из Google Data Studio, а также Power BI.
Элама, менеджер по маркетингу.
Комментарии