Partilhar via


Análise entre locatários usando dados extraídos - aplicativo multilocatário

Aplica-se a:Banco de Dados SQL do Azure

Neste tutorial, você percorre um cenário de análise completo para uma implementação multilocatário. O cenário demonstra como a análise pode permitir que as empresas tomem decisões inteligentes. Usando dados extraídos do banco de dados fragmentado, você usa análises para obter informações sobre o comportamento do locatário, incluindo o uso do aplicativo SaaS de tíquetes Wingtip de exemplo. Este cenário envolve três etapas:

  1. Extraia dados de cada banco de dados de locatário para um repositório de análise.
  2. Otimize os dados extraídos para processamento analítico.
  3. Use ferramentas de Business Intelligence para extrair insights úteis, que podem orientar a tomada de decisões.

Neste tutorial, ficará a saber como:

  • Crie o repositório de análise de locatário para extrair os dados.
  • Use trabalhos elásticos para extrair dados de cada banco de dados de locatário para o repositório de análise.
  • Otimize os dados extraídos (reorganize em um esquema em estrela).
  • Consulte o banco de dados de análise.
  • Use o Power BI para visualização de dados para destacar tendências nos dados do locatário e fazer recomendações para melhorias.

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

Padrão de análise de locatário offline

Os aplicativos SaaS que você desenvolve têm acesso a uma grande quantidade de dados de locatários armazenados na nuvem. Os dados fornecem uma fonte rica de informações sobre a operação e o uso do seu aplicativo e sobre o comportamento dos locatários. Esses insights podem orientar o desenvolvimento de recursos, melhorias de usabilidade e outros investimentos no aplicativo e na plataforma.

Acessar os dados para todos os locatários é simples quando todos os dados estão em apenas um banco de dados multilocatário. Mas o acesso é mais complexo quando distribuído em escala por milhares de bancos de dados. Uma maneira de domar a complexidade é extrair os dados para um banco de dados analítico ou um data warehouse. Em seguida, você consulta o data warehouse para coletar informações dos dados de tíquetes de todos os locatários.

Este tutorial apresenta um cenário de análise completo para este aplicativo SaaS de exemplo. Primeiro, os trabalhos elásticos são usados para agendar a extração de dados de cada banco de dados de locatário. Os dados são enviados para um repositório de análise. O repositório de análise pode usar o Banco de Dados SQL do Azure ou o Azure Synapse Analytics. Para extração de dados em grande escala, o Azure Data Factory é recomendado.

Em seguida, os dados agregados são triturados em um conjunto de tabelas de esquema em estrela. Os quadros consistem num quadro central de factos e quadros de dimensões conexos:

  • A tabela de fatos central no esquema de estrelas contém dados de ingressos.
  • As tabelas de dimensões contêm dados sobre locais, eventos, clientes e datas de compra.

Em conjunto, as tabelas central e de dimensão permitem um processamento analítico eficiente. O esquema de estrelas usado neste tutorial é exibido na imagem a seguir:

Database diagram shows four database objects connected to a central database object.

Finalmente, as tabelas de esquema de estrelas são consultadas. Os resultados da consulta são exibidos visualmente para destacar informações sobre o comportamento do locatário e seu uso do aplicativo. Com este esquema em estrela, você pode executar consultas que ajudam a descobrir itens como os seguintes:

  • Quem está comprando ingressos e de qual local.
  • Padrões e tendências ocultos nas seguintes áreas:
    • A venda de bilhetes.
    • A popularidade relativa de cada local.

Compreender a consistência com que cada locatário está usando o serviço oferece uma oportunidade de criar planos de serviço para atender às suas necessidades. Este tutorial fornece exemplos básicos de informações que podem ser obtidas a partir dos dados do locatário.

Configurar

Pré-requisitos

Para concluir este tutorial, devem ser cumpridos os seguintes pré-requisitos:

Criar dados para a demonstração

