Поделиться через


Межклиентская аналитика на основе извлеченных с однотенантного приложения данных

Применимо к:База данных SQL Azure

В этом руководстве описывается полный сценарий аналитики в однотенантной реализации. В этом сценарии рассматривается, как аналитика позволяет принимать интеллектуальные решения в организациях. Используя данные, извлеченные из каждой базы данных клиента, можно применять аналитику, чтобы получить детальные сведения о поведении клиента, включая использование примера SaaS-приложения Wingtip Tickets. Этот сценарий состоит из трех этапов.

  1. Извлечение данных из каждой базы данных клиента и их загрузка в хранилище данных аналитики.
  2. Оптимизация извлеченных данных для аналитической обработки.
  3. Использование инструментов бизнес-аналитики для получения подробных сведений, на основе которых принимаются важные решения.

Из этого руководства вы узнаете, как выполнить следующие задачи:

  • создать клиентское хранилище аналитики для извлечения данных;
  • использовать задания обработки эластичных БД для извлечения данных из каждой базы данных клиента в хранилище аналитики;
  • оптимизировать извлеченные данные (реорганизовать в схему типа "звезда");
  • запросить базу данных аналитики;
  • использовать Power BI для визуализации данных, чтобы выделить тренды в данных клиента и составить рекомендации по оптимизации.

Diagram shows an overview of the architecture used for this article.

Шаблон аналитики автономного клиента

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

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

В этом руководстве представлен полный сценарий аналитики для приложения SaaS Wingtip Tickets. Сначала используется эластичное задание для извлечения данных из каждой базы данных клиента и их загрузки в промежуточные таблицы в хранилище данных аналитики. Таким хранилищем может быть база данных SQL или выделенный пул SQL. Для извлечения большого объема данных рекомендуется использовать фабрику данных Azure.

Далее объединенные данные преобразовываются в набор таблиц со схемой типа "звезда". Эти таблицы состоят из центральной таблицы фактов, а также соответствующих таблиц измерения. Для приложения Wingtip Tickets:

  • Центральная таблица фактов в схеме типа "звезда" содержит данные о билетах.
  • Таблицы измерения содержат данные о местах проведения, событиях, клиентах и датах покупки.

Совместно эти таблицы обеспечивают эффективную аналитическую обработку. Схема типа "звезда", используемая в этом руководстве, показана на рисунке ниже.

architectureOverView

Наконец, с помощью Power BI выполняется запрос к хранилищу данных аналитики для выделения важных сведений о поведении клиентов и использовании ими приложения Wingtip Tickets. Выполняются запросы, которые:

  • отображают относительную популярность каждого места проведения;
  • выделяют закономерности в продажах билетов на различные события;
  • отображают относительную успешность разных мест проведения в продаже организовываемых в них событий.

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

Настройка

Необходимые компоненты

Для работы с этим руководством выполните следующие предварительные требования:

Создание данных для демонстрации

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

  1. В среде сценариев PowerShell откройте файл ...\Обучение Modules\Operations Analytics\Tenant Analytics\Demo-TenantAnalytics.ps1 и задайте следующее значение:
    • $DemoScenario = 1, чтобы приобрести билеты на мероприятия во всех местах проведения.
  2. Нажмите клавишу F5 для запуска сценария и создания журнала покупок билетов для каждого мероприятия в соответствующем месте проведения. Для создания десятков тысяч билетов выполнение сценария занимает несколько минут.

Развертывание хранилища аналитики

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

На следующих шагах вы развернете хранилище аналитики tenantanalytics. Вы также развернете предопределенные таблицы, которые будут заполнены позже в рамках этого руководства.

  1. В интегрированной среде сценариев PowerShell откройте …\Learning Modules\Operational Analytics\Tenant Analytics\Demo-TenantAnalytics.ps1.
  2. Задайте переменную $DemoScenario в скрипте, чтобы она соответствовала выбранному хранилищу аналитики:
    • Чтобы использовать Базу данных SQL без columnstore, укажите $DemoScenario = 2.
    • Чтобы использовать Базу данных SQL с columnstore, укажите $DemoScenario = 3.
  3. Нажмите клавишу F5 для запуска демонстрационного скрипта (который вызывает другой скрипт Deploy-TenantAnalytics<XX>.ps1), создающего хранилище аналитики для арендатора.

