Connectors → GraphQL

About GraphQL

GraphQL is a query language for APIs and a runtime for fulfilling queries with existing data. GraphQL provides a complete and understandable description of the data in your API.

About the GraphQL connector

The GraphQL connector is a CDATA connector that uses the cdata.jdbc.graphql.jar driver to connect to a GraphQL resource and get data.

Warning

The GraphQL connector is a preview connector.

Important

The GraphQL connector requires a JAR file that Incorta tests and verifies. The supported JAR download is only available from Incorta Support and must be purchased from Incorta. The GraphQL connector exposes various properties of the CDATA JDBC driver for GraphQL for an external data resource. For information about the CDATA JDBC driver for GraphQL, please check CData JDBC Driver for GraphQL.

The GraphQL connector supports the following Incorta specific functionality:

FeatureSupported
Chunking
Data Agent
Encryption at Ingest
Incremental Load
Multi-Source
OAuth
Performance Optimized
Remote
Single-Source
Spark Extraction
Webhook Callbacks
Note

The GraphQL connector supports two types of incremental loads, including support for using a numeric column. To learn more, see Types of Incremental Load.

The GraphQL Connector utilizes the CDATA JDBC driver for GraphQL. In order to query a GraphQL resource using a SQL SELECT statement, the driver supports the configuration of various JDBC connection properties, including OAuth authentication.

The GraphQL connector installation

The GraphQL connector requires the deployment of cdata.jdbc.graphql.jar file to the Incorta Node hosts of the Analytics Service and the Loader Service. A system administrator with root access to the host can deploy the JAR file. A CMC Administrator can restart the Incorta cluster.

Here are the steps to copy the JAR file to standalone Incorta cluster:

  • Secure copy the cdata.jdbc.graphql.jar file to the host. Here is an example using scp:
    INCORTA_NODE_HOST=100.101.102.103 \
    cd ~/Downloads \
    scp -i ~/.ssh/host_pemkey.pem cdata.jdbc.graphql.jar incorta@${INCORTA_NODE_HOST}:/tmp/ \
  • Secure shell into the host
    ssh -i ~/.ssh/host_pemkey.pem incorta@${INCORTA_NODE_HOST} \
  • Copy the cdata.jdbc.graphql.jar to the IncortaNode/runtime/lib/ directory in bash shell
    sudo incorta \
    INCORTA_INSTALLATION_PATH=/home/incorta/IncortaAnalytics/ \
