Discover how a bimodal integration strategy can address the major data management challenges facing your organization today.
Get the Report →Connect to Live Zuora Data in PostGresSQL Interface through CData Connect Cloud
Create a live connection to Zuora in CData Connect Cloud and connect to your Zuora data from PostgreSQL.
There are a vast number of PostgreSQL clients available on the Internet. PostgreSQL is a popular interface for data access. When you pair PostgreSQL with CData Connect Cloud, you gain database-like access to live Zuora data from PostgreSQL. In this article, we walk through the process of connecting to Zuora data in Connect Cloud and establishing a connection between Connect Cloud and PostgreSQL using a TDS foreign data wrapper (FDW).
CData Connect Cloud provides a pure SQL Server interface for Zuora, allowing you to query data from Zuora without replicating the data to a natively supported database. Using optimized data processing out of the box, CData Connect Cloud pushes all supported SQL operations (filters, JOINs, etc.) directly to Zuora, leveraging server-side processing to return the requested Zuora data quickly.
Connect to Zuora in Connect Cloud
CData Connect Cloud uses a straightforward, point-and-click interface to connect to data sources.
- Log into Connect Cloud, click Connections and click Add Connection
- Select "Zuora" from the Add Connection panel
-
Enter the necessary authentication properties to connect to Zuora.
Zuora uses the OAuth standard to authenticate users. See the online Help documentation for a full OAuth authentication guide.
Configuring Tenant property
In order to create a valid connection with the provider you need to choose one of the Tenant values (USProduction by default) which matches your account configuration. The following is a list with the available options:
- USProduction: Requests sent to https://rest.zuora.com.
- USAPISandbox: Requests sent to https://rest.apisandbox.zuora.com"
- USPerformanceTest: Requests sent to https://rest.pt1.zuora.com"
- EUProduction: Requests sent to https://rest.eu.zuora.com"
- EUSandbox: Requests sent to https://rest.sandbox.eu.zuora.com"
Selecting a Zuora Service
Two Zuora services are available: Data Query and AQuA API. By default ZuoraService is set to AQuADataExport.
DataQuery
The Data Query feature enables you to export data from your Zuora tenant by performing asynchronous, read-only SQL queries. We recommend to use this service for quick lightweight SQL queries.
Limitations- The maximum number of input records per table after filters have been applied: 1,000,000
- The maximum number of output records: 100,000
- The maximum number of simultaneous queries submitted for execution per tenant: 5
- The maximum number of queued queries submitted for execution after reaching the limitation of simultaneous queries per tenant: 10
- The maximum processing time for each query in hours: 1
- The maximum size of memory allocated to each query in GB: 2
- The maximum number of indices when using Index Join, in other words, the maximum number of records being returned by the left table based on the unique value used in the WHERE clause when using Index Join: 20,000
AQuADataExport
AQuA API export is designed to export all the records for all the objects ( tables ). AQuA query jobs have the following limitations:
Limitations- If a query in an AQuA job is executed longer than 8 hours, this job will be killed automatically.
- The killed AQuA job can be retried three times before returned as failed.
- Click Create & Test
- Navigate to the Permissions tab in the Add Zuora Connection page and update the User-based permissions.
Add a Personal Access Token
If you are connecting from a service, application, platform, or framework that does not support OAuth authentication, you can create a Personal Access Token (PAT) to use for authentication. Best practices would dictate that you create a separate PAT for each service, to maintain granularity of access.
- Click on your username at the top right of the Connect Cloud app and click User Profile.
- On the User Profile page, scroll down to the Personal Access Tokens section and click Create PAT.
- Give your PAT a name and click Create.
- The personal access token is only visible at creation, so be sure to copy it and store it securely for future use.
Build the TDS Foreign Data Wrapper
The Foreign Data Wrapper can be installed as an extension to PostgreSQL, without recompiling PostgreSQL. The tds_fdw extension is used as an example (https://github.com/tds-fdw/tds_fdw).
- You can clone and build the git repository via something like the following view source:
sudo apt-get install git git clone https://github.com/tds-fdw/tds_fdw.git cd tds_fdw make USE_PGXS=1 sudo make USE_PGXS=1 install
Note: If you have several PostgreSQL versions and you do not want to build for the default one, first locate where the binary for pg_config is, take note of the full path, and then append PG_CONFIG=after USE_PGXS=1 at the make commands. - After you finish the installation, then start the server:
sudo service postgresql start
- Then go inside the Postgres database
psql -h localhost -U postgres -d postgres
Note: Instead of localhost you can put the IP where your PostgreSQL is hosted.
Connect to Zuora data as a PostgreSQL Database and query the data!
After you have installed the extension, follow the steps below to start executing queries to Zuora data:
- Log into your database.
- Load the extension for the database:
CREATE EXTENSION tds_fdw;
- Create a server object for Zuora data:
CREATE SERVER "Zuora1" FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername'tds.cdata.com', port '14333', database 'Zuora1');
- Configure user mapping with your email and Personal Access Token from your Connect Cloud account:
CREATE USER MAPPING for postgres SERVER "Zuora1" OPTIONS (username '[email protected]', password 'your_personal_access_token' );
- Create the local schema:
CREATE SCHEMA "Zuora1";
- Create a foreign table in your local database:
#Using a table_name definition: CREATE FOREIGN TABLE "Zuora1".Invoices ( id varchar, BillingCity varchar) SERVER "Zuora1" OPTIONS(table_name 'Zuora.Invoices', row_estimate_method 'showplan_all'); #Or using a schema_name and table_name definition: CREATE FOREIGN TABLE "Zuora1".Invoices ( id varchar, BillingCity varchar) SERVER "Zuora1" OPTIONS (schema_name 'Zuora', table_name 'Invoices', row_estimate_method 'showplan_all'); #Or using a query definition: CREATE FOREIGN TABLE "Zuora1".Invoices ( id varchar, BillingCity varchar) SERVER "Zuora1" OPTIONS (query 'SELECT * FROM Zuora.Invoices', row_estimate_method 'showplan_all'); #Or setting a remote column name: CREATE FOREIGN TABLE "Zuora1".Invoices ( id varchar, col2 varchar OPTIONS (column_name 'BillingCity')) SERVER "Zuora1" OPTIONS (schema_name 'Zuora', table_name 'Invoices', row_estimate_method 'showplan_all');
- You can now execute read/write commands to Zuora:
SELECT id, BillingCity FROM "Zuora1".Invoices;
More Information & Free Trial
Now, you have created a simple query from live Zuora data. For more information on connecting to Zuora (and more than 100 other data sources), visit the Connect Cloud page. Sign up for a free trial and start working with live Zuora data in PostgreSQL.