Теперь, когда вы развернули приложение и заполнили его соответствующими данными клиента, используйте SQL Server Management Studio (SSMS) для подключения серверов tenants1-dpt-<User> и catalog-dpt-<User>, используя имя для входа developer и пароль P@ssword1. Дополнительные рекомендации см. в этом ознакомительном руководстве.

Screenshot that shows the information needed to connect to SQL Server.

В обозревателе объектов сделайте следующее:

  1. Разверните сервер tenants1-dpt-<Пользователь>.
  2. Разверните узел баз данных и просмотрите список клиентских баз данных.
  3. Разверните сервер catalog-dpt-<Пользователь>.
  4. Проверьте наличие хранилища аналитики и базы данных учетной записи задания.

Проверьте следующее в отношении баз данных в обозревателе объектов SSMS, развернув узел хранилища аналитики:

  • В таблицах TicketsRawData и EventsRawData содержатся необработанные извлеченные данные из клиентских баз данных.
  • Присутствуют таблицы схемы типа "звезда" fact_Tickets, dim_Customers, dim_Venues, dim_Events и dim_Dates.
  • Хранимая процедура используется для заполнения таблиц схемы типа "звезда" из таблиц с необработанными данными.

Screenshot of the database items shown in the SSMS Object Explorer.

Извлечение данных

Создание целевых групп

Чтобы продолжить, у вас должна быть развернута учетная запись задания и ее база данных. На следующих шагах эластичные задания будут использоваться для извлечения данных из каждой клиентской базы данных и сохранения этих данных в хранилище аналитики. Затем с помощью второго задания данные разбиваются и сохраняются в таблицах в схеме типа "звезда". Эти два задания выполняются в отдельных целевых группах — TenantGroup и AnalyticsGroup. Задание извлечения выполняется в группе "TenantGroup", в которой содержатся все базы данных клиентов. Задание разбиения выполняется в группе "AnalyticsGroup", в которой содержится только хранилище аналитики. Создайте целевые группы, выполнив следующие действия:

  1. В среде SSMS подключитесь к базе данных jobaccount на сервере catalog-dpt-<Пользователь>.
  2. Здесь же откройте …\Learning Modules\Operational Analytics\Tenant Analytics\ TargetGroups.sql
  3. Измените переменную @User в верхней части сценария, заменив <User> значением пользователя, используемым при развертывании приложения Wingtip SaaS.
  4. Нажмите клавишу F5, чтобы запустить сценарий, который создает две целевые группы.

Извлечение необработанных данных из всех клиентов

Расширенные изменения данных чаще актуальны для данных о клиенте и билете, а не о мероприятии и месте проведения. Таким образом, стоит больше сосредоточиться на извлечении данных о клиенте и билете. В этом разделе вы определите и запланируйте два отдельных задания:

  • извлечение данных о билете и клиенте;
  • извлечение данных о мероприятии и месте проведения.

Каждое задание извлекает нужные ему данные и помещает их в хранилище аналитики. С помощью отдельного задания выполняется разбиение извлеченных данных для схемы типа "звезда" аналитики.

  1. В среде SSMS подключитесь к базе данных jobaccount на сервере catalog-dpt-<Пользователь>.
  2. Здесь же откройте ...\Learning Modules\Operational Analytics\Tenant Analytics\ExtractTickets.sql.
  3. Измените переменную @User в верхней части сценария и замените <User> именем пользователя, используемым при развертывании приложения Wingtip SaaS.
  4. Нажмите клавишу F5, чтобы запустить сценарий, который создает и выполняет задание извлечения данных о билетах и клиентах из каждой базы данных клиента. Это задание сохраняет данные в хранилище аналитики.
  5. Выполните запрос таблицы TicketsRawData в базе данных tenantanalytics, чтобы убедиться, что таблица заполнена сведениями о билетах из всех клиентов.