cp /tmp/cdata.jdbc.graphql.jar $INCORTA_INSTALLATION_PATH/IncortaNode/extensions/connectors/graphql/
cdata.jdbc.graphql.jar \
```

Here are the steps to restart the standalone Incorta cluster:

  • Sign in to the Cluster Management Console (CMC) as the CMC Administrator.
  • In the Navigation bar, select Clusters.
  • Select the cluster name in the list.
  • In Details, select Restart.

Steps to connect a GraphQL data source and Incorta

To connect a GraphQL data source and Incorta, here are the high-level steps, tools, and procedures:

Create an external data source

A Tenant Administrator (Super User), a user that belongs to a group with the SuperRole role, or a user that belongs to a group with the Schema Manager role can create an external data source for a given tenant.

Here are the steps to create an external data source with the GraphQL connector:

  • Sign in to the Incorta Direct Data Platform™.
  • In the Navigation bar, select Data.
  • In the Action bar, select + NewAdd Data.
  • In the Choose a Data Source dialog, in Application, select GraphQL.
  • In the New Data Source dialog, specify the applicable connector properties.
  • To test, select Test Connection.
  • Select Ok to save your changes.

The GraphQL connector properties

Here are the properties for the GraphQL connector:

PropertyControlDescription
Name your data sourcetext boxRequired. Enter the name of the data source.
URLtext boxRequired. Enter the Uniform Resource Locator (URL) to your GraphQL Endpoint.
For example, https://<endpoint-name>.<hostname>.com/.
Usertext boxRequired. Enter the GraphQL user account used to authenticate Incorta to access the GraphQL resources.
Auth SchemeDrop downRequired. Select the authentication type you use for your scheme. Available options are:

  ●  None
  ●  Basic
  ●  OAuth
Show Advanced OptionstoggleOptional. Enable to configure the advanced properties.
For more information, please refer to Connection String Options.
Note

For a comprehensive reference for the connector properties, please refer to CData JDBC Driver for GraphQL Documentation.

Create a schema with the Schema Wizard

Here are the steps to create a GraphQL schema with the Schema Wizard:

  • Sign in to the Incorta Direct Data Platform™.
  • In the Navigation bar, select Schema.
  • In the Action bar, select + NewSchema Wizard.
  • In (1) Choose a Source, specify the following:
    • For Enter a name, enter the schema name.
    • For Select a Datasource, select the GraphQL data source.
    • Optionally, enter a description.
  • In the Schema Wizard footer, select Next.
  • In (2) Manage Tables, in the Data Panel, first select the name of the Data Source, and then check the Select All checkbox.
  • In the Schema Wizard footer, select Next.
  • In (3) Finalize, in the Schema Wizard footer, select Create Schema.

Create a schema with the Schema Designer

Here are the steps to create a GraphQL schema using the Schema Designer:

  • Sign in to the Incorta Direct Data Platform™.
  • In the Navigation bar, select Schema.
  • In the Action bar, select + NewCreate Schema.
  • In the Create Schema dialog, in Name, specify the schema name, and then select Save.
  • In Start adding tables to your schema, select GraphQL.
  • In the Data Source dialog, specify the GraphQL table data source properties.
  • Select Add.
  • In the Table Editor, in the Table Summary section, enter the table name.
  • To save your changes, in the Action bar, select Done.

The GraphQL table data source properties

For a schema table in Incorta, you can define the following GraphQL-specific data source properties as follows:

PropertyControlDescription
Typedrop down listDefault is GraphQL
Data Sourcedrop down listSelect the GraphQL external data source
IncrementaltoggleEnable the incremental load configuration for the schema table. See Types of Incremental Load.
Incremental Extract Usingdrop down listEnable Incremental to configure this property. Select between Last Successful Extract Time and Maximum Value of a Column. See Types of Incremental Load.
Incremental Columndrop down listEnable Incremental and select Maximum Value of a Column to configure this property. Select the column to be used for Maximum Value of a Column. The Loader will track and use the greatest value or most recent timestamp for each load operation.
Querytext boxEnter the SQL Select query to retrieve data from the GraphQL data set
Update Querytext boxEnable Incremental to configure this property. Enter the SQL Select query to use during an incremental load. The query and update query should be of the same structure, that is, the same selected columns.
Incremental Field Typedrop down listEnable Incremental to configure this property. Select the format of the incremental field:
  ●   Timestamp
  ●   Unix Epoch (seconds)
  ●   Unix Epoch (milliseconds)
Fetch Sizetext boxFor performance improvement, define the number of records that will be retrieved from the database in each batch until all records are retrieved. The default is 5000.
Chunking Methoddrop down listChunking methods allow for parallel extraction of large tables. The default is No Chunking. There are two chunking methods:
  ●   By Size of Chunking (Single Table)
  ●   By Date/Timestamp
Chunk Sizetext boxSelect By Size of Chunking for the Chunking Method to set this property. Enter the number of records to extract in each chunk in relation to the Fetch Size. The default is 3 times the Fetch Size.
Order Columndrop down listSelect By Size of Chunking for the Chunking Method to set this property. Select a column in the source table you want to order by before chunking. It's typically an ID column and it must be numeric.
Upper Bound for Order Columntext boxOptional. Enter the maximum value for the order column.
Lower Bound for Order Columntext boxOptional. Enter the minimum value for the order column.
Order Column [Date/Timestamp]drop down listSelect By Date/Timestamp for the Chunking Method to set this property. Select a column in the source table you want to order by before chunking. It should be a Date/Timestamp column.
Chunk Perioddrop down listSelect the chunk period that will be used in dividing chunks:
  ●   Daily
  ●   Weekly (default)
  ●   Monthly
  ●   Yearly
  ●   Custom
Number of daystext boxSelect Custom for the Chunk Period to set this property. Enter the chunking period in days
CallbacktoggleEnable post extraction callback, that is, enabling callback on the data source data set(s) by invoking a certain callback URL with parameters containing details about the load job
Callback URLtext boxEnable Callback to configure this property. Specify the callback URL.

View the schema diagram with the Schema Diagram Viewer

Here are the steps to view the schema diagram using the Schema Diagram Viewer:

  • Sign in to the Incorta Direct Data Platform™.
  • In the Navigation bar, select Schema.
  • In the list of schemas, select the GraphQL schema.
  • In the Schema Designer, in the Action bar, select Diagram.

Load the schema

Here are the steps to perform a Full Load of the GraphQL schema using the Schema Designer:

  • Sign in to the Incorta Direct Data Platform™.
  • In the Navigation bar, select Schema.
  • In the list of schemas, select the GraphQL schema.
  • In the Schema Designer, in the Action bar, select LoadFull Load.
  • To review the load status, in Last Load Status, select the date.

Explore the schema

With the full load of the GraphQL schema complete, you can use the Analyzer to explore the schema, create your first insight, and save the insight to a new dashboard.

To open the Analyzer from the schema, follow these steps:

  • In the Navigation bar, select Schema.
  • In the Schema Manager, in the List view, select the GraphQL schema.
  • In the Schema Designer, in the Action bar, select Explore Data.

For more information about how to use the Analyzer to create insights, see Analyzer and Visualizations.

Additional Considerations

Types of Incremental Load

You can enable Incremental Load for a GraphQL table data. There are two types of incremental extracts:

Last Successful Extract Time

Fetch updates since the last time the tables were loaded. This is determined by the difference between the current time and the database timestamp.

Maximum Value of a Column

The column-based strategy depends on an extra column called "Incremental Column" in each table. The GraphQL connector supports both timestamp and numeric columns. A timestamp column is of the type date or timestamp. A numeric column is of the type int or long.

Note

Changing the incremental load strategy requires a full load to ensure data integrity.

Incremental Load Example

In this example, the Issues table must contain a column of the type Date or Timestamp in order to load the table incrementally with a last successful extract time strategy. In this case, the name of the date column is Created and the format of the column is Timestamp.

Here are the data source property values for this example:

Incremental is enabled

Query contains SELECT * FROM Issues

Update Query contains SELECT * FROM Issues WHERE Created > ?

Note

? is a variable in the update query that contains the last schema refresh date.

Incremental Field Type = Timestamp

Note

If running an update query for an incremental load, you are able to use the ? reference character. The ? character will be replaced with the last incremental reference to construct a valid query to the database. The ? reference character is not valid in a standard query.

Valid Query Types

When creating a query for the GraphQL connector, only SELECT statements are valid.

Known issues

  • The GraphQL Cdata driver causes an error in data discovery via Schema Wizard.