27.13.8 Loading and Storing Vector Properties
You can load or store vector properties which are fundamental for PgxML
functionality in the graph server (PGX) using PgxFrames.
In order to load
a PgxFrame
with vector properties, follow the steps as
shown:
- Create a Session and an Analyst:
cd /opt/oracle/graph/ ./bin/opg4j opg4j> import static oracle.pgx.api.frames.functions.ColumnRenaming.renaming opg4j> import static oracle.pgx.api.frames.schema.ColumnDescriptor.columnDescriptor opg4j> import oracle.pgx.api.frames.schema.* opg4j> import oracle.pgx.api.frames.schema.datatypes.* opg4j> var session = Pgx.createSession("my-session") opg4j> var analyst = session.createAnalyst()
import oracle.pgx.api.*; import oracle.pgx.api.frames.*; import oracle.pgx.api.frames.functions.*; import oracle.pgx.api.frames.schema.*; import oracle.pgx.api.frames.schema.datatypes.*; import static oracle.pgx.api.frames.functions.ColumnRenaming.renaming; import static oracle.pgx.api.frames.schema.ColumnDescriptor.columnDescriptor; PgxSession session = Pgx.createSession("my-session"); Analyst analyst = session.createAnalyst();
session = pypgx.get_session(session_name="my-session") analyst = session.create_analyst()
- Create the
PgxFrame
schema, defining the columns as shown:opg4j> var vecFrameSchema = List.of( columnDescriptor("intProp", DataTypes.INTEGER_TYPE), columnDescriptor("intProp2", DataTypes.INTEGER_TYPE), columnDescriptor("vectProp", DataTypes.vector(DataTypes.FLOAT_TYPE, 3)), columnDescriptor("stringProp", DataTypes.STRING_TYPE), columnDescriptor("vectProp2", DataTypes.vector(DataTypes.FLOAT_TYPE, 2)) ).toArray(new ColumnDescriptor[0])
ColumnDescriptor[] vecFrameSchema = { columnDescriptor("intProp", DataTypes.INTEGER_TYPE), columnDescriptor("intProp2", DataTypes.INTEGER_TYPE), columnDescriptor("vectProp", DataTypes.vector(DataTypes.FLOAT_TYPE, 3)), columnDescriptor("stringProp", DataTypes.STRING_TYPE), columnDescriptor("vectProp2", DataTypes.vector(DataTypes.FLOAT_TYPE, 2)) };
vec_frame_schema = [ ("intProp", "INTEGER_TYPE"), ("intProp2", "INTEGER_TYPE"), ("vectProp", "VECTOR_TYPE(FLOAT_TYPE, 3)"), ("stringProp", "STRING_TYPE"), ("vectProp2", "VECTOR_TYPE(FLOAT_TYPE, 2)") ]
- Load the
PgxFrame
with the given schema from the specified path:opg4j> var vecFrame = session.readFrame(). db(). name("vector PgxFrame"). //name of the PgxFrame tablename("tablename"). // name of the table from where the data must be loaded jdbcUrl("<jdbcUrl>"). username("<username>"). password("<password>"). owner("owner"). // necessary if the table is owned by another user connections(16). // indicates that 16 connections can be used to load in parallel columns(vecFrameSchema). // columns to load load()
PgxFrame vecFrame = session.readFrame() .db() .name("vector PgxFrame") //name of the PgxFrame .tablename("tablename") // name of the table from where the data must be loaded .jdbcUrl("<jdbcUrl>") .username("<username>") .password("<password>") .owner("owner") // necessary if the table is owned by another user .connections(16) // indicates that 16 connections can be used to load in parallel .columns(vecFrameSchema) // columns to load .load();
>>> vec_frame = ( ... session.read_frame(). ... name('vector PgxFrame'). # name of the PgxFrame ... db(). ... table_name("FRAME_TBL"). # name of the table from where the data must be loaded ... jdbc_url("<jdbc_url>"). ... username("<username>"). ... password("<password>"). ... connections(16). # indicates that 16 connections can be used to load in parallel ... columns(vec_frame_schema). # columns to load ... load() ... )
The final result in thePgxFrame
may appear as follows:+-----------------------------------------------------------+ | intProp | intProp2 | vectProp | stringProp | vectProp2 | +-----------------------------------------------------------+ | 0 | 2 | 0.1;0.2;0.3 | testProp0 | 0.1;0.2 | | 1 | 1 | 0.1;0.2;0.3 | testProp10 | 0.1;0.2 | | 1 | 2 | 0.1;0.2;0.3 | testProp20 | 0.1;0.2 | | 2 | 3 | 0.1;0.2;0.3 | testProp30 | 0.1;0.2 | | 3 | 1 | 0.1;0.2;0.3 | testProp40 | 0.1;0.2 | +-----------------------------------------------------------+
Parent topic: PgxFrames Tabular Data-Structure