Neste tutorial, a análise é realizada em dados de vendas de ingressos. Na etapa atual, você gera dados de tíquete para todos os locatários. Posteriormente estes dados são extraídos para análise. Certifique-se de ter provisionado o lote de locatários conforme descrito anteriormente, para que você tenha uma quantidade significativa de dados. Uma quantidade suficientemente grande de dados pode expor uma série de diferentes padrões de compra de bilhetes.

  1. No ISE do PowerShell, abra ...\Learning Modules\Operational Analytics\Tenant Analytics\Demo-TenantAnalytics.ps1 e defina o seguinte valor:
    • = $DemoScenario 1 Compre bilhetes para eventos em todos os locais
  2. Pressione F5 para executar o script e criar o histórico de compra de ingressos para cada evento em cada local. O script é executado por vários minutos para gerar dezenas de milhares de ingressos.

Implantar o repositório de análises

Muitas vezes, há vários bancos de dados fragmentados transacionais que, juntos, armazenam todos os dados do locatário. Você deve agregar os dados do locatário do banco de dados fragmentado em um repositório de análise. A agregação permite uma consulta eficiente dos dados. Neste tutorial, um banco de dados do Banco de Dados SQL do Azure é usado para armazenar os dados agregados.

Nas etapas a seguir, você implanta o repositório de análise, que é chamado tenantanalytics. Você também implanta tabelas predefinidas que são preenchidas posteriormente no tutorial:

  1. No ISE do PowerShell, abra ...\Learning Modules\Operational Analytics\Tenant Analytics\Demo-TenantAnalytics.ps1
  2. Defina a variável $DemoScenario no script para corresponder à sua escolha de armazenamento de análise. Para fins de aprendizagem, recomenda-se usar o banco de dados sem columnstore.
    • Para usar o Banco de dados SQL sem columnstore, defina $DemoScenario = 2
    • Para usar o Banco de dados SQL com columnstore, defina $DemoScenario = 3
  3. Pressione F5 para executar o script de demonstração (que chama o script Deploy-TenantAnalytics<XX.ps1>) que cria o repositório de análise do locatário.

Agora que você implantou o aplicativo e o preencheu com dados de locatário interessantes, use o SQL Server Management Studio (SSMS) para conectar os servidores tenants1-mt-User e catalog-mt-User<><> usando Login = developer, Password = P@ssword1.

architectureOverView

No Pesquisador de Objetos, execute as seguintes etapas:

  1. Expanda o servidor tenants1-mt-User><.
  2. Expanda o nó Bancos de dados e veja o banco de dados tenants1 contendo vários locatários.
  3. Expanda o servidor catalog-mt-User><.
  4. Verifique se você vê o repositório de análise e o banco de dados da conta de trabalho.

Consulte os seguintes itens de banco de dados no Pesquisador de Objetos do SSMS expandindo o nó do repositório de análises:

  • Tabelas TicketsRawData e EventsRawData armazenam dados extraídos brutos dos bancos de dados do locatário.
  • As tabelas de esquema de estrelas são fact_Tickets, dim_Customers, dim_Venues, dim_Events e dim_Dates.
  • O procedimento armazenado sp_ShredRawExtractedData é usado para preencher as tabelas de esquema em estrela das tabelas de dados brutos.

Screenshot shows the S S M S Object Explorer for the analytics store node, including Tables, Views, and nodes.

Extração de dados

Criar grupos-alvo

