1 - Overview

Zing Data Documentation and Overview

What is Zing?

Zing Data is a data analysis and collaboration platform, with native apps on iOS, Android, and the web. It lets you query data visually in seconds, use natural language to ask questions, and set up real-time alerts so you’d the first to know when data changes.

Why do I want it?

Zing makes it possible to empower everybody in your organization to do data analysis from anywhere – no SQL, desktop, or expensive license required.

Free for teams up to ten people (on the basic plan), and collaborative by design, Zing automatically handles the hard stuff – like visualization settings, long running queries, authentication, and more to make using data easier than ever.

People today spend more than four hours a day on their phones, including for getting work done but data tools haven’t kept up…until now.

What is it good for?

  • Fast, intuitive, easy data analysis of any SQL dataset.
  • Visualizing data.
  • Querying data with natural language or dictation using OpenAI
  • Getting real-time push and email alerts when data meets a condition you specify.
  • Creating live dashboards for internal use, to be shared with partners, or publicly
  • Sorting and filtering data to glean insights.
  • Asking questions using natural language, tapping visually, or custom SQL.
  • Sharing data results with your team.
  • Making a graph to drop into a Slack thread or presentation on the go.
  • Exporting a CSV file for deeper analysis.
  • Seeing the data questions your colleagues are asking.
  • Checking the latest data about your customers or users.

What is it not good for?

  • Extremely complex data-science use cases such as building machine learning models from your phone
  • Cross data-source joins (you’ll want to unify these in your data warehouse first), though you can easily do same-source joins within Zing

Where should I go next?

Get started with Zing here - its free!

2 - Getting Started

Getting Started with Zing Data

Start Using Zing in Four Steps

  1. Download the Zing Data app, available on iOS from the Apple App Store and Android from the Google Play Store

  2. Create an account, either the mobile app, or the Zing web console . If you plan to share your data set with work colleagues, you’ll want to register with the email address associated with your work email address because Zing only allows you to invite colleagues from the same domain name for security purposes.

  3. Add a data source, such as a Postgres, mySQL, Snowflake, or Google BigQuery. Google Sheets, CSVs, and Excel files are also supported. The easiest way to do this is from the Zing web console, but you can also do this by tapping the ‘sources’ tab in the mobile app.

  4. Ask a question! There are four ways to do this:

    • Visual editor: From a table, tap the three dots in the upper right and then ‘drag and drop editor.’ Drag field names to the ‘y-axis’, ‘x-axis’, dimension, or filter areas of the chart. A live preview will show you.

    • Natural language: From a data source, type a question in natural language (English, Spanish, Japanese, German, French, Chinese) and Zing will translate your natural language question into SQL and graph it. This capability is still in beta.

    • SQL: From a table, tap the three dots in the upper right and select ‘custom sql editor’ which will provide a SQL IDE with a typeahead for fields and aggregations.

    • List editor: Tap a table (or use the sample dataset Zing provides), then tap the fields you want to query. Long tap on a field to see filters and aggregations for that field (such as sum, count, where and more), then tap the ’next’ arrow in the the lower right. Zing will automatically select a graph based on the result of your query.

3 - Set Up a Data Source

Configure a data source with Zing

Zing is built to query your own data, so you’ll want to set up a data source. While we provide a sample data set to help you get situated, adding your own data source (or sources) will make it possible to start asking questions of your company’s data from your phone or the web.

Adding a Data Source

The easiest way to set up a dataset is from the Zing web console,

  • Once you are logged in, tap data sources then the new data source button.
  • In the modal, select the data source type (such as Postgres, BigQuery, etc.)
  • Enter your database credentials, such as hostname, port, database name, username, and password
  • Press save
  • Zing will validate that your database credentials are valid once you press save and will add the source. It is then available immediately to query. If your credentials are invalid you’ll be prompted to check and resubmit.

You can also add database credentials directly from the Zing web, iOS, and Android apps by tapping the sources tab in the mobile app, then add new data source and following the steps above.

Once a data source as been added, it will immediately be available to all users that you have invited to your organization in the top of their Zing app in the tables section.

Note: You can set up multiple data sources with an organization, even across data source types. Zing will show the tables and views across data sources in the app.

Supported Data Sources

Database Type

Supported?

Notes

PostgreSQL

Yes

Zing also supports cloud-hosted versions of this such as Amazon RDS and Google Cloud SQL

mySQL

Yes

Snowflake

Yes

Google BigQuery

Yes

Setup only via web app (not mobile app)

Google Sheets

Yes

Trino / Presto / Starburst

Yes

Amazon Redshift

Yes

Microsoft SQL Server

Yes

Setup only via web app

Azure SQL

Yes

Setup only via web app

Databricks

Yes

Setup only via web app

Choosing what tables and views are visible

By default, all tables and views in your database are marked as ‘visible’ (including newly added tables), but you can exclude tables or views from visible and queryable in Zing if you’d like.

This is useful for excluding tables from other people in your organization which might be unnecessary for them (e.g. detailed server logs), or in simplifying the set of tables shown in Zing to be more streamlined.

To turn off tables or views:

  • First connect to your data source.

  • Then you’ll see a ’tables’ list and you can turn on/off all or individual tables/views.

  • Tap ‘Save’

Data Source Security

Two things you should to to ensure your database’s connection to Zing is secure:

  1. Security best practices are to provide Zing read-only access (instead of full access) to your database. Zing doesn’t need write permissions and best security protocols dictate minimizing permissions. You see how to do this on StackOverflow for Postgres and mySQL.

  2. When you make a data source accessible to the internet for Zing to be able to connect, it is best practice to limit the IP addresses that your database server will respond to.

    This ensures that other IP addresses cannot access your database and only authorized IPs (such as Zing) are able to do so.

    Zing’s IP address to whitelist is: 34.75.82.6

Additionally, if your database supports SSL, you should turn that on.

Data Source Aliasing

Database names often lack clarity and user-friendliness. Zing’s latest feature addresses this issue by allowing users to assign a simple display name, or alias, to their databases. This enhancement makes data exploration, querying, and chart creation more intuitive and efficient. With the ability to set short and descriptive data source names, users can easily navigate and interact with their data, ensuring a streamlined and user-centric experience. (1) Go to data sources (2) Enter your new display name (3) Go ask questions and see the new display name throughout the Zing platform

3.1 - PostgreSQL

Configure PostgreSQL with Zing

PostgreSQL is one of the most widely used databases in the world, and its free! Everybody from developers writing their first line of code, to data scientists, to major corporations use PostgresSQL to store and query data.

You can connect Zing to your Postgres database from either the Zing web console, the Zing web app, the iOS app, or Android.

You’ll need:

  • Hostname which is the URL or IP address of your database
  • Port which is the port that your database is live on – typically 5432 by default for Postgres, but your port may differ
  • Database Name which is the name on your hostname IP / URL you database is referenced by
  • Username which is…your username. Best practice is to create a read only user
  • Password which is…your password. Once you enter this, Zing will automatically encrypt this.

Web Console

Add a PostgreSQL database from the web console:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘data sources’ tab

  3. Enter your PostgreSQL credentials, as outlined above. If your database requires SSL to be enabled, turn on ‘Require SSL’ (not all Postgres configurations require this).

  4. If your Postgres database is behind a firewall, you’ll need to configure your firewall to allow connections from Zing’s IP address: 34.75.82.6

  5. Tap ‘Save’

  6. The data source you just added will be available to everybody in your organization.

SSH Tunneling

Zing Data supports connecting to your postgres database via an SSH tunnel (sometimes referred to as SSH port forwarding). In an SSH tunnel, the entire network connection between your postgres database and the Zing Data platform is encrypted. This provides adequate security, even for databases that do not have SSL. In some cases, and for some databases, an SSH tunnel can provide better performance than connecting over SSL.

When seting up an SSH tunnel, you will need the following

  • SSH username

    This is the username of the ssh tunnel.

  • SSH private key

    Enter the SSH private key in RSA pem format in the text area. Make sure to not modify any of the newlines.

  • SSH password

    This is usually not required, as an SSH tunnel can be set up without one.

  • SSH port

    If no port is specified, Zing Data will attempt to initiate the tunnel connection over port 22.

App

To add a PostgreSQL database from your phone or the Zing Web App:

  1. Go to the sources tab
  2. Tap ‘Add a new data source’
  3. Enter your database credentials
  4. Tap ‘Confirm data source’
  5. Zing will verify that it can connect to your data source and if successful, add it as a source. If Zing cannot connect to your data source, you'll see a message asking your to check your credentials and retry. If even after checking your credentials and retrying you still experience issues, reach out to Zing support here

3.2 - MySQL

Configure MySQL with Zing

MySQL is one of the most widely used databases in the world, and its free! Everybody from developers writing their first line of code, to data scientists, to major corporations use MySQL to store and query data.

You can connect Zing to your MySQL database from either the Zing web console, the Zing web app, the iOS app, or Android.

You’ll need:

  • Hostname which is the URL or IP address of your database
  • Port which is the port that your database is live on – typically 3306 by default for mySQL, but your port may differ
  • Database Name which is the name on your hostname IP / URL you database is referenced by
  • Username which is…your username. Best practice is to create a read only user
  • Password which is…your password. Once you enter this, Zing will automatically encrypt this.

Web Console

Add a MySQL database from the web:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘data sources’ tab

  3. Enter your mySQL credentials, as outlined above. If your database requires SSL to be enabled, turn on ‘Require SSL’ (not all MySQL configurations require this).

  4. If your mySQL database is behind a firewall, you’ll need to allow connections from Zing’s IP address: 34.75.82.6

  5. Tap ‘Save’

  6. The data source you just added will be available to everybody in your organization.

App

To add a MySQL database from your phone or the Zing web app:

  1. Go to the sources tab
  2. Tap ‘Add a new data source’
  3. Enter your database credentials
  4. Tap ‘Confirm data source’
  5. Zing will verify that it can connect to your data source and if successful, add it as a source. If Zing cannot connect to your data source, you'll see a message asking your to check your credentials and retry. If even after checking your credentials and retrying you still experience issues, reach out to Zing support here

3.3 - Google BigQuery

Configure Google BigQuery with Zing Data

You can connect Zing to Google BigQuery as a data source from the Zing web console. Zing Data is a trusted Google Cloud Partner.

You’ll need:

  • Project ID which is the ID for your project in BigQuery
  • Service Account JSON which is the file from your Google BigQuery account and allows Zing to authenticate into your BigQuery data source

You’ll also need to set up appropriate permissions, namely: Big Query Viewer rights and BigQuery Job User rights

Project ID

Just copy and paste your Project ID from your Google BigQuery account. You’ll get this from your Google Cloud Console.

Service Account

Your service account is set up by copying your credentials from your Google service account.

To access your BigQuery credentials required to connect Zing:

  1. Log in to your Google Cloud Console

  2. Click ‘IAM & Console’

  3. Click ‘Service Accounts’

  4. Add Big Query Viewer rights and BigQuery Job User rights

  5. Select Manage Keys

  6. Select Create Key

  7. Select JSON

  8. From here, download the JSON file containing your Service Account information. Copy and paste the file’s contents into the Zing Data setup screen in the ‘Service Account’ box.

Note:

Setting up Google BigQuery with Zing must be done using the Zing Web Console.

3.4 - Google Cloud SQL

Configure Google Cloud SQL with Zing

Google Cloud SQL Logo

Google Cloud SQL is a fully managed relational database service for MySQL, PostgreSQL, and SQL Server with rich extension collections, configuration flags, and developer ecosystems. It automatically ensures your databases are reliable, secure, and scalable so that your business continues to run without disruption. Cloud SQL automates all your backups, replication, encryption patches, and capacity increases.

You can connect Zing to your MySQL database from either the Zing web console, the Zing web app, the iOS app, or Android.

Gathering the required information

Hostname

From the Navigation Menu on your Google SQL Cloud Console, click on “Connections”:

Google Cloud SQL Sidebar-Connections

Find the Hostname from the Public IP address under “Networking section”

Google Cloud SQL Hostname

Port

The default port for your database engine type:

  • MySQL: 3306
  • PostgreSQL: 5432
  • Microsoft SQL Server: N.A

Database Name

From the Navigation Menu on your Google SQL Cloud Console, click on “Databases”:

Google Cloud SQL Database

The table lists all the databases hosted on your Cloud SQL instance, identify the name of the database you wish to connect to.

Username

From the Navigation Menu on your Google SQL Cloud Console, click on “Users”:

Google Cloud SQL Users

Identify the name of your user under “User name”

Password

Retrieve the password corresponding to the user identified. Once you enter this, Zing will automatically encrypt this.

Whitelisting Zing Data’s IP on your Cloud SQL Instance

For Zing Data to connect to your Cloud SQL instance, you must authorize Zing’s network on the Cloud SQL console.

From the Navigation Menu on your Google SQL Cloud Console, click on “Connections” and then the “Networking” tab on the page,

Under the “Authorized networks” section, click on “ADD A NETWORK” to whitelist a network for the Cloud SQL instance.

Google Cloud SQL Authorized Networks

Give a name for this network, i.e. “zingdata” and paste Zing’s IP address: 34.75.82.6/32 under “Network*”.

Google Cloud SQL Authorize Network

Scroll down and hit “Save” to update your changes.

