Limitações atuais do grafo no Microsoft Fabric

O Graph no Microsoft Fabric apresenta certas limitações funcionais e de desempenho. Este artigo destaca algumas limitações importantes, mas não é uma lista completa. Verifique se há atualizações regularmente.

Para obter ajuda com problemas comuns, consulte o grafo de solução de problemas.

Criando modelos de grafo

Fontes de dados

  • Arquivos oneLake parquet e CSV são as únicas fontes de dados com suporte no momento.
  • O suporte para modelos semânticos Power BI como fontes de dados está em desenvolvimento.
  • O suporte para a segurança do OneLake em nível de coluna e linha está em desenvolvimento.

Tipos de dados

Atualmente, o Graph dá suporte aos seguintes tipos de dados:

  • Booliano (os valores são true e false)
  • Duplo (os valores são números de ponto flutuante de 64 bits)
  • Inteiro (os valores são inteiros com sinal de 64 bits)
  • Cadeia de caracteres (valores são cadeias de caracteres Unicode)
  • DataHora Zonificada (os valores são carimbos de tempo junto com um deslocamento temporal para o fuso horário)
  • Duração (os valores são intervalos de duração ISO 8601)

Há suporte para os seguintes tipos do OneLake:

  • IntegerType
  • LongType
  • StringType
  • DoubleType
  • Tipo Booleano
  • FloatType
  • ByteType
  • ArrayType
  • Tipo de Data
  • TimestampNtzType
  • Tipo de Timestamp

Criação de borda

Durante a modelagem de grafo, forneça diferentes tipos de borda de grafo nomes diferentes.

Por exemplo, um conjunto de dados de mídia social pode representar "comentários de curtidas do usuário" e "postagem de curtidas do usuário". Se o modelo de grafo usar tipos de nó separados para comentário e postagem, o tipo de nó de usuário terá dois tipos de bordas "likes" para comentar e postar. Você pode nomear essas bordas userLikesComment e userLikesPost.

Tempo de criação do grafo

Até uma vez por semana, um modelo de grafo pode encontrar um tempo limite se a criação ou atualização do grafo levar mais de 20 minutos. A operação está marcada como com falha.

No entanto, os usuários podem reinicializar a criação ou atualização do grafo.

Tamanho do grafo

As configurações atuais de SKU geralmente disponíveis podem processar cerca de 2 bilhões de elementos de grafo (nós e arestas). Para grafos maiores com um número maior de elementos ou uma carga útil de propriedade maior por elemento, entre em contato com a equipe de produto.

Número total de modelos de grafos

Cada espaço de trabalho Fabric pode ter até 10 modelos de grafo.

Interface do usuário multitarefa

O modelo de grafo pode desaparecer ou ficar vazio quando você alternar entre guias ou janelas no Fabric interface do usuário multitarefa. A equipe do produto está trabalhando ativamente para resolver esse problema conhecido.

Seleção de propriedade do nó

Quando você adiciona um nó ou tipo de aresta ao seu modelo de grafo, selecione manualmente colunas da tabela de origem para serem adicionadas como propriedades. Tanto nós quanto arestas começam sem propriedades, e você adiciona apenas as que precisa.

Querying

Número de saltos em consultas multihop

Atualmente, o Graph dá suporte a até oito saltos em padrões de comprimento variável.

Tamanho dos resultados

O desempenho de agregação pode ser instável quando os resultados excedem 128 MB de tamanho.

Atualmente, o sistema trunca respostas maiores que 64 MB.

Intervalo

As consultas passam do tempo limite se levarem mais de 20 minutos.

Exportação e visualização de dados

  • Atualmente, não há suporte para a exportação de resultados de consulta de grafo ou estruturas de grafo.
  • Atualmente, não há suporte para conectar Power BI diretamente a um grafo para cenários de visualização.

Conformidade com GQL

Para obter um mapeamento detalhado dos recursos gql compatíveis com o padrão ISO/IEC 39075:2024, incluindo conformidade mínima, recursos opcionais por grupo e recursos ainda não compatíveis, consulte a conformidade padrão GQL.

