SQL Pushdown Processing
SQL pushdown processing lets you profile and evaluate the quality of millions of records in seconds, without moving data out of your data source or scaling up Ataccama ONE Data Processing Engines (DPEs) to keep pace. Instead of fetching data to Ataccama DPEs for processing, pushdown brings the processing to the data: it runs directly in your data source, using the compute power and security controls you already have in place.
Behind the scenes, the profiling and data quality (DQ) configurations you define in ONE are translated into the native SQL of your data source and executed there. Only the results, and invalid samples if configured, are returned to ONE. From a user perspective, nothing changes: results are stored and displayed the same way as when a DPE handles the processing.
Pushdown processing is not available in ONE Desktop.
| Get in touch with your Customer Success Manager to enable this feature. |
Why use pushdown processing
With standard processing, catalog item data is fetched from the data source to Ataccama DPEs and processed there. For large datasets, this means transferring significant volumes of data and scaling DPE capacity to match. Pushdown processing turns this around, with three key benefits:
-
Performance: Evaluate millions of records in seconds using the compute power of your data source, with no data transfer overhead.
-
Security: Your data stays in your data source, and only the results are transferred to ONE. All processing runs within your own secured and governed infrastructure, with no external processing servers involved.
-
Infrastructure: Use the infrastructure you already have. There’s no need to set up, scale, and manage additional processing servers as your data volumes grow.
Supported data sources
Pushdown processing is enabled on the connection level. To enable it, follow the setup instructions for your data source:
What runs in pushdown
Pushdown processing applies to the following job types:
- Pushdown profiling
-
Once pushdown profiling is enabled on a connection, all catalog items under that connection are profiled in pushdown.
This applies only to full profiling. For optimized performance and better cost efficiency, sample profiling always runs on Ataccama DPEs.
- Pushdown for DQ evaluation
-
Once pushdown for DQ evaluation is enabled on a connection, all supported rules on catalog items under that connection are evaluated in pushdown. This includes DQ evaluation in monitoring projects.
Some rule types and functions are not supported in pushdown so you can turn pushdown off for individual catalog items and monitoring projects. See SQL Pushdown for DQ Evaluation.
- Data observability
-
For Snowflake connections, data observability jobs also run in pushdown, excluding term detection and AI-powered anomaly detection.
Very small datasets are better suited for non-pushdown processing because of SQL overhead.
Term detection in pushdown
Term detection jobs (domain detection and fingerprints for AI term suggestions) can’t run in pushdown. When you enable pushdown processing on a connection, you therefore choose how term detection is handled:
-
Select Run term detection on a data sample in ONE to trigger detection jobs alongside profiling. In this case, term detection runs on a data sample which is sent to ONE.
-
Otherwise, select Disable term detection. If you turn off term detection, no terms are applied during profiling or documentation flows, and no term suggestions are shown for assets from this connection.
How pushdown profiling works
Standard profiling fetches all catalog item data to Ataccama DPE, iterates rows, and executes the profiling locally. Pushdown profiling instead creates specialized database-specific SQL queries that are executed inside the data source, and only the profiling results are returned to Ataccama DPE.
By default, when you start profiling, a single SQL query is generated per column that combines all the statistics Ataccama requires for that column. On Snowflake, a single query covers up to 20 columns of a table, or 50 columns of a view that isn’t cached, by default. The total number of queries for the table is determined by the number of columns in the table: you can minimize the number of queries by merging queries for multiple columns into a single, bigger SQL query. See Pushdown profiling configuration.
Each query reads the source, so a wide catalog item is read once per group of columns.
For a view, an SQL catalog item, or a sliced source, every read also re-executes the underlying query or filter.
To avoid repeating that work when the columns don’t fit in one query, DPE materializes the source once into a profiling cache table (ata_profiling_cache_*) and runs the profiling queries against that copy.
The copy is still read once per group of columns, but as a plain table, without recomputing the view, query, or slice.
This applies to Snowflake, Databricks, BigQuery, and IOMETE.
Azure Synapse always reads the source directly.
The cache table is created in the operational database configured on the connection. The operational database is optional for profiling: without it, profiling returns the same results but takes longer for views, SQL catalog items, and sliced sources. The cache table is removed as soon as profiling no longer needs it; if the removal was interrupted, the table is typically deleted with the next profiling.
On Snowflake, if the operational database is not configured, a temporary table is used instead, so profiling speed remains intact. If the connection credentials can’t create temporary tables, the source is read without the cache. Legacy pushdown doesn’t use caching at all.
To optimize performance, some of the most infrequently used profiling statistics, such as frequency groups and quantiles for non-numeric attributes, aren’t calculated in pushdown.
Pushdown profiling configuration
The default pushdown configuration creates one SQL query for each table column (on Snowflake, for each group of columns) and retrieves all supported statistics at once. You can modify the number of DPE threads and the number of columns processed by a single query, and split standard and frequency analysis. Pushdown profiling also retries transient query failures.
In self-managed deployments, pushdown profiling is configured in dpe/etc/application.properties.
For Ataccama Cloud deployments, configuration is handled by Ataccama: get in touch with your Ataccama Customer Success Manager if required.
For details, see Query pushdown processing and Pushdown profiling retry configuration.
How pushdown for DQ evaluation works
Pushdown for DQ evaluation translates the rules applied to a catalog item into native SQL queries that run in your data source. You still need at least one Ataccama DPE: it is the only component that connects to your data source, so it generates the queries, runs them, and collects the results, while the data processing itself happens in the source.
Which queries run depends on the configuration, for example, whether invalid samples are collected or invalid records exported. The complexity of the queries depends on the DQ rules assigned to the catalog item.
DQ evaluation in pushdown requires an operational database, that is, a dedicated schema, dataset, or database in your data source.
Without it, DQ jobs fail with the error Schema is not specified for lookup location.
The setup is described in the instructions for each source (see Supported data sources).
If you use lookup data in the rules, Ataccama DPE uploads the lookups into the operational database and joins them with the processed catalog item to match the values. For small lookups (where the lookup key column is less than 100 kB after values have been normalized), the lookup data is embedded directly into the SQL instead.
To avoid reading the source again for each step, DQ jobs that collect invalid record samples or export invalid records store intermediate results in the operational database. Azure Synapse doesn’t store intermediate results and always reads the source directly.
Incomplete or inconsistent invalid record samples
To collect invalid record samples or export invalid records, DPE reads the source a second time to fetch the matching rows. If the source changes between the two reads, for example a view over live data, a rule that uses the current time, or a table under concurrent writes, the sample or export can be incomplete even though the job succeeds.
For such sources, you can configure DPE to take a snapshot of the source and use it for both reads. See DQ pushdown processing.
Limitations of pushdown processing
The following limitations apply to all supported data sources:
-
Pushdown processing is not supported for virtual catalog items (VCIs).
-
Post-processing plans and load components are not supported.
-
Frequency group analysis statistics cannot be returned when pushdown profiling is used.
-
Not all rules and functions are supported in pushdown for DQ evaluation. See SQL Pushdown for DQ Evaluation.
Source-specific limitations are described in the setup instructions for each data source (see Supported data sources).
Troubleshooting pushdown processing
DQ jobs fail with Schema is not specified for lookup location
No operational database is configured on the connection. The error is reported for all DQ jobs in pushdown, including jobs whose rules don’t use lookups.
Configure the operational database as described in the instructions for your data source (see Supported data sources).
Profiling views or SQL catalog items is slow
On Databricks, BigQuery, and IOMETE, check that an operational database is configured on the connection. On Snowflake, check that a working database is configured or that the credentials on the connection can create temporary tables. Without the cache, the source is read again for each group of columns.
To see whether DPE copied the source into a profiling cache table, look for the pushdownCacheDecision message in the DPE log.
The message is logged for each profiling job.
DQ jobs with invalid record samples or exports are slower than expected
On Snowflake, Databricks, BigQuery, and IOMETE, if the DPE log contains dqMaterializeFailed, DPE couldn’t create a table in the operational database and read the source again for each step instead.
Check that the operational database exists and that the connection credentials can create tables in it.
Next steps
-
To decide whether to enable pushdown for DQ evaluation and check which rules and functions are supported, see SQL Pushdown for DQ Evaluation.
-
To enable pushdown processing, follow the setup instructions for your data source (see Supported data sources).
Was this page useful?