Como acessar dados espelhados do Azure Cosmos DB no Lakehouse e em blocos de anotações do Microsoft Fabric (Visualização)

Neste guia, você aprenderá a acessar dados espelhados do Azure Cosmos DB no Lakehouse e em blocos de anotações do Microsoft Fabric (Visualização).

Importante

O espelhamento para o Azure Cosmos DB está atualmente em visualização. Não há suporte para cargas de trabalho de produção durante a visualização. Atualmente, apenas contas do Azure Cosmos DB para NoSQL são suportadas.

Pré-requisitos

Gorjeta

Durante a visualização pública, é recomendável usar uma cópia de teste ou desenvolvimento dos dados existentes do Azure Cosmos DB que podem ser recuperados rapidamente de um backup.

Configuração de espelhamento e pré-requisitos

Configure o espelhamento para o banco de dados do Azure Cosmos DB para NoSQL. Se você não tiver certeza de como configurar o espelhamento, consulte o tutorial Configurar banco de dados espelhado.

  1. Navegue até o portal do Fabric.

  2. Crie uma nova conexão e um banco de dados espelhado usando as credenciais da sua conta do Azure Cosmos DB.

  3. Aguarde até que a replicação termine o instantâneo inicial dos dados.

Acesse dados espelhados no Lakehouse e em notebooks

Use o Lakehouse para ampliar ainda mais o número de ferramentas que você pode usar para analisar seus dados espelhados do Azure Cosmos DB para NoSQL. Aqui, você usa o Lakehouse para criar um bloco de anotações do Spark para consultar seus dados.

  1. Navegue até a página inicial do portal do Fabric novamente.

  2. No menu de navegação, selecione Criar.

  3. Selecione Criar, localize a seção Engenharia de dados e, em seguida, selecione Lakehouse.

  4. Forneça um nome para o Lakehouse e selecione Criar.

  5. Agora selecione Obter dados e, em seguida , Novo atalho. Na lista de opções de atalho, selecione Microsoft OneLake.

  6. Selecione o banco de dados espelhado do Azure Cosmos DB para NoSQL na lista de bancos de dados espelhados em seu espaço de trabalho de malha. Selecione as tabelas a serem usadas com o Lakehouse, selecione Avançar e, em seguida, selecione Criar.

  7. Abra o menu de contexto da tabela no Lakehouse e selecione Novo bloco de anotações ou existente.

  8. Um novo bloco de anotações abre e carrega automaticamente um dataframe usando SELECT LIMIT 1000o .

  9. Execute consultas como SELECT * usar o Spark.

    df = spark.sql("SELECT * FROM Lakehouse.OrdersDB_customers LIMIT 1000")
    display(df)
    

    Captura de tela de um notebook Lakehouse com dados pré-carregados do banco de dados espelhado.

    Nota

    Este exemplo assume o nome da tabela. Use sua própria tabela ao escrever sua consulta do Spark.

Gravar novamente usando o Spark

Finalmente, você pode usar o código Spark e Python para gravar dados de volta em sua conta de origem do Azure Cosmos DB a partir de blocos de anotações no Fabric. Talvez você queira fazer isso para gravar os resultados analíticos no Cosmos DB, que pode ser usado como plano de serviço para aplicativos OLTP.

  1. Crie quatro células de código no seu bloco de notas.

  2. Primeiro, consulte seus dados espelhados.

    fMirror = spark.sql("SELECT * FROM Lakehouse1.OrdersDB_ordercatalog")
    

    Gorjeta

    Os nomes de tabela nesses blocos de código de exemplo assumem um determinado esquema de dados. Sinta-se à vontade para substituí-lo por seus próprios nomes de tabela e coluna.

  3. Agora transforme e agregue os dados.

    dfCDB = dfMirror.filter(dfMirror.categoryId.isNotNull()).groupBy("categoryId").agg(max("price").alias("max_price"), max("id").alias("id"))
    
  4. Em seguida, configure o Spark para gravar novamente em sua conta do Azure Cosmos DB para NoSQL usando suas credenciais, nome do banco de dados e nome do contêiner.

    writeConfig = {
      "spark.cosmos.accountEndpoint" : "https://xxxx.documents.azure.com:443/",
      "spark.cosmos.accountKey" : "xxxx",
      "spark.cosmos.database" : "xxxx",
      "spark.cosmos.container" : "xxxx"
    }
    
  5. Finalmente, use o Spark para gravar novamente no banco de dados de origem.

    dfCDB.write.mode("APPEND").format("cosmos.oltp").options(**writeConfig).save()
    
  6. Execute todas as células de código.

    Importante

    As operações de gravação no Azure Cosmos DB consumirão unidades de solicitação (RUs).