Compartilhar via


Criar um esquema de grafo no Microsoft Fabric

Observação

Esse recurso está atualmente em versão prévia pública. Essa versão prévia é oferecida sem um Acordo de Nível de Serviço (SLA) e não é recomendada para cargas de trabalho em nível de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Um esquema de grafo é a coleção de tipos de nó, tipos de borda e suas propriedades que definem a estrutura do grafo. Um esquema de grafo bem projetado facilita a consulta, a manutenção e a extensão de seus dados. Este artigo fornece as práticas recomendadas para transformar dados tabulares em uma lakehouse em um grafo de propriedade labeled em Microsoft Fabric.

Use essas diretrizes antes de iniciar a modelagem no editor de modelos de grafo. Para obter instruções passo a passo sobre como criar nós e bordas, consulte o tutorial do grafo. Exemplos neste artigo usam o conjunto de dados de exemplo do Adventure Works.

Importante

Atualmente, o Graph não dá suporte à evolução do esquema. Depois de modelar seus dados, a estrutura de nós, arestas e propriedades é fixa. Alterações estruturais, como adicionar propriedades, modificar rótulos ou alterar tipos de relação, exigem que você crie um novo modelo de grafo e recarregue todos os dados. Esse processo leva tempo e consome capacidade, portanto, planeje seu esquema completamente antes de iniciar a modelagem.

Pré-requisitos

Entender tipos de nó e tipos de borda

Antes de criar um esquema, entenda estes conceitos principais:

Um tipo de nó define um tipo de entidade em seu gráfico, como um cliente, produto ou pedido. Ele consiste em:

  • Um rótulo, que é o nome que identifica essa categoria de nó. Por exemplo, Customer. Você utiliza o rótulo nas consultas para referir-se a nós desse tipo.
  • Uma tabela de mapeamento, que é a tabela lakehouse que fornece os dados de origem para o tipo de nó. Por exemplo, a tabela adventureworks_customers .
  • Uma coluna de chave que identifica exclusivamente cada nó ( ID rotulada no editor de modelo de grafo). Por exemplo, CustomerID_K.
  • Propriedades, que são colunas da tabela que se tornam atributos em cada nó. Por exemplo, FirstName, LastName e EmailAddress.

Um é uma instância individual de um tipo de nodo – uma linha na tabela de mapeamento. Por exemplo, cada linha em adventureworks_customers se torna um nó Customer.

Um tipo de aresta define um tipo de relação entre dois tipos de nó. Ele consiste em:

  • Um rótulo, que é o nome que identifica essa categoria de relação. Por exemplo, purchases.
  • Uma tabela de mapeamento que contém os dados de relação entre os nós de origem e de destino. Por exemplo, a tabela adventureworks_orders .
  • Um tipo de nó de origem e um tipo de nó de destino que a aresta conecta. Por exemplo, Customer como a origem e Order como o destino.

Uma borda é uma instância individual de um tipo de borda – uma linha na tabela de mapeamento que conecta dois nós específicos.

Observação

No editor de modelos de grafo, os botões Adicionar nó e Adicionar borda criam tipos de nó e tipos de borda, não nós individuais ou bordas.

Identificar entidades e relações

Comece identificando as entidades (itens) e as relações (conexões) em seus dados. Entidades são convertidas em tipos de nó. As conexões entre entidades tornam-se tipos de borda.

Faça estas perguntas sobre suas tabelas de origem:

  • Quais são as entidades primárias? Linhas que representam elementos distintos do mundo real são candidatas a tipos de nó. Por exemplo, clientes, produtos, pedidos e funcionários.
  • Como essas entidades se relacionam entre si? Colunas que fazem referência a linhas em outra tabela (chaves estrangeiras) sugerem tipos de borda. Por exemplo, CustomerID_FK em uma tabela orders aponta para a tabela customers, o que sugere modelar uma borda purchases.
  • Existem entidades inseridas? Uma coluna dentro de uma tabela pode representar uma entidade distinta que vale a pena extrair em seu próprio tipo de nó. Para obter um exemplo, consulte Escolha tipos de nó. Para obter um passo a passo, consulte Adicionar vários tipos de nó e aresta de uma tabela de mapeamento.

