Troubleshooting¶
Alation Cloud Service Applies to Alation Cloud Service instances of Alation
Customer Managed Applies to customer-managed instances of Alation
Refer to Troubleshoot OCF Connectors.
Type of Error |
Cause |
Solution |
---|---|---|
The connector responded with the following error message: Username cannot be null, Action: Contact Alation support for further assistance. |
The cause of this error is if the configuration fields are empty. |
Make sure that the configuration fields are populated with the necessary details. |
Cross Lineage not getting populated after Lineage Extraction. |
If Cross Lineage is not constructed after successful MDE. |
Execute the Lineage API, see Cross-System Lineage API for details. Also, verify the data from backend using the queries provided in Oracle Database Queries and SQL Server Database Queries. |
Oracle Database Queries¶
Filter Folder List Query¶
SELECT CAST(SUBJECT_AREA AS VARCHAR(100)) AS CATALOG FROM REP_SUBJECT
Schema Query¶
SELECT DISTINCT
c.subject_area CATALOG,
a.task_name workflow_name,
b.instance_name session_name,
c.mapping_name,
CONCAT(CONCAT(a.task_name,'/'),c.mapping_name) AS SCHEMA
FROM REP_ALL_TASKS a,REP_TASK_INST b,REP_LOAD_SESSIONS c
WHERE a.subject_id=c.subject_id AND a.task_type=71
AND a.task_id=b.workflow_id AND b.task_type=68 AND b.task_id=c.session_id
AND c.MAPPING_ID <> 0
ORDER BY 1,2,3,4
Table Query¶
DECLARE
v_count NUMBER;
BEGIN
-- Check and truncate TEMP_CNX_ATTR
SELECT COUNT(*) INTO v_count FROM USER_TABLES WHERE TABLE_NAME = 'WFSCHEMA';
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE WFSCHEMA';
EXECUTE IMMEDIATE 'Drop TABLE WFSCHEMA';
DBMS_OUTPUT.PUT_LINE('Table WFSCHEMA truncated.');
ELSE
DBMS_OUTPUT.PUT_LINE('Table WFSCHEMA does not exist.');
END IF;
-- Check and truncate TEMP_MMD_CNX_attr
SELECT COUNT(*) INTO v_count FROM USER_TABLES WHERE TABLE_NAME = 'MCP';
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE MCP';
EXECUTE IMMEDIATE 'Drop TABLE MCP';
DBMS_OUTPUT.PUT_LINE('TABLE MCP TRUNCATED.');
ELSE
DBMS_OUTPUT.PUT_LINE('Table MCP does not exist.');
END IF;
-- Check and truncate TEMP_MMD_CNX_attr
SELECT COUNT(*) INTO v_count FROM USER_TABLES WHERE TABLE_NAME = 'QUERY1_TABLES';
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE QUERY1_TABLES';
EXECUTE IMMEDIATE 'Drop TABLE QUERY1_TABLES';
DBMS_OUTPUT.PUT_LINE('TABLE QUERY1_TABLES TRUNCATED.');
ELSE
DBMS_OUTPUT.PUT_LINE('TABLE QUERY1_TABLES DOES NOT EXIST.');
END IF;
-- Check and truncate TEMP_MMD_CNX_attr
SELECT COUNT(*) INTO v_count FROM USER_TABLES WHERE TABLE_NAME = 'CTE';
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE CTE';
EXECUTE IMMEDIATE 'Drop TABLE CTE';
DBMS_OUTPUT.PUT_LINE('TABLE CTE TRUNCATED.');
ELSE
DBMS_OUTPUT.PUT_LINE('TABLE CTE DOES NOT EXIST.');
END IF;
SELECT COUNT(*) INTO v_count FROM USER_TABLES WHERE TABLE_NAME = 'TEMP_CONPORTS';
IF v_count > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_CONPORTS';
EXECUTE IMMEDIATE 'Drop TABLE TEMP_CONPORTS';
DBMS_OUTPUT.PUT_LINE('Table TEMP_CONPORTS truncated.');
ELSE
DBMS_OUTPUT.PUT_LINE('Table TEMP_CONPORTS does not exist.');
END IF;
END;
/
-- STEP 1: Create Global Temporary Tables
CREATE GLOBAL TEMPORARY TABLE WFSCHEMA (
CATALOG VARCHAR2(255),
subject_id NUMBER,
mapping_id NUMBER,
SCHEMA VARCHAR2(4000)
) ON COMMIT PRESERVE ROWS;
CREATE GLOBAL TEMPORARY TABLE MCP (
subject_id NUMBER,
mapping_id NUMBER,
from_object_name VARCHAR2(255),
to_object_name VARCHAR2(255),
from_object_id NUMBER,
to_object_id NUMBER,
from_object_instance_id NUMBER,
from_object_type_name VARCHAR2(255),
from_object_type NUMBER
) ON COMMIT PRESERVE ROWS;
CREATE GLOBAL TEMPORARY TABLE QUERY1_TABLES (
SCHEMA VARCHAR2(4000),
CATALOG VARCHAR2(255),
TABLE_NAME VARCHAR2(4000),
EXPRESSION VARCHAR2(4000),
REMARKS VARCHAR2(4000)
) ON COMMIT PRESERVE ROWS;
CREATE GLOBAL TEMPORARY TABLE CTE (
SUBJECT_AREA VARCHAR2(255),
TASK_NAME VARCHAR2(255),
MAPPING_NAME VARCHAR2(255),
FROM_OBJECT_NAME VARCHAR2(255),
from_object_id NUMBER,
FROM_OBJECT_INSTANCE_ID NUMBER,
FROM_OBJECT_TYPE_NAME VARCHAR2(255),
TO_OBJECT_NAME VARCHAR2(255),
TO_OBJECT_INSTANCE_ID NUMBER,
TO_object_id NUMBER,
TO_OBJECT_TYPE_NAME VARCHAR2(255),
TO_OBJECT_TYPE NUMBER
) ON COMMIT PRESERVE ROWS;
CREATE GLOBAL TEMPORARY TABLE TEMP_CONPORTS (
SUBJECT_AREA VARCHAR2(255),
SUBJECT_ID NUMBER
,MAPPING_NAME VARCHAR2(255),
MAPPING_ID NUMBER,
FROM_OBJECT_NAME VARCHAR2(255),
from_object_id NUMBER,
FROM_OBJECT_INSTANCE_ID NUMBER,
FROM_OBJECT_TYPE_NAME VARCHAR2(255),
TO_OBJECT_NAME VARCHAR2(255),
TO_OBJECT_INSTANCE_ID NUMBER,
TO_object_id NUMBER,
TO_OBJECT_TYPE_NAME VARCHAR2(255),
TO_OBJECT_TYPE NUMBER
) ON COMMIT PRESERVE ROWS;
-- STEP 2: Populate Tables
-- WFSCHEMA
INSERT INTO WFSCHEMA
SELECT DISTINCT
c.subject_area,
a.subject_id,
c.mapping_id,
a.task_name || '/' || c.mapping_name
FROM rep_all_tasks a
JOIN rep_task_inst b ON a.task_id = b.workflow_id
JOIN rep_load_sessions c ON a.subject_id = c.subject_id
WHERE a.task_type = 71
AND b.task_type = 68
AND b.task_id = c.session_id
AND c.mapping_id <> 0;
-- mcp
INSERT INTO MCP
SELECT DISTINCT
subject_id,
mapping_id,
from_object_name,
to_object_name,
from_object_id,
to_object_id,
from_object_instance_id,
from_object_type_name,
from_object_type
FROM rep_mapping_conn_ports;
INSERT INTO TEMP_CONPORTS
SELECT SUBJECT_AREA
,SUBJECT_ID
,MAPPING_NAME
,MAPPING_ID
,FROM_OBJECT_NAME
,from_object_id
,FROM_OBJECT_INSTANCE_ID
,FROM_OBJECT_TYPE_NAME
,TO_OBJECT_NAME
,TO_OBJECT_INSTANCE_ID
,TO_object_id
,TO_OBJECT_TYPE_NAME
,TO_OBJECT_TYPE
FROM REP_MAPPING_CONN_PORTS;
-- cte
INSERT INTO CTE
SELECT DISTINCT
e.SUBJECT_AREA,
a.TASK_NAME,
e.MAPPING_NAME,
e.FROM_OBJECT_NAME,
e.from_object_id,
e.FROM_OBJECT_INSTANCE_ID,
e.FROM_OBJECT_TYPE_NAME,
e.TO_OBJECT_NAME,
e.TO_OBJECT_INSTANCE_ID,
e.TO_object_id,
e.TO_OBJECT_TYPE_NAME,
e.TO_OBJECT_TYPE
FROM REP_ALL_TASKS a
JOIN REP_TASK_INST b ON a.TASK_ID = b.WORKFLOW_ID
JOIN REP_LOAD_SESSIONS c ON a.SUBJECT_ID = c.SUBJECT_ID AND b.TASK_ID = c.SESSION_ID
JOIN REP_SESS_WIDGET_CNXS d ON d.SESSION_ID = c.SESSION_ID
----JOIN REP_MAPPING_CONN_PORTS e ON c.MAPPING_ID = e.MAPPING_ID AND c.SUBJECT_ID = e.SUBJECT_ID
JOIN TEMP_CONPORTS e ON c.MAPPING_ID = e.MAPPING_ID AND c.SUBJECT_ID = e.SUBJECT_ID
WHERE b.TASK_TYPE = 68 AND e.MAPPING_ID <> 0;
-- query1_tables: Part 1
INSERT INTO QUERY1_TABLES
SELECT DISTINCT
wf.SCHEMA,
wf.CATALOG,
mc.from_object_id || '/' || mc.from_object_name AS TABLE_NAME,
wfld.expression AS EXPRESSION,
w.widget_type_name AS REMARKS
FROM wfSchema wf
JOIN mcp mc ON mc.subject_id = wf.subject_id AND mc.mapping_id = wf.mapping_id
JOIN rep_widget_inst w ON mc.mapping_id = w.mapping_id
AND mc.from_object_instance_id = w.instance_id
AND w.widget_type_name = mc.from_object_type_name
JOIN rep_widget_field wfld ON w.widget_id = wfld.widget_id
WHERE w.widget_type NOT IN (1, 2, 3)
AND wfld.field_name != wfld.expression;
-- query1_tables: Part 2
INSERT INTO query1_tables
SELECT DISTINCT
wf.SCHEMA,
wf.CATALOG,
attr.from_object_id || '/' || attr.from_object_name AS TABLE_NAME,
attr.attr_value AS EXPRESSION,
attr.attr_name AS REMARKS
FROM WFSCHEMA wf
JOIN (
SELECT DISTINCT
wi.mapping_id,
rls.mapping_name,
rls.subject_id,
attr.attr_name,
attr.attr_value,
mc.from_object_id,
mc.from_object_name
FROM opb_widget_inst wi
JOIN rep_load_sessions rls ON wi.mapping_id = rls.mapping_id
JOIN mcp mc ON mc.mapping_id = wi.mapping_id
AND mc.from_object_type = wi.widget_type
AND mc.from_object_instance_id = wi.instance_id
JOIN (
SELECT widget_id, widget_type, attr_name, attr_value
FROM rep_widget_attr
WHERE widget_type IN (4, 10) AND attr_id = 1 AND attr_type = 2 AND attr_value NOT IN ('0')
UNION ALL
SELECT widget_id, widget_type, attr_name, attr_value
FROM rep_widget_attr
WHERE widget_type = 12 AND attr_id = 3 AND attr_type = 2 AND attr_value NOT IN ('0')
UNION ALL
SELECT widget_id, widget_type, attr_name, attr_value
FROM rep_widget_attr
WHERE widget_type = 80 AND attr_id = 8 AND attr_type = 5 AND attr_value NOT IN ('0')
) attr ON wi.widget_id = attr.widget_id
WHERE wi.widget_type IN (4, 10, 12, 80)
) attr
ON attr.subject_id = wf.subject_id AND attr.mapping_id = wf.mapping_id;
-- query1_tables: Part 3
INSERT INTO query1_tables
SELECT DISTINCT
wf.SCHEMA,
wf.CATALOG,
grp.from_object_id || '/' || grp.from_object_name AS TABLE_NAME,
grp.expression AS EXPRESSION,
grp.REMARKS AS REMARKS
FROM WFSCHEMA wf
JOIN (
SELECT DISTINCT
mc.subject_id,
mc.mapping_id,
mc.from_object_name,
mc.to_object_name,
mc.from_object_id,
mc.to_object_id,
grp1.attr_values AS expression,
'GrpName_FilterCondition' AS REMARKS
FROM mcp mc
JOIN rep_widget_inst wi ON wi.mapping_id = mc.mapping_id
JOIN (
SELECT object_type, object_id,
LISTAGG(attr_value, ', ') WITHIN GROUP (ORDER BY attr_id) AS attr_values
FROM opb_table_group
WHERE group_id IN (2, 5)
AND attr_id <> 5
GROUP BY object_type, object_id, group_id
) grp1 ON wi.widget_id = grp1.object_id
WHERE mc.from_object_type_name = 'Router'
AND wi.widget_type = 15
) grp ON grp.subject_id = wf.subject_id AND grp.mapping_id = wf.mapping_id;
-- STEP 3: Final Output
SELECT CATALOG, SCHEMA, TABLE_NAME, TABLE_TYPE, REMARKS
FROM (
SELECT DISTINCT
e.SUBJECT_AREA AS CATALOG,
e.TASK_NAME || '/' || e.MAPPING_NAME AS SCHEMA,
e.from_object_id || '/' || e.FROM_OBJECT_NAME AS TABLE_NAME,
e.FROM_OBJECT_INSTANCE_ID AS TABLE_TYPE,
e.FROM_OBJECT_TYPE_NAME AS REMARKS
FROM cte e
WHERE e.from_object_id || '/' || e.FROM_OBJECT_NAME NOT IN (
SELECT TABLE_NAME FROM query1_tables
)
)
UNION ALL
SELECT CATALOG, SCHEMA, TABLE_NAME, TABLE_TYPE, REMARKS
FROM (
SELECT DISTINCT
e1.SUBJECT_AREA AS CATALOG,
e1.TASK_NAME || '/' || e1.MAPPING_NAME AS SCHEMA,
e1.to_object_id || '/' || e1.TO_OBJECT_NAME AS TABLE_NAME,
e1.TO_OBJECT_INSTANCE_ID AS TABLE_TYPE,
e1.TO_OBJECT_TYPE_NAME AS REMARKS
FROM cte e1
WHERE e1.TO_OBJECT_TYPE = 2
AND e1.to_object_id || '/' || e1.TO_OBJECT_NAME NOT IN (
SELECT TABLE_NAME FROM query1_tables
)
)
ORDER BY SCHEMA, TABLE_TYPE;
Column Query¶
WITH cte AS (
SELECT DISTINCT
e.subject_area,
a.task_name,
e.mapping_name,
e.from_object_name,
e.from_object_field_name,
e.from_object_type_name,
e.from_object_type,
e.from_object_id,
e.to_object_id,
e.from_object_instance_id,
e.to_object_instance_id,
e.mapping_id,
e.TO_OBJECT_FIELD_NAME,
e.TO_OBJECT_NAME,
e.TO_OBJECT_TYPE,
e.TO_object_type_name
FROM REP_MAPPING_CONN_PORTS e
JOIN REP_LOAD_SESSIONS c ON e.mapping_id = c.mapping_id
AND e.subject_id = c.subject_id
AND e.mapping_id <> 0
JOIN REP_TASK_INST b ON c.session_id = b.task_id
AND b.task_type = 68
JOIN REP_ALL_TASKS a ON b.workflow_id = a.task_id
AND a.task_type = 71
INNER JOIN REP_SESS_WIDGET_CNXS d ON d.session_id = c.session_id
),
cte1 AS (
SELECT DISTINCT
e.subject_area,
a.task_name,
e.mapping_name,
e.from_object_name,
e.from_object_field_name,
e.from_object_type_name,
e.from_object_type,
e.from_object_id,
e.to_object_id,
e.from_object_instance_id,
e.to_object_instance_id,
e.mapping_id,
e.TO_OBJECT_FIELD_NAME,
e.TO_OBJECT_NAME,
e.TO_OBJECT_TYPE,
e.TO_object_type_name
FROM REP_MAPPING_CONN_PORTS e
JOIN REP_LOAD_SESSIONS c ON e.mapping_id = c.mapping_id
AND e.subject_id = c.subject_id
AND e.mapping_id <> 0
JOIN REP_TASK_INST b ON c.session_id = b.task_id
AND b.task_type = 68
JOIN REP_ALL_TASKS a ON b.workflow_id = a.task_id
AND a.task_type = 71
INNER JOIN REP_SESS_WIDGET_CNXS d ON d.session_id = c.session_id
),
cte2 AS (
SELECT DISTINCT
e.subject_area,
a.task_name,
e.mapping_name,
e.from_object_name,
e.from_object_field_name,
e.from_object_type_name,
e.from_object_type,
e.from_object_id,
e.to_object_id,
e.from_object_instance_id,
e.to_object_instance_id,
e.mapping_id,
e.TO_OBJECT_FIELD_NAME,
e.TO_OBJECT_NAME,
e.TO_OBJECT_TYPE,
e.TO_object_type_name
FROM REP_MAPPING_CONN_PORTS e
JOIN REP_LOAD_SESSIONS c ON e.mapping_id = c.mapping_id
AND e.subject_id = c.subject_id
AND e.mapping_id <> 0
JOIN REP_TASK_INST b ON c.session_id = b.task_id
AND b.task_type = 68
JOIN REP_ALL_TASKS a ON b.workflow_id = a.task_id
AND a.task_type = 71
INNER JOIN REP_SESS_WIDGET_CNXS d ON d.session_id = c.session_id
)
SELECT DISTINCT
CTE.subject_area AS catalog,
concat(concat(CTE.task_name, '/'), CTE.mapping_name) AS schema,
CTE.from_object_id || '/' || CTE.from_object_name AS TABLE_NAME,
CTE.from_object_field_name AS column_name,
CTE.from_object_type_name AS remarks,
CTE.from_object_type,
' ' AS COLUMN_DEFAULT,
coalesce(f.column_number, 0) AS ordinal_position,
CASE
WHEN f.source_type IN ( 'varchar2', 'nvarchar', 'nvarchar2', 'number' ) THEN f.source_type || '(' || f.data_precision || ')'
WHEN f.source_type = 'number(p,s)' THEN 'number(' || f.data_precision || ',' || f.data_scale || ')'
WHEN f.source_type IS NOT NULL THEN f.source_type ELSE 'VARCHAR2' END AS type_name,
coalesce(f.source_type, 'VARCHAR2') AS data_type,
0 AS is_nullable
FROM CTE
LEFT JOIN rep_src_tbl_flds f ON CTE.from_object_id = f.table_id
AND CTE.from_object_field_name = f.column_name
WHERE CTE.from_object_type = 1
UNION
SELECT DISTINCT
CTE.subject_area AS catalog,
concat(concat(CTE.task_name, '/'), CTE.mapping_name) AS schema,
CTE.from_object_id || '/' || CTE.from_object_name AS table_name,
CTE.from_object_field_name AS column_name,
CTE.from_object_type_name AS remarks,
CTE.from_object_type,
' ' AS COLUMN_DEFAULT,
coalesce(f.column_number, 0) AS ordinal_position,
CASE
WHEN f.source_type IN ( 'varchar2', 'nvarchar', 'nvarchar2', 'number' ) THEN f.source_type || '(' || f.data_precision || ')'
WHEN f.source_type = 'number(p,s)' THEN 'number(' || f.data_precision || ',' || f.data_scale || ')'
WHEN f.source_type IS NOT NULL THEN f.source_type ELSE 'VARCHAR2' END AS type_name,
coalesce(f.source_type, 'VARCHAR2') AS data_type,
0 AS is_nullable
FROM CTE
LEFT JOIN rep_src_tbl_flds f ON CTE.from_object_id = f.table_id
AND CTE.from_object_field_name = f.column_name
WHERE CTE.from_object_type = 1
UNION
SELECT DISTINCT
CTE1.subject_area AS catalog,
concat(concat(CTE1.task_name, '/'), CTE1.mapping_name) AS schema,
CTE1.from_object_id || '/' || CTE1.from_object_name AS table_name,
CTE1.from_object_field_name AS column_name,
CTE1.from_object_type_name AS remarks,
CTE1.from_object_type,
' ' AS COLUMN_DEFAULT,
coalesce(h.field_id, 0) AS ordinal_position,
CASE WHEN h.datatype IN ( 'varchar2', 'nvarchar', 'nvarchar2', 'number' ) THEN h.datatype || '(' || h.wgt_datatype || ')'
WHEN h.datatype = 'number(p,s)' THEN 'number(' || h.wgt_prec || ',' || h.wgt_scale || ')'
WHEN h.datatype IS NOT NULL THEN h.datatype ELSE 'VARCHAR2' END AS type_name,
coalesce(h.datatype, 'VARCHAR2') AS data_type,
0 AS is_nullable
FROM CTE1
LEFT JOIN rep_widget_field h ON CTE1.FROM_object_id = h.widget_id
AND CTE1.from_object_field_name = h.field_name
WHERE CTE1.from_object_type NOT IN (1,2)
UNION
SELECT DISTINCT
cte1.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(cte1.task_name, '/'), cte1.mapping_name) AS SCHEMA,
cte1.TO_object_id || '/' || cte1.TO_OBJECT_NAME AS TABLE_NAME,
cte1.TO_OBJECT_FIELD_NAME AS COLUMN_NAME,
cte1.TO_object_type_name AS REMARKS,
cte1.TO_object_type,
' ' AS COLUMN_DEFAULT,
COALESCE(h.field_id, 0) AS ORDINAL_POSITION,
CASE
WHEN H.DATATYPE IN ('varchar2', 'nvarchar', 'nvarchar2', 'number') THEN H.DATATYPE || '(' || H.WGT_DATATYPE || ')'
WHEN H.DATATYPE = 'number(p,s)' THEN 'number(' || H.WGT_PREC || ',' || H.WGT_SCALE || ')'
WHEN H.DATATYPE IS NOT NULL THEN H.DATATYPE
ELSE 'VARCHAR2' END AS TYPE_NAME,
COALESCE(h.DATATYPE, 'VARCHAR2') AS DATA_TYPE,
0 AS IS_NULLABLE
FROM CTE1
LEFT JOIN rep_widget_field H ON cte1.TO_OBJECT_ID = H.WIDGET_ID
AND cte1.TO_OBJECT_FIELD_NAME = h.FIELD_NAME
WHERE cte1.to_object_type NOT IN (1,2)
UNION
SELECT DISTINCT
cte2.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(cte2.task_name, '/'), cte2.mapping_name) AS SCHEMA,
cte2.TO_object_id || '/' || cte2.TO_OBJECT_NAME AS TABLE_NAME,
cte2.TO_OBJECT_FIELD_NAME AS COLUMN_NAME,
cte2.TO_object_type_name AS REMARKS,
cte2.TO_object_type,
' ' AS COLUMN_DEFAULT,
COALESCE(i.TARGET_FIELD_NUMBER, 0) AS ORDINAL_POSITION,
CASE
WHEN i.TARGET_FIELD_DATATYPE IN ('varchar2', 'nvarchar', 'nvarchar2', 'number') THEN i.TARGET_FIELD_DATATYPE || '(' || i.TARGET_FIELD_PRECISION || ')'
WHEN i.TARGET_FIELD_DATATYPE = 'number(p,s)' THEN 'number(' || i.TARGET_FIELD_PRECISION || ',' || i.TARGET_FIELD_SCALE || ')'
WHEN i.TARGET_FIELD_DATATYPE IS NOT NULL THEN i.TARGET_FIELD_DATATYPE
ELSE 'VARCHAR2' END AS TYPE_NAME,
COALESCE(i.TARGET_FIELD_DATATYPE, 'VARCHAR2') AS DATA_TYPE,
0 AS IS_NULLABLE
FROM CTE2
LEFT JOIN rep_all_target_flds i ON ( CTE2.to_object_id = i.TARGET_ID
AND CTE2.to_object_field_name = i.TARGET_FIELD_NAME )
WHERE CTE2.to_object_type = 2
Foreign Key Query¶
WITH cte AS (
SELECT
SUBJECT_AREA
,subject_id
,mapping_name
,mapping_id
,from_object_id
,FROM_OBJECT_NAME
,FROM_OBJECT_FIELD_NAME
,to_object_id
,TO_OBJECT_NAME
,TO_OBJECT_FIELD_NAME
FROM REP_MAPPING_CONN_PORTS
)
SELECT
DISTINCT
e.SUBJECT_AREA AS PK_CATALOG,
a.task_name || '/' || e.mapping_name AS PK_SCHEMA,
e.from_object_id || '/' || e.FROM_OBJECT_NAME AS PK_TABLE,
e.FROM_OBJECT_FIELD_NAME AS PK_COLUMN,
e.SUBJECT_AREA AS FK_CATALOG,
a.task_name || '/' || e.mapping_name AS FK_SCHEMA,
e.to_object_id || '/' || e.TO_OBJECT_NAME AS FK_TABLE,
e.TO_OBJECT_FIELD_NAME AS FK_COLUMN
FROM cte e
JOIN REP_LOAD_SESSIONS c
ON e.mapping_id = c.mapping_id
AND e.subject_id = c.subject_id
AND e.mapping_id <> 0
JOIN REP_TASK_INST b
ON c.session_id = b.task_id
AND b.task_type = 68
JOIN REP_ALL_TASKS a
ON b.workflow_id = a.task_id
AND A.task_type=71
INNER JOIN REP_SESS_WIDGET_CNXS d
ON d.session_id = c.session_id
ORDER BY 1, 2, 3, 4
Transformation Expression and Condition Query¶
SELECT wfSchema.CATALOG, wfSchema.subject_id,wfSchema.SCHEMA,
exp.from_object_name AS TABLE_NAME,exp.Remarks,exp.expression,exp.Column_Name
FROM (SELECT DISTINCT c.subject_area AS CATALOG,
a.subject_id,
c.mapping_id,
Concat(Concat(a.task_name, '/'), c.mapping_name) AS SCHEMA
FROM rep_all_tasks a,
rep_task_inst b,
rep_load_sessions c
WHERE a.subject_id = c.subject_id
AND a.task_type = 71
AND a.task_id = b.workflow_id
AND b.task_type = 68
AND b.task_id = c.session_id
AND c.mapping_id <> 0
) wfSchema
INNER JOIN (SELECT DISTINCT mcp.subject_id,
mcp.mapping_id,
mcp.from_object_name,
wf.expression AS EXPRESSION,
wi.widget_type_name AS Remarks,
wf.field_name AS Column_Name
FROM rep_mapping_conn_ports mcp,
rep_widget_inst wi,
rep_widget_field wf
WHERE (mcp.mapping_id = wi.mapping_id
AND mcp.from_object_instance_id = wi.instance_id
AND wi.widget_type_name = mcp.from_object_type_name)
AND (wi.widget_type NOT IN ( 1, 2, 3 ))
AND (wi.widget_id = wf.widget_id )
AND (wf.field_name != wf.expression)
)exp
ON exp.subject_id = wfSchema.subject_id
AND exp.mapping_id = wfSchema.mapping_id
Verify Data (Transformation Expression)¶
This query can be used for conditions like Filter Condition, Joiner Condition, and more.
SELECT
wfSchema.CATALOG, wfSchema.subject_id, wfSchema.SCHEMA,
attr1.instance_name AS TABLE_NAME, attr1.widget_type, attr1.widget_id, attr1.attr_name AS REMARKS,
attr1.attr_value AS Condition
FROM (SELECT DISTINCT c.subject_area AS CATALOG,
a.subject_id,
c.mapping_id,
Concat(Concat(a.task_name, '/'), c.mapping_name) AS SCHEMA
FROM rep_all_tasks a,
rep_task_inst b,
rep_load_sessions c
WHERE a.subject_id = c.subject_id
AND a.task_type = 71
AND a.task_id = b.workflow_id
AND b.task_type = 68
AND b.task_id = c.session_id
AND c.mapping_id <> 0
) wfSchema
INNER JOIN (
SELECT wi.mapping_id,
rls.mapping_name,
wi.widget_id,
instance_id,
wi.instance_name,
rls.subject_id,
rls.session_id,
attr.attr_name,
attr.attr_value,
attr.widget_type
FROM
opb_widget_inst wi,
rep_load_sessions rls,
(
SELECT wa.widget_id ,wa.widget_type,wa.attr_name,wa.attr_value FROM rep_widget_attr wa WHERE wa.widget_type=10 AND wa.attr_id=1 AND wa.attr_type=2 AND wa.attr_value NOT IN ('0')
UNION ALL
SELECT wa.widget_id,wa.widget_type,wa.attr_name,wa.attr_value FROM rep_widget_attr wa WHERE wa.widget_type=12 AND wa.attr_id=3 AND wa.attr_type=2 AND wa.attr_value NOT IN ('0')
UNION ALL
SELECT wa.widget_id,wa.widget_type,wa.attr_name,wa.attr_value FROM rep_widget_attr wa WHERE wa.widget_type=80 AND wa.attr_id=8 AND wa.attr_type=5 AND wa.attr_value NOT IN ('0')
)attr
WHERE wi.widget_type IN (10,12,80)
AND wi.mapping_id=rls.mapping_id
AND wi.widget_id=attr.widget_id
AND rls.subject_id!=9
) attr1
ON attr1.subject_id = wfSchema.subject_id
AND attr1.mapping_id = wfSchema.mapping_id
Connection Details Query¶
SELECT
a.Object_ID,a.Object_Name,a.Object_Subtype,
a.user_name,a.connect_string,
MAX(CASE WHEN c.ATTR_NAME = 'Database name' THEN b.attr_value END) AS DATABASE_Name,
MAX(CASE WHEN c.ATTR_NAME = 'Server name' THEN b.attr_value END) AS ServerName
FROM opb_cnx a
INNER JOIN
opb_cnx_ATTR b ON a.Object_ID = b.Object_ID
INNER JOIN
OPB_MMD_CNX_attr c ON b.ATTR_ID = c.ATTR_ID
AND b.Object_Subtype = c.Object_Subtype
GROUP BY
a.Object_ID,a.Object_Name,a.Object_Subtype,a.user_name,a.connect_string
Schema Name for Source and Target¶
SELECT
CATALOG,SOURCE_SCHEMA,TABLE_NAME,TARGET_SCHEMA,CONNECTION_NAME FROM(SELECT
rp.mapping_id,
rp.session_id,
CONCAT(si.workflow_name,CONCAT('/',rp.mapping_name)) AS TARGET_SCHEMA,
rp.subject_area AS CATALOG,
rp.subject_id,
wi.widget_type,
wi.widget_type_name,
wi.instance_id,
wi.instance_name AS TABLE_NAME,
ati.attr_value AS SOURCE_SCHEMA,
si.connection_name
FROM rep_load_sessions rp,
rep_widget_inst wi,
(SELECT case when is_target=0 then 1 else 2 end AS widget_type,
si.subject_area,
si.subject_id,
si.connection_name,
si.workflow_name,
si.session_id
FROM rep_session_instances si
) si,
(SELECT
sat.session_id,
sat.attr_value,
sat.attr_id ,
case when sat.attr_id=3 then 2
when sat.attr_id=28 then 1
end AS widget_type,
sat.sess_widg_inst_id,
inst.instance_id
FROM opb_swidget_attr sat,
opb_swidget_inst inst
WHERE sat.session_id=inst.session_id
AND sat.sess_widg_inst_id=inst.sess_widg_inst_id
AND sat.attr_id in(3,28)) ati
WHERE (rp.mapping_id=wi.mapping_id AND rp.subject_id=wi.subject_id)
AND (rp.session_id=si.session_id AND rp.subject_id=si.subject_id)
AND (rp.session_id=ati.session_id AND wi.instance_id=ati.instance_id)
AND wi.widget_type=si.widget_type
AND wi.widget_type in (1,2))
SQL Server Database Queries¶
Filter Folder List Query¶
SELECT SUBJECT_AREA AS CATALOG FROM REP_SUBJECT
Schema Query¶
SELECT DISTINCT
c.subject_area CATALOG,
a.task_name workflow_name,
b.instance_name session_name,
c.mapping_name,
CONCAT(CONCAT(a.task_name,'/'),c.mapping_name) AS 'SCHEMA'
FROM REP_ALL_TASKS a,REP_TASK_INST b,REP_LOAD_SESSIONS c
WHERE a.subject_id=c.subject_id AND a.task_type=71
AND a.task_id=b.workflow_id AND b.task_type=68 AND b.task_id=c.session_id
AND c.MAPPING_ID <> 0
ORDER BY 1,2,3,4
Table Query¶
DROP TABLE IF EXISTS #temp
DROP TABLE IF EXISTS #temp_1
DROP TABLE IF EXISTS #temp_2
DROP TABLE if exists #query1_tables
DROP TABLE if exists #wfSchema
DROP TABLE if exists #mcp
SELECT DISTINCT
c.subject_area AS [CATALOG],
a.subject_id,
c.mapping_id,
concat( a.task_name , '/' ,c.mapping_name )AS [SCHEMA]
INTO #wfSchema
FROM rep_all_tasks a
JOIN rep_task_inst b ON a.task_id = b.workflow_id AND a.task_type = 71
JOIN rep_load_sessions c ON a.subject_id = c.subject_id AND b.task_id = c.session_id
WHERE c.mapping_id <> 0
SELECT DISTINCT
subject_id,
mapping_id,
from_object_name,
to_object_name,
from_object_id,
to_object_id,
from_object_instance_id,
from_object_type_name,
from_object_type
INTO #mcp
FROM rep_mapping_conn_ports
SELECT
[SCHEMA],[CATALOG], TABLE_NAME, EXPRESSION, REMARKS
INTO #query1_tables
FROM (
SELECT DISTINCT [SCHEMA],[CATALOG], FROM_TABLE AS TABLE_NAME,EXPRESSION,REMARKS
FROM (
SELECT
wfSchema.[CATALOG] AS [CATALOG],
wfSchema.[SCHEMA] AS [SCHEMA],
CONCAT(exp.from_object_id , '/' , exp.from_object_name) AS FROM_TABLE,
CONCAT(exp.to_object_id , '/' , exp.to_object_name ) AS TO_TABLE,
cast(exp.expression AS NVARCHAR(MAX)) AS EXPRESSION,
exp.Remarks AS REMARKS
FROM #wfSchema AS wfSchema
INNER JOIN (
SELECT DISTINCT
mcp.subject_id,
mcp.mapping_id,
mcp.from_object_name,
mcp.to_object_name,
mcp.from_object_id,
mcp.to_object_id,
CAST(wf.expression AS NVARCHAR(MAX))AS EXPRESSION,
wi.widget_type_name AS Remarks
FROM #MCP AS mcp
JOIN REP_WIDGET_INST WI
ON MCP.MAPPING_ID = WI.MAPPING_ID
AND MCP.FROM_OBJECT_INSTANCE_ID = WI.INSTANCE_ID
AND WI.WIDGET_TYPE_NAME = MCP.FROM_OBJECT_TYPE_NAME
JOIN REP_WIDGET_FIELD WF
ON WI.WIDGET_ID = WF.WIDGET_ID
WHERE
WI.WIDGET_TYPE NOT IN (1, 2, 3)
AND WF.FIELD_NAME != CAST(WF.EXPRESSION AS NVARCHAR(MAX))
) EXP
ON EXP.SUBJECT_ID = WFSCHEMA.SUBJECT_ID
AND EXP.MAPPING_ID = WFSCHEMA.MAPPING_ID
)SUQUERY1
UNION ALL
SELECT DISTINCT
[SCHEMA],[CATALOG],FROM_TABLE AS TABLE_NAME, EXPRESSION , REMARKS
FROM (
SELECT
wfSchema.[CATALOG] AS [CATALOG],
wfSchema.[SCHEMA] AS [SCHEMA],
attr1.FROM_TABLE AS FROM_TABLE,
attr1.TO_TABLE AS TO_TABLE,
CAST(attr1.attr_value AS NVARCHAR(MAX))AS EXPRESSION,
attr1.attr_name AS REMARKS
FROM #wfSchema AS wfSchema
INNER JOIN (
SELECT DISTINCT
wi.mapping_id,
rls.mapping_name,
rls.subject_id,
attr.attr_name,
CAST(attr.attr_value AS NVARCHAR(MAX)) AS attr_value,
CONCAT( mcp.from_object_id , '/' , mcp.from_object_name) AS FROM_TABLE,
CONCAT(mcp.to_object_id , '/' , mcp.to_object_name) AS TO_TABLE
FROM opb_widget_inst wi
JOIN rep_load_sessions rls
ON wi.mapping_id = rls.mapping_id
JOIN #mcp mcp
ON mcp.mapping_id = wi.mapping_id
AND wi.widget_type IN (4,10, 12, 80)
AND mcp.from_object_type = wi.widget_type
AND mcp.from_object_instance_id = wi.instance_id
JOIN (
SELECT
wa.widget_id, wa.widget_type, wa.attr_name, wa.attr_value
FROM rep_widget_attr wa
WHERE
wa.widget_type in (4,10)
AND wa.attr_id = 1
AND wa.attr_type = 2
AND cast(wa.attr_value AS NVARCHAR(max)) NOT IN ('0')
UNION ALL
SELECT
wa.widget_id, wa.widget_type, wa.attr_name, wa.attr_value
FROM rep_widget_attr wa
WHERE
wa.widget_type = 12
AND wa.attr_id = 3
AND wa.attr_type = 2
AND cast(wa.attr_value AS NVARCHAR(MAX)) NOT IN ('0')
UNION ALL
SELECT
wa.widget_id, wa.widget_type, wa.attr_name, wa.attr_value
FROM rep_widget_attr wa
WHERE
wa.widget_type = 80
AND wa.attr_id = 8
AND wa.attr_type = 5
AND CAST(wa.attr_value AS NVARCHAR(MAX)) NOT IN ('0')
) attr
ON wi.widget_id = attr.widget_id
) attr1
ON attr1.subject_id = wfSchema.subject_id
AND attr1.mapping_id = wfSchema.mapping_id
)SUQUERY2
UNION ALL
SELECT DISTINCT
[SCHEMA],[CATALOG],FROM_TABLE AS TABLE_NAME,EXPRESSION,REMARKS
FROM (
SELECT
wfSchema.[CATALOG] AS [CATALOG],
wfSchema.[SCHEMA] AS [SCHEMA],
concat(grp.from_object_id , '/' , grp.from_object_name) AS FROM_TABLE,
concat(grp.to_object_id , '/' , grp.to_object_name ) AS TO_TABLE,
grp.EXPRESSION AS EXPRESSION,
grp.REMARKS AS REMARKS
FROM
#wfSchema AS wfSchema
INNER JOIN (
SELECT DISTINCT
mcp.subject_id,
mcp.mapping_id,
mcp.from_object_name,
mcp.to_object_name,
mcp.from_object_id,
mcp.to_object_id,
grp1.attr_values AS EXPRESSION,
'GrpName_FilterCondition' AS REMARKS
FROM #mcp mcp
INNER JOIN rep_widget_inst wi
ON wi.mapping_id = mcp.mapping_id
INNER JOIN (
SELECT
grp.object_type,
grp.object_id,
STRING_AGG(cast(grp.attr_value AS nvarchar(max)), ', ')
WITHIN GROUP (ORDER BY grp.attr_id) AS attr_values
FROM opb_table_group grp
WHERE
grp.group_id IN (2, 5)
AND grp.attr_id <> 5
GROUP BY grp.object_type, grp.object_id
) grp1
ON wi.widget_id = grp1.object_id
WHERE
mcp.from_object_type_name IN ('Router')
AND wi.widget_type = 15
) grp
ON grp.subject_id = wfSchema.subject_id
AND grp.mapping_id = wfSchema.mapping_id
)SUQUERY3
) AS allsubuires
ORDER BY [SCHEMA], [CATALOG] DESC
---tbale query starting
SELECT session_id
INTO #temp
FROM REP_SESS_WIDGET_CNXS;
SELECT DISTINCT
e.SUBJECT_AREA,
a.TASK_NAME,
e.MAPPING_NAME,
e.FROM_OBJECT_NAME,
e.FROM_OBJECT_ID,
e.FROM_OBJECT_INSTANCE_ID,
e.FROM_OBJECT_TYPE_NAME,
e.TO_OBJECT_NAME,
e.TO_OBJECT_ID,
e.TO_OBJECT_INSTANCE_ID,
e.TO_OBJECT_TYPE_NAME,
e.TO_OBJECT_TYPE
INTO #temp_1
FROM REP_MAPPING_CONN_PORTS e
JOIN REP_LOAD_SESSIONS c
ON e.mapping_id = c.mapping_id
AND e.subject_id = c.subject_id
AND e.mapping_id <> 0
JOIN REP_TASK_INST b
ON c.session_id = b.task_id
AND b.task_type = 68
JOIN REP_ALL_TASKS a
ON b.workflow_id = a.task_id
INNER JOIN #temp d
ON d.session_id = c.session_id
SELECT *
INTO #TEMP_MAIN
FROM (
SELECT CATALOG, \"SCHEMA\", TABLE_NAME, TABLE_TYPE, REMARKS
FROM (
SELECT DISTINCT
e.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(e.TASK_NAME, '/'), e.MAPPING_NAME) AS \"SCHEMA\",
CONCAT(CONCAT(e.FROM_OBJECT_ID, '/'), e.FROM_OBJECT_NAME) AS TABLE_NAME,
e.FROM_OBJECT_INSTANCE_ID AS TABLE_TYPE,
e.FROM_OBJECT_TYPE_NAME AS REMARKS
FROM #temp_1 e
) subquery1
UNION
SELECT CATALOG, \"SCHEMA\", TABLE_NAME, TABLE_TYPE, REMARKS
FROM (
SELECT DISTINCT
E1.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(E1.TASK_NAME, '/'), E1.MAPPING_NAME) AS \"SCHEMA\",
CONCAT(CONCAT(E1.TO_OBJECT_ID, '/'), E1.TO_OBJECT_NAME) AS TABLE_NAME,
E1.TO_OBJECT_INSTANCE_ID AS TABLE_TYPE,
E1.TO_OBJECT_TYPE_NAME AS REMARKS
FROM #temp_1 E1
WHERE E1.TO_OBJECT_TYPE = 2
) subquery2
) MAINSUB
SELECT * FROM #TEMP_MAIN
WHERE TABLE_NAME NOT IN (
SELECT TABLE_NAME FROM #query1_tables)
ORDER BY 1
DROP TABLE IF EXISTS #TEMP_MAIN"
Column Query¶
DROP TABLE IF EXISTS #TEMP_1
DROP TABLE IF EXISTS #temp_2
SELECT
TASK_TYPE, TASK_ID, WORKFLOW_ID
INTO #temp_2
FROM REP_TASK_INST
WHERE TASK_TYPE = 68
SELECT DISTINCT
E.SUBJECT_AREA,
A.TASK_NAME,
E.MAPPING_NAME,
E.FROM_OBJECT_NAME,
E.FROM_OBJECT_FIELD_NAME,
E.FROM_OBJECT_TYPE_NAME,
E.FROM_OBJECT_TYPE,
E.FROM_OBJECT_ID,
E.TO_OBJECT_ID,
E.FROM_OBJECT_INSTANCE_ID,
E.TO_OBJECT_INSTANCE_ID,
E.MAPPING_ID,
E.TO_OBJECT_FIELD_NAME,
E.TO_OBJECT_NAME,
E.TO_OBJECT_TYPE,
E.TO_OBJECT_TYPE_NAME
INTO #TEMP_1
FROM REP_MAPPING_CONN_PORTS E
JOIN REP_LOAD_SESSIONS (NOLOCK) C
ON E.MAPPING_ID = C.MAPPING_ID
AND E.SUBJECT_ID = C.SUBJECT_ID
AND E.MAPPING_ID <> 0
JOIN #temp_2 B
ON C.SESSION_ID = B.TASK_ID
JOIN REP_ALL_TASKS (NOLOCK) A
ON B.WORKFLOW_ID = A.TASK_ID
AND A.TASK_TYPE = 71
INNER JOIN REP_SESS_WIDGET_CNXS (NOLOCK) D
ON D.SESSION_ID = C.SESSION_ID
SELECT DISTINCT
#TEMP_1.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(#TEMP_1.TASK_NAME, '/'), #TEMP_1.MAPPING_NAME) AS \"SCHEMA\",
CONCAT(CONCAT(#TEMP_1.FROM_OBJECT_ID, '/'), #TEMP_1.FROM_OBJECT_NAME) AS TABLE_NAME,
#TEMP_1.FROM_OBJECT_FIELD_NAME AS COLUMN_NAME,
#TEMP_1.FROM_OBJECT_TYPE_NAME AS REMARKS,
'' AS COLUMN_DEFAULT,
#TEMP_1.FROM_OBJECT_TYPE,
COALESCE(F.COLUMN_NUMBER, 0) AS ORDINAL_POSITION,
CASE
WHEN f.source_type IN ('varchar', 'nvarchar', 'number')
THEN f.source_type + '(' + CAST(f.data_precision AS VARCHAR) + ')'
WHEN f.source_type = 'number(p,s)'
THEN 'number(' + CAST(f.data_precision AS VARCHAR) + ',' + CAST(f.data_scale AS VARCHAR) + ')'
WHEN f.source_type IS NOT NULL
THEN f.source_type
ELSE 'VARCHAR'
END AS TYPE_NAME,
COALESCE(f.source_type, 'VARCHAR2') AS DATA_TYPE,
'' AS IS_NULLABLE
FROM #TEMP_1
LEFT JOIN REP_SRC_TBL_FLDS (NOLOCK) F
ON #TEMP_1.FROM_OBJECT_ID = F.TABLE_ID
AND #TEMP_1.FROM_OBJECT_FIELD_NAME = F.COLUMN_NAME
WHERE #TEMP_1.FROM_OBJECT_TYPE = 1
UNION
SELECT DISTINCT
#TEMP_1.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(#TEMP_1.TASK_NAME, '/'), #TEMP_1.MAPPING_NAME) AS \"SCHEMA\",
CONCAT(CONCAT(#TEMP_1.FROM_OBJECT_ID, '/'), #TEMP_1.FROM_OBJECT_NAME) AS TABLE_NAME,
#TEMP_1.FROM_OBJECT_FIELD_NAME AS COLUMN_NAME,
#TEMP_1.FROM_OBJECT_TYPE_NAME AS REMARKS,
'' AS COLUMN_DEFAULT,
#TEMP_1.FROM_OBJECT_TYPE,
COALESCE(H.FIELD_ID, 0) AS ORDINAL_POSITION,
CASE
WHEN h.datatype IN ('varchar', 'nvarchar', 'number')
THEN h.datatype + '(' + CAST(h.wgt_datatype AS VARCHAR) + ')'
WHEN h.datatype = 'number(p,s)'
THEN 'number(' + CAST(h.wgt_prec AS VARCHAR) + ',' + CAST(h.wgt_scale AS VARCHAR) + ')'
WHEN h.datatype IS NOT NULL
THEN h.datatype
ELSE 'VARCHAR'
END AS TYPE_NAME,
COALESCE(h.datatype, 'VARCHAR2') AS DATA_TYPE,
'' AS IS_NULLABLE
FROM #TEMP_1 (NOLOCK)
INNER JOIN REP_WIDGET_FIELD (NOLOCK) H
ON #TEMP_1.FROM_OBJECT_ID = H.WIDGET_ID
AND #TEMP_1.FROM_OBJECT_FIELD_NAME = H.FIELD_NAME
WHERE #TEMP_1.FROM_OBJECT_TYPE NOT IN (1, 2)
UNION
SELECT DISTINCT
#TEMP_1.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(#TEMP_1.TASK_NAME, '/'), #TEMP_1.MAPPING_NAME) AS \"SCHEMA\",
CONCAT(CONCAT(#TEMP_1.TO_OBJECT_ID, '/'), #TEMP_1.TO_OBJECT_NAME) AS TABLE_NAME,
#TEMP_1.TO_OBJECT_FIELD_NAME AS COLUMN_NAME,
#TEMP_1.TO_OBJECT_TYPE_NAME AS REMARKS,
'' AS COLUMN_DEFAULT,
#TEMP_1.TO_OBJECT_TYPE,
COALESCE(H.FIELD_ID, 0) AS ORDINAL_POSITION,
CASE
WHEN H.DATATYPE IN ('varchar', 'nvarchar', 'number')
THEN H.DATATYPE + '(' + CAST(H.WGT_DATATYPE AS VARCHAR) + ')'
WHEN H.DATATYPE = 'number(p,s)'
THEN 'number(' + CAST(H.WGT_PREC AS VARCHAR) + ',' + CAST(H.WGT_SCALE AS VARCHAR) + ')'
WHEN H.DATATYPE IS NOT NULL
THEN H.DATATYPE
ELSE 'VARCHAR'
END AS TYPE_NAME,
COALESCE(H.DATATYPE, 'VARCHAR2') AS DATA_TYPE,
'' AS IS_NULLABLE
FROM #TEMP_1 (NOLOCK)
INNER JOIN REP_WIDGET_FIELD (NOLOCK) H
ON #TEMP_1.TO_OBJECT_ID = H.WIDGET_ID
AND #TEMP_1.TO_OBJECT_FIELD_NAME = H.FIELD_NAME
WHERE #TEMP_1.TO_OBJECT_TYPE NOT IN (1, 2)
UNION
SELECT DISTINCT
#TEMP_1.SUBJECT_AREA AS CATALOG,
CONCAT(CONCAT(#TEMP_1.TASK_NAME, '/'), #TEMP_1.MAPPING_NAME) AS \"SCHEMA\",
CONCAT(CONCAT(#TEMP_1.TO_OBJECT_ID, '/'),#TEMP_1.TO_OBJECT_NAME) AS TABLE_NAME,
#TEMP_1.TO_OBJECT_FIELD_NAME AS COLUMN_NAME,
#TEMP_1.TO_OBJECT_TYPE_NAME AS REMARKS,
'' AS COLUMN_DEFAULT,
#TEMP_1.TO_OBJECT_TYPE,
COALESCE(I.TARGET_FIELD_NUMBER, 0) AS ORDINAL_POSITION,
CASE
WHEN I.TARGET_FIELD_DATATYPE IN ('varchar', 'nvarchar', 'number')
THEN I.TARGET_FIELD_DATATYPE + '(' + CAST(I.TARGET_FIELD_PRECISION AS VARCHAR) + ')'
WHEN I.TARGET_FIELD_DATATYPE = 'number(p,s)'
THEN 'number(' + CAST(I.TARGET_FIELD_PRECISION AS VARCHAR) + ',' + CAST(I.TARGET_FIELD_SCALE AS VARCHAR) + ')'
WHEN I.TARGET_FIELD_DATATYPE IS NOT NULL
THEN I.TARGET_FIELD_DATATYPE
ELSE 'VARCHAR'
END AS TYPE_NAME,
COALESCE(I.TARGET_FIELD_DATATYPE, 'VARCHAR') AS DATA_TYPE,
'' AS IS_NULLABLE
FROM #TEMP_1 (NOLOCK)
LEFT JOIN rep_all_target_flds (NOLOCK) I
ON #TEMP_1.TO_OBJECT_ID = I.TARGET_ID
AND #TEMP_1.TO_OBJECT_FIELD_NAME = I.TARGET_FIELD_NAME
WHERE #TEMP_1.TO_OBJECT_TYPE = 2
Foreign Key Query¶
DROP TABLE IF EXISTS #temp
SELECT
e.SUBJECT_AREA,
e.mapping_name,
e.FROM_OBJECT_NAME,
e.FROM_OBJECT_FIELD_NAME,
e.FROM_OBJECT_ID,
e.TO_OBJECT_NAME,
e.TO_OBJECT_FIELD_NAME,
e.TO_OBJECT_ID,
e.mapping_id,
e.subject_id
INTO #temp
FROM REP_MAPPING_CONN_PORTS e
SELECT DISTINCT
e.SUBJECT_AREA AS PK_CATALOG,
CONCAT(CONCAT(a.task_name, '/'), e.mapping_name) AS PK_SCHEMA,
CONCAT(CONCAT(e.FROM_OBJECT_ID, '/'),e.FROM_OBJECT_NAME) AS PK_TABLE,
e.FROM_OBJECT_FIELD_NAME AS PK_COLUMN,
e.SUBJECT_AREA AS FK_CATALOG,
CONCAT(CONCAT(a.task_name, '/'), e.mapping_name) AS FK_SCHEMA,
CONCAT(CONCAT(e.TO_OBJECT_ID, '/'), e.TO_OBJECT_NAME) AS FK_TABLE,
e.TO_OBJECT_FIELD_NAME AS FK_COLUMN
FROM #temp e
JOIN REP_LOAD_SESSIONS c
ON e.mapping_id = c.mapping_id
AND e.subject_id = c.subject_id
AND e.mapping_id <> 0
JOIN REP_TASK_INST b
ON c.session_id = b.task_id
AND b.task_type = 68
JOIN REP_ALL_TASKS a
ON b.workflow_id = a.task_id
WHERE a.task_type = 71
ORDER BY 1, 2, 3, 4
Transformation Column Expression Query¶
SELECT wfSchema.CATALOG, wfSchema.subject_id,wfSchema."SCHEMA",
exp.from_object_name AS TABLE_NAME,exp.Remarks,
exp.expression,exp.Column_Name
FROM (SELECT DISTINCT c.subject_area AS CATALOG,
a.subject_id,
c.mapping_id,
Concat(Concat(a.task_name, '/'), c.mapping_name) AS "SCHEMA"
FROM rep_all_tasks a,
rep_task_inst b,
rep_load_sessions c
WHERE a.subject_id = c.subject_id
AND a.task_type = 71
AND a.task_id = b.workflow_id
AND b.task_type = 68
AND b.task_id = c.session_id
AND c.mapping_id <> 0
) wfSchema
INNER JOIN (SELECT DISTINCT mcp.subject_id,
mcp.mapping_id,
mcp.from_object_name,
CAST(wf.expression AS VARCHAR(MAX)) AS EXPRESSION,
wi.widget_type_name AS Remarks,
wf.field_name AS Column_Name
FROM rep_mapping_conn_ports mcp,
rep_widget_inst wi,
rep_widget_field wf
WHERE (mcp.mapping_id = wi.mapping_id AND mcp.from_object_instance_id = wi.instance_id AND wi.widget_type_name = mcp.from_object_type_name)
AND (wi.widget_type NOT IN ( 1, 2, 3 ))
AND (wi.widget_id = wf.widget_id )
AND (wi.widget_type NOT IN ( 1, 2, 3 ))
AND (wi.widget_id = wf.widget_id )
AND (wf.field_name != CAST(wf.expression AS VARCHAR(MAX)))
)exp
ON exp.subject_id = wfSchema.subject_id
AND exp.mapping_id = wfSchema.mapping_id
Transformation Column Expression Query¶
SELECT
wfSchema.CATALOG,
wfSchema.subject_id,
wfSchema."SCHEMA",
attr1.instance_name AS TABLE_NAME,
attr1.widget_type,
attr1.widget_id,
attr1.attr_name AS REMARKS,
attr1.attr_value AS Condition
FROM
(
SELECT DISTINCT
c.subject_area AS CATALOG,
a.subject_id,
c.mapping_id,
Concat(Concat(a.task_name, '/'), c.mapping_name) AS "SCHEMA"
FROM
rep_all_tasks a,
rep_task_inst b,
rep_load_sessions c
WHERE
a.subject_id = c.subject_id
AND a.task_type = 71
AND a.task_id = b.workflow_id
AND b.task_type = 68
AND b.task_id = c.session_id
AND c.mapping_id <> 0
) wfSchema
INNER JOIN
(
SELECT
wi.mapping_id,
rls.mapping_name,
wi.widget_id,
instance_id,
wi.instance_name,
rls.subject_id,
rls.session_id,
attr.attr_name,
attr.attr_value,
attr.widget_type
FROM
opb_widget_inst wi,
rep_load_sessions rls,
(
SELECT
wa.widget_id,
wa.widget_type,
wa.attr_name,
CONVERT(varchar(MAX), wa.attr_value) AS attr_value
FROM
rep_widget_attr wa
WHERE
(wa.widget_type = 10 AND wa.attr_id = 1 AND wa.attr_type = 2 AND CAST(wa.attr_value AS varchar(MAX)) NOT IN ('0'))
OR
(wa.widget_type = 12 AND wa.attr_id = 3 AND wa.attr_type = 2 AND CAST(wa.attr_value AS varchar(MAX)) NOT IN ('0'))
OR
(wa.widget_type = 80 AND wa.attr_id = 8 AND wa.attr_type = 5 AND CAST(wa.attr_value AS varchar(MAX)) NOT IN ('0'))
) attr
WHERE
wi.widget_type in (10,12,80)
AND wi.mapping_id=rls.mapping_id
AND wi.widget_id=attr.widget_id
AND rls.subject_id!=9
) attr1
ON
attr1.subject_id = wfSchema.subject_id
AND attr1.mapping_id = wfSchema.mapping_id;
Connection Details Query¶
SELECT
rp.mapping_id,
rp.session_id,
CONCAT(si.workflow_name,CONCAT('/',rp.mapping_name)) AS TARGET_SCHEMA,
rp.subject_area AS CATALOG,
rp.subject_id,
wi.widget_type,
wi.widget_type_name,
wi.instance_id,
wi.instance_name AS TABLE_NAME,
ati.attr_value AS SOURCE_SCHEMA,
si.connection_name
FROM rep_load_sessions rp,
rep_widget_inst wi,
(SELECT case when is_target=0 then 1 else 2 end AS widget_type,
si.subject_area,
si.subject_id,
si.connection_name,
si.workflow_name,
si.session_id
FROM rep_session_instances si
) si,
(SELECT
sat.session_id,
sat.attr_value,
sat.attr_id ,
case when sat.attr_id=3 then 2
when sat.attr_id=28 then 1
end AS widget_type,
sat.sess_widg_inst_id,
inst.instance_id
FROM opb_swidget_attr sat,
opb_swidget_inst inst
WHERE sat.session_id=inst.session_id
AND sat.sess_widg_inst_id=inst.sess_widg_inst_id
AND sat.attr_id in(3,28)) ati
WHERE (rp.mapping_id=wi.mapping_id AND rp.subject_id=wi.subject_id)
AND (rp.session_id=si.session_id AND rp.subject_id=si.subject_id)
AND (rp.session_id=ati.session_id AND wi.instance_id=ati.instance_id)
AND wi.widget_type=si.widget_type
AND wi.widget_type in (1,2)