Screenshot shows the ExtractTickets database with the TicketsRawData d b o selected in Object Explorer.

Повторите предыдущие шаги, но на этот раз замените \ExtractTickets.sql на \ExtractVenuesEvents.sql на шаге 2.

При успешном выполнении задания таблица EventsRawData в хранилище аналитики будет заполнена новыми сведениями о мероприятиях и местах проведения из всех клиентов.

Реорганизация данных

Разбиение извлеченных данных для заполнения таблиц в схеме типа "звезда"

На следующем шаге нужно разбить извлеченные необработанные данные на ряд таблиц, оптимизированных для запросов аналитики. Используется схема типа "звезда". В центральной таблице фактов размещаются отдельные записи о продаже билетов. Другие таблицы заполняются соответствующими данными о местах проведения, мероприятиях и клиентах. Также используются таблицы измерения в режиме реального времени.

В рамках этого раздела руководства вы определите и выполните задание, объединяющее извлеченные необработанные данные с данными в таблицах схемы типа "звезда". После завершения задания объединения необработанные данные удаляются, а таблицы становятся доступными для заполнения следующим заданием извлечения данных клиента.

  1. В среде SSMS подключитесь к базе данных jobaccount на сервере catalog-dpt-<Пользователь>.
  2. Здесь же откройте …\Learning Modules\Operational Analytics\Tenant Analytics\ShredRawExtractedData.sql.
  3. Нажмите клавишу F5, чтобы запустить сценарий для определения задания, которое вызывает в хранилище аналитики хранимую процедуру sp_ShredRawExtractedData.
  4. Подождите, пока задание завершится.
    • В таблице jobs.jobs_execution проверьте состояние задания в колонке Lifecycle. Чтобы продолжить, дождитесь успешного завершения задания. При успешном выполнении будут отображены данные, как на схеме ниже:

shredding

изучение данных

Визуализация данных клиента

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

Выполните шаги ниже, чтобы подключиться к Power BI, а также импортировать созданные ранее представления:

  1. Запустите Power BI Desktop.

  2. На вкладке "Главная" выберите в меню Получение данных, а затем выберите Дополнительно.

  3. В окне получения данных выберите базу данных SQL Azure.

  4. В окне входа в базу данных введите имя сервера (catalog-dpt-<Пользователь>.database.windows.net). Выберите Импорт для режима подключения к данным, а затем нажмите кнопку "ОК".

    signinpowerbi

  5. В области слева выберите элемент База данных, а затем введите имя пользователя developer и пароль P@ssword1. Щелкните Подключить.

    Screenshot shows the SQL Server database dialog where you can enter a User name and Password.

  6. В области Навигатор в разделе базы данных аналитики выберите таблицы схемы типа "звезда": fact_Tickets, dim_Events, dim_Venues, dim_Customers и dim_Dates. Затем выберите Загрузка.

Поздравляем! Вы успешно загрузили данные в Power BI. Теперь можно приступить к анализу визуализаций для получения подробных сведений о клиентах. Далее вы узнаете, как с помощью аналитики предоставить рекомендации на основе данных команде Wingtip Tickets. С помощью рекомендаций можно оптимизировать бизнес-модель и обслуживание клиентов.

Для начала мы проанализируем данные о продажах билетов, чтобы отследить различия в использовании для разных мест проведения мероприятий. Выберите следующие параметры в Power BI для построения линейчатой диаграммы общего числа билетов, проданных по каждому месту проведения. Из-за случайных изменений в работе генератора билетов результаты могут отличаться.

Screenshot shows a Power B I visualization and controls for the data visualization on the right side.

Рисунок выше подтверждает, что количество билетов, проданных по различным местам проведения, отличается. Места проведения, в которых продается больше билетов, используют службу более интенсивно. Здесь можно применить настройку выделения ресурсов в соответствии с различными потребностями клиента.

Можно глубже проанализировать данные, чтобы определить изменения в продаже билетов с течением времени. Выберите следующие параметры в Power BI для построения диаграммы общего числа билетов, продаваемых каждый день в течение 60 дней.