Escolha tipos de nó

Crie um tipo de nó para cada entidade que você precisa consultar ou percorrer de forma independente. Siga estas diretrizes:

Torne a entidade um tipo de nó quando... Mantenha-o como uma propriedade quando...
Você precisa atravessar para ou através dele. São metadados descritivos que você só lê, não percorre.
Várias entidades compartilham uma relação com ela. Ele é exclusivo para a entidade à qual pertence.
Você precisa corresponder ou agrupar por ele diretamente em consultas. Você só filtra por ela como uma propriedade de outra entidade.

Exemplo: No conjunto de dados adventure works, Country começa como uma coluna na employees tabela. Se você precisar consultar "quais funcionários vivem no mesmo país?" ou "quais países têm mais funcionários?", extraia Country como um tipo de nó próprio. Se você precisar exibir apenas o país de um funcionário como um rótulo, deixe-o como uma propriedade.

Escolher colunas-chave

Cada tipo de nó requer uma coluna de chave (ou chave composta) que identifica exclusivamente cada nó. Escolha as chaves com cuidado:

  • Use os identificadores exclusivos existentes de suas tabelas de origem. Por exemplo, CustomerID_K ou ProductID_K.
  • Evite chaves substitutas que não tenham significado comercial , a menos que nenhuma chave natural exista. Por exemplo, prefira CustomerID em vez de um número de linha que se incrementa automaticamente.
  • Use chaves compostas quando uma única coluna não garantir exclusividade. Por exemplo, um ProductVersion nó pode precisar tanto de ProductID quanto de VersionNumber como sua chave.
  • Corresponder os tipos de dados entre as colunas de chave e as colunas de chave estrangeira usadas em mapeamentos de arestas. Tipos incompatíveis causam falhas de criação de borda.

Dica

Defina restrições de chave de nó para habilitar o mecanismo de consulta a executar pesquisas diretas em propriedades de chave. Essa otimização acelera as consultas que pesquisam nós específicos por chave.

Escolher tipos de borda

Os tipos de aresta definem as relações entre tipos de nó. Cada tipo de aresta conecta um tipo de nó de origem a um tipo de nó de destino através de uma tabela de mapeamento.

Siga estas diretrizes:

  • Use rótulos descritivos que pareçam verbos ou locuções verbais. Por exemplo, purchases, sells, livesIne belongsTo. Uma borda bem nomeada torna as consultas mais fáceis de ler.
  • Considere a direção com cuidado. As bordas no grafo são direcionadas. Escolha a direção que melhor representa a relação do mundo real. Por exemplo, Customer --compras-->Order soa mais natural do que Order --compradasPor-->Customer.
  • Dê nomes distintos aos tipos de arestas que conectam pares de tipos de nós diferentes. Se o "pedido de venda do funcionário" e o "pedido de compra do cliente" se conectarem ao Order, nomeie-os como sells e purchases em vez de dar a eles o mesmo rótulo. Para obter mais informações, consulte as limitações de criação de margem.

Adicionar propriedades a tipos de borda

Ao contrário dos tipos de nó, os tipos de borda começam sem propriedades. Opcionalmente, você pode adicionar propriedades quando os dados descrevem a relação em si, em vez de qualquer ponto de extremidade. As propriedades do Edge são mais úteis quando você escreve consultas GQL que precisam filtrar, agregar ou retornar dados sobre a relação em si.

Para adicionar uma propriedade, clique duas vezes em um tipo de borda no editor de modelo de grafo para abrir a caixa de diálogo Editar esquema de borda , selecione Adicionar propriedade e escolha uma coluna na tabela de mapeamento.

Quando adicionar propriedades de borda: Se uma coluna responder "quanto?", "quando?", ou "de que forma?" sobre a conexão entre dois nós, ela pertence à borda - não em nenhum dos nós.

Exemplo: No conjunto de dados Adventure Works, a contains borda se conecta Order a Product por meio da tabela adventureworks_orders. Colunas como OrderQty, UnitPrice e LineTotal descrevem a relação entre os dados - quantos produtos estavam em um pedido específico e a que preço. Colunas como OrderDate ou ShipDate descrevem a ordem em si e pertencem ao nó tipo Order, não à borda.

