Share via


Usar o Power BI e o pool de SQL do Synapse sem servidor para analisar os dados do Azure Cosmos DB com o Link do Synapse

APLICA-SE AO: NoSQL MongoDB Gremlin

Neste artigo, você aprende a criar um banco de dados do pool SQL sem servidor e exibições no Link do Synapse para Azure Cosmos DB. Você consultará os contêineres do Azure Cosmos DB e, em seguida, criará um modelo com o Power BI nessas exibições para refletir essa consulta.

Com o Link do Azure Synapse, você pode criar painéis quase em tempo real no Power BI, para analisar os seus dados do Azure Cosmos DB. Não há nenhum impacto de desempenho ou de custo nas suas cargas de trabalho transacionais e nenhuma complexidade no gerenciamento de pipelines de ETL. Você pode usar os modos doDirectQuery ou de importação.

Observação

Você pode criar painéis do Power BI com apenas alguns cliques usando o portal do Azure Cosmos DB. Para obter mais informações, consulte Experiência integrada do Power BI no portal do Azure Cosmos DB para contas habilitadas para o Link do Synapse. Isso criará exibições T-SQL automaticamente em pools de SQL sem servidor do Azure Synapse nos contêineres do Azure Cosmos DB. Você pode simplesmente baixar o arquivo .pbids que se conecta a essas exibições do T-SQL para começar a criar seus painéis de BI.

Nesse cenário, você usará dados fictícios sobre as vendas de produtos Surface em uma loja de varejo de parceiro. Você analisará a receita por loja com base na proximidade com grandes residências e o impacto da publicidade para uma semana específica. Neste artigo, você cria duas exibições chamadas RetailSales e StoreDemographics e uma consulta entre elas. É possível obter os dados do produto de exemplo deste repositório GitHub.

Observação

O Link do Synapse para a API para Gremlin agora está em versão prévia. Você pode habilitar o Link do Synapse em grafos novos ou existentes usando a CLI do Azure. Para obter mais informações de como configurá-lo, clique aqui.

Pré-requisitos

Certifique-se de criar os seguintes recursos antes de começar:

Criar um banco de dados e exibições

No espaço de trabalho Synapse, acesse a guia Desenvolver, selecione o ícone + e selecione Script SQL.

Add a SQL script to the Synapse Analytics workspace

Todo espaço de trabalho vem com um ponto de extremidade SQL sem servidor. Depois de criar um script SQL, na barra de ferramentas na parte superior, conecte-se a Interno.

Enable the SQL script to use the serverless SQL endpoint in the workspace

A criação de exibições nos bancos de dados mestre ou padrão não é recomendada nem tem suporte. Crie um novo banco de dados, chamado RetailCosmosDB, e uma exibição SQL nos contêineres habilitados para o Link do Synapse. O seguinte comando mostra como criar um banco de dados:

-- Create database
Create database RetailCosmosDB

Depois, crie várias exibições em diferentes contêineres do Azure Cosmos DB habilitados para o Link do Synapse. As exibições permitirão que você use o T-SQL para unir e consultar dados do Azure Cosmos DB localizados em contêineres diferentes. Certifique-se de selecionar o banco de dados RetailCosmosDB ao criar as exibições.

Os scripts a seguir mostram como criar exibições em cada contêiner. Para simplificar, vamos usar o recurso de Inferência de esquema automática de pool de SQL sem servidor em contêineres habilitados para o Link do Synapse:

Exibição de RetailSales:

-- Create view for RetailSales container
CREATE VIEW  RetailSales
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>',RetailSales)
AS q1

Certifique-se de inserir sua região de Azure Cosmos DB e a chave primária no script SQL anterior. Todos os caracteres do nome da região devem estar em letras minúsculas, sem espaços. Ao contrário dos outros parâmetros do comando OPENROWSET, o parâmetro de nome do contêiner deve ser especificado sem aspas.

Exibição de StoreDemographics:

-- Create view for StoreDemographics container
CREATE VIEW StoreDemographics
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>', StoreDemographics)
AS q1

Agora, execute o script SQL selecionando o comando Executar.

Consultar as exibições

Agora que as duas exibições foram criadas, vamos definir a consulta para unir essas duas exibições da seguinte maneira:

SELECT 
sum(p.[revenue]) as revenue
,p.[advertising]
,p.[storeId]
,p.[weekStarting]
,q.[largeHH]
 FROM [dbo].[RetailSales] as p
INNER JOIN [dbo].[StoreDemographics] as q ON q.[storeId] = p.[storeId]
GROUP BY p.[advertising], p.[storeId], p.[weekStarting], q.[largeHH]

Selecione Executar que fornece a seguinte tabela como resultado:

Query results after joining the StoreDemographics and RetailSales views

Exibições de modelo em contêineres com Power BI

Em seguida, abra a área de trabalho do Power BI e conecte-se ao ponto de extremidade SQL sem servidor usando as seguintes etapas:

  1. Abra o aplicativo Power BI Desktop. Selecione Obter dados e, em seguida, selecione Mais.

  2. Escolha Azure Synapse Analytics (SQL DW) na lista de opções de conexão.

  3. Insira o nome do ponto de extremidade SQL onde o banco de dados está localizado. Insira SynapseLinkBI-ondemand.sql.azuresynapse.net no campo Servidor. Neste exemplo, SynapseLinkBI é o nome do espaço de trabalho. Substitua-o se tiver fornecido um nome diferente para o espaço de trabalho. Selecione Consulta direta para o modo de conectividade de dados e, em seguida, selecione OK.

  4. Selecione o método de autenticação preferencial, como o do Microsoft Entra ID.

  5. Selecione o banco de dados RetailCosmosDB e os modos de exibição RetailSales e StoreDemographics.

  6. Selecione Carregar para carregar as duas exibições no modo de consulta direta.

  7. Selecione Modelo para criar uma relação entre as duas exibições por meio da coluna storeId.

  8. Arraste a coluna StoreId da exibição RetailSales até a coluna StoreId na exibição StoreDemographics.

  9. Selecione a relação Muitos para um (*: 1) pois há várias linhas com a mesma ID de loja na exibição RetailSales. StoreDemographics tem apenas uma linha de ID de loja (é uma tabela de dimensões).

Agora, navegue até a janela relatório e crie um relatório para comparar a importância relativa de tamanho doméstico com a receita média por loja com base na representação dispersa de receita e índice LargeHH:

  1. Selecione Gráfico de dispersão.

  2. Arraste e solte LargeHH da exibição StoreDemographics para o eixo X.

  3. Arraste e solte Receita da exibição RetailSales no eixo Y. Selecione Média para obter a média de vendas por produto por loja e por semana.

  4. Arraste e solte productCode da exibição RetailSales na legenda para selecionar uma linha de produto específica. Depois de escolher essas opções, você deverá ver um grafo como a captura de tela a seguir:

Report that compares the relative importance of household size to the average revenue per store

Próximas etapas

Experiência integrada do Power BI no portal do Azure Cosmos DB para contas habilitadas para o Link do Synapse

Usar o T-SQL para consultar dados do Azure Cosmos DB usando o Link do Synapse do Azure

Usar o pool de SQL sem servidor para analisar os Azure Open Datasets e visualizar os resultados no Azure Synapse Studio