A conformidade com os padrões GQL ainda está em andamento para:

  • Corrigir códigos de status GQL
  • Instrução FOR com índice
  • PRÓXIMO
  • Instrução UNION DISTINCT
  • Quantificadores de padrões de grafo não associados
  • Pesquisa de caminho ALL SHORTEST
  • Pesquisa de caminho ANY
  • QUALQUER pesquisa de caminho MAIS CURTO
  • Conversão de dados
  • Subconsultas escalares
  • Função PROPERTIES
  • Função RANGE
  • Funções numéricas aprimoradas
  • Funções logarítmicas
  • Funções trigonométricas
  • Concatenação do valor do caminho
  • Predicado de teste de rótulo
  • Predicado normalizado
  • Predicado de origem/destino
  • Tipo de valor INT32
  • tipo de valor FLOAT32
  • Tipo de valor DE REGISTRO Fechado
  • Tipo de valor UINT32
  • Tipo de valor TIME ZONED
  • Tipo de valor DATE
  • Passagem de parâmetro
  • Bordas não indiretas
  • GQL-preâmbulo
  • Predicados de padrão não local
  • Predicado IS DIRECTED
  • predicado REGEXP_CONTAINS
  • Especificação de parâmetro dinâmico
  • Usuário da sessão
  • Tipo de valor BYTES
  • Tipo de valor DECIMAL
  • Tipo de valor LOCAL DATETIME
  • Tipo de valor DE HORA LOCAL
  • Instrução call named procedure
  • ORDER BY com ordenação NULA explícita
  • Instrução FOR tabular
  • Instrução EXCEPT ALL
  • Instrução EXCEPT DISTINCT
  • Instrução INTERSECT ALL
  • Instrução INTERSECT DISTINCT
  • Instrução OTHERWISE
  • Curingas
  • Consistência topológica descontraída
  • PERCENTILE_CONT função de agregação
  • PERCENTILE_DISC função de agregação
  • Função de agregação PRODUCT
  • STDDEV_POP função de agregação
  • STDDEV_SAMP função de agregação
  • Concatenação de cadeia de caracteres de bytes
  • Função TRIM da cadeia de caracteres de byte
  • Função TRIM simples com especificação TRIM
  • Função TRIM multicaracter
  • Função de comprimento da cadeia de caracteres byte
  • CARDINALIDADE
  • predicado ALL_DIFFERENT
  • Predicado IS DISTINCT
  • Mesmo predicado

Catálogo

Note

Nomes de grafos e nomes de restrições são gerados automaticamente em GraphBackend e não podem ser especificados na interface ou no esquema JSON.

Área do catálogo Limite / comportamento atual Status de execução Recommendation
Base de ID de catálogo IDs de elementos de catálogo são wrappers int32 assinados onde 0 é inválido, então cada família de IDs tem no máximo std::numeric_limits<int32_t>::max() - 1 IDs positivos não nulos (2 bilhões). Teto de implementação, não uma cota recomendada de GA
Esquemas de gráficos Um tipo de gráfico por catálogo; os comentários de ID de catálogo assumem que o catálogo contém apenas um tipo de grafo. Suposição de projeto; não exposto como uma cota multi-esquema
Definição de grafo tamanho serializado Não há limite explícito de tamanho de byte em GraphProto; contém tipos repetidos de nós, tipos de aresta, rótulos, nomes de propriedades e restrições. Não aplicado abaixo do protobuf/gRPC/memória; Verificações de contagem de objetos no catálogo se aplicam após a construção do grafo
Nome do grafo Deve estar não vazio; Não há uma lista explícita de comprimento máximo de bytes ou caracteres permitidos. Apenas o não-vazio é aplicado 128 caracteres
Tipo de nó No máximo 2 bilhões de tipos de nós. Imposta por CatalogGraphType::Validate via espaço de identificação int32 positivo não nulo 64k
Tipos de arestas No máximo 2 bilhões de tipos de borda. Imposta por CatalogGraphType::Validate via espaço de identificação int32 positivo não nulo 64k
Rótulos de nós únicos em todos os tipos de nós No máximo 2 bilhões de rótulos de nós únicos. Imposta por CatalogGraphType::Validate; rótulos duplicados dentro de um tipo são rejeitados Derivado
Rótulos de aresta únicos em todos os tipos de aresta No máximo 2 bilhões de etiquetas únicas de borda. Imposta por CatalogGraphType::Validate; rótulos duplicados dentro de um tipo são rejeitados Derivado
Nomes de propriedades únicos em todos os tipos de nós e arestas No máximo 2 bilhões de nomes únicos de propriedades. Aplicado por CatalogGraphType::Validate; os nomes de propriedades não podem estar vazios e duplicatas dentro de um tipo são rejeitadas 64k * 10
Definições de restrições de nós No máximo 2 bilhões de definições de restrições de chave de nós. Imposta por CatalogGraphType::Validate via espaço de identificação int32 positivo não nulo <= tipos de nós
Definições de restrições de arestas No máximo 2 bilhões de definições de restrições de chave de borda, mas restrições de chave de borda são desativadas por padrão, a menos que allow_edge_key_constraints seja verdadeiro. Conde aplicado se presente; Feature gate rejeita restrições de aresta por padrão <= tipos de arestas
Nomes da propriedade, caracteres / comprimento Não explicitamente aplicado além dos nomes de propriedades não vazias e da gramática do analisador; Não existe catálogo de comprimento máximo de bytes ou lista de caracteres permitidos. 128 carcaças
Caracteres de rótulo / comprimento Não explicitamente aplicado além da gramática do parser e dos rótulos não vazios nas restrições; Não existe catálogo de comprimento máximo de bytes ou lista de caracteres permitidos. 128 carcaças
Caracteres do nome da restrição / comprimento Os nomes das restrições devem ser não vazios; Não há uma lista explícita de comprimento máximo de bytes ou caracteres permitidos. A validação de restrições duplicadas/correspondentes é separada 128 carcaças
Propriedades por tipo de nó Não há um número máximo explícito de propriedades em um tipo de nó; nomes duplicados de propriedades são rejeitados. Apenas validação de correção 256
Propriedades por tipo de aresta Não há um número máximo explícito de propriedades em um tipo de aresta; nomes duplicados de propriedades são rejeitados. Apenas validação de correção 256
Rótulos por tipo de nó Nenhum número máximo explícito de rótulos em um tipo de nó; rótulos duplicados são rejeitados. Apenas validação de correção 64
Rótulos por tipo de aresta Não há um número máximo explícito de rótulos em um tipo de aresta; rótulos duplicados são rejeitados; rótulos adicionados nas bordas são rejeitados. Apenas validação de correção 64
Propriedades chave por restrição Nenhum número máximo explícito de propriedades de chave em restrições de nós ou bordas; Nomes individuais de propriedades não podem estar vazios. Apenas validação de correção 16