Importante

A tabela de mapeamento de uma borda deve conter colunas que correspondam às colunas de chave dos tipos de nó de origem e de destino em valores e tipo de dados. As tabelas que você usa para criar tipos de nó também poderão servir como tabelas de mapeamento de borda se atenderem a esse requisito.

Remover propriedades desnecessárias

Quando você cria um tipo de nó a partir de uma tabela de mapeamento, cada coluna na tabela se torna uma propriedade por padrão. As propriedades excessivas aumentam o armazenamento, as consultas lentas e dificultam a manutenção do grafo. Por esses motivos, remova as propriedades que você não precisa para consultas ou análises.

Observação

Os tipos de borda funcionam de forma diferente – eles começam sem propriedades. Adicione manualmente apenas as propriedades necessárias usando o botão Adicionar propriedade no diálogo de edição do esquema de aresta.

Para cada tipo de nó, mantenha apenas as propriedades que são:

  • Necessário para a unicidade do nó (colunas-chave)
  • Usado em filtros WHERE ou projeções RETURN em suas consultas
  • Necessária para análise posterior ou visualização

Para obter mais informações sobre como a contagem de propriedades afeta o desempenho da consulta, consulte Retornar apenas as propriedades necessárias.

Escolher tipos de dados

Selecione o tipo de dados mais específico para cada propriedade. Os tipos certos melhoram a eficiência de armazenamento e o desempenho da consulta:

  • Use INT ou UINT64 para identificadores numéricos e contagens. Comparações numéricas são mais rápidas do que comparações de cadeia de caracteres.
  • Use ZONED DATETIME para timestamps em vez de datas formatadas como string.
  • Use BOOLEAN para sinalizadores true/false em vez de valores de cadeia de caracteres como "yes" ou "no".

Para obter a lista completa de tipos com suporte, consulte As limitações atuais — tipos de dados.

Padrões comuns em tabelas e grafos

A tabela a seguir resume como algumas estruturas de dados tabulares comuns se traduzem em elementos de grafo:

Estrutura tabular Resultado do grafo Exemplo
Um para muitos: Tabela pai + tabela filho com chave estrangeira Dois tipos de nó conectados por um tipo de aresta. Customer -- compras-->Order
Muitos para muitos: Tabela de junção vinculando duas tabelas Tipo de aresta entre dois tipos de nó. Vendor -- produz-->Product
Entidade inserida: Coluna que representa uma entidade compartilhada Tipo de nó extraído com borda. Employee -- livesIn-->Country
Hierarquia: Cadeia de tabelas pai-filho Tipos de nó vinculados por bordas em cada nível. Product -- isOfType-->Subcategory --belongsTo-->Category

Para obter um passo a passo do padrão de entidade embutida, consulte Como adicionar vários tipos de nó e borda de uma tabela de mapeamento.

Alterar seu esquema de grafo

O Graph não dá suporte à evolução do esquema. Depois de salvar um modelo de grafo, a estrutura de tipos de nó, tipos de borda e suas propriedades será corrigida. Para fazer alterações estruturais , como adicionar uma propriedade a um tipo de nó, remover um tipo de borda ou alterar uma coluna de chave, você deve criar um novo modelo de grafo e recarregar seus dados.

Para alterar seu esquema de grafo:

  1. Em seu ambiente de trabalho, crie um novo item de grafo que se conecte ao mesmo lakehouse.
  2. No editor de modelos de grafo, adicione os tipos de nó e os tipos de borda necessários, incluindo quaisquer propriedades novas ou modificadas.
  3. Configurar principais colunas e mapeamentos de arestas. Verifique se os tipos de dados correspondem entre as colunas chave e as colunas estrangeiras.
  4. Selecione Salvar para ingerir dados e crie o novo grafo.
  5. Atualize todos os conjuntos de consultas para apontar para o novo grafo.
  6. Depois de verificar se o novo grafo funciona conforme o esperado, exclua o item de grafo original se você não precisar dele.