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


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

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

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

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

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

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

Схема, на которой показана архитектура, используемая при работе с этой статьей.

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

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

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

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

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

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

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

Схема базы данных, на которой показаны четыре объекта базы данных, подключенные к ее центральному объекту.

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

  • кто приобретает билеты и в каком месте проведения;
  • Скрытые шаблоны и тенденции в следующих областях:
    • продажи билетов;
    • соответствующая популярность каждого места проведения.

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

Настройка

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

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

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

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

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

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

Обзор архитектуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Снимок экрана: база данных ExtractTickets с выбранным объектом базы данных TicketsRawData в обозревателе объектов.

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

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

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

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

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

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

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

Снимок экрана: результат успешного выполнения процедуры sp_ShredRawExtractedData.

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

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

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

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

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

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

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

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

    Снимок экрана: диалоговое окно базы данных SQL Server, в котором можно ввести имя сервера и базы данных.

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

    Снимок экрана: диалоговое окно базы данных SQL Server, в котором можно ввести имя пользователя и пароль.

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

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

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

Снимок экрана: визуализация и элементы управления для визуализации данных в правой части окна Power BI.

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

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

Снимок экрана: визуализация Power BI с именем Ticket Sale Distribution (Распределение продаж билетов) и данными о продажах за каждый день.

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

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

Продажи в день распродажи

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

Вы можете еще раз подробно ознакомиться с данными, чтобы проверить, действительно ли наблюдается такая активность для всех мероприятий, проводимых в этих местах. На графиках выше можно заметить, что 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 = DIVIDE(DIVIDE(COUNTROWS(fact_Tickets),DISTINCT(dim_Venues[VenueCapacity]))*100, COUNTROWS(dim_Events))

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

analyticsViews

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

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

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

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

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

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

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

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

Дополнительные руководства по работе с приложением SaaS Wingtip.