Purpose (problem description)

This page handle the case when a Data Function is missing from TCC

Observed in CAST AIP
Release
Yes/No
8.2.x(tick)
8.1.x(tick)
8.0.x(tick)
7.3.x(tick)
7.2.x(tick)
7.0.x(tick)
Observed on RDBMS
RDBMS
Yes/No
Oracle Server(tick)
Microsoft SQL Server(tick)
CSS2(tick)
CSS1(tick)
Step by Step scenario
  • Perform an analysis with Data base objects.
  • Compute results on TCC: Some tables are not displayed in the list of data functions althrough they are visible in Enlighten
Action Plan

Relevant input

  • CAST Support Tool (CST) - alias Sherlock without source code
  • Screenshot from enlighten showing an example of a table visible in Enlighten 
  • Screenshot from TCC showing the table not visible as a Data function in TCC 

Check that the missing table is not a lookup table

First, you need to check whether the missing table is a lookup table.

What is a lookup table?

The below information can be found in 7.2.x TCC online documentation "What's new in the CAST Transaction Configuration Center ? > Right hand panel > Setup node > Built-in parameters node" section:

MG CISC AFP Specifications for Data Functions
By default, CAST will pre-populate the Names of tables to ignore (case insensitive regular expressions) with a set of pre-defined rules to EXCLUDE certain objects from being considered as Data Functions. These pre-defined rules are in line with the OMG CISC AFP Specifications for Data Functions.In addition, the OMG CISC AFP Specifications dictate that other database tables (over and above the pre-defined rules discussed above) should NOT be considered as Data Functions. These objects are those with a lookup structure that match the following criteria:
  • Have one primary key
  • Optionally, have (only) one integer attribute to support order (a single integer attribute is allowed to support indexing and sorting the lookup data)
  • Have no other database table with a cascade delete relation to it
  • Have less than three text attributes or have a set of text attributes whose names match name, message, type, code, description, desc, or label.

Objects that match all of the above criteria will NOT be considered as Data Functions. This behaviour cannot be altered or overriden.This explains why some database tables are never displayed as Data Functions in the CAST Transaction Configuration Center.

How to check whether a missing table is a lookup table?

The following query returns the list of lookup tables in the KB

Select KeyNam from
FP_Lookup_Tables
join Keys 
on object_id = idkey

If the table you are looking at is in the list, it is considered as a lookup table. This table should fit the criteria above. Hence, it is a normal behaviour.

If the table you are looking at is not in the list, move to the next check

Check that the missing table does not correspond to a row in DSS_KeysExtraDeleted

To be done. Please contact CAST support for further investigation.


Check that the missing table is not merged with another one

If a table is merged with another one, it will not appear as a independent datafunction. Instead, it will be visible in the detail of the main datafunction.

To check whether the table you are looking for is merged, please run the following queries at your side:  

select *
from dss_datafunction
join keys 
on idkey = maintable_id
where keynam = <NAMEofTheTable>

If this first query does not return any rows, it means that the missing table is not an independent datafunction (it is not the main table of a datafunction). In this case, please run the following query to check whether it is merged:

select dk.object_name
from dss_datafunctiondetails ddd
join keys k
on k.idkey = ddd.table_id
join dss_keysextra dk
on dk.object_id = ddd.object_id 
where k.keynam = <NAMEofTheTable>

If this second query return a row, it means that your table is merged with the datafunction returned by this query.

In case the table is merged within another datafunction, it is expected to not see it in the list of datafunctions

Example:

You are looking at 'SUIVI_DONNEES_PURGE' table and you are not able to find it in the list of Datafunctions

select *
from dss_datafunction
join keys 
on idkey = maintable_id
where keynam = 'SUIVI_DONNEES_PURGE'


This query does not return any row, in this case the table  'SUIVI_DONNEES_PURGE'  is not a main table.

 select dk.object_name
from dss_datafunctiondetails ddd
join keys k
on k.idkey = ddd.table_id
join dss_keysextra dk
on dk.object_id = ddd.object_id 
where k.keynam = 'SUIVI_DONNEES_PURGE'


returns 'SUIVI_EXTRACTEUR'

This means that the table 'SUIVI_DONNEES_PURGE' is merged within the datafunction named 'SUIVI_EXTRACTEUR'. You can check this by looking at the detail of the  'SUIVI_EXTRACTEUR' in TCC as shown in below screenshot


Check if the table is not excluded by one of the custom filter rules

To be done. Please contact CAST support for further investigation.

Check whether excluded in fp_filter_datafunctions() function

What is fp_filter_datafunctions()?

fp_filter_datafunctions() is a KB function that is run at the end of the computation of TCC results during the snapshot generation to mark some data functions as deleted using query. By default, this fp_filter_datafunctions() is delivred empty but it can be overwritten by the customer using  n SQL tool. The SQL tool that overwrites the function need to be run at least once for the function to be updated in the KB.

Why using fp_filter_datafunctions()?

In 7.0, the free definition section does not exist. Implementing this function was the way of defining some exclusion rules that cannot be done using the other sections (by name, by inheritence, by type)

In 7.2 and later, this function should no longer be used. It should be replaced by free definition entries in TCC 

How to check whether the missing Data function is not appearing because of the fp_filter_datafunctions()?

First check if the function fp_filter_datafunctions() is empty or not.

If it is not empty, please look at the filtering in the function to check whether the missing Data function is filtered or not by this function

Example

In this example, the customer was compaling about the fact that 'STG_POINTS_OFR_HIST' datafunction was missing despites the fact that he did remove the default filter *.history*  from TCC

 

When looking at the fp_filter_datafunctions() function in the KB, we can see that it is not empty. In particular, there is the following part:

  • As you can see, the function fp_filter_datafunctions() has been filled by the customer in order to filter objects based on their names and we can see a filter %HIST% .
  • These objects are marked as deleted after wards.
  • Since the 'STG_POINTS_OFR_HIST' is falling under this filter, it is normal that it is marked as deleted
  • To avoid having your HIST table marked as deleted, he needs to update this function and remove the following line from your custom script:
  • or upper(o.object_name) like '%HIST%'
Notes/comments

Reference webcall 29027,28576

Related Pages