Skip to content

Export Outputs

An Export operation writes Qualytics' own metadata into the enrichment destination, so it can be queried and reported on alongside your data. Six outputs can be exported:

  • _<datastore_name>_export_anomalies
  • _<datastore_name>_export_anomaly_records, when Anomalies are exported with Merge with Source Records
  • _<datastore_name>_export_checks
  • _<datastore_name>_export_field_profiles
  • _export_check_templates
  • _export_user_permissions

The first four use the source datastore's name, normalized to lowercase with non-alphanumeric characters replaced by underscores, with a leading underscore. For example, Acme Sales 2024 exports checks to _acme_sales_2024_export_checks. Unlike Scan, Remediation, and Materialize outputs, these names do not use the configurable enrichment prefix. Renaming the source changes the names used by future exports; it does not rename existing outputs.

The last two are global exports: they hold data that belongs to the whole organization rather than to a datastore, so their outputs have no datastore-name prefix. _export_check_templates is written by Export Check Templates from the Library, and either one can run from a Flow through a Global Export action; _export_user_permissions is written only that way. A global export runs as a Global Export operation listed in the selected enrichment datastore's Activity tab. When it finishes, its output is added to that datastore as a container straight away, without a Sync, and then profiled.

Note

Every export uses a create or replace approach: the output is created if it does not exist and replaced entirely if it does, so it always holds the latest export and nothing older.

For how to run an export, see the Export Operation documentation. For the shape of the exported records as Qualytics defines them, see the Export Schema; this page documents the outputs as they land in the destination.

Column names below are shown in uppercase for readability; identifier casing and physical types depend on the destination connector. Timestamps in the export payload are text. JSON values are serialized into string columns.

_EXPORT_ANOMALIES output

Contains metadata from anomalies in a distinct normalized format. Each export captures the current anomaly status; replacing the output does not preserve a history of status changes.

Columns

Name Data Type Description
ID NUMBER Unique identifier for the anomaly.
CREATED STRING Timestamp of anomaly creation.
UUID STRING Universal Unique Identifier of the anomaly.
TYPE STRING Type of the anomaly (e.g., 'shape').
STATUS STRING Current status of the anomaly (e.g., 'Active').
IMPACT_LEVEL STRING The anomaly's impact: low, medium, high, or critical.
GLOBAL_TAGS STRING Tags associated globally with the anomaly.
CONTAINER_ID NUMBER Identifier for the associated container.
SOURCE_CONTAINER STRING Name of the source container.
DATASTORE_ID NUMBER Identifier for the associated datastore.
SOURCE_DATASTORE STRING Name of the source datastore.
GENERATED_AT STRING Timestamp when the export was generated.

_EXPORT_ANOMALY_RECORDS output

Written when Anomalies are exported with Merge with Source Records, and shown in Qualytics as Anomalies with Records (<datastore>). It holds the columns of the _EXPORT_ANOMALIES output, joined with the source records each anomaly flagged: one row per anomaly, failed check, and source record. An anomaly with no source records is written once per failed check with an empty RECORD. Like the other exports, each run replaces it whole.

Columns (in addition to those of _EXPORT_ANOMALIES)

Name Data Type Description
CHECK_ID NUMBER A failed check on the anomaly, not proof that this particular RECORD failed that check. See Check attribution.
SCAN_ID NUMBER The Scan operation that raised the anomaly. Matches OPERATION_ID in the Scan outputs.
SOURCE_PARTITION STRING The partition the anomaly was found in.
FIRST_IDENTIFIED_AT STRING When the anomaly was first identified: the earliest CREATED among the anomalies on the same container that share its fingerprint, whatever their status. Equals CREATED when there is no earlier match.
RECORD STRING One source record the anomaly flagged, as JSON, read from this destination's source records output when the export ran. Empty when the anomaly has none.

Masked when viewed

RECORD holds source data as the source records output stores it. In Qualytics row previews, RECORD stays masked even when masked values are revealed, as it does for the source records output. Profile histogram values are masked by default, but users with the Editor team permission on the destination can explicitly reveal or export them; those values can contain full JSON records. See Field Masking and Export and Why the RECORD Column Is Always Masked. Query the destination directly to read the complete output.

_EXPORT_CHECKS output

Contains metadata from quality checks.

Columns

