update unampped listign to reflect change in json schema
This commit is contained in:
		
							parent
							
								
									3caa2b3887
								
							
						
					
					
						commit
						bcdb728c3d
					
				| @ -1,24 +1,3 @@ | ||||
| CREATE OR REPLACE FUNCTION tps.jsonb_concat( | ||||
|     state jsonb, | ||||
|     concat jsonb) | ||||
|   RETURNS jsonb AS | ||||
| $BODY$ | ||||
| BEGIN | ||||
| 	--RAISE notice 'state is %', state; | ||||
| 	--RAISE notice 'concat is %', concat; | ||||
| 	RETURN state || concat; | ||||
| END; | ||||
| $BODY$ | ||||
|   LANGUAGE plpgsql VOLATILE | ||||
|   COST 100; | ||||
| 
 | ||||
| DROP AGGREGATE IF EXISTS tps.jsonb_concat_obj(jsonb); | ||||
| CREATE AGGREGATE tps.jsonb_concat_obj(jsonb) ( | ||||
|   SFUNC=tps.jsonb_concat, | ||||
|   STYPE=jsonb, | ||||
|   INITCOND='{}' | ||||
| ); | ||||
| 
 | ||||
| 
 | ||||
| DROP FUNCTION IF EXISTS tps.report_unmapped; | ||||
| CREATE FUNCTION tps.report_unmapped(_srce text) RETURNS TABLE  | ||||
| @ -50,7 +29,7 @@ SELECT | ||||
|         t.rec, | ||||
|         m.target, | ||||
|         m.seq, | ||||
|     regex->>'function' regex_function, | ||||
|         regex->'regex'->>'function' regex_function, | ||||
|         e.v ->> 'field' result_key_name, | ||||
|         e.v ->> 'key' target_json_path, | ||||
|         e.v ->> 'flag' regex_options_flag, | ||||
| @ -61,17 +40,15 @@ SELECT | ||||
|         COALESCE(mt.rn,rp.rn,1) result_number, | ||||
|         mt.mt rx_match, | ||||
|         rp.rp rx_replace, | ||||
|     --------------------------json key name assigned to return value----------------------------------------------------------------------- | ||||
|         CASE e.v->>'map' | ||||
|             WHEN 'y' THEN | ||||
|                 e.v->>'field' | ||||
|             ELSE | ||||
|                 null | ||||
|         END map_key, | ||||
|     --------------------------json value resulting from regular expression----------------------------------------------------------------- | ||||
|         CASE e.v->>'map' | ||||
|             WHEN 'y' THEN | ||||
|             CASE regex->>'function' | ||||
|                 CASE regex->'regex'->>'function' | ||||
|                     WHEN 'extract' THEN | ||||
|                         CASE WHEN array_upper(mt.mt,1)=1  | ||||
|                             THEN to_json(mt.mt[1]) | ||||
| @ -85,17 +62,15 @@ SELECT | ||||
|             ELSE | ||||
|                 NULL | ||||
|         END map_val, | ||||
|     --------------------------flag for if retruned regex result is stored as a new part of the final json output--------------------------- | ||||
|         CASE e.v->>'retain' | ||||
|             WHEN 'y' THEN | ||||
|                 e.v->>'field' | ||||
|             ELSE | ||||
|                 NULL | ||||
|         END retain_key, | ||||
|     --------------------------push regex result into json object--------------------------------------------------------------------------- | ||||
|         CASE e.v->>'retain' | ||||
|             WHEN 'y' THEN | ||||
|             CASE regex->>'function' | ||||
|                 CASE regex->'regex'->>'function' | ||||
|                     WHEN 'extract' THEN | ||||
|                         CASE WHEN array_upper(mt.mt,1)=1  | ||||
|                             THEN to_json(trim(mt.mt[1])) | ||||
| @ -113,32 +88,30 @@ FROM | ||||
|         --------------------------start with all regex maps------------------------------------------------------------------------------------ | ||||
|         tps.map_rm m | ||||
|         --------------------------isolate matching basis to limit map to only look at certain json--------------------------------------------- | ||||
|     JOIN LATERAL jsonb_array_elements(m.regex->'where') w(v) ON TRUE | ||||
|     --------------------------break out array of regluar expressions in the map------------------------------------------------------------ | ||||
|     JOIN LATERAL jsonb_array_elements(m.regex->'defn') WITH ORDINALITY e(v, rn) ON true | ||||
|         LEFT JOIN LATERAL jsonb_array_elements(m.regex->'regex'->'where') w(v) ON TRUE | ||||
|         --------------------------join to main transaction table but only certain key/values are included-------------------------------------- | ||||
|         INNER JOIN tps.trans t ON  | ||||
|             t.srce = m.srce AND | ||||
|             t.rec @> w.v | ||||
|         --------------------------break out array of regluar expressions in the map------------------------------------------------------------ | ||||
|         LEFT JOIN LATERAL jsonb_array_elements(m.regex->'regex'->'defn') WITH ORDINALITY e(v, rn) ON true | ||||
|         --------------------------each regex references a path to the target value, extract the target from the reference and do regex--------- | ||||
|         LEFT JOIN LATERAL regexp_matches(t.rec #>> ((e.v ->> 'key')::text[]), e.v ->> 'regex'::text,COALESCE(e.v ->> 'flag','')) WITH ORDINALITY mt(mt, rn) ON | ||||
|         m.regex->>'function' = 'extract' | ||||
|             m.regex->'regex'->>'function' = 'extract' | ||||
|         --------------------------same as above but for a replacement type function------------------------------------------------------------ | ||||
|         LEFT JOIN LATERAL regexp_replace(t.rec #>> ((e.v ->> 'key')::text[]), e.v ->> 'regex'::text, e.v ->> 'replace'::text,e.v ->> 'flag') WITH ORDINALITY rp(rp, rn) ON | ||||
|         m.regex->>'function' = 'replace' | ||||
|             m.regex->'regex'->>'function' = 'replace' | ||||
|     WHERE | ||||
|     --t.allj IS NULL | ||||
|     t.srce = _srce AND | ||||
|     e.v @> '{"map":"y"}'::jsonb | ||||
|     --rec @> '{"Transaction":"ACH Credits","Transaction":"ACH Debits"}' | ||||
|     --rec @> '{"Description":"CHECK 93013270 086129935"}'::jsonb | ||||
| /* | ||||
|     ORDER BY  | ||||
|         t.id DESC, | ||||
|         m.target, | ||||
|         e.rn, | ||||
|         COALESCE(mt.rn,rp.rn,1) | ||||
| */ | ||||
| ) | ||||
| 
 | ||||
| --SELECT * FROM rx LIMIT 100 | ||||
|  | ||||
| @ -30,7 +30,7 @@ SELECT | ||||
|             t.rec, | ||||
|             m.target, | ||||
|             m.seq, | ||||
|     regex->>'function' regex_function, | ||||
|             regex->'regex'->>'function' regex_function, | ||||
|             e.v ->> 'field' result_key_name, | ||||
|             e.v ->> 'key' target_json_path, | ||||
|             e.v ->> 'flag' regex_options_flag, | ||||
| @ -41,17 +41,15 @@ SELECT | ||||
|             COALESCE(mt.rn,rp.rn,1) result_number, | ||||
|             mt.mt rx_match, | ||||
|             rp.rp rx_replace, | ||||
|     --------------------------json key name assigned to return value----------------------------------------------------------------------- | ||||
|             CASE e.v->>'map' | ||||
|                 WHEN 'y' THEN | ||||
|                     e.v->>'field' | ||||
|                 ELSE | ||||
|                     null | ||||
|             END map_key, | ||||
|     --------------------------json value resulting from regular expression----------------------------------------------------------------- | ||||
|             CASE e.v->>'map' | ||||
|                 WHEN 'y' THEN | ||||
|             CASE regex->>'function' | ||||
|                     CASE regex->'regex'->>'function' | ||||
|                         WHEN 'extract' THEN | ||||
|                             CASE WHEN array_upper(mt.mt,1)=1  | ||||
|                                 THEN to_json(mt.mt[1]) | ||||
| @ -65,17 +63,15 @@ SELECT | ||||
|                 ELSE | ||||
|                     NULL | ||||
|             END map_val, | ||||
|     --------------------------flag for if retruned regex result is stored as a new part of the final json output--------------------------- | ||||
|             CASE e.v->>'retain' | ||||
|                 WHEN 'y' THEN | ||||
|                     e.v->>'field' | ||||
|                 ELSE | ||||
|                     NULL | ||||
|             END retain_key, | ||||
|     --------------------------push regex result into json object--------------------------------------------------------------------------- | ||||
|             CASE e.v->>'retain' | ||||
|                 WHEN 'y' THEN | ||||
|             CASE regex->>'function' | ||||
|                     CASE regex->'regex'->>'function' | ||||
|                         WHEN 'extract' THEN | ||||
|                             CASE WHEN array_upper(mt.mt,1)=1  | ||||
|                                 THEN to_json(trim(mt.mt[1])) | ||||
| @ -93,32 +89,30 @@ FROM | ||||
|             --------------------------start with all regex maps------------------------------------------------------------------------------------ | ||||
|             tps.map_rm m | ||||
|             --------------------------isolate matching basis to limit map to only look at certain json--------------------------------------------- | ||||
|     JOIN LATERAL jsonb_array_elements(m.regex->'where') w(v) ON TRUE | ||||
|     --------------------------break out array of regluar expressions in the map------------------------------------------------------------ | ||||
|     JOIN LATERAL jsonb_array_elements(m.regex->'defn') WITH ORDINALITY e(v, rn) ON true | ||||
|             LEFT JOIN LATERAL jsonb_array_elements(m.regex->'regex'->'where') w(v) ON TRUE | ||||
|             --------------------------join to main transaction table but only certain key/values are included-------------------------------------- | ||||
|             INNER JOIN tps.trans t ON  | ||||
|                 t.srce = m.srce AND | ||||
|                 t.rec @> w.v | ||||
|             --------------------------break out array of regluar expressions in the map------------------------------------------------------------ | ||||
|             LEFT JOIN LATERAL jsonb_array_elements(m.regex->'regex'->'defn') WITH ORDINALITY e(v, rn) ON true | ||||
|             --------------------------each regex references a path to the target value, extract the target from the reference and do regex--------- | ||||
|             LEFT JOIN LATERAL regexp_matches(t.rec #>> ((e.v ->> 'key')::text[]), e.v ->> 'regex'::text,COALESCE(e.v ->> 'flag','')) WITH ORDINALITY mt(mt, rn) ON | ||||
|         m.regex->>'function' = 'extract' | ||||
|                 m.regex->'regex'->>'function' = 'extract' | ||||
|             --------------------------same as above but for a replacement type function------------------------------------------------------------ | ||||
|             LEFT JOIN LATERAL regexp_replace(t.rec #>> ((e.v ->> 'key')::text[]), e.v ->> 'regex'::text, e.v ->> 'replace'::text,e.v ->> 'flag') WITH ORDINALITY rp(rp, rn) ON | ||||
|         m.regex->>'function' = 'replace' | ||||
|                 m.regex->'regex'->>'function' = 'replace' | ||||
|     WHERE | ||||
|         --t.allj IS NULL | ||||
|         t.srce = _srce AND | ||||
|         e.v @> '{"map":"y"}'::jsonb | ||||
|         --rec @> '{"Transaction":"ACH Credits","Transaction":"ACH Debits"}' | ||||
|         --rec @> '{"Description":"CHECK 93013270 086129935"}'::jsonb | ||||
| /* | ||||
|     ORDER BY  | ||||
|             t.id DESC, | ||||
|             m.target, | ||||
|             e.rn, | ||||
|             COALESCE(mt.rn,rp.rn,1) | ||||
| */ | ||||
| ) | ||||
| 
 | ||||
| --SELECT * FROM rx LIMIT 100 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user