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.
Importante
O espelhamento do Azure Cosmos DB no Microsoft Fabric já está disponível em versão prévia para a API do NoSql. Esse recurso fornece todos os recursos do Link do Azure Synapse com melhor desempenho analítico, capacidade de unificar seu patrimônio de dados com o Fabric OneLake e acesso aberto aos seus dados com formato Delta Parquet. Se estiver a considerar o Link do Azure Synapse, recomendamos que tente espelhar para avaliar a adequação geral à sua organização. Introdução ao espelhamento no Microsoft Fabric.
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.
Pré-requisitos
Certifique-se de criar os seguintes recursos antes de começar:
Crie uma conta do Azure Cosmos DB para a API do NoSQL ou do MongoDB.
Habilite o Link do Azure Synapse para as contas do Azure Cosmos DB
Crie um banco de dados na conta do Azure Cosmos DB e dois contêineres que tenham o repositório analítico habilitado.
Carregue os dados de produtos nos contêineres do Azure Cosmos DB conforme descrito neste notebook de ingestão de dados em lotes.
Crie um espaço de trabalho Synapse chamado SynapseLinkBI.
Conecte o banco de dados do Azure Cosmos DB a um workspace do Synapse.
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.
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.
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:
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:
Abra o aplicativo Power BI Desktop. Selecione Obter dados e, em seguida, selecione Mais.
Escolha Azure Synapse Analytics (SQL DW) na lista de opções de conexão.
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.Selecione o método de autenticação preferencial, como o do Microsoft Entra ID.
Selecione o banco de dados RetailCosmosDB e os modos de exibição RetailSales e StoreDemographics.
Selecione Carregar para carregar as duas exibições no modo de consulta direta.
Selecione Modelo para criar uma relação entre as duas exibições por meio da coluna storeId.
Arraste a coluna StoreId da exibição RetailSales até a coluna StoreId na exibição StoreDemographics.
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:
Selecione Gráfico de dispersão.
Arraste e solte LargeHH da exibição StoreDemographics para o eixo X.
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.
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:
Próximas etapas
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