Adding the data source on Zing Data

You are now ready to add in your data source on Zing!

Follow these guides on adding a new data source on Zing, based on your database engine:

Connecting via SSL

Downloading your certificates and keys

To connect Zing Data to your Cloud SQL instance via the SSL protocol, you need to download the following authentication documents from Google Cloud:

  • Server Root Certificate
  • Client Certificate
  • Client Private Key

Only the server root certificate is required for Microsoft SQL Server.

You can do so by clicking on “Connections”, then the “Security” tab on the page, and then “CREATE CLIENT CERTIFICATE”:

Google Cloud SQL Create Client Certificate

Create a name for the SSL client and download all of the files or copy the texts on to somewhere secure:

Downloading client credentials

Using your certificates and keys:

On Zing’s adding a data source page, click on “Require SSL” and paste the corresponding text into each text box, removing any trailing whitespace:

Input client credentials on Zing

Zing will verify that it can connect to your data source and if successful, add it as a source. If Zing cannot connect to your data source, you'll see a message asking your to check your credentials and retry. If even after checking your credentials and retrying you still experience issues, reach out to Zing support here

3.5 - Google Sheets

Configure Google Sheets with Zing

Google Sheets is a widely used cloud spreadsheet. Setting up Zing with Google Sheets is the easiest way to get started, as it requires no database connection. You can simply authenticate in with your Google credentials, or provide the URL to your Sheets.

This is also the best way to import CSVs (assuming they are within Sheets’ size limitations).

You can also connect to a Microsoft Excel file by importing it into Google Sheets, then connecting that sheet to Zing.

You can connect Zing to Google Sheets from either the Zing web console, the Zing web app, the iOS app, or Android.

Connection Modes

There are two ways to connect to Google Sheets:

  • Live Connection mode, which will always run questions on the latest version of a sheet, and works with multiple tabs (you can choose which to make visible in Zing).
  • Snapshot mode, which will run questions on the version of the sheet when you first connected it to Zing, and subsequent updates to the sheet will not be updated in Zing. This mode supports a single tab.

Setup Steps

For both modes, you’ll need:

  1. A correctly formatted Google Sheet with field names in the header row. Your sheet should contain only the data you wish to import. Only one table per sheet (for now). Field names should not include special characters.

  2. Permissions to that sheet - meaning that your Google Account has at least ‘view’ rights to the sheet, OR the sheet has ‘available to anybody with the link’ access

Web Console

Add a Google Sheet as a data source from the web:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘data sources’ tab

  3. Tap ‘Google Sheets’

  4. To connect Zing to Google Sheets that are not public, authenticate into your Google account by clicking ‘Access your Google Sheets’ and enabling both Zing read access to your Sheets, and Google Drive read permissions when prompted. Both of these permissions must be granted for Zing to list your sheets and connect to your sheets as a data source.

    From there you’ll see a list of your Google Sheets. Select one you’d like to import or search by name and click the name of the sheet, then click ‘Select’

  5. To connect Zing to a publicly shared (available to anybody with the link) Google Sheet, you don’t need to authenticate into a Google account and can simply enter your Google Sheet URL.

  6. Tap ‘Save’

  7. Check for any warning messages which might indicate the sheet was incorrectly formatted.

  8. Optionally choose if you want a live connection or a one-time snapshot. If you selected ’live connection’, choose which tabs you want to make visible to Zing.

  9. The data source you just added will be available to everybody in your organization.

App

To add a Google Sheet as a data source from the Zing iOS or Android apps:

  1. Go to the sources tab
  2. Tap ‘Add a new data source’
  3. To connect Zing to Google Sheets that are not public, authenticate into your Google account by clicking ‘Access your Google Sheets’ and enabling Zing read access to your Sheets when prompted. From there you’ll see a list of your Google Sheets. Select one you’d like to import or search by name and click the name of the sheet, then click ‘Select’
  4. To connect Zing to a publicly shared (available to anybody with the link) Google Sheet, you don’t need to authenticate into a Google account and can simply enter your Google Sheet URL.
  5. Optionally choose if you want a live connection or a one-time snapshot. If you selected ’live connection’, choose which tabs you want to make visible to Zing.
  6. Tap ‘Confirm data source’. After a few seconds, Zing will show you if the sheet was successfully connected.

Notes

If you use the ‘Live Connection’ option to link Zing and the Google Sheet, be aware that modifying the sheet in a way that makes it improperly formatted (see above) will result in questions / graphs not loading correctly.


The ’live connection’ option for gSheets is available on the free ‘basic’ plan for the next month (through January 31, 2023) while in beta, after which it will be on the ‘Pro’ plan. After January 31st, 2023 you’ll need to be on a ‘Pro’ or above to use live querying.

3.6 - Excel, CSVs and JSONs

Import Microsft Excel, Comma Seperated Value and JSON files to Zing

Excel (XLS, XLSX) and CSV files can be read into Zing Data directly OR can be imported into a Google Sheet:

  • Direct Import is fast, good for small files, and useful if you don’t have a Google account or can’t use Google Sheets at your organization.
  • Google Sheets connection allows for dynamic alerts and updates to the data which will be immediately reflected in Zing.

Direct Import

Directly import CSVs and Excel files in Zing’s mobile apps (iOS, Android) and the web.

File types supported are:

  • csv
  • dbf
  • geojson
  • json
  • ndjson
  • xls
  • xlsx

Files up to 10 megabytes can be uploaded on the basic (free) plan, and larger upload sizes are available on the Standard, Pro and Enterprise plans.

To import a file, select the Excel or CSV option under ‘Add Datasource’ tab on mobile + web, or from the data sources tab on the Zing web console.

Formatting the file

In order to successfully import a file, the correct formatting should be applied to the data in the file before uploading.

Excel Files:

  • The first row must contain field names
  • Field names should not include special characters such as ()./\[\]\{\}?!@#$%^&\*()\_+-=.
  • There should not be any extra empty columns as these can result in the import to not work correctly.

JSON Files:

  • The file should contain a list of objects.
  • The property name should be enclosed in double quotes.
  • If the value is a string or a date, that should be enclosed in double quotes too.

An example of a correctly formatted JSON file would be as follows:

[
  { "Mean": 315.97, "Uncertainty": 0.12, "Year": "1959-11-01" },
  { "Mean": 316.91, "Uncertainty": 0.12, "Year": "1960-11-01" },
  { "Mean": 317.64, "Uncertainty": 0.12, "Year": "1961-11-01" },
  { "Mean": 318.45, "Uncertainty": 0.12, "Year": "1962-11-01" },
  { "Mean": 318.99, "Uncertainty": 0.12, "Year": "1963-11-01" },
  { "Mean": 319.62, "Uncertainty": 0.12, "Year": "1964-11-01" },
  { "Mean": 320.04, "Uncertainty": 0.12, "Year": "1965-11-01" }
]

We’ve added the ability to use Zing with an unlimited number of CSV files, join across them, and add/replace/delete them in much more flexible ways:

Append: Add new data to an existing table

  • Add new rows to an existing table
  • If the new CSV has columns that aren’t present in the existing table, those new columns will be added
  • This is the  equivalent of UNION ALL in SQL

Overwrite: Keep the same table name, but replace the data

  • All existing questions and dashboards connected to that table will work how you expect, but use the newly-uploaded data.
  • The previous data in the table is deleted

Multi-file upload: Add multiple CSV or Excel files at once

  • Upload up to 10 MB per file (free plan) or 100 MB per file (paid plans)

  • Optionally define join relationships between them to create a full queryable, multi-table data environment without needing to stand up a database

CSV and Excel files can co-exist and all live within a single data source

  • Previously, each CSV or Excel file imported was its own ‘data source’
  • Now, you can choose if you want to add a new file to an EXISTING data source, or instead create a NEW data source. Adding a file to an existing data source can make joining tables and appending / updating data easier.

Google Sheets Connection

Excel and comma separated value files are common ways to store data. You can import these files to Zing via the Google Sheet importer.

All of these file types are supported:

  • .xls (if newer than Microsoft® Office 95)
  • .xlsx
  • .xlsm
  • .xlt
  • .xltx
  • .xltm
  • .ods
  • .csv
  • .txt
  • .tsv
  • .tab

Import Steps

  1. First, import your (non-password-protected) file to Google Sheets:

    • Ensure the first row contains headers.
    • Every column to be imported must contain a header
    • Header names must be unique within your sheet
    • Exclude images, macros, tick-boxes, etc from your sheets prior to import
  2. Tap ‘share’ and set link visiblity set to ‘anyone with the link’. Once the sheet is imported you can revoke this permission if you wish.

    Note that unlike all other data sources in Zing, Google Sheets imports are not ’live’ connections. That is, Zing takes a ‘snapshot’ of the sheet at the time of import but subsequent changes to the sheet will not automatically update in Zing. If you’d really like it to be a live connection, let us know.

  3. Then follow the steps in the next section to add the Google Sheet to Zing.

Web Console

Add a Google Sheet as a data source from the web:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘data sources’ tab

  3. Tap ‘Google Sheets’

  4. Enter your Google Sheet URL. Your sheet’s link visiblity must be set to ‘anyone with the link’. Once the sheet is imported, you can revoke this permission if you wish.

  5. Add the name of the table you’d like your sheet to appear as in Zing. This will be searchable in Zing so making this reflect what the table is about will make it easier to find and use.

  6. Tap ‘Save’

  7. Check for any warning messages which might indicate the sheet was incorrectly formatted

  • The data source you just added will be available to everybody in your organization.

    Note that Google Sheets has some size limitations on imports.

3.7 - Snowflake

Configure Snowflake as a data source for Zing Data

Snowflake is one of the most commonly used cloud data warehouses, capable of ingesting data from a variety of sources, supporting robust permissioning, and allowing seamless scaling to large data sets.

You can connect Zing to Snowflake as a data source from the Zing web console or from the Zing Data mobile / web apps.

You’ll need:

  • An active Snowflake account
  • An active Zing Data account

Setup Steps

  1. Login to the Zing web console, and click on the ‘data sources’ tab

  2. Click ‘New source’

  3. Select ‘Snowflake’ as the data source.

  4. Enter your Snowflake credentials:

    • Hostname is required. If your snowflake URL is https://aa11111.us-central1.gcp.snowflakecomputing.com, enter the portion following https:// but before .snowflakecomputing.com. So in this example the hostname to enter would be: aa11111.us-central1.gcp
    • Database is required
    • Schema is optional
    • Username is required
    • Password is required
  5. Tap ‘Save’, and Zing will confirm that a connection to the database can be established. A list of all tables in that database will then be shown.

  6. By default, all the tables in your database will be made visible, but you can optionally turn off certain tables from being displayed by turning the switch for an individual table off, then hitting ‘save’.

  7. The data source you just added will be available to everybody in your organization.

    Note: Setting up Snowflake with Zing can be done both via the Zing Web Console (as outlined above), or from the Zing Data app, by clicking on the ‘sources’ tab then ‘add a new source’.

3.8 - Trino / Starburst Enterprise / Starburst Galaxy

Configure Starburst-Trino with Zing

Trino is an open source, highly performant, distributed query engine (formerly PrestoSQL). Starburst Enterprise is the enterprise offering of Trino and Starburst Galaxy is the cloud native and fully managed service of the Trino query engine offered by Starburst. Zing Data works with Trino, Starburst Enterprise and Starburst Galaxy.

Connect Zing to your Trino database from the Zing web console.

You’ll need:

  • Hostname is the hostname of Trino / Starburst Enterprise / Starburst Galaxy cluster. In Starburst Galaxy it’s in View Clusters » More Details » Get Connection; in Trino it depends on setup; in Starburst Enterprise Product it’s in EKS configurations

  • Port is the port that your cluster is live on - typically 443 by default for Trino / Starburst Enterprise / Starburst Galaxy, but your port may differ.

  • Username is…your username. Best practice is to create a read only user.

  • Password is…your password. If you are using Starburst Galaxy, this will be the password you use to login to Starburst’s web portal. Zing will encrypt this.

  • Catalog is the data source within your Trino/Starburst cluster you would like to connect to. Read more here.

  • Schema defines a set of tables that can be queried. Read more here.

  • Database Name can be any value - it is just how the name data source appears in Zing but isn’t used to connect to your cluster

Right now, Trino data sources must be set up on web (but are accessible across both Zing Web and Zing Mobile apps).

To add a Trino data source:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘data sources’ tab

  3. Enter your Trino credentials, as outlined above.

  4. Choose if you’d like to make all tables in your schema visible, or if you’d like to select only certain tables to be visible.

  5. Tap ‘Save’

  • The data source you just added will be available to everybody in your organization.

3.9 - Databricks

Configure Databricks as a data source for Zing Data

Databricks is cloud data platform and is an outgrowth of Apache Spark. It can run on Amazon Web Services, Microsoft Azure, or Google Cloud Platform.

You can connect Zing to Databricks as a data source from the Zing web console (and from the Zing mobile / web apps soon!).

You’ll need:

  • An active Databricks environment
  • An active Zing Data account

