Compartir a través de


NODE_ID_FROM_PARTS (Transact-SQL)

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance

Devuelve la representación de caracteres (JSON) del identificador de nodo para un identificador de objeto y un identificador de grafo especificados.

Sintaxis

EDGE_ID_FROM_PARTS ( object_id, graph_id )

Argumentos

object_id

Un valor int que representa el identificador de objeto de la tabla de nodos.

graph_id

Valor bigint para el identificador de grafo de un nodo.

Valor devuelto

Devuelve una representación de caracteres nvarchar(1000) (JSON) del identificador de nodo. El valor devuelto puede ser NULL si alguno de los argumentos proporcionados no es válido.

Comentarios

  • La representación de caracteres (JSON) del identificador de nodo devuelto por EDGE_ID_FROM_PARTS es un detalle específico de la implementación y está sujeto a cambios.
  • EDGE_ID_FROM_PARTS es la única manera admitida de construir una representación de caracteres (JSON) adecuada del identificador de nodo.
  • EDGE_ID_FROM_PARTS resulta útil para la inserción masiva de datos en una tabla de grafos, cuando los datos de origen tienen una clave natural o suplente adecuada con un tipo de datos entero.
  • El valor devuelto desde EDGE_ID_FROM_PARTS se puede usar para rellenar la columna $edge_id en una tabla de nodos.
  • Para que EDGE_ID_FROM_PARTS devuelva una representación de caracteres válida (JSON) de un identificador de nodo, el object_id parámetro debe corresponder a una tabla de nodos existente. El parámetro graph_id puede ser cualquier entero válido, pero no necesita existir en esa tabla de nodos. Si se produce un error en alguna de estas comprobaciones, EDGE_ID_FROM_PARTS devuelve NULL.

Ejemplos

En el ejemplo siguiente se usa el proveedor de conjuntos de filas BULK OPENROWSET para recuperar las columnas dataset_key y rating de un archivo CSV almacenado en una cuenta de Azure Storage. A continuación, se usa EDGE_ID_FROM_PARTS para crear la representación de caracteres de $edge_id, mediante el dataset_key del archivo CSV. También usa NODE_ID_FROM_PARTS dos veces para crear las representaciones de caracteres adecuadas de $from_id (para la tabla de nodos Person) y los valores de $to_id (para la tabla del nodo Restaurante) respectivamente. A continuación, estos datos transformados se insertan (masivamente) en la tabla perimetral likes.

INSERT INTO likes($edge_id, $from_id, $to_id, rating)
SELECT EDGE_ID_FROM_PARTS(OBJECT_ID('likes'), dataset_key) as from_id
, NODE_ID_FROM_PARTS(OBJECT_ID('Person'), ID) as from_id
, NODE_ID_FROM_PARTS(OBJECT_ID('Restaurant'), ID) as to_id
, rating
FROM OPENROWSET (BULK 'person_likes_restaurant.csv',
    DATA_SOURCE = 'staging_data_source',
    FORMATFILE = 'format-files/likes.xml',
    FORMATFILE_DATA_SOURCE = 'format_files_source',
    FIRSTROW = 2) AS staging_data;
;

Vea también