Antes de continuar, certifique-se de ter implantado a conta de trabalho e o banco de dados de conta de trabalho. No próximo conjunto de etapas, o Elastic Jobs é usado para extrair dados do banco de dados de locatários fragmentados e para armazenar os dados no repositório de análise. Em seguida, o segundo trabalho destrói os dados e os armazena em tabelas no esquema em estrela. Esses dois trabalhos são executados em dois grupos-alvo diferentes, ou seja, TenantGroup e AnalyticsGroup. O trabalho de extração é executado no TenantGroup, que contém todos os bancos de dados do locatário. O trabalho de destruição é executado no AnalyticsGroup, que contém apenas o repositório de análises. Crie os grupos-alvo usando as seguintes etapas:

  1. No SSMS, conecte-se ao banco de dados jobaccount em catalog-mt-User<>.
  2. No SSMS, abra ...\Learning Modules\Operational Analytics\Tenant Analytics\ TargetGroups.sql
  3. Modifique a @User variável na parte superior do script, substituindo <User> pelo valor de usuário usado quando você implantou o aplicativo Wingtip Tickets SaaS Multi-tenant Database.
  4. Pressione F5 para executar o script que cria os dois grupos de destino.

Extrair dados brutos de todos os locatários

As transações podem ocorrer com mais frequência para dados de tíquetes e clientes do que para dados de eventos e locais. Portanto, considere extrair dados de tíquetes e clientes separadamente e com mais frequência do que extrair dados de eventos e locais. Nesta seção, você define e agenda dois trabalhos separados:

  • Extraia dados de tíquetes e clientes.
  • Extraia dados de eventos e locais.

Cada trabalho extrai seus dados e os publica no repositório de análises. Lá, um trabalho separado destrói os dados extraídos no esquema de estrela de análise.

  1. No SSMS, conecte-se ao banco de dados jobaccount no servidor catalog-mt-User<>.
  2. No SSMS, abra ...\Learning Modules\Operational Analytics\Tenant Analytics\ExtractTickets.sql.
  3. Modifique @User na parte superior do script e substitua <User> pelo nome de usuário usado quando você implantou o aplicativo Wingtip Tickets SaaS Multi-tenant Database.
  4. Pressione F5 para executar o script que cria e executa o trabalho que extrai tíquetes e dados de clientes de cada banco de dados de locatário. O trabalho salva os dados no repositório de análise.
  5. Consulte a tabela TicketsRawData no banco de dados tenantanalytics para garantir que a tabela seja preenchida com informações de tíquetes de todos os locatários.

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

Repita as etapas anteriores, exceto desta vez substitua \ExtractTickets.sql por \ExtractVenuesEvents.sql na etapa 2.

A execução bem-sucedida do trabalho preenche a tabela EventsRawData no repositório de análise com novas informações de eventos e locais de todos os locatários.

Reorganização de dados

Destruir dados extraídos para preencher tabelas de esquema de estrelas

A próxima etapa é destruir os dados brutos extraídos em um conjunto de tabelas otimizadas para consultas de análise. Um esquema em estrela é usado. Uma tabela central de fatos contém registros individuais de vendas de ingressos. As tabelas de dimensão são preenchidas com dados sobre locais, eventos, clientes e datas de compra.

Nesta seção do tutorial, você define e executa um trabalho que mescla os dados brutos extraídos com os dados nas tabelas de esquema em estrela. Após a conclusão do trabalho de mesclagem, os dados brutos são excluídos, deixando as tabelas prontas para serem preenchidas pelo próximo trabalho de extração de dados do locatário.

  1. No SSMS, conecte-se ao banco de dados jobaccount em catalog-mt-User<>.
  2. No SSMS, abra ...\Learning Modules\Operational Analytics\Tenant Analytics\ShredRawExtractedData.sql.
  3. Pressione F5 para executar o script e definir um trabalho que chame o procedimento armazenado sp_ShredRawExtractedData no repositório de análise.
  4. Dê tempo suficiente para que o trabalho seja executado com êxito.
    • Verifique a coluna Ciclo de vida de jobs.jobs_execution tabela para obter o status do trabalho. Certifique-se de que o trabalho foi bem-sucedido antes de prosseguir. Uma execução bem-sucedida exibe dados semelhantes ao gráfico a seguir:

Screenshot shows the successful result of running the sp_ShredRawExtractedData procedure.

Exploração de dados

Visualizar dados do locatário

