This Tutorial is extension of The tutorial Advanced Tutorial for Cypher Part (1)
Create Stored Procedure (1)
You can create Stored Procedure as follows:
- The fn_array_uniq function enters an array and returns a unique factor.
- IMMUTABLE represents the classification of the volatility of the procedure. Has the characteristics of calculating and processing returns as constants.
- STRICT returns a null value whenever the argument is null.
- The GENERATE_SERIES function takes** (start, stop, step interval)** as input variables and increments and decreases it to the units set in step interval
- The ARRAY_LOWER / ARRAY_UPPER function returns the lower/upper limit of the array dimension.
CREATE FUNCTION fn_array_uniq (anyarray)
RETURNS anyarray
IMMUTABLE STRICT LANGUAGE SQL
AS
$$
SELECT ARRAY (
SELECT DISTINCT $1[i]
FROM GENERATE_SERIES
(ARRAY_LOWER($1,1), ARRAY_UPPER($1,1)) AS g(i));
$$;
Create Stored Procedure (2)
You can create Stored Procedure as follows:
- Ids is a function that takes id of the unique vertex as a factor and appends it to the array.
- IF [Conditions] Then [True Execution Code] END IF [False Execution Code] Perform execution code when true or false, depending on the conditions.
- FOREACH [Execution Code] Performs an execution code with each row as a factor.
- LOOP [Repeat Execution Code] END LOOP Repeat the execution code in the Loop section until there is no input.
CREATE FUNCTION ids(vertex[]) RETURNS text[] AS $$
DECLARE
v vertex; vids text[];
BEGIN
IF $1 IS NULL THEN
RETURN ARRAY[]::text[];
END IF;
FOREACH v IN ARRAY $1
LOOP vids = array_append(vids,
id(v)::text);
END LOOP;
vids = vids[2:]; RETURN vids;
END;
$$ LANGUAGE plpgsql;
Check the Fraud Ring
Explore the raid ring with Cypher Query using Stored Procedure.
SELECT cy.path
FROM (match path = (person:person)-[*..]-(person) with path,ids(nodes(path)) as node
return path,length(fn_array_uniq(node)) as dcnt, length(node) as cnt) cy
WHERE cnt = dcnt
- Use the fn_array_uniq function to query the unique Node ID of the Path to be viewed as an array.
- Use the Ids function to extract only the Node IDs to consider and count and compare them.
- GraphPath that meets the previous conditions among the Paths inquired in the Match clause is printed and inquired.
Top comments (0)