Setup Steps

  1. Login to your Databricks web console and go to ‘User Settings’ at the top right

  2. Under ‘Access Tokens’, click on ‘Generate new token’. Make sure you save it somewhere safe.

  3. In the left-hand menu, switch to the ‘SQL’ context and click on ‘SQL Warehouses’.

  4. From the list of warehouses, choose the one you want to query in ZingData and click on it.

  5. Switch to the ‘Connection details’ tab and save the displayed info, we will be using it shortly.

  6. Login to the Zing web console, and click on the ‘data sources’ tab.

  7. Click ‘New datasource’.

  8. Select ‘Databricks’ as the data source.

  9. Enter your Databricks host, port, path and token gathered in steps 2 and 5 above.

  10. Your Databricks schema can be found in Databricks by clicking ‘Data’ on the lefthand navigation and then looking under ‘Data Explorer’. Enter this into Zing.


  11. Tap ‘Save’, and Zing will confirm that a connection can be established. A list of all tables in that database will then be shown.

11. By default, all the tables in your database will be made visible, but you can optionally turn off certain tables from being displayed by turning the switch for an individual table off, then hitting ‘save’.

12. The data source you just added will be available to everybody in your organization.

A step by step video is here:

3.10 - Mozart Data

Configure Mozart Data with Zing

While Zing supports common databases, if you want to connect Zing to CRM, ERP, and ads reporting systems you’ll likely want to use a third party that pulls in data from each source, standardizes it, and makes it easily queryable.

Mozart Data supports more than 300 data sources and allows for join operations across data sources, making the transformed data available to Zing as a Snowflake data source. Mozart Data supports:

  • Sendgrid
  • Square
  • Stripe
  • Amplitude
  • Quickbooks
  • Workday
  • Google Analytics
  • Facebook Ads
  • Hundreds of others

To connect Zing Data to Mozart Data, you’ll need:

  • A Mozart Data Account which is free for a 14 day trial period
  • A Zing Data Account

Once you’ve created both accounts

  1. Go to the Zing web console and click the ‘Data Sources’ tab then ‘Add Datasource’

  2. Select ‘Snowflake’ as the data source type:

  3. Login to your Mozart Data dashboard

  4. Go to the ‘Integrations’ tab, then click ‘Zing Data’

  5. This will display your connection information to copy + paste into Zing Data using the a ‘Snowflake’ data type

    • Hostname
    • Database Name
    • User Name
    • Password

  6. Once you’ve entered all credentials into Zing, tap check connection and you’ll see a list of all tables from Mozart. If you want to limit which tables are visible, you can ’turn off’ some of the tables and they’ll not be visible to you or other users in your organization in the Zing UI.

  7. Click ‘Save’ in the bottom right and the data source will be added. It will now appear in the ‘sources’ tab in the Zing app, and on the homescreen of the Zing app.

3.11 - Amazon Redshift

Configure Amazon Redshift with Zing

Amazon Redshift is a widely used cloud data warehouse, hosted on AWS and configurable as either a cluster where you define setup parameters, or a ‘serverless’ set-up.

You can connect Zing to your Redshift cluster from either the Zing web console, and then can access it via the Zing web app, iOS app, or Android.

You’ll need:

  • Hostname which is the publicly accessible IP or URL for your Redshift database. Note that you’ll need to set your database to be publicly accessible.
  • Port which is the port that your database is live on – typically 5439 by default for Redshift, but your port may differ
  • Database Name which is the name on your hostname IP / URL you database is referenced by
  • Username which is…your database (NOT AWS!) username. Best practice is to create a read only user
  • Password which is…your password. Once you enter this, Zing will automatically encrypt this.

If you’ve not already created a Redshift cluster and made it accessible to a data querying tool outside youur VPC, you’ll need to:

  • Create a Virtual Private Cloud (VPC) – the default VPC is fine.

  • Create a subnet group

  • Expose a public IP (often using ElasticIP), allocate it, and connect it to your Redshift instance

  • Set your Redshift cluster to ‘publicly accessible’ and connect it to the IP you’ll expose to the internet via a routing table

  • Ensure your security group allows connections from IPv4 connections from the internet (or better, just from Zing’s IP specifically: 34.75.82.6 )

Web Console

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘data sources’ tab

  3. Enter your Redshift credentials, as outlined above.

  4. If your Redshift instance database is behind a firewall (which it always always will be), you’ll need to allow connections from Zing’s IP address: 34.75.82.6

  5. Tap ‘Check Connection’

  6. You’ll see a list of tables and views which you can allow Zing to access. By default ‘Include All’ is turned on which means all database tables will be visible to Zing. But if you’d like you can select a subset of tables to make visible to Zing.

  7. Tap ‘Save’

  8. Once you see that your connection has been successfully saved, tap ‘Close’

  9. The data source you just added will be available to everybody in your organization.

    Zing will verify that it can connect to your data source and if successful, add it as a source. If Zing cannot connect to your data source, you'll see a message asking your to check your credentials and retry. If even after checking your credentials and retrying you still experience issues, reach out to Zing support here

3.12 - Microsoft SQL Server

Configure MS SQL Server with Zing

Microsoft SQL Server is one of the most widely used databases for enterprise deployments, developed by Microsoft. MS SQL is scalable and includes ETL (Extract, Transform and Load) tools and reporting services. It is evolving rapidly in the cloud and on hybrid platforms.

You can connect Zing to your MS SQL database from the Zing web console.

You’ll need:

  • Hostname, which is the URL or IP address of your database
  • Database Name, which is the name on your hostname IP / URL, your database is referenced by
  • Username, which is your username. Best practice is to create a read only user
  • Password, which is your password. Once you enter this, Zing will automatically encrypt this.

Web Console

Add a MS SQL database from the web:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘Data Sources’ tab

  3. Enter your MS SQL credentials, as outlined above.

  4. If your SQL Server / Azure database is behind a firewall (which it typically will be), you’ll need to allow connections from Zing’s IP address: 34.75.82.6

  5. Tap ‘Check Connection’

  6. Zing will verify that it can connect to your data source and if successful, add it as a source. If Zing cannot connect to your data source, you'll see a message asking your to check your credentials and retry. If even after checking your credentials and retrying you still experience issues, reach out to Zing support here
  7. Choose the tables you want to include and tap ‘Save’.

  8. The data source you just added will be available to everybody in your organization.

3.13 - Clickhouse

Configure Clickhouse with Zing

Clickhouse is an open-source database management system (DBMS) for online analytical processing (OLAP). It uses a column-based structure. Clickhouse was designed to be fast and highly-scalable. Clickhouse stands out for high performance because it gives attention to low level details when performing queries.

You can connect Zing to your Clickhouse database from the Zing web console.

You’ll need:

  • Hostname, which is the URL or IP address of your database
  • Database Name, which is the name on your hostname IP / URL, your database is referenced by
  • Username, which is your username. Best practice is to create a read only user
  • Password, which is your password. Once you enter this, Zing will automatically encrypt this.

If you require the connection to be secure, three additional fields would be required:

  • Server Root Certificate
  • Client Key
  • Client Certificate

The Clickhouse documentation provides more information about generating certificates to connect via SSL.

Web Console

Add a Clickhouse database from the web:

  1. Go to your Zing Data Web Console and ensure you are logged in

  2. Tap the ‘Data Sources’ tab

  3. Enter your Clickhouse credentials, as outlined above.

    If you are connecting to Clickhouse Cloud, you’ll typically want to use port 8443 and ‘use SSL’. Your connection host will be something like https://xxxxx123.us-east-1.aws.clickhouse.cloud

  4. If your Clickhouse database is behind a firewall (which it typically will be), you’ll need to allow connections from Zing’s IP address: 34.75.82.6

  5. Tap ‘Check Connection’

  6. Zing will verify that it can connect to your data source and if successful, add it as a source. If Zing cannot connect to your data source, you'll see a message asking your to check your credentials and retry. If even after checking your credentials and retrying you still experience issues, reach out to Zing support here

    No preview available

    Unknown Shortcode

    contact

    No preview available

    Unknown Shortcode

    contact

  7. Choose the tables you want to include and tap ‘Save’.

  8. The data source you just added will be available to everybody in your organization.

3.14 - Amplitude

Configure Amplitude with Zing Data

Amplitude Analytics is one of the broadly used tools for storing user events, generating cohorts, and taking a deeper look into user journeys throughout your app or website.

But having this data live only in Amplitude, visible and queryable only from a computer limits your team’s ability to understand what is happening with users in real-time.

There are three main steps:

Step 1: Syncing Amplitude Data to Google BigQuery (or Snowflake / Redshift)

  1. Login to  Amplitude, then click the Data tab, then Destinations tab.
  2. Click new destination and select BigQuery, Snowflake, or Redshift
  3. Select the data you’d like to export export frequency
  4. Review the schema and click Next.
  5. Specify the dataset in the cloud data warehouse to receive your Amplitude data. If you’re connecting to Google BigQuery, upload the service account key file. This file must be in JSON format. Instructions for creating a service account in BigQuery with the appropriate permissions are here.
  6. Click Next. Amplitude connects to your warehouse upload is successful, click Finish to complete the process.

Step 2: Set up BigQuery (or Snowflake / Redshift) with Zing Data

3.15 - Google Analytics 4

Configure Google Analytics 4 (GA4) with Zing Data via BigQuery

Google Analytics 4 (GA4) is a supported data source for Zing Data, via a BigQuery connection. This lets you leverage Zing Data for streamlined query generation, mobile access, dashboard creation, and real-time alerts on top of your GA4 data.

Zing Data is a trusted Google Cloud Partner.

Step 1: Set Up Google Analytics 4

First ensure that your website has Google Analytics 4 properly configured. GA4 offers a wealth of user behavior data that you’ll be tapping into. Once your GA4 account is in place, proceed to the Google Analytics dashboard at analytics.google.com.

Step 2: Create a BigQuery Project

  1. If you don’t have a BigQuery project, head over to cloud.google.com and create one (free tier available).
  2. Enable the BigQuery API for your project.
  1. Navigate to the Admin section in Google Analytics.
  2. Scroll down and locate “BigQuery Link” under “Data Streams.”
  3. Click “Link” to establish a connection between your GA4 account and BigQuery.

Step 4: Wait 24-48 hours

GA4 data does not immediately sync to BigQuery and it can take even a few days (more than 24 hours from our testing) before you start seeing GA4 tables and events in BigQuery.

