Klarety

Grafo de conocimiento

Explore las cosas de sus datos, como clientes, pedidos y lugares, y siga cómo se conectan entre tablas.

El muestra sus datos como cosas y los vínculos entre ellas: un cliente se vincula con pedidos, un pedido con productos, un producto con su proveedor. En vez de escribir joins, elija un cliente y vea todo lo conectado.

La idea en palabras simples

  • Un tipo es una clase de cosa, como customer u order. Cada tipo es una de sus con una columna clave, la columna que nombra cada fila.
  • Un registro es una cosa de ese tipo: una fila de la tabla.
  • Un vínculo une dos registros. Los vínculos salen de sus datos:
    • una columna que nombra otro registro, como customer_id en un pedido;
    • una tabla de pares, para vínculos de muchos a muchos como estudiantes y cursos;
    • o vínculos que encuentra por usted: registros en el mismo lugar o momento, registros parecidos, o dos registros que son la misma cosa real.
  • Un grupo es un conjunto de registros que se vinculan entre sí más que con el resto.

Nada se copia. El grafo se apoya en sus tablas existentes, así que siempre muestra datos actuales, y cada persona ve solo los registros a los que tiene acceso.

Antes de empezar

  • Necesita tablas con una columna clave. Un tipo sin ella muestra que aún no tiene clave, y sus registros no se pueden explorar.

Los tipos y vínculos se definen en código con el . Una vez definidos, todos los que tienen acceso los exploran en la app.

Explorar el grafo

Abra el grafo

Vaya a Datos y abra Grafo de conocimiento. El mapa muestra cada tipo con su número de registros. Algunos tipos los mantiene Nexus por usted.

Elija un tipo

Seleccione un tipo para ver sus registros. Escriba en Filtrar para encontrar uno.

Siga los vínculos

Abra un registro para ver los registros conectados a él. Seleccione Ver más para ver más. La ruta de arriba muestra dónde está; seleccione Todos los tipos para empezar de nuevo.

El mapa del Grafo de conocimiento con tipos y vínculos
browse_graph.py
from klarety import Nexus

with Nexus.connect() as nx:
    overview = nx.knowledge_graph.overview()
    for node in overview["nodes"]:
        print(node["name"], node["rows"])

    keys = nx.knowledge_graph.nodes("customer", starts_with="C-1")
    nearby = nx.knowledge_graph.around("customer", keys[0], hops=2)
    for node in nearby["nodes"]:
        print(node)

    paths = nx.knowledge_graph.path(("customer", keys[0]), ("supplier", "S-7"), hops=3)
    print(paths)

around() recorre hasta 3 saltos y devuelve primero los registros más cercanos; siga next_cursor para la página siguiente. Si stopped_at_budget es verdadero, el recorrido llegó al límite de su plan antes de terminar. path() encuentra los caminos más cortos entre dos registros, hasta 4 saltos.

Buscar grupos

En el panel Grupos, seleccione Buscar grupos. Cada grupo muestra cuántos registros tiene y su centro, el registro más vinculado dentro de él. Seleccione Buscar de nuevo cuando sus datos cambien.

El panel Grupos del Grafo de conocimiento, con el tamaño y el centro de cada grupo
for group in nx.knowledge_graph.communities(limit=10):
    print(group["size"], group["central_type"], group["central_key"])

print(nx.knowledge_graph.central(node_type="customer", limit=5))

Definir tipos y vínculos

Lea la definición actual, cámbiela y envíela con la versión que leyó. Si alguien la cambió entretanto, la escritura se rechaza: léala de nuevo y reintente.

define_graph.py
from klarety import Nexus

with Nexus.connect() as nx:
    current = nx.knowledge_graph.definition()
    definition = {
        "nodes": [
            {"name": "customer", "table": {"schema": "default", "table": "customers"}, "key": "customer_id"},
            {"name": "order", "table": {"schema": "default", "table": "orders"}, "key": "order_id"},
        ],
        "edges": [
            {
                "name": "placed_by",
                "source": "order",
                "target": "customer",
                "held_by": {"kind": "column", "column": "customer_id"},
            },
        ],
    }
    nx.knowledge_graph.define(definition, version=current["version"])

    for result in nx.knowledge_graph.check("customer", "order"):
        print(result)

check() prueba hasta 16 tipos contra una muestra de sus datos e informa claves que faltan o se repiten y vínculos que no apuntan a nada. Los vínculos encontrados se construyen en segundo plano: build() los pone en cola y status() dice cuándo se construyó cada uno. define() reemplaza solo su parte del grafo; las partes que no ve se conservan.

Los tipos y vínculos los define en código un desarrollador. Cambie a la vista de desarrolladores para ver cómo.

Qué puede salir mal

Siguientes pasos

En esta página