Os dados na tabela de esquema de estrelas fornecem todos os dados de vendas de ingressos necessários para sua análise. Para facilitar a visualização de tendências em grandes conjuntos de dados, você precisa visualizá-las graficamente. Nesta seção, você aprenderá a usar o Power BI para manipular e visualizar os dados do locatário extraídos e organizados.

Use as seguintes etapas para se conectar ao Power BI e importar os modos de exibição criados anteriormente:

  1. Inicie o Power BI desktop.

  2. Na faixa de opções Página Inicial, selecione Obter Dados e selecione Mais... no menu.

  3. Na janela Obter Dados, selecione Banco de Dados SQL do Azure.

  4. Na janela de login do banco de dados, digite o nome do servidor (catalog-mt-User.database.windows.net<>). Selecione Importar para o Modo de Conectividade de Dados e clique em OK.

    Screenshot shows SQL Server database dialog box where you can enter the Server and Database.

  5. Selecione Banco de dados no painel esquerdo, digite nome de usuário = desenvolvedor e digite senha = P@ssword1. Clique em Ligar.

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

  6. No painel Navegador, no banco de dados de análise, selecione as tabelas de esquema em estrela: fact_Tickets, dim_Events, dim_Venues, dim_Customers e dim_Dates. Em seguida, selecione Carregar.

Parabéns! Você carregou com êxito os dados no Power BI. Agora você pode começar a explorar visualizações interessantes para ajudar a obter informações sobre seus inquilinos. Em seguida, você explica como a análise pode permitir que você forneça recomendações orientadas por dados para a equipe de negócios da Wingtip Tickets. As recomendações podem ajudar a otimizar o modelo de negócios e a experiência do cliente.

Você começa analisando os dados de vendas de ingressos para ver a variação no uso entre os locais. Selecione as seguintes opções no Power BI para plotar um gráfico de barras do número total de ingressos vendidos por cada local. Devido à variação aleatória no gerador de bilhetes, seus resultados podem ser diferentes.

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

O lote anterior confirma que o número de ingressos vendidos por cada local varia. Os locais que vendem mais bilhetes estão a utilizar o seu serviço mais fortemente do que os locais que vendem menos bilhetes. Pode haver aqui uma oportunidade para adaptar a alocação de recursos de acordo com as diferentes necessidades do inquilino.

Você pode analisar ainda mais os dados para ver como as vendas de ingressos variam ao longo do tempo. Selecione as seguintes opções no Power BI para plotar o número total de bilhetes vendidos por dia por um período de 60 dias.

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

O gráfico anterior mostra que as vendas de ingressos disparam para alguns locais. Esses picos reforçam a ideia de que alguns locais podem estar consumindo recursos do sistema de forma desproporcional. Até agora não há um padrão óbvio de quando os picos ocorrem.

Em seguida, você quer investigar melhor a importância desses dias de pico de vendas. Quando é que estes picos ocorrem depois de os bilhetes serem colocados à venda? Para plotar ingressos vendidos por dia, selecione as seguintes opções no Power BI.

SaleDayDistribution

O enredo anterior mostra que alguns locais vendem muitos ingressos no primeiro dia de venda. Assim que os ingressos começam a ser vendidos nesses locais, parece haver uma corrida louca. Essa explosão de atividade por alguns locais pode afetar o serviço para outros inquilinos.

Você pode detalhar os dados novamente para ver se essa corrida louca é verdadeira para todos os eventos organizados por esses locais. Em parcelas anteriores, você observou que a Contoso Concert Hall vende muitos ingressos e que a Contoso também tem um pico nas vendas de ingressos em determinados dias. Brinque com as opções do Power BI para plotar as vendas cumulativas de ingressos para o Contoso Concert Hall, concentrando-se nas tendências de venda para cada um de seus eventos. Todos os eventos seguem o mesmo padrão de venda?

ContosoSales