Step 5: Set up a view with data from all individual days of events

  1. Within the BigQuery section of cloud.google.com, click **new query **from one of the event tables which has been populated by GA4. It will look something like events_20230817 or events_intraday_20230817

  2. Create a query with the following text, then save and save as view

    SELECT * FROM ‘<PROJECT_ID>.<DATASOURCE_ID>.events_*`

This combines all daily events tables to make them queryable as a single table, similar to a UNION ALL of the events_day1, events_day2, etc.

Step 6: Configure a Service Account for BigQuery

  1. Access the “Credentials” section under “APIs & Services” in Google Cloud.
  2. Create a new service account, granting it necessary permissions (e.g., BigQuery Data Viewer, BigQuery Job User).
  3. Download the service account JSON file containing credentials.

Step 7: Connect Zing Data to BigQuery

  1. Log in to Zing Data.
  2. Connect Zing Data to your Google BigQuery project using the service account details.
  3. Select the desired datasets and tables

Step 8: Craft Data Queries with Zing Data

  1. From the Zing Data home screen, click on the events view you created in step 5
  2. Leverage natural language to generate queries for your GA4 data by typing in the search bar at the top.
  3. Access these queries via your mobile device for on-the-go insights.
  4. Combine queried data to create meaningful dashboards and visualizations by adding questions to a dashboard.
  5. Set up real-time alerts based on specific data thresholds by tapping the top right three dots on any question with a time series.

Conclusion

By connecting Google Analytics 4 with BigQuery and Zing Data, you’ve unlocked a powerful mechanism for harnessing insights from user behavior with the flexible power of natural language querying, SQL, or easy visual querying with SwiftQuery.

This integration empowers you to analyze trends, track performance, and make informed decisions for your business, all while enjoying the convenience of natural language query generation, mobile access, and real-time alerts. Best of all, the free tiers offered by BigQuery and Zing Data make this powerful capability accessible to businesses of all sizes.

Note:

Setting up Google BigQuery with Zing must be done using the Zing Web Console.

4 - Asking Questions & Querying

Asking Questions

From the Zing App you’ll see three sections:

  • Dashboards are collections of questions laid out on a canvas. Any question can be added to a dashboard.
  • Questions displays questions you save or that other people in your organization have shared with you. Tap a question to view the graph or table of results, or to clone an existing question to make it your own. You can also comment on questions to participate in a conversation, and anybody who is part of that conversation will be notified by email of your comment.
  • Tables displays all visible tables and views of any of your database(s). If you have multiple data sources configured in Zing, you’ll see all visible tables and views from all data sources you have set up or which have been shared with you. If you only made certain tables available to Zing in your connection settings, only the tables / views you ’turned on’ will show here.

Ask questions from a table by tapping on the table name, then dragging fields to the x, y, or filter areas of the SwiftQuery canvas.

Ask questions from a dashboard by tapping on a question card in a dashboard then clicking on an individual data point to deep dive or see values, or click on the three dots in the upper right to duplicate a question and modify it.

NEW: You can also create queries using natural language by going to a source and typing your question in the search bar. To do this tap <sources> then a data source.

Natural language querying works from the search bar for a specific source, and from the home screen.

Selecting Fields

  • Drag a field from the filter section (the top of the SwiftQuery canvas)
  • Set the filter comparison values and filter groups as desired.

Aggregations and Filters

  • Tap and hold a field to see available aggregations and filters, including. Available aggregations and filters are:
    • SUM displays the sum of all numeric values
    • COUNT displays the number of rows in the database (which meet all the filter conditions across fields in your query)
    • AVERAGE displays the mean value across all rows in the database
    • GROUP BY groups rows that have the same value – useful for summarizing results by a category (e.g. “Sales by City” if those cities are represented multiple times in a table)
    • When a Condition is Met lets you filter rows:
      • Equals only returns results which match the value you input (e.g. “City equals ‘New York’” will return results only where the city field for that row equals New York)
      • Does Not Equal returns results which do not match the value you input (e.g. “City does NOT equal ‘New York’” would return all cities except New York)
      • Greater than returns results which are greater than the value you input
      • Greater than or equal returns results which are greater than or equal to the value you input
      • Less than returns results which are less than the value you input
      • Less than or equal returns results which are less than or equal to the value you input
      • Between returns results which are between the two values you specify. For date fields this will be two dates and Zing will display a date selector to easily select dates.
      • Includes returns results which include part or all of the value you input. For instance “City includes ‘San’” would return “San Francisco” and “San Diego” if those values are present in the data.
      • Excludes returns results which do not include any of the value you input. For instance “City excludes ‘San’” would return all cities which do not contain “San” in their name so “New York” and “Boston” would be part of the result set, but “San Diego” and “San Francisco” would not

Note that not all fields will show all of the aggregations mentioned above because Zing only shows the aggregations which are relevant – for instance a string field won’t show “greater than” or “less than” as an option because those are only relevant for dates and numeric fields.

If you are using the visual query editor, up to 50 data points will be shown with one group-by selected, and up to 1,000 data points will be shown with two group-bys selected. This will be indicated at the top of the screen as ‘partial results’ and if you’d like you can modify your question or tap ‘full results’.

Dates and Date Operators

If your database has a date, time, or timestamp field, Zing will show date-specific functionality for filtering and will give you options for grouping by different time scales.

Timestamp fields will by default be shown by day. This means if you GROUP BY a timestamp field, Zing will consider all the timestamps in a given day to be part of that day. You can specify the time scale you’d like – with options for second, minute, hour, day, week, month, and year.

To choose the time scale for a given field, first drag the time field to the SwiftQuery canvas, then tap the field for date aggregation options:

To limit the date range of your query you can simply select the date range you want on the pop-up calendar using the following conditions for dates:

  • Before lets you specify a date and time with results limited to records before that date/time.
  • After lets you specify a date and time with results limited to records after that date/time.
  • Between lets you tap between two dates on a calendar to limit the results to that date range
  • Not Between lets you tap between two dates on a calendar to exclude results from that time range. This can be useful if, for instance, data was incorrect for a given time range.

If the date/time options outlined above are not showing up for a given field, that field is likely not classified as a date, time, or timestamp.

Calculated Fields

Create calculated fields by tapping ‘Calculated Field’ below the field names on the question screen.

You’ll then name the field (avoiding the use of spaces), and the calculation. As you type, a autocomplete typeahead will display aggregations and fields.

You can mix and match fields and aggregations in a calculated field. For example, use calculated fields to compute a weighted average, a percentage, or CASE logic.

A question can have multiple calculated fields. To remove a calculated field, tap the ‘X’ on that field, and to edit it, tap ’edit’.

From the main screen, you can search any table names using the search bar at the top of the app.

Once you’ve tapped on a table, you’ll see all fields in that database. You can search across all fields using the search bar at the top of the screen.

SwiftQuery Interactive Question Builder 

Once you’ve tapped on a table, tap the three dot overflow menu in the top right and select ‘drag and top editor’. Then simply hold and drag field names (shown in the bottom sheet) to the x-axis, y-axis, filter, or dimension drop targets.

The chart will update as you make changes and drag new fields onto the chart. 



Natural language querying (text-to-question) 

From iOS, Android, and the Web simply:

  1. Create a Zing Data account
  2. Add a data source from iOS, Android or web versions of Zing
  3. On the home screen tap the search box [A] to get started. Select the data source you want to ask questions in [B] and enter your query. Tap “Ask” or “Done” on your mobile keyboard to submit your question.

  1. Your question will run using a large language model trained on english to query contruction against your data source.
  2. You’ll see a visualization or table of your question. If AI can’t understand your question, you’ll want to ask it in a different way or use the visual query editor, or custom SQL editor. Questions can join data from across tables within a data source but joins across multiple data sources are not supported.
  3. From here, you can save down chart images as PNGs, export query results as CSVs, mention or invite colleagues, or set up real-time push notifications and emails so you’re alerted when data changes or hits a threshold.

Notes specific to charts created from the visual question builder

If you run a question that returns a lot of results, sometimes Zing can’t display all the results (nobody wants a billion of individual rows sent to their phone). A things happen behind the scenes for questions asked using the visual question builder:

  • When the number of data points on the X-axis is greater than 50, Zing samples results:
    • For chronological data, the most recent 50 data points are shown
    • For everything else, the top 50 data points with the highest chart values are shown
  • When 2 GROUP BY columns are selected, Zing limits the number of categories shown for one of the GROUP BY columns:
    • If one of the GROUP BY columns is a date/time type, we use it for the X-axis and limit the values for the other GROUP BY column. These values are currently limited to the top 20 with highest Y-axis values for each X-axis value.
    • A maximum of 1,000 data points is shown if two GROUP BYs are specified.

To view all results, you can tap the drop-down on the top left and select ‘Full Results’ to see a data table view of the full results set.

Custom SQL

You can also use the Zing Custom SQL editor for more sophisticated use cases. A helpful typeahead that auto-completes popular aggregations like (SUM, COUNT, MIN, MAX, GROUP BY, etc.), and field names.

Using the custom SQL creation mode, you can also join across tables from the same data source as well.

To access the custom SQL typeahead:

  • Select a table from the home screen
  • Tap the three dots in the upper left and then ‘Write custom SQL’
  • Write your query and then tap ‘Run’ Note: If the administrator of your organization’s account has disabled custom SQL, you won’t see this option.

You can control which fields from your custom SQL query are graphed on the X-axis or Y-axis by using a special aliasing in Zing.

  • To ensure a field is graphed on the X-axis, add the “_x1” alias to your field in custom SQL. If you also specify “_x2” that _x2 field will be used as the ‘cut’ or ‘split’ for the x-axis field.
  • To ensure a field is graphed on the Y-axis, add the “_y1”, “_y2”, “y3”, alias to your field name in custom SQL. The underscore and axis designation in your alias won’t show up in your graph titles, but are used to indicate which axis you want a field graphed on.

For example, changing the “_x1” and “_x2” fields in the example below swaps which field is on the x-axis and which field is used as the dimension to split by.

 

Note that for custom SQL:

  • The SQL typeahead shows fields and popular aggregations. It does not show all aggregations your underlying data source may support, but you can still use those in the custom SQL mode. For instance if you want to extract a JSON value and your data source is Google BigQuery, you’d use JSON_EXTRACT but if your dats source is Snowflake, you’d use JSON_EXTRACT_PATH.
  • Only ‘select’ statements are supported. Insert / Update / Create / Drop are not.
  • For Google BigQuery data sources, tables are referenced as ‘project_id.schema.tablename’ – for instance light-quest-122122.austin_bikeshare.bikeshare_trips

Live Results vs. Caching

By default, Zing live-queries your data as you ask questions, view queries, or deep-dive. This ensures that results are always up-to-date, and allows for real-time alerting. 

However, you can also turn on results caching. This temporarily stores the result of a question so that if you view the question again in a short period of time, the question doesn’t need to re-run.

This has the advantage of reducing compute for questions which are accessed frequently. If you access a question after the cache duration, the question will live-run the question and store its result for the cache duration specified.

You can set the length of time to cache a question’s results and typically this should be aligned to the update frequency of your underlying data. For instance, if your underlying data is updated once every 30 minutes, a cache duration of 30 minutes would be appropriate.

Switch between live mode and cache mode for a saved question by tapping ‘cache settings’ from the three dots in the upper right.

5 - SSO Integrations

The Zing Data platform supports the following single sign on providers. Please reach out to us at hello@getzingdata.com to get support for an SSO provider that is not yet listed, and we’d be happy to assist.

5.1 - Microsoft Entra ID / Active Directory

Microsoft Entra ID (formerly Azure Active Directory) is a comprehensive identity and access management (IAM) solution providing:

  • Single sign-on (SSO): Access multiple applications with one set of credentials.
  • Multi-factor authentication (MFA): Add an extra layer of security.
  • Conditional access: Grant access based on specific conditions.
  • Directory synchronization: Easily manage user identities across systems.

Integration overview

Here is a video walkthrough of how to add the Zing Data platform as an enterprise application in your Microsoft Entra ID workspace.

Setup

  1. Go to the Azure Portal

  2. Navigate to Microsoft Entra or Azure Active Directory.

  3. Click on Enterprise Applications.

  4. Then click on New Application.

  5. Select the Create New Application option

  1. Tap the Create your own application button

  1. Select the Integrate any other application option.

  1. After this, you should have the ApplicationId and ObjectID values created by Microsoft EntraID. Send these values to the Zing Data enterprise support team to complete the integration.

  2. Now we will need to generate a new scope. Click on Add Scope and fill out the information below. The scope name should be zing-access

  1. Click on API Permissions on the left side panel. Click on Add a Permission –> Select Microsoft Graph –> Pick Delegated Permissions.

  1. Select email and profile. Click on Add Permission again and pick the Zing Data app from APIs my organization uses tab. Select Delegated Permissions –> Zing Access

6 - Charting & Data Tables

Visualize query results with a range of chart types and data tables, and easily export to Google Sheets, Microsoft Excel, Google Slides, Microsoft Powerpoint, Teams, Slack, and more.

Zing will automatically display the data in a way that makes sense for the data you selected. For instance, if you have time as field in your question, Zing will automatically plot time on the x-axis from low to high. You can easily change to an alternative visualization if you wish, and can re-order data points, as described below.

If a question does not have a visualization which can be displayed (e.g. a table of text fields), Zing will simply show a table of results. Custom queries (where you provide SQL instead of using Zing’s tap-to-query interface) will display results using a table.

Visualization Types

Zing offers a range of visualization types, which vary based on the number of fields (and field type) returned in your question’s answer:

  • Combo chart
  • Stacked Bar Chart
  • Bar Chart
  • Stacked Line Chart
  • Line Chart
  • Data Table
  • Horizontal Bar Chart
  • Area Chart
  • Scatter Chart
  • Donut Chart
  • Map 
  • Big Numbers 

Toggle between chart types and data tables by tapping the upper right Chart Selection drop down

Tap on a data point in a chart to see a tooltip showing with the value of that data point and its category.

On iOS and Android, you can pinch-to-zoom into specific values or part of a graph.

Sorting

You can easily change the order values are displayed on the graph or data table.

To sort a graph, tap the x-axis and a ‘sort by’ controls will appear below your chart. You can sort by the x-axis, or y-axis from ascending or descending order.

To sort a data table, tap the field name and it toggle between unsorted, descending, and ascending.

Time Comparisons

You can easily change the order values are displayed on the graph or data table.

To add a time comparison to your chart or data table, simply:

  1. Add a filter with a date/time field
  2. Select the range you’d like to filter on:
    • After a date
    • Between two dates
    • Relative past dates (e.g. past 12 months, or previous 24 hours)
    • Relative future dates (e.g. next 24 hours, next two quarters)
    • Relative past to future dates (past 7 days to next 7 days)
  3. Click ‘compare’ and specify either:
    • The previous period (For example, if you had March 15, 2023 - March 25th, 2023 the previous period comparison would be the *same duration (*10 days) ending on the start date of the period specified, in this case March 5 - March 15, 2023)
    • The year ago period (For example, if you had March 15, 2023 - March 25th, 2023 the previous period comparison would be the same days and month, but the previous year, in this case March 15, 2022 - March 25, 2022)

Relative dates into the future dates can be useful for looking at forecasts and having a ‘rolling’ period which always shows data relative to the time the question is run.

Drill Down into Specific Data

You can now tap to drill down and get deeper insight on specific data fields!

To see the “Drill Down” tooltip:

  • On mobile, tap and long press on a data point on a graph, or simply tap on a cell on a Data Table.

Drill down on mobile

  • On web, simply click on a data point on a graph or a cell on a Data Table.

Drill down on web

After clicking on the tooltip, you will be brought to the SwiftQuery editor, with axes or columns pre-populated to match those of the original graph or table, along with a filter applied based on the data selected.

For example, if I select a line in a Line Graph that represents the Region of San Francisco, CA, the SwiftQuery editor applies a filter with the condition of Region = San Francisco, CA along with the graph’s original axes.

Drill down for line graph

If I select a cell in a Data Table which has the value of Berkeley, CA for Region, the SwiftQuery editor applies a filter with the condition of Region = Berkeley, CA along with all the columns in the original table.

Drill down on data table

From here, you can modify your query in the editor before running to dive deep into specific data!

Identify Other Data with the Same Values

You can also “zoom out” and identify other data that share the same value for a particular field or column.

To see the “Show Values” tooltip, it is the same mechanism as to see the “Drill Down” tooltip.

After clicking on the tooltip, a Data Table with all columns will be presented, along with rows of data with values matching the data point or cell that was selected.

For example, if I select a point in a time-series graph and run “Show Values”, I will be able to see a Data Table with all values at the specific time of the data point selected.

Other values for time series

If I select a cell in a Data Table with the value of 70 for Homes Sold, a Data Table will be returned where I can all data for months where homes sold in a region equals to 70.

Other values for a specific value

Time and Date Formatting

To change the time and date formatting, tap the x-axis or a table cell, and formatting options will appear in the bottom sheet. Tap on the “Date format” dropdown to choose your preferred formatting options. The options you see will match the time granularity of your question.

If you choose the “custom” option, you can construct a custom format with the following symbols:

Symbol

Meaning

Presentation

Example

y

year

number without truncation or leading zeros

2012

yy

year

number truncated to the last two digits

12

yyyy

year

four-digit number, with leading zeros if necessary

2012

M

month in year

number without a leading zero

3

MM

month in year

two-digit number, with a leading zero if necessary

03

MMM

month in year

abbreviated name

Mar

MMMM

month in year

full name

March

d

day in month

number without a leading zero

6

dd

day in month

two-digit number, with a leading zero if necessary

06

EEE

day of week

abbreviated name

Tue

EEEE

day of week

full name

Tuesday

h

hour in am/pm (1~12)

number without a leading zero

1

hh

hour in am/pm (1~12)

two-digit number, with a leading zero if necessary

01

H

hour in day (0~23)

number without a leading zero

13

HH

hour in day (0~23)

two-digit number, with a leading zero if necessary

13

m

minute in hour

number without a leading zero

7

mm

minute in hour

two-digit number, with a leading zero if necessary

07

ss

second in minute

number without a leading zero

55

ss

second in minute

two-digit number, with a leading zero if necessary

55

a

am/pm marker

 

PM

'

escape for text

 

'Date='

''

single quote

 

'o''clock'

You can use characters like ‘/’, ‘:’, ‘-’, ‘.’ directly, without enclosing them in single quotes.

Exporting Graphs and Data Tables

Save graphs to your phone’s photo gallery by tapping the three dots in the top right of the app and click ‘save to photo gallery’. You may need to grant Zing permissions to save files to your phone. These images will be saved as PNGs and can be accessed by other apps on your phone to make it easy to send charts and analysis in email, Slack, and to embed in documents from your mobile device. Easily drop these graphs into Slack, Microsoft Teams, Google Slides, Microsoft Powerpoint, Microsoft Word, or Google Docs.

Save tables to your phone by tapping the three dots in the top right of the app and click ‘save table as CSV’. You may need to grant Zing permissions to save files to your phone. This will provide a comma seperated values file which can be used in other apps on your phone such as email, Google Sheets, Microsoft Excel, and more.

Large Exports

By default, Zing shows you top results by limiting how many data points are shown in a graph or table preview – but gives you the full control to get all data as a CSV (even up to multiple gigabytes). We’ve tested it up to tens of millions of rows and 3 GB + files.
​​​​​

Get started with large exports:

  1. Create a question 
  2. Save the question (large exports require the question to be saved first)
  3. Tap the three dots in the upper right, the ‘Export to CSV’
  4. The file will automatically download once the full query runs and the result is complete

Zing’s large export capability (more detail here) works with Clickhouse, Postgres, BigQuery, and other data sources. If you’d like it for other data sources, let us know.

Big Number Chart 

Select the data you want to work with from ‘Data Source’ and start building: 

  1. Once you are in the chart builder select “Big Number” from the chart menu

  2. Drag a field into the chart builder

  3. Now you can see a big number, click formatting to fine tune the presentation 

  4. In the format sheet you can quickly add a your own custom target value, overwrite the field name, change font color and more!

  5. Technically you are done, you have created a big number data viz!
    But there is more:

  6. Add a filter to segment your data

  7. Configure the filter with easy to use conditions

  8. Run and save your visualization!

     

Calculate multiple percentiles on the Y-Axis

This feature allows users to gain deeper insights into their data distribution by displaying various percentile values along the vertical axis of a chart. This functionality is particularly useful in statistical analysis, where understanding the spread and distribution of data points is crucial. By plotting multiple percentiles, such as the 25th, 50th, and 75th, users can quickly identify trends, outliers, and the central tendency within their datasets. This feature enhances the ability to conduct comprehensive data analysis, providing a clearer picture of the data’s behavior and characteristics, and enabling more informed decision-making based on a detailed percentile analysis.

Define sort order for data series

To enhance the user experience and ensure viewers can quickly understand the visualization, our platform now lets you define the order series are displaed on a chart. Easily rearrange the segments within a bar charts using drag and drop functionality in the format panel. This added control allows for customized presentation of data, ensuring that the most relevant information is highlighted according to your preference.For instance, if you had data split by city, and always wanted to ensure that New York is shown at the bottom of a stacked bar chart, you could simply drag New York to reorder the series order and get the visualization perfect.

Intuitively sort table columns the fast way

Sorting columns server side significantly improves performance and speed, when dealing with large datasets. Instead of downloading and sorting the entire dataset on the user’s device, which can be resource-intensive and slow, or only locally sorting the partial data on the client, the server now handles the sorting logic and sends only the correctly sorted data to the client. This method ensures faster response times and a smoother user experience, as it minimizes the amount of data transmitted and reduces the processing load on the user’s device.



7 - Location based querying

Query based on your current location and visualize geospatial data on an interactive map

Query any database containing geospatial fields in Zing using location-based querying. This lets you:

  • Query based on your current location, a radius, or a specific location
  • Visualize locations on an interactive map
  • Overlay relevant aggregations, calculated fields, and metadata on each data point

To use location-based querying, your data source must contain:

  • A numeric field containing ‘lat’ somewhere in the field name (indicating latitude)
  • A numeric field containing ‘long’ somewhere in the field name (indicating longitude)

Using the SwiftQuery drag & drop editor:

  1. Click the drop down for chart types and select “Map” as the chart type. interactive builder dropdown maps interactive builder
  2. Drag and drop either the ‘lat’ or ‘long’ fields into the “Latitude” or “Longitude” area, and the other coordinate field should be auto-populated.
  3. A preview of the map with clusters of pins should be displayed.

Next, you can specify how each pin appears based on properties of the data:

  • Color: Each pin will have a color corresponding to a value from the field chosen.
  • Size: The size of each pin will depend on the relative magnitude of its value from the chosen field.
  • Location Filter: You can filter results shown, by specifying a location and a radius size within that location. You will need to give Zing permission to use your phone’s location if “Current location” is selected.
  • Labels: You can drag and drop fields inside this area to see each pin’s data for the fields selected on the map.

Here is a demonstration of how you can use SwiftQuery to visualize location data on a map interactively! maps interactive builder walkthrough

Using the list editor:

  1. Tap on a table or view containing latitude and longitude fields

  2. Tap and hold a latitude field, and then ‘set as latitude’. If you have a latitude field and longitude field with a similar name structure ( e.g. store_latitude and store_longitude )

    Zing will automatically select the corresponding latitude or longitude field.

  1. Optionally, you can select other fields and aggregations, whose values will appear on the map

  2. From here, you can tap ‘run question’ and all points returned from the query will be shown

    OR

    Select ‘Filter by location’ and give Zing permission to use your phone’s location:


    Then select the radius relative your current location, or type an alternate address to filter your query.

  3. Your query results are shown on a map (with up to 50 grouped data points).

    You can tap ‘full results’ to see all points for your query, or ‘Always show full results’ to always see full results for that question when saved.

    Zoom in or out an Zing will aggregate points for better usability.

  4. Tap on a data point to see all the values and metadata for each point. If you selected other fields than latitude / longitude in your query, or aggregations those will appear when you tap a point.

    If multiple points are on top of each other (e.g. multiple inspection dates on a given property and you’ve grouped by inspection_date, you’ll see arrows at the bottom of the screen to swipe through the values.

  5. Save the question.

  6. Each time you or anybody you’ve shared the question with opens the question, the results will be show relative to that person’s location if you specified ‘current location’ when constructing the query, if they have location services turned on.

Location queries can be run on iOS, Android, or the web.

8 - Accounts, Invites, & Collaboration

Share data sources, questions, and collaborate with your team from anywhere

Creating an account

When you create a Zing account, you’ll want to use an email at the same domain as your colleagues. By default Zing will limit invites to people at the same domain name to ensure that you don’t accidentally share outside your organization (unless you want to, in which case turn on external sharing ) in settings.

Inviting People

You can invite people to your data sources using their e-mail address. Once they accept your invite, they’ll be able to access your organization’s data sources and shared questions.

If you want to invite a user to view a single question, click the ‘Share’ icon on that question (the up arrow in a box in the top right) and add them to the list of people with access. You can specify a viewer or editor role, and you can optionally make a question visible or editable to your organization.

Note that sharing an individual question without inviting a user to the organization will make the question visible to them, but the underlying data source will not appear in their sources tab. If you want a user to have the data source listed in their ‘sources’ tab, share the data source with them using the Zing web console.

Web Console

From the web console:

  • Tap ‘Invite Users’

  • Type the email(s) of the people you want to invite. You can invite multiple people by seperating the email addreses using a comma - useful for batch invites.

  • Tap the ‘+’ icon

  • Tap ‘Invite’ to send the invites

You can resend an invite, cancel an invitation, or view if an invitation has been accepted by tapping on the ‘Invitations’ tab.

iOS, Android, and Web App

From the mobile app on iOS and Android, or the Zing Web app (login to Zing then click the ‘Zing Web App’ tab):

  • Go to a question and tap ‘share’ in the upper right. If you haven’t yet saved the question, Zing will automatically save it for you to facilitate sharing.

  • Type the email(s) of the people you’d like to invite to view this question

  • Tap ‘Invite ’, and you’ll see the email address selection confirmed by a white box and showing only the portion of the email address before the @domain.com

  • Tap the blue arrow in the upper right to send the invitations

Note that by default you can only invite people to your data sources and questions if they are part of the same domain (the portion following the @ in the email address). This is to ensure that data from your organization is only shared with people who are part of your organization.

If you want to allow invites to email addresses outside your domain (and are an administrator of the organization), you can turn on external dashboard sharing in the Zing Web Console under ‘settings’ and then ‘Allow invites outside my domain’.

It is strongly suggested that you sign up for Zing using your company email address and not a personal email address (such as gmail or that of your ISP). This is because the default of restricting invites to only your domain is applied on the domain level (the portion after the @ sign in your email).

Commenting and Annotations

Add comments to a question or dashboard using the comment box in the mobile app answer screen, or the right hand pane in the web app from the answer screen. If a question isn’t saved yet and you add a comment, Zing will automatically save the question (you may wish to rename it by tapping the three dots in the upper right of the answer screen).

You can comment on a question or a dashboard. Your comments will be visible to anybody who has access to that question or dashboard.

Mentions

Mention colleagues within the chat function to send them an email which links to your comment. Much like Google Docs or Slack, using mentions in Zing informs your mentioned colleague so they can look at your comment and respond if needed. If they have enabled push notifications, they’ll receive a push notification instead of an email.

To use mentions, just type the @ symbol in the comment box from the question view and you’ll see a list of colleagues who are already part of the organization. After the @ start typing their name (first or last name) and Zing will display a list of the colleagues who match your input. Tap the colleague you want to mention. You may mention multiple colleagues within a comment.

Shared Questions

On the Zing Data web and mobile apps, you’ll see a Questions section and a Tables section.

The Questions section shows questions that you have asked on your own, as well as questions which have been asked by your colleagues recently or which have been shared with you.

You’ll see at a glance when somebody most recently commented, who commented, and the total number of comments. Simply tap on a question to see the visualization for that question and the full comment thread. The questions with the most recent comments, and questions most recently asked will appear at the top. Older questions will appear below that.

How to share a question

  1. Click on a question on your home screen.
  2. Click on the Share icon.
  3. Type the email address(es) of the users you want to share the question with.
  4. A user can be invited as a “Viewer” or an “Editor” to a question.
  5. Select the role and click on the Arrow icon to share the question with the user(s).
  6. The list of users the question is shared with will be shown in the Share Panel. The role of the shared users can be updated here. You can also revoke access to the question for a particular user by clicking on the dropdown in front of the user and selecting “No Access”. You can share the question with the entire organization by selecting a role under the organization dropdown.
  7. The shared question will appear in the user’s homescreen.
  8. If you share the question with a user who does not have an account with Zing, they will receive an invitation to join Zing and they will be added to your organization as well.

Activity Feed

You can see a list of all the questions you have created, the mentions you have made of others in comments, and the mentions of you in other people’s comments by viewing your activity feed.

To access your activity feed in the app, tap ‘Settings’ then ‘Profile’. You can click on any question or comment to be taken to that specific question.

Two factor authentication

Zing supports two factor authentication, and is highly suggested for sensitive data sources. 2FA is supported via Google SSO. To turn on 2FA, create your Zing account with Google Single Sign On (SSO), and turn on SSO for your organization in settings as outlined below:

  1. Ensure that two factor authentication is turned on and required for your Google Workspace users or if you are a single user, your individual account.

  2. Login to Zing on the web, and go to settings

  3. Scroll down to organizations turn on Require Google SSO

  1. Click save changes

Now, all users who are part of your organization will be required to authenticate their credentials with two factor authentication to login to Zing.

Turning on or off custom SQL querying for your organization

Zing allows anybody in your orgnaization to run custom SQL.

  • Only SELECT statements are allowed by default, and no INSERT / UPDATE / DROP or other actions that would modify data.
  • Administrators of the organization can enable statements such as INSERT / UPDATE / DROP / CREATE which would allow anybody in your organization to modify your data in the datasource. This can be enabled via Settings –> Options for each datasource on the datasource page.

This is powerful because it lets you do more complex queries, including joining tables or using functions not supported in the visual query builder but which your underlying database supports – for instance regex commands or parsing JSON fields.

An administrator of an organization can turn off the ability to run custom SQL queries (instead limiting users in the organization to the visual query builder only) by going to settings and then toggling on/off Enable Custom SQL IDE.

8.1 - User Roles

Assigning user roles within an organization and on questions

User roles in an organization

User roles can be specified at an organization level, or at a question level. By default, an organization role will apply to all questions for that user, but more permissive question-level access can be granted by the question creator.

There are three levels of user roles within an organization, ranked from low to high in terms of permissiveness:

A viewer can only:

  • View questions
  • Comment on questions
  • Create alerts on questions
  • Save questions as photos

An editor can also:

  • View tables
  • Create and copy questions
  • Edit and delete the questions they have created
  • Share questions
  • Save data tables as CSVs

An admin can also:

  • Invite people to, and remove people from the organization
  • Manage user roles
  • Create, edit, and delete data sources

As an admin, you can specify a role when you invite users to your organization.

User roles on a question

You can specify user roles when sharing questions with other users.

When a user’s role on a question differs from their role within the organization, the more permissive role will be in effect.

9 - Dashboards

Create dashboards with Zing on Mobile and Web

Dashboard previews are shown on your home feed, alongside questions and tables. You can search across saved dashboards, questions, and tables using the search bar at the top.

Creating a dashboard

Dashboards can be created, edited, and viewed on iOS, Android, and the Web.

To create a dashboard:

  1. Go to the Zing web console or the Zing Data iOS / Android app.

  2. Tap the ‘+’ sign on the upper right of the dashboard section on the home screen. This will open up a blank dashboard canvas.

  3. Drag saved questions from the right side list of questions onto the live dashboard canvas to the location you want the question card to appear on the dashboard.

    From here you can drag the question card to any location on the canvas, and resize it by dragging a corner. Tap the trash bin icon to delete a question card.

  4. Name your dashboard (you must do this before saving)

  5. Tap ‘Save’ to save your dashboard.

If you’re creating a dashboard from mobile, the process is the same as above, except questions are shown in a list at the bottom of the dashboard creation screen and are added to a dashboard by dragging them onto the dashboard canvas.

Editing a dashboard

To edit a dashboard, simply click on the dashboard to enter the dashboard screen. Then tap the pencil icon to edit.

  • Question cards can be resized by dragging the corners.
  • Question cards can be deleted from a dashboard by tapping the trash can icon.
  • Question cards can be moved by dragging the header.

Notes about how dashboards work

  • When you open a dashboard, Zing will query your data source(s) live, so that dashboards are always populated with the most up-to-date data.
  • If you leave the dashboard loaded on the screen for a while, or are within a single session you’ll see the version of the dashboard from when you first clicked on the dashboard in your session. You’ll also see a ’last refreshed’ time at the top.
  • Dashboards can have question cards from any mix of data sources.
  • A dashboard canvas is 12 squares by 12 squares and a question card can be sized as small as 3x3 or as large as 12x12. So a dashboard can up to 16 question cards (12x12=144 / (3x3=9).

How dashboards display on mobile and web

Questions cards within a dashboard intelligently re-flow depending if you’re accessing the dashboard on web or mobile and the available screen space.

There is no need to build different versions for mobile and web – a single dashboard design fluidly scales across device types:

  • On mobile, a maximum of question cards will shown side by side so they are large enough to be easily readable. If the dashboard was designed with more than two question cards, the question cards flow vertically for easy scrolling.
  • On web, up to four question cards will be shown side by side.

Interacting with a dashboard

Dashboards aren’t just a collection of questions – they’re live and interactive.

Just tap on a question card to see that question full-screen and see comments and alerts associated with it.

From the question, you can also do the following on iOS, Android, and the web:

  • Zoom in / out
  • Change the chart type
  • Turn on/off data series
  • Add alerts for push or email notifications when new data comes in which meets criteria you set (up to every minute or as infrequently as every month) including:
    • Percentage change (up or down)
    • Percentage increase from previous value
    • Percentage decrease from previous value
    • Absolute amount increase
    • Absolute amount decrease
    • Going above a fixed value
    • Dropping below above a fixed value
  • Sort based on X or Y values
  • See the data as a table
  • Copy the question and modify or build on it
  • Tap into specific values to see more detail
  • Save down an image of the graph
  • Export a CSV of the data

Sharing a dashboard

  1. Click on a dashboard on your home screen.
  2. Click on the Share icon.
  3. Type the email address(es) of the users you want to share the dashboard with.
  4. A user can be invited as a “Viewer” or an “Editor” to a dashboard.
  5. Select the role and click on the Arrow icon to share the dashboard with the user(s).
  6. The list of users the dashboard is shared with will be shown in the Share Panel. The role of the shared users can be updated here. You can also revoke access to the dashboard for a particular user by clicking on the dropdown in front of the user and selecting “No Access”. You can share the dashboard with the entire organization by selecting a role under the organization dropdown.
  7. The shared dashboard will appear in the user’s homescreen.
  8. If you share the dashboard with a user who does not have an account with Zing, they will receive an invitation to join Zing and they will be added to your organization as well.

9.1 - Controls

Create controls for your dashboards

Create interactive filters on dashboards so people can apply filters to one or multiple questions in a dashboard quickly. This works for all questions in Zing created with natural language, or with the visual query builder.

Quick summary:

  • Have control widgets that apply to one, multiple, or all questions on a dashboard
  • Include control widgets:
    • Controls can be simple selections from a list, can be numerical comparisons, open text inputs, or specific dates
    • Allow/disallow:
      • Search of values within a filter
      • Default values for a filter
      • Showing Null values in a filter
      • Multi-select of values

Add a new control to a dashboard

Controls are basically filters, customized for dashboard purposes. With Zing’s dashboard controls you can navigate your data with

List

  1. Select the control type “List”
  2. Select a field
  3. Preview the new control with your data

Extra options:

  1. Uncheck “Drop-Down” to get a simple list vs a drop down menu
  2. Uncheck “Allow multiple selection” so a user can only select one item
  3. Check “Show Null option” if the data includes null and you want to make it available
  4. Uncheck “Show search box” if your list is really short and search is not really needed
  5. Uncheck “Show all option” if you don’t want that all items can be selected all at once

List with a second list (subfield)

Add a subfield if you want a second list in your dashboard. Example as shown above with Regions in first drop-down menu and Airlines in second drop-down menu

List with no drop-down

Example above is showing a list with “Drop-Down” unchecked. Great for short lists and quick access.

Text

  1. Select the control type “Text”
  2. Select a field
  3. Preview the new control with your data

Number

  1. Select the control type “Number”
  2. Select a field
  3. By default the number control is for a single value. Select “Min Max” to limit results in the selected range.
  4. Preview the new control with your data

Date Range

  1. Select the control type “Date Range”
  2. Select a field
  3. Preview the new control with your data

Please note: with date range people can select from “is, is not, after, greater than or equal, before less than or equal, is empty, is not empty, between, not between, relative date”

Date

  1. Select the control type “Date”
  2. Select a field
  3. Pre-select a date that will show up in the dashboard
  4. Preview the new control with your data

10 - Creating Alerts

Set up dynamic alerts to be notified via push or email when new data comes in that meets a condition you specify

Dynamic alerts notify you by push or email (or both) when new data comes in that that satisfies the criteria you set such as a percentage change or exceeding a threshold.

Alerts can be set up to check every minute, providing near real-time notifications, or as infrequently as once per month.

You can specify:

  • Percentage changes (e.g. let me know when the number of visitors to my website changes more than 50% vs the previous day)
  • Point changes (e.g. let me know when sales drops by more than $500 versus the previous day)
  • Specific thresholds (e.g. let me know when inventory falls below 50 units for a fast-selling product)

To set up an alert

  1. Tap on a point on a graph, then the bell icon to set up up an alert. Alternatively, you can tap the three dots in the upper right of the results screen and then ’new alert’.

  2. Choose the series you want to be alerted for (this is pre-populated for you based on what series you tapped on)

  3. Choose the condition and amount:

    • Rises by is the percentage increase in the data you want to be notified about period to period, where period is defined as your x-axis granularity (e.g. day, hour, etc.). This calculated as a change relative to the previous period.

    • Drops by is the decrease increase in the data you want to be notified about period to period. This calculated as a change relative to the previous period.

    • Changes by is a percentage increase or decrease period to period. This calculated as a change relative to the previous period.

    • Is Above is a fixed number, and and you will be alerted when new data that is greater than or equal to that number

    • Is Below is a is a fixed number, and and you will be alerted when new data that is less than or equal to that number

  4. Choose a notification type:

    • Push Notifications
      Note that you must enable push notifications for Zing for this to work. You can check if notifications are turned on in the settings tab. Push notifications are supported for iOS and Android, but not from the web interface.
    • Email
    • Both
  5. Choose an update frequency. This is how frequently Zing will check the dataset for new values against the alert conditions you’ve set. By default, Zing sets update frequency to match your x-axis granularity (e.g. minute / hour / day ), but you can change this.

    Update frequency can be as frequent as once per minute, or as infrequently as once per month - just select what you’d like from the drop-down.

  6. Tap ‘Save’

Multiple Dynamic Alerts can be added on a question, and different users can configure alerts specific to them.

You’ll see a visual overlay on the graph indicating the threshold values you set alerts on and can simply tap the graph to move thresholds around or you can type in values below.

You can see all alerts you’ve set up on a question right below the graph.

A list of recently triggered alerts is visible in the ‘Alerts’ tab in the bottom navigation. You’ll also see information about when they were triggered most recently here.

Dynamic alerts work for any question with a timestamp or date on the x-axis. Google BigQuery, Snowflake, Postgres, mySQL, Trino, Presto, Starburst, Clickhouse, Microsoft SQL Server, Databricks and Amazon Redshift are all supported. Google Sheets (set to LIVE mode) is also supported.

Note: Alerts only make sense for data sources which have data changing over time, so it doesn’t apply for Google Sheets in ‘snapshot’ mode, nor for CSV / Excel files.

Also note: Any question with alerts enabled cannot also have caching enabled. Turning on an alert on a question will turn off caching and return it to live mode because a question must be in live mode (not cached mode) for the alert checks to run.

A step by step video is here:

Zing’s Dynamic Alerts are available on the standard plan and above.

11 - External Sharing

Share Zing Data Dashboards, Questions, Datasources, and Tables outside your organization

Secure by Default

Zing protects your data with industry-leading encryption and optional multi-factor authentication. We also protect you by ensuring that you’re only sharing data and questions with people you intend to.

Thats why sharing data sources, questions, and tables is limited to people who are part of your domain by default. This ensures that only people at your company can be invited to view your data source.

That said, you can optionally turn on external sharing to allow access to a datasource, question, or table outside your domain.

External Sharing

External Sharing lets you share a graph, table, or datasource with a customer or partner.

  • For instance a advertising agency may wish to share a set of saved questions on campaign performance with a client so they access it in Zing.
  • A survey company may wish to share survey results with a client outside of their organization.
  • A company focused on getting recruiting leads for a client might wish to share the number of leads and their status in the pipeline with a client

Turning on External Sharing

The administrator (typically the person who created the Zing account) is the only person who can turn external dashboard sharing. To do so:

  1. Go to the Zing Console on the web and login

  2. Click on the ‘settings’ tab

  3. Scroll down to the organizations section and turn ON the option for “Allow invites to email addresses outside domain”

  4. Click ‘Save’ at the bottom

Users will now be able to invite email addresses which are outside the domain. You may need to close and re-open the for the updated settings to be active.

You can turn off external sharing at any time and access to existing out-of-domain users will be rescinded.

Public Sharing

Public Sharing lets you share a graph with anyone via a link. Data in public charts will be updated once a day. If you need more frequent updates, reach out to Zing support here.

Turning on Public Sharing

Public sharing is allowed only if external sharing is turned on for the organization. To create a publicly shareable link:

  1. Go to the Zing App.

  2. Click on a pre-saved question or run a query on a table.

  3. Click on the Share button on the top of the screen.

  4. If the “Generate public link” button is available under “Get public link”, click this button to generate a public link for this question or query.

  5. Re-confirm the public link generation through the confirmation modal.

  6. Copy the public link and share it with anyone. (If a link is already available to be copied, step 4 and 5 can be skipped.)

Anyone with the link will be able to view this graph by visiting the link.

12 - Row Level Security (RLS)

Row Level Security allows you to control access to data in a database by row, so that a logged in user can only view the data they are authorized for. You will be able to control “Who sees what in the chart?” by including a RLS filter to the question.

For example, let’s consider the question “Performance statistics per employee”. With a RLS filter, you can control the resulting data for this question so that the logged in user would only see their performance statistics as opposed to seeing statistics for all employees.

With Zing Data, the user’s email, username, or ID can be used for dynamic user-specific filtering. Support for other user attributes can be provided based on your requirement. Reach out to our team to integrate other user attributes.

Row Level Security Use Cases

  1. Employee based RLS - A user can only see information they own/responsible for or tied to (most common filters are email, user ID or username)
  2. Department based RLS - A user can only see information for the company, department or unit they belong to.
  3. Role based RLS - A user can only see information assigned to their role (E.g: Manager, Customer, Engineer, etc.)
  4. Location based RLS - A user can only see information of their specific region or city.

Setting up RLS with Zing Data

Pre-requisites

  • Create a data source.
  • The tables in your datasource should have a field where a RLS filter can applied on. (E.g: user ID, user name, user email, etc.)

Steps

  • Ask a question on your Zing Data mobile app or web app.
  • Create an additional filter for RLS on the field you require RLS filtering on. This can be done via the Visual Query Builder or via Custom SQL.
    • Visual Query Builder
    • Custom SQL
  • The format of the filter should includer zing.user before the name of the filter. For example, to filter by email, the RLS filter should be {{zing.user.email}}.

The resulting chart for a query with RLS filtering will have different results based on the logged in user. By excluding certain data from the dataset based on the logged in user would reduce access of data by users who are unauthorized to view them.

12.1 - Lookup Tables for RLS

Row level security filters with any user attribute.

A lookup table allows you to use more user attributes for row level security filtering. For example, without a lookup table you can only use an email field for row level security. By defining a lookup table with user information, you will be able to use any attribute in the table as the RLS filter.

A lookup table can be defined for each of your datasources. The email field is a must have on your lookup table.

Let’s look at an example lookup table.

user_id name email role region
101 User1 user1@acme.com engineer east
102 User2 user2@acme.com sales west
103 User3 user3@acme.com desginer central
104 User4 user4@acme.com engineer east
105 User5 user5@acme.com engineer west

Specifying a lookup table for a datasource

  1. Visit the datasource page on the Zing console.
  2. Click on the Settings button on your datasource.
  3. Turn on the toggle for Row Level Security.
  4. Select the table you want to set as the lookup table for the datasource and the email field in that table.
  5. Now you can specify any filter on your charts/tables as mentioned here using the attributes in your lookup table. For example, if you want to apply the RLS filter on the user’s ID, the filter on the WHERE condition should be {{zing.user.user_id}}. Filtering by the region would be possible by specifying the filter as {{zing.user.region}}.

13 - Embedded Analytics

Zing Data’s embedded analytics capability lets you embed charts, tables, and interactive querying capabilities within your app or website with just a few lines of code.

Embed Zing’s powerful data visualization and querying capabilities in your own application.

Note: Embedded analytics is available only on the Pro tier, and must be enabled for your account by the Zing team - it is not enabled by default.

Reach out to the Zing team to see a demo and learn more about pricing.

Capabilities

Zing charts, tables, and interactive querying functionality can be embedded in your app via Zing’s React SDK.

Providing users embedded analytics can:

  • Improve user retention
  • Help users understand their usage of your product and drive upgrades
  • Compare performance to peers (e.g. conversion rate compared to peers in a segment)
  • Create new revenue sources (such as offering advanced analytics and reporting functionality as an add-on)

Zing’s React SDK allows developers to get up and running with rich charting, querying, and visualization capabilities without having to maintain complex data architecture, or build visualizations from scratch.

Benefit from Zing’s robust data analysis and querying capabilities and get up and running in minutes:
* Easy visual querying
* Natural language based querying
* SQL typehead for power users
* Flexible graph formatting (including specifying colors, date formatting, sorting, and more)
* Export to PNG or CSV

When you’re setting up embedded analytics you can control the features you want to show up on the embeds.

For example, if you want to disallow exporting as a PNG, you can simply turn off that capability in the admin panel and no user will have that option from the embed.

Update frequency

Choose refresh frequency to optimize data freshness while minimizing database load.

Update frequency options include:

  • Full-live
  • Every minute
  • Every 5 minutes
  • Every 15 minutes
  • Every 30 minutes
  • Every hour

Authentication and data visibility

  • Inherit user access controls from your app if you’d like to customize end-user experiences based on user id, role, entitlement, or other attributes
  • Limit chart visibility to verified sessions for improved security
  • Apply chart-level controls

Getting Started

Zing’s embeds also support secure authentication using a Single Sign On provider, session-based authentication, and row level security. Speak to our team to learn more.

13.1 - Setup and Preparation

Create required keys and tokens for embedding.
  1. Visit the Zing console and click on Organizations.
  2. The organization that has embeds enabled will have a “Pro” badge.
  3. Click on Settings for the organization and click on the Embeds tab.
  4. Generate an API key for your organization (E.g.: 7bf7aa96-dee0-4750-b97c-3bd13864de81).
    • This API key will be used to authorize the organization for embedded charts/tables.
    • Along with the API key, an embed secret will be generated for you which will be used to create an immutable signed URL for your embeds.
    • Make sure you don’t expose the API Key or the Embed Secret publicly as this will be used to authenticate your organization.
  5. Admins of the organization will have the ability to create multiple API keys per organization and activate/deactivate an API key anytime.
  6. Create your questions on the Zing Web App or Mobile App.
  7. To generate an embed ID for a question, click on the three dot menu for a saved question and click on Embed Options.
  8. All questions embed IDs were generated for, will appear under the Embeds tab on the organization page of the Zing console.
  9. Embed IDs can be enabled and disabled when required.

13.2 - Integration

Install the SDK and create the signed URL required for embedding.

In order to embed a chart, your application’s source code needs to be updated based on the below steps.

Server-side (backend)

Step 1 - Create a Secure Session with Zing

A secure session needs to be created with Zing in order to start embedding charts. This should be done by calling the API:

POST https://console.getzingdata.com/api/v1/embed-sessions

An example of how to create a Zing session using NodeJS:

const url = 'https://console.getzingdata.com/api/v1/embed-sessions';

const payload = {
 userData: {
  email: loggedInUserEmail,
 },
};

const options = {
 headers: {
  'Content-Type': 'application/json',
  'x-zingdata-api': ZING_API_KEY,
 },
};

const response = await axios.post(url, payload, options);
const oneTimeSessionToken = response.data.token;

This token created by the backend will need to be passed to the frontend for your end user to be able to view an embedded chart. You can expose an API from your backend for the frontend to fetch this token for each chart that you embed. A session token needs to be created for every chart you want to embed.

Step 2 - Generate Signed Embed URL

You can create signed one-time-use URLs for graphs, which are more secure because they can’t be reused and are a way to ensure your server has validated each request. In order to generate the signed URL, add a new API endpoint in your server code.

A NodeJS example for this API endpoint is given below.

const crypto = require('crypto');
const uuid = require('uuid');

app.post('/api/generate-url', (req, res) => {
 const { embedId, where } = req.body;
 const baseUrl = 'https://console.getzingdata.com/embeds';

 let parameters = `?nonce=${uuid.v4()}`;
 parameters += `&timestamp=${Math.floor(new Date().getTime() / 1000)}`;
 parameters += `&embedId=${embedId}`;

 if (where) {
  parameters += `&where=${where}`;
 }

 const urlWithParameters = baseUrl + parameters;

 const signature = crypto
  .createHmac('sha256', Buffer.from(process.env.ZING_EMBED_SECRET, 'utf8'))
  .update(Buffer.from(urlWithParameters, 'utf8'))
  .digest('hex');

 const finalUrl = `${urlWithParameters}&signature=${signature}`;

 res.json({ url: finalUrl });
});

In here, the ZING_EMBED_SECRET is read from an environment variable.

Now let’s move on to the frontend updates.

Client-side (frontend)

  1. Install the Zing SDK on your application’s front-end.

From NPM:

npm install --save @zingdata/zingdata-react
  1. Import the Zing CSS file in your main HTML or CSS file.
import "@zingdata/zingdata-react/dist/zing.css";
  1. Call the API endpoint that you defined in your backend to fetch the Zing session token for each chart (E.g: zingToken).

  2. Call the API endpoint that you defined in your backend to generate the signed embed URL for each chart.

  • Payload should contain the embedId of the question and the where property (If dynamic filtering is required - where property is optional. More information about the where condition is given at the end of this guide.)
  • This should be done for each embedded chart in your application, as each chart will have an immutable URL.
const fetchUrl = async (embedId, where) => {
  const result = await axios.post(
   '/api/generate-url',
   {
    embedId: embedId,
    where: where,
   },
   {
    headers: {
     'Content-Type': 'application/json',
    },
   }
  );

  return result?.data?.url;
};

// Call the above function to fetch the generated URL
const signedUrl = await fetchUrl(embedId, where);
  1. Embed the chart using the SDK

Include the below code on the page where the chart needs to be rendered.

import { ZingDataChart } from '@zingdata/zingdata-react';

<ZingDataChart
  embedUrl={signedUrl}
  apiKey={process.env.REACT_APP_ZING_API_KEY}
  token={zingToken}
  className="mt-5"
/>
  • An optional className parameter can be passed to ZingDataChart if you need any custom styles to be applied to the container.
  • embedUrl, token and apiKey properties are required.
  1. The question can be filtered from your application’s source code by adding a chart property: where. For instance, you could filter based on city, company, or any other field in your datasource to customize the chart to a specific context. The example below shows filtering based on the city.
where={JSON.stringify({
  queryConstruct: {
    where: [{
      column: ['Prospect City'],
      condition: '!=',
      values: 'Boston'
    }]
  }
})}

This condition needs to be passed to the fetchUrl function in step 3 to be included in the signed URL.

Multiple conditions can be added to the where property as follows.

where={JSON.stringify({
  queryConstruct: {
    where: [
      {
        column: ['Prospect City'],
        condition: '!=',
        values: 'Boston'
      },
      {
        column: ['Year'],
        condition: '=',
        values: '2023'
      },
    ]
  }
})}

The where property can have the following conditions.

  • Equals (=) only returns results which match the value you input (e.g. “City = ‘New York’” will return results only where the city field for that row equals New York).
  • Does Not Equal (!=) returns results which do not match the value you input (e.g. “City != ‘New York’” would return all cities except New York).
  • Greater than (>) returns results which are greater than the value you input.
  • Greater than or equal (>=) returns results which are greater than or equal to the value you input.
  • Less than (<) returns results which are less than the value you input.
  • Less than or equal (<=) returns results which are less than or equal to the value you input.
  • Between (between) returns results which are between the two values you specify. For date fields this will be two dates.
  • Includes (includes) returns results which include part or all of the value you input. For instance “City includes ‘San’” would return “San Francisco” and “San Diego” if those values are present in the data.
  • Excludes (excludes) returns results which do not include any of the value you input. For instance “City excludes ‘San’” would return all cities which do not contain “San” in their name so “New York” and “Boston” would be part of the result set, but “San Diego” and “San Francisco” would not.

where conditions should not be defined for user specific data.

  1. Multiple charts/tables can be embedded by using an embed ID for each chart/table.

13.3 - Row Level Security for Embedded Charts

Filter your chart based on who views it.

Row Level Security allows you to control access to data in a database by row, so that a logged in user can only view the data they are authorized for. You will be able to control “Who sees what in the chart?” by including a RLS filter to the question.

Steps

  1. Ask a question via the Zing Web App or Mobile App with a Row Level Security filter. Refer this guide for more information on how to create a question with an RLS filter.
  2. Embed the chart by following the steps under the Setup and Preparation and the Integration sections.
  3. Send the logged in user’s data when creating a session with Zing via your backend code. The information sent in the payload will be used for RLS filtering.

An example of how to create a session token in NodeJS is shown below.

const url = 'https://console.getzingdata.com/api/v1/embed-sessions';

const payload = {
 userData: {
  email: loggedInUserEmail,
  role: loggedInUserRole,
  username: loggedInUserUsername,
  name: loggedInUserName,
 },
};

const options = {
 headers: {
  'Content-Type': 'application/json',
  'x-zingdata-api': ZING_API_KEY,
 },
};

const response = await axios.post(url, payload, options);
const oneTimeSessionToken = response.data.token;

How to use this one-time token is explained in the Integration steps.

That’s it. 🎉

The resulting chart for a query with RLS filtering will have different results based on the logged in user in your application. By excluding certain data from the dataset based on the logged in user would reduce access of data by users who are unauthorized to view them.

14 - Partner Integrations

Zing Data works with Postgres, MySQL, Google BigQuery, Trino, Starburst, Databricks, Snowflake, and more!

Zing Data has tested and verified connections with trusted partners.

Set up multiple data sources to seamlessly view tables and questions from across all your database sources all in one screen.

PostgreSQL

Postgres is one of the most commonly used databases in the world, is open source, and has around for 30+ years. Zing Data connects to any PostgreSQL database and has been tested with thousands of tables and for long-running queries. Zing also supports multiple schema within a Postgres database.

MySQL

MySQL is one of the world’s most popular databases, now owned by Oracle. Zing Data connects to any MySQL database, tested to thousands of tables and for long-running queries.

Google BigQuery

Google BigQuery is a powerful, cloud-hosted database that scales to huge data volumes easily. Available with a free-to-try version, BigQuery is an easy way to get up data in the cloud without having to deal with hosting, database maintenance, or database optimization. Zing is a trusted Google Cloud Partner, verified by the team at Google to work with Google BigQuery.

Snowflake

Snowflake is a cloud-based data warehouse that is popular for ingesting, transforming, and querying data from many sources. Available with a free-to-try version, Snowflake is an easy way to get up data in the cloud without having to deal with hosting, database maintenance, or database optimization.

Google Sheets, Microsoft Excel, and CSV files

Google Sheets and Microsoft Excel are commonly used spreadsheets. Other common data analysis tools and spreadsheet programs allow saving files as comma separated values. Zing can connect to data from these sources via the Google Sheets Integration.

Zing also supports two modes for Google Sheets:

  • Live connection mode, where Zing always pulls from the latest version of the sheet
  • Snapshot mode which ‘freezes’ the gSheet at the point you make the connection, so subsequent changes to the sheet won’t be reflected in Zing.

Trino, Presto, And Starburst

Trino is a fast, distributed query engine that can support large queries and heavy analytics workloads. It is free and open source, and is a successor to the open source Presto query engine.

A hosted and well-supported version of Trino is available from Starburst.io. Zing has been tested to work with all three variants. Find out more about how Zing and Starburst can work together here!

Databricks

Databricks is a cloud data warehouse and lakehouse that runs on Amazon Web Services, Google Cloud Platform, and Microsoft Azure.

Created by the people behind Apache Spark, Databricks is able to support large-scale workloads and the SQL Warehouse functionality provided allows you to set scaling and timeouts to optimize cloud spend.

Zing is an official Databricks partner. Learn more here!

Mozart Data

Mozart Data is a full-service modern data platform for centralizing, organizing, data across multiple sources. Get set up in an hour and start working with support from Mozart’s data analysts. Mozart lets you pull data from more than 200 data sources and join across them including Salesforce, Google Analytics, Adobe Analytics, Amazon S3, Hubspot, Facebook Ads, Square, Stripe, and SAP Concur.

Microsoft SQL Server

Microsoft SQL Server is one of the most widely used databases for enterprise deployments, developed by Microsoft. MS SQL is scalable and includes ETL (Extract, Transform and Load) tools and reporting services. It is evolving rapidly in the cloud and on hybrid platforms. You can get Zing connected to your MS SQL database with our set-up guide here

Clickhouse

Clickhouse is an open-source database management system (DBMS) for online analytical processing (OLAP). It uses a column-based structure. Clickhouse was designed to be fast and highly-scalable. Clickhouse stands out for high performance because it gives attention to low level details when performing queries. Get connected to your Clickhouse database with our set-up guide here

Portable

Portable’s self-service ELT product makes it simple to replicate data from 250+ business applications to your data warehouse with no-code.

Cube JS

Cube is a cloud infrastructure layer that lets you connect to MongoDB, Postgres, Athena, Bigquery, mySQL, Hive, Snowflake, and other databases to transform underlying data sources into more easily queryable and visualizable data. They have a free tier, and are a great way to get started with Zing for data sources that Zing doesn’t yet natively support, or where data transformation is needed. This video walks you through how to use Cube’s SQL API with Zing.

Hydra

Hydra is an open source cloud data warehouse built on Postgres that offers high uptime and scales to large datasets easily. Zing can connect to Hydra as a Postgres data source to enable easy analytics on even large warehouse datasets. Follow the Postgres setup instructions here to get set up.

Agile Data

Agile Data is a data automation tool which provides data to Zing so you can easily take action. Agile Data supports business analyst and data analyst teams to translate business questions into repeatable data.

15 - Migrating from other SQL clients

You can use SQL from other tools such as Metabase, Superset with Zing.

Zing alongside other tools

Zing works well alongside existing analytics tools. For instance, you may use Jupyter notebooks for your data science team’s analysis, alongside with Zing to enable more lightweight analysis to the broader organization.

While Zing is optimized for asking questions easily with simple tap-to-select actions, sometimes you’ll have more complex questions that require SQL, such as joins, text parsing, JSON parsing, and more.

You may already have those questions created in an existing querying tools such as:

  • Metabase
  • Apache Superset
  • Alation
  • SQLGate
  • Postico
  • PopSQL
  • Adminer Editor
  • Valentina
  • DBeaver
  • SQuirrel SQL
  • HeidiSQL
  • RazorSQL

You can bring them over to Zing by simply copying + pasting SQL into Zing to enable powerful collaboration with your team and access data from Zing’s mobile apps on iOS and Android.

Bring questions over to Zing

  1. Sign up and set up your database source in Zing (instructions here)

  2. From your other SQL tool, simply copy the SQL for a question you’d like to ask

  3. Open the Zing web app, iOS app, or Android app and click a table

  4. Tap the three dots in the upper left and then “Write Custom SQL”

  1. Paste in your custom SQL and then click ‘Run’

You can now:

  • Save this question to make it available to anybody you’d like to share it with
  • Chat and @mention people
  • Export CSV tables
  • Enable collaborators to clone your query
  • View these results across web, iOS, and Android

16 - Joins

Querying more than one table in a datasource is a common use case when analyzing data. This can usually be done by using custom SQL statements. However, this requires the knowledge of SQL syntax. With JOINS in Zing Data, you can easily create JOINS between tables or views using our web console, or while asking a question. This feature is available for all datasource types on Zing Data except Live Google Sheets, Excel and CSVs.

Features

  • Create JOINS between two or more tables. You can create a single JOIN or a set of JOINS.
  • Pick from different JOIN types such as LEFT JOIN, RIGHT JOIN, INNER JOIN and FULL JOIN to logically connect your tables and views.
  • Query the joined tables/views directly without having to write any SQL statements.
  • Save storage costs and reduce administration overhead as Zing Data creates an internal representation of the JOIN you create.

Let’s look at how to create a JOIN on Zing Data.

Create a Datasource

  1. Login to the Zing Data console and create a datasource.
  2. Click on the “Settings” button for the datasource on the Data Sources page.

Create a Join using Web Console

  1. Click on the “Add New Join” button which will take you to a canvas where you can create your JOIN.
  2. The tables in your datasource will be displayed on the sidebar. Drag a table to the canvas to start creating your JOIN. The first table you drag will be considered as the root table for the JOIN. The header of this table will be highlighted in blue.
  3. Drag another table to the canvas.
  4. You can create a connection between these two tables by placing the cursor on the right hand side of a field (the cursor will turn to a plus sign) on the first table and dragging a line towards the left side of one of the fields from the second table.
  5. You can change the type of the JOIN by clicking on the JOIN icon and selecting a JOIN type from the dropdown menu.
  6. If you need to connect another table in this JOIN, you can drag another table and follow the same steps as above.
  7. Give the JOIN a name and click “Save”.

Create a Join using Natural Language (Magic Model)

1.  Ask a question using natural language in Zing via the the search bar.

  • If there is an existing join you’ve created using the UI that is appropriate to answer the question asked, Zing will use that.
  • If no join exists which would allow the question to be answered, Zing will create a join using AI between multiple tables on the fly based on the field names and attributes. More detail about this feature is available here.
  • If there is no relevant existing join and the AI cannot determine an appropriate join to answer the question, Zing will notify you that it could not determine the necessary tables / views to answer the question. You can then manually create a join by scrolling down to the bottom of the field list and tapping ’edit join’ or ‘add new join’

2. You will see if a join was pre-existing or was created with AI on the fly as indicated by a star icon. You can create or modify a join by tapping ’edit join’ which will display the full join relationship and will let you define:

  • Left Join
  • Right Join
  • Outer Join
  • Inner Join

Note that you can define as many join relationships within a join as you’d like. Any table / view present in the join must connect to others in the join.

Create a Join with the SwiftQuery interactive builder

1.  Click a table using the SwiftQuery interactive builder

2. You’ll see a list of fields and tables on the right hand side. At the bottom of the list of fields, click the ‘add new join’ button


3. Choose the join type (inner, outer, left, right) you’d like and the ’left’ table and ‘right’ table along with the join fields

4. Hit ‘save’ and the list of all fields from all joined tables / views will be visible

Note that you can create as many join relationships as you’d like. Just click ‘add relationship’ in the join creation screen within SwiftQuery to add another join.

Create a Join using SQL

1.  Ask a question using custom SQL. Access custom SQL from the Zing App by clicking on the three dots next to ‘run’ in the visual query builder.

2. You’ll see a list of fields and tables on the right hand side. Write the joins you’d like to create in SQL.

Editing a Join in Web Console

  1. Once you’ve created a JOIN, it will appear under the “Joins” tab in your datasource settings.
  2. Click on the “Edit” button to update your JOIN, or click on the “Delete” button to remove the JOIN.
  3. You can create/edit/delete JOINS from this page.

The features of the JOINS canvas are shown below.

Editing a Join in Zing App

  1. From SwiftQuery builder, you can edit an existing join that has been created by clicking ’edit join’
  2. You can add additional join relationships here, edit join relationships, or delete joins from this page.

Querying an existing Join

  1. Click on the “Zing App” button to navigate to the Zing Data Web App.
  2. Querying a JOIN can be done on the Web App as well the Mobile App.
  3. You will see the created JOIN under “Tables and Joins” on the home page.
  4. Click on the JOIN. You will be navigated to the Swift Query builder where you can ask a question.
  5. Fields from all tables in the JOIN will be available for you to start querying.

More information about how to ask a question can be found here.

17 - Troubleshooting

Solutions to common problems

List of common solutions to help with data source connections.

17.1 - Connnecting to AWS RDS

How to troubleshoot your connection to AWS RDS

Zing Data can connect to any AWS RDS database, but there are a few steps to go through to allow Zing’s platform the proper access permissions.

Steps

1. Go to your AWS console

2. Go to RDS and select the database you want to view on Zing Data.

3. Then look for the security group shown below

4. Confirm that the instance is Publicly Accessible

5. Now hit the edit button for the inbound rules for the security group.

6. Add a single rule for the database type and port that it is running on. The screenshot shows two inbound rules that have been added for mySQL on standard port 3306 and one for Postgres on standard port 5432. The IP address for Zing Data’s platform is 34.75.82.6

7. That’s it. You’re done!

17.2 - Natural Language Queries

Optimize AI responses for natural language questions

Even the best AI needs a little bit of help from time to time to understand your data and questions better. With Zing, you can clarify ambiguous terms and calculations quickly by adding a few training examples to your data source.

Ambiguous terms are words or phrases that have multiple meanings or interpretations, which can lead to confusion or inaccuracies in the AI’s response. For example, the word “bark” can refer to the sound a dog makes or the outer covering of a tree, and without context, an AI might not understand which meaning is intended.

Similarly, ambiguous calculations are those where the operations or variables are not clearly defined or could be interpreted in multiple ways. For example, if someone asks an AI to “calculate the increase,” without specifying what to increase, by how much, or over what time period, the AI would not be able to provide a correct answer.

Example Question and how to fine tune the response
Q:
How many trips are long by plan type?
Task: We want to define “long” as being greater than 10 minutes

Step 1: Go to Zing Console and select a data source

  • Web console: https://console.getzingdata.com/
  • Select your data source you want to train AI on
  • Go to the Examples tab and enter your questions and corresponding SQL.
Zing Data Source

Step 2: Go to Zing App

Ask “How many trips are long by plan type?” and see how AI is now showing a visualization with a filter automatically applied with trips that are longer than 10 minutes!

Zing App AI Response



 

17.3 - Connnecting to Google Cloud SQL

How to troubleshoot your connection to Google Cloud SQL

Zing Data can connect to any Google Cloud SQL database, but there are a few simple steps to enable access for the Zing Data platform.

Steps

  1. Go to your GCP console here

  2. Select SQL from the sidebar shown here

  3. Select Connections from the sidebar for the mySQL, postgres or SQL Server Cloud SQL instance you want to connect to Zing Data.

  4. Now hit the Networking tab to be able to manage the ip allow lists for your instance.

  5. Here you can add Zing Data’s IP as an allow list = 34.75.82.6

  6. After you’ve saved this configuration, you can now add your CloudSQL instance as a datasource in the Zing Console (instructions here)

  7. That’s it. You’ve now successfully configured a Google CloudSQL instance with Zing Data. Happy Querying!

18 - Account Management

Account Management

You are in full control of who you invite to your Zing Data instance, which data sources you configure, and if you’d like to delete your account

This applies for iOS(package: com.getzingdata.ios), Android (package: com.getzingdata.android), and the web. Our developer name is Zing Data, Inc.

To delete your Zing Account

  1. From the Zing app, click Settings

  1. Click Account Settings

  1. Click Delete Account

    This will remove:

    • Your acccount
    • All data sources associated with your account
    • Any saved questions
    • Any saved dashboards
    • Any saved alerts

    Note: Account deletion is not reversable

  1. You’ll be prompted to type ‘delete permanently’

  2. Your account is immediately deleted and you will be logged out

Note: If you are the administrator of an organization account having other people within it, you will be prompted to choose who will be the new administrator of the account. This is to ensure that a single employee leaving a company and de-activating their account does not inadvertantly delete the whole organization or leave it without an administrator.