Name Data Type Description
ADDITIONAL_METADATA STRING JSON-formatted string containing additional metadata for the check.
COVERAGE FLOAT Represents the expected tolerance of the rule.
CREATED STRING Created timestamp of the check.
DELETED_AT STRING Deleted timestamp of the check.
DESCRIPTION STRING Description of the check.
FIELDS STRING Fields involved in the check separated by comma.
FILTER STRING Criteria used to filter data when asserting the check.
GENERATED_AT STRING Indicates when the export was generated.
GLOBAL_TAGS STRING Represents the global tags of the check separated by comma.
IS_PASSING BOOLEAN Current pass/fail status; may be null before assertion.
FIRST_ASSERTED STRING Earliest Scan start time that produced a pass or fail result.
STATUS STRING Active, Draft, Invalid, or Discarded.
ID NUMBER Unique identifier for the check.
INFERRED BOOLEAN Indicates whether the check is AI Managed (managed by Qualytics AI). The column name INFERRED is preserved for backward compatibility; in the UI the same concept is labeled AI Managed.
LAST_ASSERTED STRING Timestamp of the last assertion performed on the check.
LAST_EDITOR STRING Represents the last editor of the check.
LAST_UPDATED STRING Represents the last updated timestamp of the check.
PROPERTIES STRING Specific properties for the check in a JSON format.
RULE_TYPE STRING Type of rule applied in the check.
WEIGHT FLOAT Deprecated numeric weight of the check, kept for existing queries. Use IMPORTANCE_LEVEL instead.
IMPORTANCE_LEVEL STRING The check's importance: low, medium, high, or critical.
DATASTORE_ID NUMBER Identifier of the datastore used in the check.
CONTAINER_ID NUMBER Identifier of the container used in the check.
TEMPLATE_ID NUMBER Identifier of the template id associated to the check.
SOURCE_CONTAINER STRING Name of the container used in the check.
SOURCE_DATASTORE STRING Name of the datastore used in the check.

_EXPORT_CHECK_TEMPLATES output

Contains metadata from check templates.

Columns

Name Data Type Description
ADDITIONAL_METADATA STRING JSON-formatted string containing additional metadata for the check.
COVERAGE FLOAT Represents the expected tolerance of the rule.
CREATED STRING Created timestamp of the check.
DELETED_AT STRING Deleted timestamp of the check.
DESCRIPTION STRING Description of the check.
FIELDS STRING Fields involved in the check separated by comma.
FILTER STRING Criteria used to filter data when asserting the check.
GENERATED_AT STRING Indicates when the export was generated.
GLOBAL_TAGS STRING Represents the global tags of the check separated by comma.
ID NUMBER Unique identifier for the check.
LAST_EDITOR STRING Represents the last editor of the check.
LAST_UPDATED STRING Represents the last updated timestamp of the check.
PROPERTIES STRING Specific properties for the check in a JSON format.
RULE_TYPE STRING Type of rule applied in the check.
TEMPLATE_CHECKS_COUNT NUMBER The count of associated checks to the template.
TEMPLATE_LOCKED BOOLEAN Indicates whether the check template is locked or not.
WEIGHT FLOAT Deprecated numeric weight of the template, kept for existing queries.

_EXPORT_USER_PERMISSIONS output

Contains the Access Report: one row per active user and datastore that user can access, with the user's effective team permission on it. Every export writes the full report, and deactivated users are not included. All rows of one export share the same GENERATED_AT, and the next export replaces them, so copy each snapshot elsewhere if you need a history.

Columns

Name Data Type Description
USER_ID NUMBER Identifier of the user.
USER_NAME STRING The user's name.
USER_EMAIL STRING The user's email.
USER_ROLE STRING The user's role: Admin, Manager, or Member.
USER_TYPE STRING Human for a person who signs in, Service for a Service User.
USER_DEACTIVATED BOOLEAN Whether the user is deactivated. Always false, since the export includes active users only.
DATASTORE_ID NUMBER Identifier of the datastore.
DATASTORE_NAME STRING Name of the datastore.
DATASTORE_TYPE STRING The datastore's connector type, such as postgresql or snowflake.
DATASTORE_STORE_TYPE STRING Whether the datastore is a JDBC (jdbc) or a DFS (dfs) datastore.
DATASTORE_ENRICHMENT_ONLY BOOLEAN Whether the datastore is an enrichment datastore.
EFFECTIVE_PERMISSION STRING The team permission the user holds on the datastore: Editor, Author, Drafter, Viewer, or Reporter. When several teams grant access, the highest level applies. Admins are always Editor.
ACCESS_SOURCE STRING team when access comes from team membership, role when it comes from the Admin role.
GRANTING_TEAMS STRING Every team that grants the user access to the datastore, with the level each grants, highest first, for example Data Eng (Editor), Analysts (Viewer). Empty when no team grants access, which happens only for Admins.
GRANTING_TEAM_IDS STRING The identifiers of the teams in GRANTING_TEAMS, in the same order, for example 3, 7.
GENERATED_AT STRING Timestamp of the export. The same for every row of one snapshot.

