Limitações atuais dos grafos no Microsoft Fabric

O Graph no Microsoft Fabric tem certas limitações funcionais e de desempenho. Este artigo destaca algumas limitações principais, mas não é uma lista exaustiva. Volte regularmente para atualizações.

Para ajuda com problemas comuns, consulte o gráfico de resolução de problemas.

Criação de modelos gráficos

Fontes de dados

  • Os ficheiros de parquet e CSV do OneLake são as únicas fontes de dados atualmente suportadas.
  • O suporte para modelos semânticos do Power BI como fontes de dados está em desenvolvimento.
  • O suporte para segurança OneLake ao nível de colunas e linhas está em desenvolvimento.

Tipos de dados

O Graph suporta atualmente os seguintes tipos de dados:

  • Booleano (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 assinados de 64 bits)
  • String (os valores são cadeias de caracteres Unicode)
  • DataHora Zonada (os valores são carimbos temporais juntamente com um deslocamento temporal para o fuso horário)
  • Duração (os valores são intervalos de duração ISO 8601)

Os seguintes tipos de OneLake são suportados:

  • Tipo inteiro
  • Tipo Longo
  • TipoString
  • Tipo Duplo
  • Tipo Booleano
  • Tipo de flutuação
  • ByteType
  • Tipo de matriz
  • Tipo de Data
  • Carimbo de data/horaNtzType
  • Tipo de Timestamp

Criação de bordas

Durante a modelação de grafos, dê diferentes tipos de arestas de grafos com nomes diferentes.

Por exemplo, um conjunto de dados de redes sociais pode representar "comentário de gosto" e "publicação de gostos de utilizador". Se o teu modelo de grafo usa tipos de nós separados para comentário e publicação, então o tipo de nó de utilizador tem dois tipos de arestas de "gostos" para comentar e publicar. Podes nomear estas bordas como userLikesComment e userLikesPost.

Tempo de criação do gráfico

Até uma vez por semana, um modelo de gráfico pode encontrar um tempo limite se a criação ou atualização do gráfico demorar mais de 20 minutos. A operação é marcada como falhada.

No entanto, os usuários podem reiniciar a criação ou atualização de gráficos.

Tamanho do grafo

As configurações SKU atualmente geralmente disponíveis podem processar cerca de 2 mil milhõ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, por favor contacte a equipa de produto.

Número total de modelos de grafos

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

Interface multitarefa

O modelo gráfico pode desaparecer ou ficar vazio quando alternas entre separadores ou janelas na interface multitarefa do Fabric. A equipa de produto está a trabalhar ativamente para resolver este problema conhecido.

Seleção de propriedades do nó

Quando adicionar um nó ou tipo de aresta ao seu modelo de grafo, selecione manualmente colunas da tabela de origem para serem adicionadas como propriedades. Tanto os nós como as arestas começam sem propriedades, e só adicionas as que precisas.

Consultar

Número de saltos em consultas multisaltos

O Graph suporta atualmente 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 superiores a 64 MB.

Timeout

As consultas expiram se demorarem mais de 20 minutos.

Exportação e visualização de dados

  • Exportar resultados de consultas de grafos ou estruturas de grafos não é atualmente suportado.
  • Ligar o Power BI diretamente a um gráfico para cenários de visualização não é atualmente suportado.

Conformidade com GQL

Para um mapeamento detalhado das funcionalidades GQL suportadas em relação à norma ISO/IEC 39075:2024, incluindo conformidade mínima, funcionalidades opcionais por grupo e funcionalidades ainda não suportadas, consulte conformidade com a norma GQL.

A conformidade com as normas GQL ainda está em curso para:

  • Corrigir códigos de status GQL
  • Declaração FOR com índice
  • SEGUINTE
  • DECLARAÇÃO DISTINTA DO SINDICATO
  • Quantificadores de padrões gráficos ilimitados
  • TODOS OS CAMINHOS MAIS CURTOS pesquisa
  • QUALQUER pesquisa de caminho
  • QUALQUER PESQUISA DE CAMINHO MAIS CURTO
  • Conversão de dados
  • Subconsultas escalares
  • Função PROPRIEDADES
  • Função INTERVALO
  • Funções numéricas melhoradas
  • 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
  • FLOAT32 tipo de valor
  • Tipo de valor RECORD fechado
  • Tipo de valor UINT32
  • Tipo de valor ZONED TIME
  • Tipo de valor DATE
  • Passagem de parâmetros
  • Arestas não direcionadas
  • GQL-preâmbulo
  • Predicados de padrões não locais
  • É PREDICADO DIRIGIDO
  • REGEXP_CONTAINS predicado
  • Especificação de parâmetros dinâmicos
  • Usuário da sessão
  • Tipo de valor BYTES
  • Tipo de valor DECIMAL
  • Tipo de valor LOCAL DATETIME
  • Tipo de valor HORA LOCAL
  • Declaração de procedimento nomeado CALL
  • ORDER BY com ordenação NULL explícita
  • Instrução tabular FOR
  • EXCETO TODAS as declarações
  • EXCETO DECLARAÇÃO DISTINTA
  • Declaração INTERSECT ALL
  • INTERSECT DISTINCT enunciado
  • DECLARAÇÃO DE CASO CONTRÁRIO
  • Wildcards
  • Consistência topológica relaxada
  • PERCENTILE_CONT função agregada
  • PERCENTILE_DISC função agregada
  • Função agregada PRODUCT
  • STDDEV_POP função agregada
  • STDDEV_SAMP função agregada
  • Concatenação de cadeia de caracteres de byte
  • Função TRIM de cadeia de bytes
  • Função TRIM simples com especificação TRIM
  • Função TRIM multicarácter
  • Função de comprimento da cadeia de caracteres de byte
  • CARDINALIDADE
  • ALL_DIFFERENT predicado
  • É PREDICADO DISTINTO
  • 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 atual / comportamento Estado de execução Recommendation