O gráfico anterior para o Contoso Concert Hall mostra que a corrida louca não acontece para todos os eventos. Brinque com as opções de filtro para ver as tendências de venda para outros locais.

Os insights sobre os padrões de venda de ingressos podem levar a Wingtip Tickets a otimizar seu modelo de negócios. Em vez de cobrar todos os locatários igualmente, talvez a Wingtip deva introduzir níveis de serviço com tamanhos de computação diferentes. Locais maiores que precisam vender mais ingressos por dia poderiam receber um nível mais alto com um acordo de nível de serviço (SLA) mais alto. Esses locais poderiam ter seus bancos de dados colocados em pool com limites de recursos por banco de dados mais altos. Cada nível de serviço pode ter uma alocação de vendas por hora, com taxas adicionais cobradas por exceder a alocação. Locais maiores que têm explosões periódicas de vendas se beneficiariam dos níveis mais altos, e a Wingtip Tickets pode monetizar seu serviço de forma mais eficiente.

Enquanto isso, alguns clientes da Wingtip Tickets reclamam que têm dificuldade em vender ingressos suficientes para justificar o custo do serviço. Talvez nesses insights haja uma oportunidade de aumentar a venda de ingressos para locais com poucas apresentações. Vendas mais altas aumentariam o valor percebido do serviço. Clique com o botão direito do mouse em fact_Tickets e selecione Nova medida. Insira a seguinte expressão para a nova medida chamada AverageTicketsSold:

AverageTicketsSold = DIVIDE(DIVIDE(COUNTROWS(fact_Tickets),DISTINCT(dim_Venues[VenueCapacity]))*100, COUNTROWS(dim_Events))

Selecione as seguintes opções de visualização para plotar a porcentagem de ingressos vendidos por cada local para determinar seu sucesso relativo.

analyticsViews

O gráfico anterior mostra que, embora a maioria dos locais venda mais de 80% de seus ingressos, alguns estão lutando para preencher mais da metade dos assentos. Brinque com os Valores Bem para selecionar a porcentagem máxima ou mínima de ingressos vendidos para cada local.

Anteriormente, você aprofundou sua análise para descobrir que as vendas de ingressos tendem a seguir padrões previsíveis. Essa descoberta pode permitir que a Wingtip Tickets ajude locais com baixo desempenho a aumentar as vendas de ingressos, recomendando preços dinâmicos. Essa descoberta pode revelar uma oportunidade de empregar técnicas de aprendizado de máquina para prever a venda de ingressos para cada evento. Também podem ser feitas previsões para o impacto na receita da oferta de descontos na venda de ingressos. O Power BI Embedded pode ser integrado a um aplicativo de gerenciamento de eventos. A integração pode ajudar a visualizar as vendas previstas e o efeito de diferentes descontos. O aplicativo pode ajudar a criar um desconto ideal para ser aplicado diretamente do display de análise.

Você observou tendências nos dados do locatário do aplicativo Wingtip Tickets SaaS Multi-tenant Database. Você pode contemplar outras maneiras pelas quais o aplicativo pode informar decisões de negócios para fornecedores de aplicativos SaaS. Os fornecedores podem atender melhor às necessidades de seus inquilinos. Espero que este tutorial tenha equipado você com as ferramentas necessárias para executar análises de dados de locatários para capacitar suas empresas a tomar decisões baseadas em dados.

Próximos passos

Neste tutorial, ficou a saber como:

  • Implantou um banco de dados de análise de locatário com tabelas de esquema em estrela predefinidas
  • Trabalhos elásticos usados para extrair dados de todo o banco de dados do locatário
  • Mesclar os dados extraídos em tabelas em um esquema em estrela projetado para análise
  • Consultar um banco de dados de análise
  • Usar o Power BI para visualização de dados para observar tendências nos dados do locatário

Parabéns!

Recursos adicionais

Tutoriais adicionais que se baseiam no aplicativo SaaS Wingtip.