_EXPORT_FIELD_PROFILES output

Contains metadata from field profiles.

Columns

Name Data Type Description
APPROXIMATE_DISTINCT_VALUES FLOAT Estimated number of distinct values in the field.
COMPLETENESS FLOAT Ratio of non-null entries to total entries in the field.
CONTAINER_ID NUMBER Identifier for the container holding the field.
SOURCE_CONTAINER STRING Name of the container holding the field.
CONTAINER_CONTAINER_TYPE STRING Container kind, such as table, file, or computed_table.
CREATED STRING Date when the field profile was created.
DATASTORE_ID NUMBER Identifier for the datastore containing the field.
SOURCE_DATASTORE STRING Name of the datastore containing the field.
DATASTORE_TYPE STRING Type of datastore.
ENTROPY FLOAT Measure of randomness in the information being processed.
FIELD_GLOBAL_TAGS STRING Global tags associated with the field.
FIELD_ID NUMBER Unique identifier for the field.
FIELD_NAME STRING Name of the field being profiled.
FIELD_DISPLAY_NAME STRING Custom display name of the field, when set.
FIELD_NATIVE_TYPE STRING Type declared by the source, such as VARCHAR.
FIELD_STATUS STRING active, masked, missing, or excluded.
FIELD_DESCRIPTION STRING Field description, when set.
FIELD_PROFILE_ID NUMBER Identifier for the field profile record.
FIELD_QUALITY_SCORE Nullable Currently exported as null. Read quality scores in Qualytics or through the API instead.
FIELD_TYPE STRING Data type of the field.
FIELD_WEIGHT NUMBER Weight assigned to the field for quality scoring.
GENERATED_AT STRING Date when the field profile was generated.
HISTOGRAM_BUCKETS STRING Distribution of data within the field represented as buckets.
IS_NOT_NORMAL BOOLEAN Indicator of whether the field data distribution is not normal.
KURTOSIS FLOAT Measure of the tailedness of the probability distribution.
MAX FLOAT Maximum value found in the field.
MAX_LENGTH FLOAT Maximum length of string entries in the field.
MEAN FLOAT Average value of the field's data.
MEDIAN FLOAT Middle value in the field's data distribution.
MIN FLOAT Minimum value found in the field.
MIN_LENGTH FLOAT Minimum length of string entries in the field.
NAME STRING Descriptive name of the field.
Q1 FLOAT First quartile in the field's data distribution.
Q3 FLOAT Third quartile in the field's data distribution.
SKEWNESS FLOAT Measure of the asymmetry of the probability distribution.
STD_DEV FLOAT Standard deviation of the field's data.
SUM FLOAT Sum of all numerical values in the field.
TYPE_DECLARED BOOLEAN Indicator of whether the field type is explicitly declared.
UNIQUE_DISTINCT_RATIO FLOAT Ratio of unique distinct values to the total distinct values.

Handling JSON and string splitting

Several columns of the exported checks output hold JSON (ADDITIONAL_METADATA, PROPERTIES) or comma-separated lists (FIELDS, GLOBAL_TAGS). The following SQL examples show how to unpack them in JDBC destinations. Replace _EXPORT_CHECKS in each query with the actual database table name and use the identifier casing required by your database.