Valores de execução

Tipo de valor em tempo de execução Representação / alcance de apoio Limite explícito de nível de valor? Recomendado
BOOL bool; Valores Verdadeiro/Falso Sim, domínio fixo
INT64 Inteiro de 64 bits assinado Sim, largura fixa
UINT64 Inteiro sem sinal de 64 bits Sim, largura fixa
DUPLO C++/protobuf double / Arrow DoubleScalar (IEEE-754 binary64); valores não finitos não são rejeitados por Value::FromProto Sem verificação somente finita
DECIMAL128 Seta Decimal128Scalar; validação em tempo de execução permite precisão 1..38 e escala 0..precisão; até 38 dígitos decimais Sim, para construção checada/de proto-produção
STRING std::string; ValueProto.string_value Sem limite de valor 4 MB
BYTES std::string usado como contêiner de bytes; ValueProto.bytes_value Sem limite de valor Limite de corda
VERTEX_ID uint64 encapsulado por VertexId; IDs gerados usam ID local de shards de 48 bits e reservam 0 como inválido Raw proto-aceita qualquer uint64; IDs gerados são restritos
EDGE_ID uint64 encapsulado por EdgeId; IDs gerados usam ID local de shards de 48 bits e reservam 0 como inválido Raw proto-aceita qualquer uint64; IDs gerados são restritos
ZONED_DATE_TIME absl::Time além do fuso horário; serializado como int64 milissegundos desde a época Unix mais int32 UTC offset segundos. O intervalo de milissegundos é [-9.223.372.036.854.775.808, 9.223.372.036.854.775.807], documentado como instantes UTC de -292275055-05-16T16:47:04.192+00:00 até 292278994-08-17T07:12:55.807+00:00. Intervalo de tempo documentado; Offset é um INT32 e não é registrado por alcance Value::FromProto
DURAÇÃO absl::Duration; Serializado como int64 milissegundos. Os min/max serializados são de -9.223.372.036.854.775.808 ms a 9.223.372.036.854.775.807 ms (cerca de +/-292.277.024,6 anos). O analisador ISO é mais rigoroso: +/-9.223.372.035 segundos (cerca de +/-292,277 anos). O caminho proto aceita o campo inteiro int64 milissegundos; O parser tem uma maigrama explícita mais estreita
NULL / null tipado std::monostate ou wrapper typed-null
Listas datilografadas std::vector<std::optional<T>>; LIST_NULL armazena um size_t; LIST_ANY Lojas std::vector<Value> Sem limite padrão de valor
Listas aninhadas Listas aninhadas gerais não são suportadas no contrato proto; Runtime possui manuseio especial aninhado LIST_INT64 Sem cota padrão de profundidade/comprimento
Caminho Alternando IDs uint64 entre vértice/aresta/vértice em um vetor; A forma de caminho válida tem contagem ímpar de elementos Sem cota de comprimento de caminho
REGISTRO absl::flat_hash_map<std::string, Value> / mapa protobuf Sem contagem de campos, comprimento de chave ou cota de profundidade de aninhamento
ANY Value::DataType() não se espera que retorne TYPE_ANY; valores dinâmicos são carregados como valores concretos, especialmente dentro LIST_ANY ou Arrow Qualquer armazenamento de extensão Sem cota de tamanho/profundidade

Outros limites

  • Identificadores não podem começar com sublinhado.
  • Literais inteiros são tratados como inteiros com sinal por padrão.
  • Devolver QUALQUER PESSOA e tipos de Registro não são suportados. A solução temporária é jsonizá-los via TO_JSON_STRING.
  • Comprimento máximo da propriedade da cadeia é 65535. Dados além de 64 KiB são inacessíveis ao desserializador; o buffer completo ainda é gravado no RocksDB.
  • O número máximo de elementos na List<T> propriedade é 65535. Uma LISTA INT64 de 70.000 elementos se desserializa como 4.464 elementos.
  • O tamanho máximo da resposta de consulta em bytes é de 64 MB.