Screenshot shows Power B I visualization titled Ticket Sale Distribution versus Sale Day.

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

Далее можно рассмотреть значимость дней, когда наблюдаются пики продаж. Когда возникают пики после поступления в продажу билетов? Чтобы построить график для билетов, продаваемых за день, выберите в Power BI показанные ниже параметры.

SaleDayDistribution

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

Вы можете еще раз подробно ознакомиться с данными, чтобы проверить, действительно ли наблюдается такая активность для всех мероприятий, проводимых в этих местах. На графиках выше можно заметить, что Contoso Concert Hall продает большое количество билетов, а также пик продажи билетов Contoso в определенные дни. Поэкспериментируйте с параметрами Power BI, чтобы построить график кумулятивной продажи билетов для Contoso Concert Hall, сфокусировавшись на тенденциях продаж для каждого из мероприятий. Для всех ли мероприятий используется один шаблон продаж?

ContosoSales

На графике выше для Contoso Concert Hall видно, что пики наблюдаются не для всех мероприятий. Поэкспериментируйте с параметрами фильтра для отслеживания тенденций продаж для других мест проведения.

Подробное изучение шаблонов продаж билетов может способствовать оптимизации бизнес-модели Wingtip Tickets. Вместо взимания оплаты со всех клиентов в равной степени Wingtip, возможно, должен представить уровни служб с разными объемами вычислительных ресурсов. Более крупным местам проведения, где необходимо продавать больше билетов в день, можно предложить более высокий уровень обслуживания с расширенным соглашением об уровне обслуживания (SLA). Такие места проведения могли бы разместить свои базы данных в пуле с меньшими ограничениями в отношении ресурсов на базу данных. Для каждого уровня служб можно задать выделение ресурсов на продажи в час, а также включить дополнительную плату за превышение выделения. Крупным местам проведения с периодическими пиками продаж было бы выгодно использовать высокие уровни обслуживания, а Wingtip Tickets получила бы большую прибыль за обеспечение обслуживания.

В то же время некоторые клиенты Wingtip Tickets отмечают, что им приходится прикладывать значительные усилия, чтобы продать достаточное количество билетов и оправдать расходы на обслуживание. С этой точки зрения, вероятно, можно повысить продажи билетов для неэффективных мест проведения. Большие объемы продаж увеличили бы ценность предлагаемого обслуживания. Щелкните правой кнопкой мыши fact_Tickets и выберите "Создать меру". Введите следующее выражение для новой меры AverageTicketsSold:

AverageTicketsSold = AVERAGEX( SUMMARIZE( TableName, TableName[Venue Name] ), CALCULATE( SUM(TableName[Tickets Sold] ) ) )

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

Screenshot shows Power B I visualization titled Average Tickets Sold By Each Venue.

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

Ранее вы использовали расширенный анализ, чтобы выявить связь между продажами билетов и прогнозируемыми шаблонами. Благодаря такому обнаружению Wingtip Tickets может повысить уровень продаж билетов в неэффективных местах проведения, рекомендуя динамическое ценообразование. В таком случае можно использовать методы машинного обучения для прогнозирования продаж билетов для каждого мероприятия. Также можно спрогнозировать влияние на доход при предложении скидок на стоимость билетов. Power BI Embedded можно было бы интегрировать в приложение управления мероприятиями. Это позволило бы визуализировать прогнозируемые продажи, а также влияние различных скидок. С помощью приложения можно разработать оптимальную скидку непосредственно с экрана аналитики.

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

Следующие шаги

Из этого руководства вы узнали, как:

  • развернуть клиентскую базу данных аналитики с предварительно определенными таблицами схемы типа "звезда";
  • использовать задания обработки эластичных БД для извлечения данных из всех клиентских баз данных;
  • объединить извлеченные данные в таблицы в схеме типа "звезда", разработанной для аналитики;
  • запросить базу данных аналитики;
  • использовать Power BI для визуализации данных для отслеживания тенденций в данных клиентов.

Поздравляем!

Дополнительные ресурсы