NODE_ID_FROM_PARTS (Transact-SQL)
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores de Azure SQL Database Azure SQL Instancia administrada
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, elobject_id
parámetro debe corresponder a una tabla de nodos existente. El parámetrograph_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;
;