A computer-implemented method for tracing a data lineage of a data warehouse, the computer-implemented method comprising: mapping a target data element to one or more source data elements, wherein the target data element comprises a column of a target data table definition, and wherein each source data element comprises a column of a source table definition and the target data element is derived from the one or more source data elements using a data transformation; extending the target table definition to comprise one or more auxiliary columns to store one or more source surrogate keys, wherein each source surrogate key comprises an identity of a source data record that comprises a corresponding source data element; storing, for each source data element, a data lineage mapping system record within a data lineage mapping system table that represents the mapping of the target data element and a corresponding source data element together with a column identity of an auxiliary column of a target table that stores a source surrogate key value, wherein the data lineage mapping system record comprises the corresponding source data element, the target data element, and the one or more auxiliary columns, and preferably a type of the data transformation; storing one or more source surrogate key values within one or more auxiliary columns of a target data record of the target table at the time the target data record is created or modified; storing, for each target data record, one or more shadow system records within a shadow system table that represents a mapping of the source data record and a corresponding target data record; wherein the data lineage comprises the one or more data lineage mapping system records, and the one or more shadow system records, wherein the shadow system record comprises a source surrogate key value that identifies the source data record, a target surrogate key value that identifies the corresponding target data record, and one or more auxiliary column values; storing a filter column identity within a further auxiliary column of the target data record, wherein the filter column identity identifies a filter column of the source data record; and storing a filter value, used for the data transformation, within a second further auxiliary column of the target data record, wherein the filter value is a filter value of the source data record. mapping a target data element to one or more source data elements, wherein the target data element comprises a column of a target data table definition, and wherein each source data element comprises a column of a source table definition and the target data element is derived from the one or more source data elements using a data transformation; extending the target table definition to comprise one or more auxiliary columns to store one or more source surrogate keys, wherein each source surrogate key comprises an identity of a source data record that comprises a corresponding source data element; storing, for each source data element, a data lineage mapping system record within a data lineage mapping system table that represents the mapping of the target data element and a corresponding source data element together with a column identity of an auxiliary column of a target table that stores a source surrogate key value, wherein the data lineage mapping system record comprises the corresponding source data element, the target data element, and the one or more auxiliary columns, and preferably a type of the data transformation; storing one or more source surrogate key values within one or more auxiliary columns of a target data record of the target table at the time the target data record is created or modified; storing, for each target data record, one or more shadow system records within a shadow system table that represents a mapping of the source data record and a corresponding target data record; wherein the data lineage comprises the one or more data lineage mapping system records, and the one or more shadow system records, wherein the shadow system record comprises a source surrogate key value that identifies the source data record, a target surrogate key value that identifies the corresponding target data record, and one or more auxiliary column values; storing a filter column identity within a further auxiliary column of the target data record, wherein the filter column identity identifies a filter column of the source data record; and storing a filter value, used for the data transformation, within a second further auxiliary column of the target data record, wherein the filter value is a filter value of the source data record.