Data Prep and Distribution
A data pipeline for large scale analytical applications
Fault tolerant. Distribute tens of gigabytes of data to 10,000s of tenants every hour.
Out-of-the-box functionality can be combined with your custom code.
Comprehensive APIs and SDKs. Complete documentation. SQL/JDBC for data access.
Focus on your customers, not your servers.
Connect your data sources
GoodData bricks can be scheduled to pull data from your relational databases or from third party services such as Salesforce or Google Analytics and many other data sources. Connect to full or incremental CSV extracts on S3, WebDAV or SFTP. Or, run custom brick code on our platform.
Your application data
Data for Enrichment
  "downloaders": {
    "csv_downloader": {
      "type": "csv",
      "entities": [
        "Orders", "Customers", "Sales", "Merchants"
Describe your data sourcesDescribe your data sources
Distribute data to your customers
Serving analytical workloads generated by thousands of customer from a single warehouse is not feasible. GoodData organizes analytical data of your customers into customer-specific workspaces. This enables per-customer customizability and access controls so you can manage releases using our lifecycle management tooling.
A declarative distribution service efficiently pushes deltas from your retrieved data into thousands of customer workspaces.
Need to do more data preparation?
Our data integration tool can run initial deduplication, enrichment with computed fields, and manage how downloaded data is merged into persistent tables.
Our platform can orchestrate a flow of SQL transformations to pre-aggregate, de-normalize, process time-series data, build snapshots, consolidate multiple data sources and much more.
You can deploy and schedule custom scripts to train and retrain machine learning models or to perform any custom data preparation logic.
--Transform opportunity fields history
SELECT r.*, o.value FROM (
    SELECT MIN(d._VALID_FROM) AS _VALID_FROM, r.record_id, r.field FROM
    (SELECT DISTINCT record_id, field FROM opportunity_fields_history) r
    INNER JOIN (SELECT DISTINCT _VALID_FROM, record_id FROM opportunity_fields_history) d
        ON d.record_id = r.record_id
Need more data preparation?Need more data preparation?
Schedule and monitor
Schedule data ingestion tasks, invoke tasks by API, or from the administration user interface. Set up dependencies between tasks. Get failure alerts via e-mail or integrate alerts with third-party services (for example, PagerDuty). See the task execution history, access log files including possible failure detail.
See how it works

This website uses cookies and similar files to enable and improve the use of the website by personalizing content and ads, providing social media features and analyzing our traffic. We also share information about your use of our site with our partners. Review our Cookie Policy to learn more and to manage your preferences. By clicking on the “I accept” button, you consent to the use of analytics and other files on your device.