[Data Flow] [Cliente] Guia e Documentação V1 15 de outubro de 2025 13:34 Objetivo O principal objetivo deste documento é capacitar o cliente no uso eficiente do serviço de dados Data Flow, oferecendo uma visão detalhada sobre seus aspectos técnicos. O foco é garantir que o cliente compreenda plenamente a solução, possibilitando sua utilização segura e otimizada. Definições Data Flow No dinâmico ecossistema de engenharia de dados, o compartilhamento eficaz de dados entre plataformas é um pilar essencial para análises avançadas e tomadas de decisão informadas. Nossa plataforma inovadora, integrada com soluções de ponta como Databricks, Azure Data Factory e Soda, se posiciona na vanguarda da simplificação do compartilhamento de dados. No coração desta iniciativa está o Data Flow, uma ferramenta vital que emprega o protocolo Delta Sharing para facilitar o compartilhamento de dados. No núcleo do Data Flow reside uma biblioteca Python, projetada especificamente para otimizar e assegurar o compartilhamento de dados entre plataformas variadas. Com a adoção do protocolo Delta Sharing, esta biblioteca se destaca, oferecendo uma solução eficiente para os engenheiros de dados, respeitando ao mesmo tempo as políticas estritas de governança. Desde a facilitação da exportação e importação de dados até a manutenção da integridade durante o compartilhamento, o Data Flow se torna um parceiro indispensável. Em suma, o Data Flow é uma camada de abstração criada pelo time de Data em Blip, com objetivo de facilitar a configuração e gerenciamento do compartilhamento de dados entre as partes. Com ele, é possível consumir dados Near Real Time, em Batches ou Streaming, de forma segura e simples. Através do compartilhamento de contrato Blip (tenant id) é possível garantir que os dados sejam consistentes e confiáveis. Por fim, é possível gerenciar exceções no compartilhamento, com estratégias de tratamentos de erros e permissionamento. Exploraremos algumas funcionalidades chave que o Data Flow habilita: Compartilhamento Seguro de Dados O Data Flow descomplica o processo de compartilhamento de dados entre sistemas, assegurando que o movimento dos dados não seja apenas eficiente, mas também alinhado aos padrões de governança. Seja transmitindo dados em lotes ou em tempo real, o Data Flow equipa você com as ferramentas necessárias para um compartilhamento de dados seguro e eficiente. Interfaces Simplificadas para Acesso Através do protocoloco utilizado, o Data Flow propõe um fluxo simplificado para interação com sistemas de dados. Uma solução interoperável que permite qualquer caso de uso, qualquer plataforma e qualquer ferramenta. Implementação de Contratos de Compartilhamento Manter a integridade dos dados é essencial, e o Data Flow emprega recursos avançados para assegurar que os conjuntos de dados compartilhados sejam consistentes e confiáveis. Ao definir e implementar contratos de compartilhamento, a ferramenta assegura a conformidade dos dados com formatos e padrões predefinidos, minimizando erros e inconsistências. Gerenciamento Eficaz de Exceções O compartilhamento de dados pode enfrentar imprevistos e exceções. O Data Flow oferece uma solução robusta para o gerenciamento dessas exceções, permitindo a implementação de estratégias eficazes para o tratamento de erros, garantindo assim que os processos de compartilhamento de dados sejam contínuos e confiáveis. Visão de Produto/Serviço e Roadmap Enquanto serviço de dados, o Data Flow, para cliente, é a melhor forma de consumir dados brutos conversacionais do Blip, com latência near real time (até 120s). Os dados disponíveis são provenientes das tabelas: messages, eventtracks, notifications e tickets. O cliente pode consumir os dados através do Databricks ou qualquer outra solução de consumo de dados disponível através do protocolo Delta Sharing. Arquitetura Delta Sharing O que é Delta Sharing? Delta Sharing é um protocolo aberto da Databricks que revoluciona a forma como as organizações compartilham e trocam dados. Ele oferece um método simples, seguro e aberto para que provedores e consumidores de dados compartilhem informações em tempo real, independentemente das plataformas de computação utilizadas. Conceitos Fundamentais Provedor / Data Provider Entidades que disponibilizam dados para compartilhamento. No nosso caso, a Blip. Compartilhamento / Share Um compartilhamento é um agrupamento lógico para compartilhar com os destinatários, com permissão de somente leitura. Um compartilhamento pode ser compartilhado com um ou vários destinatários. Um destinatário pode acessar todos os recursos de um compartilhamento. Um compartilhamento pode conter vários schemas, tabelas, notebooks, volumes, modelos de ML, ou outros ativos de dados que o provedor desejar compartilhar. Destinatário / Data Recipient Um cliente que possui um token para acessar os objetos compartilhados. Schema Um schema é um agrupamento lógico de tabelas. Um esquema pode conter várias tabelas. Tabela Uma tabela é uma tabela Delta Lake ou uma view sobre uma tabela Delta Lake. Servidor de Compartilhamento Um servidor que implementa o protocolo. Diagrama de funcionamento do protocolo delta sharing Métodos de Compartilhamento do Delta Sharing D2D: Compartilhamento entre ambientes Databricks com acesso via Catalog Explorer, CLI do Databricks ou SQL. D2O: Compartilhamento de Databricks para open source com credenciais e links de ativação. O2O: Compartilhamento entre plataformas open source com servidor de referência e clientes Delta Sharing. O2D: Compartilhamento de open source para Databricks usando sistema de credenciais baseado em tokens. Compartilhamento Entre Ambientes Databricks (Databricks para Databricks - D2D) O destinatário fornece um identificador único vinculado ao seu workspace no Databricks. O provedor de dados cria um "share" em seu próprio workspace, que inclui tabelas, visualizações e notebooks. Um objeto "recipient" é criado para representar o usuário ou grupo que acessará os dados. O provedor concede acesso ao share, que aparece no workspace do destinatário. Os usuários podem acessar o share através de vários meios, como Catalog Explorer, a CLI do Databricks ou comandos SQL. Compartilhamento de Databricks para Open Source (Databricks para Open - D2O) O provedor de dados cria objetos "recipient" e "share", assim como no método anterior. Um token e um link de ativação são gerados para o destinatário. O provedor envia o link de ativação para o destinatário de forma segura. O destinatário usa esse link para baixar um arquivo de credencial, que é usado para estabelecer uma conexão segura com o provedor e acessar os dados compartilhados. Esse método permite que os dados sejam lidos em qualquer plataforma ou ferramenta. Compartilhamento de Open Source para Open Source (Open to Open - O2O) Permite o compartilhamento de dados entre quaisquer plataformas ou ferramentas open source, sem necessidade de Databricks. O provedor de dados pode usar um servidor de referência open source para criar e gerenciar shares e recipients. O destinatário pode usar qualquer cliente Delta Sharing para acessar os dados compartilhados usando um arquivo de credencial. Este método possibilita o compartilhamento de dados entre diferentes nuvens e regiões, com configuração e manutenção mínimas. Compartilhamento de Open Source para Databricks (Open to Databricks - O2D) Permite o compartilhamento de dados e modelos de IA além do ecossistema Databricks. Utiliza um sistema de credenciais baseado em tokens, permitindo que os provedores de dados compartilhem ativos com qualquer usuário, independentemente do acesso ao Databricks. Exemplos incluem o compartilhamento de dados de Oracle para Databricks. Apesar da abertura, o Delta Sharing garante segurança e governança robustas. Possibilidades de compartilhamento via Delta Sharing GUIA DE CONEXÃO Uso no Databricks Por padrão, o cliente deve localizar o compartilhamento “deltashare_core” (ou outro se for um share personalizado) através do catálogo, na guia “Delta Sharing”, dentro da seção “Shared with me”, conforme as imagens abaixo. É necessário criar um catálogo a partir do compartilhamento. É possível, então, ler os dados usando várias ferramentas disponíveis para os usuários do Databricks. Download do Link de Ativação O destinatário que receber o link de ativação deve baixar o arquivo de credenciais localmente em formato JSON. Observe que, por motivos de segurança, o arquivo de credenciais pode ser baixado somente uma vez, expirando após o primeiro download. Para certas tecnologias, como Tableau, além do link URL, pode ser necessário fazer upload deste arquivo de credenciais. Para outras tecnologias, pode ser necessário um “bearer token” ou outras credenciais contidas neste arquivo. Uso do Arquivo de Credenciais em Python/Notebooks Uma vez que o arquivo de credenciais tenha sido baixado, ele pode ser utilizado em várias plataformas de notebooks, como Jupyter e Databricks, para acessar dados compartilhados armazenados dentro de data frames. Para habilitar essa funcionalidade em seu notebook, execute os seguintes comandos para instalar e importar o cliente Delta Sharing. Alternativamente, você pode optar por instalá-lo a partir do PyPi, procurando por "delta-sharing-server" e instalando o pacote "delta-sharing". Após a instalação, você pode usar o arquivo de perfil de credenciais baixado anteriormente para enumerar e acessar todas as tabelas compartilhadas em seu ambiente de notebook: ##Instalar o pacote Delta Sharing Python !pip install delta-sharing ##Importar as bibliotecas Delta Sharing import delta_sharing ##Configuração do Client para acesso ao Arquivo de Credencial ##Essa parte pode ser feita localmente ou armazenada em um ambiente externo config_path = "C:/Users/dummy_user/shares/config.share" client = delta_sharing.SharingClient(config_path) Listando os conjuntos de dados disponíveis Agora que o client foi configurado, é possível consultar os conjuntos de dados disponíveis dentro do seu Data Flow. Você pode fazer isso simplesmente chamando o método list_all_tables() do objeto SharingClient que você acabou de criar. Podemos ver no exemplo abaixo que um conjunto de dados chamado incomings_schema.records, que se encontra dentro do incomings_share, está disponível para mim. Cada objeto Table que aparece nesta lista abaixo é uma tabela/conjunto de dados diferente ao qual você tem acesso. ##Exibição dos conjuntos de dados disponíveis print(client.list_all_tables()) ##Resultado [Table(name='records', share='incomings_share', schema='incomings_schema')] Acessando os dados Para acessar e usar os dados de um conjunto de dados via Data Flow, é necessário carregar os dados na sessão Python, podendo ser via pandas DataFrame ou Apache Spark DataFrame, a depender da sua conveniência. O endereço completo de um conjunto de dados é composto por três partes distintas. Primeiro, é o caminho para o seu arquivo de credenciais (ou seja, o arquivo config.share). A segunda parte é um caractere hashtag (#), que atua como um separador entre a primeira e a terceira parte deste endereço completo. Então, a terceira parte é o nome completo do conjunto de dados, que é composto por três partes separadas por pontos, que são: o nome do share, o nome do schema, e o nome do conjunto de dados (ou o "nome da tabela", se preferir chamá-lo assim). Portanto, o nome completo de um conjunto de dados assume o formato: <nome-do-share>.<nome-do-schema>.<nome-da-tabela>. Retomando o exemplo anterior, temos acesso a apenas um conjunto de dados, chamado records, que está dentro do schema incomings_schema e do share incomings_share. Portanto, o nome completo deste conjunto de dados seria incomings_share.incomings_schema.records. Como já temos o caminho para o nosso arquivo de credenciais, o endereço completo para este conjunto de dados seria: #Configuração do Path para Acesso aos Dados config_path = "C:/Users/dummy_user/shares/config.share" table_name = "incomings_share.incomings_schema.records" table_address = config_path + "#" + table_name print(table_address) ##Resultado C:/Users/dummy_user/shares/config.share#incomings_share.incomings_schema.records Carregando os dados no pandas Para isso, você pode usar o método load_as_pandas() da biblioteca delta_sharing. Tudo o que você precisa fazer é fornecer o endereço completo para este conjunto de dados ao método. #Import usando Pandas import delta_sharing config_path = "C:/Users/dummy_user/shares/config.share" table_name = "incomings_share.incomings_schema.records" table_address = config_path + "#" + table_name table = delta_sharing.load_as_pandas(table_address) print(table) ##Resultado date datetime id value 0 2024-05-15 2024-05-15 15:12:20.680756 1 3200 1 2024-05-15 2024-05-15 15:12:54.680769 2 1550 2 2024-05-15 2024-05-15 15:06:14.680772 3 8700 3 2024-05-15 2024-05-15 15:13:08.680774 4 5800 Carregando os dados no Apache Spark Se preferir, você pode carregar o conjunto de dados no Apache Spark, alterando o método usado para load_as_spark(). A entrada para este método é a mesma que no load_as_pandas(), ou seja, o endereço completo para o conjunto de dados que você está tentando acessar. #Import usando Apache Spark import delta_sharing config_path = "C:/Users/dummy_user/shares/config.share" table_address = config_path + "#incomings_share.incomings_schema.records" table = delta_sharing.load_as_spark(table_address) table.show() ##Resultado +----------+--------------------+---+-----+ | date| datetime| id|value| +----------+--------------------+---+-----+ |2024-05-15|2024-05-15 15:12:...| 2| 1550| |2024-05-15|2024-05-15 15:06:...| 3| 8700| |2024-05-15|2024-05-15 15:13:...| 4| 5800| |2024-05-15|2024-05-15 15:12:...| 1| 3200| +----------+--------------------+---+-----+ Uso em Plataformas de Relatoria Além disso, você tem a opção de utilizar plataformas de relatórios bem conhecidas como o Power BI para acessar suas tabelas compartilhadas. No contexto do Power BI, conectar-se a uma fonte Delta Sharing é um processo bem prático. Você pode conseguir isso selecionando "Delta Sharing" nas opções de fontes de dados disponíveis do Power BI e clicando no botão Conectar. Links de apoio Para maiores detalhes sobre formas de conexão e consumo dos dados, é possível consultar a Documentação do Projeto no Github, através do link abaixo: Git Hub - Delta Sharing - Acessing Shared Data Para maiores detalhes do protocolo utilizado no Data Flow: Delta Sharing - An open standard for secure data sharing Introducing Delta Sharing: an Open Protocol for Secure Data Sharing - The Databricks Blog Data Sharing | Databricks Databricks Use Cases Data Sharing - What's New? Para mais informações, acesse a discussão sobre o assunto em nossa comunidade ou os vídeos no nosso canal. 😃 Artigos relacionados Dados Conversacionais Mensagens Como construir bots através de SDKs ou API HTTP Tickets – Novos Como verificar se existe atendente disponível no Builder