Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un contrato de nivel de servicio y no es aconsejable usarla para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.
Un esquema de grafo es la colección de tipos de nodo, tipos perimetrales y sus propiedades que definen la estructura del grafo. Un esquema de grafo bien diseñado facilita la consulta, el mantenimiento y la extensión de los datos. En este artículo se proporcionan procedimientos recomendados para convertir datos tabulares en un lakehouse en un gráfico de propiedades etiquetadas eficaz en Microsoft Fabric.
Use estas instrucciones antes de empezar a modelar en el editor de modelos de grafos. Para obtener instrucciones paso a paso sobre cómo crear nodos y bordes, consulte el tutorial de grafos. En los ejemplos de este artículo se usa el conjunto de datos de ejemplo Adventure Works.
Importante
Actualmente, Graph no admite la evolución del esquema. Después de modelar los datos, se fija la estructura de nodos, bordes y propiedades. Los cambios estructurales, como agregar propiedades, modificar etiquetas o cambiar tipos de relación, requieren que cree un nuevo modelo de grafo y vuelva a cargar todos los datos. Este proceso tarda tiempo y consume capacidad, por lo que planee el esquema exhaustivamente antes de empezar a modelar.
Prerrequisitos
- Un área de trabajo Fabric con una instancia de Lakehouse que contiene las tablas de origen.
- Familiaridad con el editor de modelos de grafos.
- Opcional: el conjunto de datos de ejemplo Adventure Works para seguir los ejemplos de este artículo.
Entender los tipos de nodo y los tipos de arista.
Antes de diseñar un esquema, comprenda estos conceptos básicos:
Un tipo de nodo define un tipo de entidad en el gráfico, como un cliente, un producto o un pedido. Consta de:
-
Etiqueta, que es el nombre que identifica esta categoría de nodo. Por ejemplo:
Customer. Use la etiqueta en las consultas para hacer referencia a los nodos de este tipo. - Una tabla de asignación, que es la tabla lakehouse que proporciona los datos de origen para el tipo de nodo. Por ejemplo, la tabla adventureworks_customers .
- Columna clave que identifica de forma única cada nodo (etiquetado como ID en el editor de modelos de grafos). Por ejemplo:
CustomerID_K. -
Propiedades, que son columnas de la tabla que se convierten en atributos en cada nodo. Por ejemplo,
FirstName,LastNameyEmailAddress.
Un nodo es una instancia individual de un tipo de nodo: una fila de la tabla de asignación. Por ejemplo, cada fila de adventureworks_customers se convierte en un Customer nodo.
Un tipo perimetral define un tipo de relación entre dos tipos de nodo. Consta de:
- Una etiqueta es el nombre que identifica esta categoría de relación. Por ejemplo:
purchases. - Tabla de correspondencia que contiene los datos de relación entre los nodos fuente y destino. Por ejemplo, la tabla adventureworks_orders .
- Tipo de nodo de origen y tipo de nodo de destino que conecta la arista. Por ejemplo,
Customercomo origen yOrdercomo destino.
Un arista es una instancia individual de un tipo de arista - una fila de la tabla de mapeo que conecta dos nodos concretos.
Nota:
En el editor de modelos de grafos, los botones Agregar nodo y Agregar borde crean tipos de nodo y tipos perimetrales, no nodos o bordes individuales.
Identificación de entidades y relaciones
Empiece por identificar las entidades (cosas) y las relaciones (conexiones) en los datos. Las entidades se convierten en tipos de nodo. Las conexiones entre entidades se convierten en tipos de aristas.
Realice estas preguntas sobre las tablas de origen:
- ¿Cuáles son las entidades principales? Las filas que representan elementos reales distintos son candidatos para los tipos de nodo. Por ejemplo, clientes, productos, pedidos y empleados.
- ¿Cómo se relacionan estas entidades entre sí? Las columnas que hacen referencia a filas de otra tabla (claves foráneas) sugieren tipos de borde. Por ejemplo,
CustomerID_FKen unaorderstabla apunta a lacustomerstabla, lo que sugiere modelar unpurchasesborde. - ¿Hay entidades incrustadas? Una columna dentro de una tabla podría representar una entidad distinta que vale la pena extraer en su propio tipo de nodo. Para obtener un ejemplo, vea Elegir tipos de nodo. Para ver un tutorial paso a paso, consulte Adición de varios tipos de nodo y arista desde una tabla de mapeo.
Elegir tipos de nodo
Cree un tipo de nodo para cada entidad que necesite consultar o recorrer de forma independiente. Utilice estas directrices:
| Convertir la entidad en un tipo de nodo cuando... | Mantenlo como propiedad cuando... |
|---|---|
| Debe ir hacia él o atravesarlo. | Son metadatos descriptivos que solo se leen, no se recorren. |
| Varias entidades comparten una relación con ella. | Es único para la entidad a la que pertenece. |
| Debe buscar coincidencias o agruparlas directamente en las consultas. | Solo puede filtrarse por este como una propiedad de otra entidad. |
Ejemplo: En el conjunto de datos Adventure Works, Country se inicia como una columna de la employees tabla. Si necesita consultar "qué empleados residen en el mismo país?" o "qué países tienen más empleados?", extraiga Country en su propio tipo de nodo. Si solo necesita mostrar el país de un empleado como etiqueta, déjelo como atributo.
Elegir columnas de clave
Cada tipo de nodo requiere una columna de clave (o clave compuesta) que identifica de forma única cada nodo. Elija las claves cuidadosamente:
-
Utilice identificadores únicos existentes de las tablas de origen. Por ejemplo,
CustomerID_KoProductID_K. -
Evite las claves suplentes que carecen de significado empresarial a menos que no exista ninguna clave natural. Por ejemplo, prefiere
CustomerIDen lugar de un número de fila que se incremente automáticamente. -
Use claves compuestas cuando una sola columna no garantice la unicidad. Por ejemplo, un
ProductVersionnodo podría necesitar tantoProductIDcomoVersionNumbercomo su clave. - Coinciden los tipos de datos entre las columnas clave y las columnas clave externa usadas en los mapeos de borde. Los tipos no coincidentes provocan errores de creación de bordes.
Sugerencia
Defina restricciones de clave de nodo para permitir que el motor de consultas realice búsquedas directas en las propiedades de clave. Esta optimización acelera las consultas que buscan nodos específicos por clave.
Elegir tipos de borde
Los tipos de aristas definen las relaciones entre los tipos de nodo. Cada tipo de arista conecta un tipo de nodo de origen a un tipo de nodo de destino a través de una tabla de mapeo.
Siga estas instrucciones:
-
Utilice etiquetas descriptivas que se lean como verbos o frases verbales. Por ejemplo,
purchases,sells,livesInybelongsTo. Un borde bien denominado facilita la lectura de las consultas. - Considere cuidadosamente la dirección. Las aristas del grafo son dirigidas. Elija la dirección que mejor represente la relación real. Por ejemplo,
Customer--compras-->Ordersuena más natural queOrder--compradoPor--.>Customer - Asigne nombres distintos a los tipos perimetrales que conectan diferentes pares de tipos de nodo. Si tanto "employee sells order" como "customer purchases order" se conectan a
Order, asígneles las etiquetassellsypurchasesen lugar de darles a ambos la misma etiqueta. Para obtener más información, consulte Limitaciones de creación de bordes.
Adición de propiedades a tipos de aristas
A diferencia de los tipos de nodo, los tipos perimetrales comienzan sin propiedades. Opcionalmente, puede agregar propiedades cuando los datos describen la propia relación en lugar de cualquier punto de conexión. Las propiedades de Edge son más útiles cuando se escriben consultas GQL que necesitan filtrar, agregar o devolver datos sobre la propia relación.
Para agregar una propiedad, haga doble clic en un tipo de borde en el editor de modelos de grafos para abrir el cuadro de diálogo Editar esquema perimetral, seleccione Agregar propiedad y, a continuación, elija una columna de la tabla de asignación.
Cuándo agregar propiedades perimetrales: Si una columna responde a "¿cuánto?", "¿cuándo?", o "de qué manera?" sobre la conexión entre dos nodos, pertenece al borde, no en ninguno de los nodos.
Ejemplo: En el conjunto de datos Adventure Works, el contains borde se conecta Order a Product través de la tabla adventureworks_orders . Columnas como OrderQty, UnitPricey LineTotal describen la relación: cuántos de un producto estaban en un pedido específico, a qué precio. Columnas como OrderDate o ShipDate describen el propio orden y pertenecen al tipo de Order nodo, no en el borde.
Importante
La tabla de asignación de un borde debe contener columnas que coincidan con las columnas clave de los tipos de nodo de origen y de destino en valores y tipo de datos. Las tablas que se usan para crear tipos de nodo también pueden servir como tablas de asignación perimetral si cumplen este requisito.
Quitar propiedades innecesarias
Cuando se crea un tipo de nodo a partir de una tabla de asignación, cada columna de la tabla se convierte en una propiedad de forma predeterminada. Las propiedades excesivas aumentan el almacenamiento, las consultas lentas y hacen que el gráfico sea más difícil de mantener. Por estos motivos, quite las propiedades que no necesita para las consultas o el análisis.
Nota:
Los tipos de aristas funcionan de forma diferente: empiezan sin ninguna propiedad. Solo se agregan manualmente las propiedades que necesita mediante el botón Agregar propiedad en el cuadro de diálogo Editar esquema perimetral .
Para cada tipo de nodo, mantenga solo las propiedades siguientes:
- Necesario para la unicidad del nodo (columnas de clave)
- Se utiliza en
WHEREfiltros oRETURNproyección en tus consultas - Necesario para el análisis o la visualización posterior
Para obtener más información sobre cómo afecta el recuento de propiedades al rendimiento de las consultas, vea Devolver solo las propiedades que necesita.
Elegir tipos de datos
Seleccione el tipo de datos más específico para cada propiedad. Los tipos adecuados mejoran tanto la eficiencia del almacenamiento como el rendimiento de las consultas:
- Use
INToUINT64para identificadores numéricos y recuentos. Las comparaciones numéricas son más rápidas que las comparaciones de cadenas. - Use
ZONED DATETIMEpara marcas de tiempo en lugar de fechas con formato de cadena. - Use
BOOLEANpara marcas true/false en lugar de valores de cadena como"yes"o"no".
Para obtener la lista completa de tipos admitidos, consulte Limitaciones actuales: tipos de datos.
Patrones comunes de tablas a grafos
En la tabla siguiente se resume cómo se traducen algunas estructuras de datos tabulares comunes a los elementos de grafos:
| Estructura tabular | Resultado del grafo | Ejemplo |
|---|---|---|
| Uno a muchos: Tabla padre + tabla hija con clave foránea | Dos tipos de nodo conectados por un tipo de arista. |
Customer
--
compras->Order |
| Muchos a muchos: Tabla de intersección que vincula dos tablas | Tipo de arista entre dos tipos de nodo. |
Vendor
--
produce-->Product |
| Entidad incrustada: Columna que representa una entidad compartida | Tipo de nodo extraído con arista. |
Employee
--
livesIn->Country |
| Jerarquía: Cadena de tablas padre-hijo | Tipos de nodo vinculados por bordes en cada nivel. |
Product
--
isOfType-->Subcategory --belongsTo-->Category |
Para ver un tutorial paso a paso del patrón de entidad embebida, consulte Agregar varios tipos de nodo y arista desde una tabla de asignación.
Cambio del esquema del grafo
Graph no admite la evolución del esquema. Después de guardar un modelo de grafo, se fija la estructura de los tipos de nodo, los tipos perimetrales y sus propiedades. Para realizar cambios estructurales, como agregar una propiedad a un tipo de nodo, quitar un tipo perimetral o cambiar una columna de clave, debe crear un nuevo modelo de grafo y volver a cargar los datos.
Para cambiar el esquema del grafo:
- En el área de trabajo, cree un nuevo elemento de grafo que se conecte a la misma instancia de LakeHouse.
- En el editor de modelos de grafos, agregue los tipos de nodo y los tipos perimetrales que necesita, incluidas las propiedades nuevas o modificadas.
- Configure columnas clave y mapeos de bordes. Asegúrese de que los tipos de datos coinciden entre las columnas de clave y las columnas de clave externa.
- Seleccione Guardar para ingerir datos y compilar el nuevo grafo.
- Actualice los querysets para que apunten al nuevo grafo.
- Después de comprobar que el nuevo grafo funciona según lo previsto, elimine el elemento de grafo original si no lo necesita.