SELECT
    PARSE_JSON(ADDITIONAL_METADATA):metadata_1::string AS Metadata1_Key1,
    PARSE_JSON(ADDITIONAL_METADATA):metadata_2::string AS Metadata2_Key1,
    PARSE_JSON(ADDITIONAL_METADATA):metadata_3::string AS Metadata3_Key1,
    -- Add more lines as needed up to MetadataN
    CONTAINER_ID,
    COVERAGE,
    CREATED,
    DATASTORE_ID,
    DELETED_AT,
    DESCRIPTION,
    SPLIT_PART(FIELDS, ',', 1) AS Field1,
    SPLIT_PART(FIELDS, ',', 2) AS Field2,
    -- Add more lines as needed up to FieldN
    FILTER,
    GENERATED_AT,
    SPLIT_PART(GLOBAL_TAGS, ',', 1) AS Tag1,
    SPLIT_PART(GLOBAL_TAGS, ',', 2) AS Tag2,
    -- Add more lines as needed up to TagN
    IS_PASSING,
    ID,
    INFERRED,
    LAST_ASSERTED,
    LAST_EDITOR,
    LAST_UPDATED,
    PARSE_JSON(PROPERTIES):allow_other_fields::string AS Property_AllowOtherFields,
    PARSE_JSON(PROPERTIES):assertion::string AS Property_Assertion,
    PARSE_JSON(PROPERTIES):comparison::string AS Property_Comparison,
    PARSE_JSON(PROPERTIES):datetime_::string AS Property_Datetime,
    -- Add more lines as needed up to Property
    RULE_TYPE,
    SOURCE_CONTAINER,
    SOURCE_DATASTORE,
    TEMPLATE_ID,
    WEIGHT
FROM "_EXPORT_CHECKS";
SELECT
    (ADDITIONAL_METADATA::json ->> 'metadata_1') AS Metadata1_Key1,
    (ADDITIONAL_METADATA::json ->> 'metadata_2') AS Metadata2_Key1,
    (ADDITIONAL_METADATA::json ->> 'metadata_3') AS Metadata3_Key1,
    -- Add more lines as needed up to MetadataN
    CONTAINER_ID,
    COVERAGE,
    CREATED,
    DATASTORE_ID,
    DELETED_AT,
    DESCRIPTION,
    (string_to_array(FIELDS, ','))[1] AS Field1,
    (string_to_array(FIELDS, ','))[2] AS Field2,
    -- Add more lines as needed up to FieldN
    FILTER,
    GENERATED_AT,
    (string_to_array(GLOBAL_TAGS, ','))[1] AS Tag1,
    (string_to_array(GLOBAL_TAGS, ','))[2] AS Tag2,
    -- Add more lines as needed up to TagN
    IS_PASSING,
    ID,
    INFERRED,
    LAST_ASSERTED,
    LAST_EDITOR,
    LAST_UPDATED,
    (PROPERTIES::json ->> 'allow_other_fields') AS Property_AllowOtherFields,
    (PROPERTIES::json ->> 'assertion') AS Property_Assertion,
    (PROPERTIES::json ->> 'comparison') AS Property_Comparison,
    (PROPERTIES::json ->> 'datetime_') AS Property_Datetime,
    -- Add more lines as needed up to PropertyN
    RULE_TYPE,
    SOURCE_CONTAINER,
    SOURCE_DATASTORE,
    TEMPLATE_ID,
    WEIGHT
FROM "_EXPORT_CHECKS";
SELECT
    (ADDITIONAL_METADATA->>'$.metadata_1') AS Metadata1_Key1,
    (ADDITIONAL_METADATA->>'$.metadata_2') AS Metadata2_Key1,
    (ADDITIONAL_METADATA->>'$.metadata_3') AS Metadata3_Key1,
    -- Add more lines as needed up to MetadataN
    CONTAINER_ID,
    COVERAGE,
    CREATED,
    DATASTORE_ID,
    DELETED_AT,
    DESCRIPTION,
    SUBSTRING_INDEX(FIELDS, ',', 1) AS Field1,
    -- Add more lines as needed up to FieldN
    SUBSTRING_INDEX(GLOBAL_TAGS, ',', 1) AS Tag1,
    -- Add more lines as needed up to TagN
    IS_PASSING,
    ID,
    INFERRED,
    LAST_ASSERTED,
    LAST_EDITOR,
    LAST_UPDATED,
    (PROPERTIES->>'$.allow_other_fields') AS Property_AllowOtherFields,
    (PROPERTIES->>'$.assertion') AS Property_Assertion,
    (PROPERTIES->>'$.comparison') AS Property_Comparison,
    (PROPERTIES->>'$.datetime_') AS Property_Datetime,
    -- Add more lines as needed up to PropertyN
    RULE_TYPE,
    SOURCE_CONTAINER,
    SOURCE_DATASTORE,
    TEMPLATE_ID,
    WEIGHT
FROM `_EXPORT_CHECKS`;