9.53 OPG_APIS.SPARSIFY_GRAPH
Format
OPG_APIS.SPARSIFY_GRAPH( edge_tab_name IN VARCHAR2, threshold IN NUMBER DEFAULT 0.5, min_keep IN INTEGER DEFAULT 1, dop IN INTEGER DEFAULT 4, wt_out_tab IN OUT VARCHAR2, wt_und_tab IN OUT VARCHAR2, wt_hsh_tab IN OUT VARCHAR2, wt_mch_tab IN OUT VARCHAR2, tbs IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT NULL);
Description
Performs sparsification (edge trimming) for a property graph edge table.
Parameters
- edge_tab_name
-
Name of the property graph edge table (GE$).
- threshold
-
A numeric value controlling how much sparsification needs to be performed. The lower the value, the more edges will be removed. Some typical values are: 0.1, 0.2, ..., 0.5
- min_keep
-
A positive integer indicating at least how many adjacent edges should be kept for each vertex. A recommended value is 1.
- dop
-
Degree of parallelism for the operation.
- wt_out_tab
-
A working table to hold the output, a sparsified graph.
- wt_und_tab
-
A working table to hold the undirected version of the original graph.
- wt_hsh_tab
-
A working table to hold the min hash values of the graph.
- wt_mch_tab
-
A working table to hold matching count of min hash values.
- tbs
-
A working table to hold the working table data.
- options
-
Additional settings for operation. An optional string with one or more (comma-separated) of the following values:
-
'INMEMORY=T' is an option for creating the schema tables with an 'inmemory' clause.
-
'IMC_MC_B=T' creates the schema tables with an INMEMORY MEMCOMPRESS BASIC clause.
-
Usage Notes
The CREATE TABLE privilege is required to call this procedure.
The sparsification algorithm used is a min hash based local sparsification. See "Local graph sparsification for scalable clustering", Proceedings of the 2011 ACM SIGMOD International Conference on Management of Data: https://cs.uwaterloo.ca/~tozsu/courses/CS848/W15/presentations/ElbagouryPresentation-2.pdf
Sparsification only involves the topology of a graph. None of the properties (K/V) are relevant.
Examples
The following example does the preparation work for the edges table of mypg
, prints out the working table names, and runs sparsification. The output, a sparsified graph, is stored in a table named LEAN_PG, which has two columns, SVID and DVID.
SQL> set serveroutput on DECLARE my_lean_pg varchar2(100) := 'lean_pg'; -- output table wt2 varchar2(100); wt3 varchar2(100); wt4 varchar2(100); BEGIN opg_apis.sparsify_graph_prep('mypgGE$', my_lean_pg, wt2, wt3, wt4, null); dbms_output.put_line('wt2 ' || wt2 || ', wt3 ' || wt3 || ', wt4 '|| wt4); opg_apis.sparsify_graph('mypgGE$', 0.5, 1, 4, my_lean_pg, wt2, wt3, wt4, 'SEMTS', null); END; / wt2 "MYPGGE$$TWSPAU275", wt3 "MYPGGE$$TWSPAH275", wt4 "MYPGGE$$TWSPAM275" SQL> describe lean_pg; Name Null? Type ----------------------------------------- -------- ---------------------------- SVID NUMBER DVID NUMBER
Parent topic: OPG_APIS Package Subprograms