Base do ID do catálogo Os IDs de elementos de catálogo são wrappers int32 assinados onde 0 é inválido, pelo que cada família de ID tem no máximo std::numeric_limits<int32_t>::max() - 1 IDs positivos não nulos (2 mil milhões). Teto de implementação, não uma quota 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 conceção; não exposto como uma quota multi-esquema
Definição de grafo tamanho serializado Não existe um 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 aplicam-se após a construção do grafo
Nome do grafo Deve não estar vazio; Não existe uma lista explícita de comprimento máximo de bytes ou caracteres permitidos. Apenas não vazio é aplicado 128 caracteres
Tipos de nó No máximo 2 mil milhõ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 mil milhões de tipos de edge. 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 mil milhõ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 arestas No máximo 2 mil milhões de etiquetas edge únicas. 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 mil milhões de nomes únicos de propriedades. Imposta por CatalogGraphType::Validate; os nomes das propriedades não podem estar vazios e os duplicados dentro de um tipo são rejeitados 64k * 10
Definições de restrições de nós No máximo 2 mil milhõ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 mil milhões de definições de restrições de chave de aresta, mas as restrições de chave de aresta estão desativadas por defeito, a menos que allow_edge_key_constraints seja verdadeiro. Conde aplicada se presente; Feature gate rejeita restrições de aresta por defeito <= tipos de arestas
Nomes da propriedade, caracteres / comprimento Não é explicitamente aplicado para 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 caracteres
Caracteres da etiqueta / comprimento Não é explicitamente aplicado para além da gramática do analisador 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 caracteres
Caracteres do nome da restrição / comprimento Os nomes das restrições devem ser não vazios; Não existe uma lista explícita de comprimento máximo de bytes ou caracteres permitidos. A validação de restrições duplicadas/correspondentes é separada 128 caracteres
Propriedades por tipo de nó Não há um número máximo explícito de propriedades num tipo de nó; nomes duplicados de propriedades são rejeitados. Apenas validação da correção 256
Propriedades por tipo de aresta Não existe um número máximo explícito de propriedades num tipo de aresta; nomes duplicados de propriedades são rejeitados. Apenas validação da correção 256
Rótulos por tipo de nó Não há um número máximo explícito de rótulos num tipo de nó; rótulos duplicados são rejeitados. Apenas validação da correção 64
Rótulos por tipo de aresta Não há um número máximo explícito de rótulos num tipo de aresta; as etiquetas duplicadas são rejeitadas; as etiquetas adicionadas às bordas são rejeitadas. Apenas validação da correção 64
Propriedades chave por restrição Não há um número máximo explícito de propriedades de chave em restrições de chave de nó ou de borda; Os nomes individuais das propriedades não podem estar vazios. Apenas validação da 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 apenas 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 verificada/de Proto
STRING std::string; ValueProto.string_value Sem limite de valor 4 MB
bytes std::string usado como contentor de bytes; ValueProto.bytes_value Sem limite de valor Limite da corda
VERTEX_ID uint64 envolvido por VertexId; IDs gerados usam ID local de shards de 48 bits e reservam o 0 como inválido O proto bruto aceita qualquer uint64; Os IDs gerados são restritos
EDGE_ID uint64 envolvido por EdgeId; IDs gerados usam ID local de shards de 48 bits e reservam o 0 como inválido O proto bruto aceita qualquer uint64; Os 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 temporal documentado; O offset é um INT32 e não está registado 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). Proto Path aceita o campo inteiro de int64 milissegundos; O analisador tem uma maigra explícita mais estreita
NULL / nulo 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 de valor padrão
Listas aninhadas Listas aninhadas gerais não são suportadas no contrato proto; O tempo de execução tem um manuseamento especial aninhado LIST_INT64 Sem quota padrão de profundidade/comprimento
CAMINHO IDs uint64 alternados entre vértice/aresta/vértice num vetor; A forma de caminho válida tem contagem ímpar de elementos Sem quota de comprimento de percurso
REGISTO absl::flat_hash_map<std::string, Value> / mapa protobuf Sem quota de contagem de campos, comprimento de chave ou profundidade de aninhamento
QUALQUER Value::DataType() não se espera que retorne TYPE_ANY; valores dinâmicos são transportados como valores concretos, especialmente dentro LIST_ANY ou Arrow Qualquer armazenamento de extensão Sem quota de tamanho/profundidade

Outros limites

  • Os identificadores não podem começar por sublinhar.
  • Os literais inteiros são tratados como inteiros com sinal por defeito.
  • Não são suportados tipos de devolver QUALQUER PESSOA e Registo. A solução temporária é jsonizá-los através TO_JSON_STRINGde .
  • O comprimento máximo da propriedade da cadeia é 65535. Os dados para além de 64 KiB são inacessíveis ao desserializador; o buffer completo continua a ser escrito no RocksDB.
  • O número máximo de elementos na List<T> propriedade é 65535. Uma LISTA INT64 de 70.000 elementos desserializa-se como 4.464 elementos.
  • O tamanho máximo da resposta da consulta em bytes é de 64 MB.