A.13.26 OPG_APIS.FIND_CC_MAPPING_BASED
Format
OPG_APIS.FIND_CC_MAPPING_BASED( edge_tab_name IN VARCHAR2, wt_clusters IN OUT VARCHAR2, wt_undir IN OUT VARCHAR2, wt_cluas IN OUT VARCHAR2, wt_newas IN OUT VARCHAR2, wt_delta IN OUT VARCHAR2, dop IN INTEGER DEFAULT 4, rounds IN INTEGER DEFAULT 0, tbs IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT NULL);
Description
Finds connected components in a property graph. All connected components will be stored in the wt_clusters
table. The original graph is treated as undirected.
Parameters
- edge_tab_name
-
Name of the property graph edge table.
- wt_clusters
-
A working table holding the final vertex cluster mappings. This table has two columns (VID NUMBER, CLUSTER_ID NUMBER). Column VID stores the vertex ID values, and column CLUSTER_ID stores the corresponding cluster ID values. Cluster ID values are long integers that can have gaps between them.
If an empty name is specified, a new table will be generated, and its name will be returned.
- wt_undir
-
A working table holding an undirected version of the graph.
- wt_cluas
-
A working table holding current cluster assignments.
- wt_newas
-
A working table holding updated cluster assignments.
- wt_delta
-
A working table holding changes ("delta") in cluster assignments.
- dop
-
Degree of parallelism for the operation. The default is 4.
- rounds
-
Maximum umber of iterations to perform in searching for connected components. The default value of 0 (zero) means that computation will continue until all connected components are found.
- tbs
-
Name of the tablespace to hold the data stored in working tables.
- options
-
Additional settings for the operation.
-
'PDML=T' enables parallel DML.
-
Usage Notes
The property graph edge table must exist in the database, and the OPG_APIS.FIND_CLUSTERS_PREP. procedure must already have been executed.
Examples
The following example finds the connected components in a property graph named mypg
.
DECLARE wtClusters varchar2(200) := 'mypg_clusters'; wtUnDir varchar2(200); wtCluas varchar2(200); wtNewas varchar2(200); wtDelta varchar2(200); BEGIN opg_apis.find_clusters_prep('mypgGE$', wtClusters, wtUnDir, wtCluas, wtNewas, wtDelta, ''); dbms_output.put_line('working tables names ' || wtClusters || ' ' || wtUnDir || ' ' || wtCluas || ' ' || wtNewas || ' ' || wtDelta ); opg_apis.find_cc_mapping_based(''mypgGE$', wtClusters, wtUnDir, wtCluas, wtNewas, wtDelta, 8, 0, 'MYTBS', 'PDML=T'); -- -- logic to consume results in wtClusters -- e.g.: -- select /*+ parallel(8) */ count(distinct cluster_id) -- from mypg_clusters; -- cleanup all the working tables opg_apis.find_clusters_cleanup('mypgGE$', wtClusters, wtUnDir, wtCluas, wtNewas, wtDelta, ''); END; /
Parent topic: OPG_APIS Package Subprograms