ThoughtSpot User Guide 4.5
ThoughtSpot User Guide 4.5
All rights reserved. This product is protected by U.S. and international copyright
and intellectual property laws. ThoughtSpot is a trademark of ThoughtSpot, Inc. in
the United States and/or other jurisdictions. All other marks and names mentioned
herein may be trademarks of their respective companies.
ThoughtSpot Users Guide December 13, 2019
Table of Contents
Introduction............................................................................................................................. 5
Getting Started
Understanding privileges.................................................................................................. 16
Use Search
Search basics
Understand filters.......................................................................................................... 62
[email protected] i
ThoughtSpot Users Guide December 13, 2019
Understand charts............................................................................................................. 93
Chart types
Changing a chart
Aggregate formulas
[email protected] ii
ThoughtSpot Users Guide December 13, 2019
Use pinboards
SpotIQ
[email protected] iii
ThoughtSpot Users Guide December 13, 2019
[email protected] iv
Introduction to the User Guide December 13, 2019
It will assist you with starting new searches, managing your pinboards, and troubleshooting.
ThoughtSpot enables you to view and analyze your data through a search-based user interface. You can
create your searches on the fly by typing them into a search bar, like you do when using an internet
search engine. ThoughtSpot makes it easy to see your data, get your questions answered, create
interactive graphs, and customize pinboards. You do not need to understand how the data is stored,
attend days of training, or know SQL to do these things. Collaboration and security features make it easy
for to protect sensitive data and share information safely with others.
ThoughtSpot gives administrators the ability to modify data properties to meet business needs, for
example by providing search synonyms for common terms, boosting the importance of a column in
search results, or formatting how the data appears. So if you are not getting the answers you expect
when using ThoughtSpot, check with your ThoughtSpot administrator to see if some settings may need
to be changed.
ThoughtSpot is organized into several sections to make navigation easy. You can reach them
The user icon lets you view your profile or sign out of ThoughtSpot.
• Understanding privileges
The things you can do in ThoughtSpot are determined by the privileges you have. These are
• About stickers
You can create stickers to make it easier for people to find data sources and pinboards.
Home
Click the ThoughtSpot logo to go to the application home page. At the top of the home page is a search
bar and below that several areas that show activity in your ThoughtSpot instance.
Keyword Examples
All time popular Shows all time popular answers and pinboards by number of views. You
Recently trending can choose between all-time popular or recently in the last 15 days. Small
icons illustrate the type of visualization you'll find when you click on an
item.
Keyword Examples
Recent team activity Answers, pinboards, worksheets, and tables people in your company have
created or edited recently.
Keyword Examples
Did you know? Contains auto analysis results from SpotIQ. Visible only to users that have
the SpotIQ privilege.
The items shown in these areas are limited to answers, pinboards, worksheets, and other objects you
have access to. For example, if you don’t have the ability to use SpotIQ, that option does not appear.
Search
Search is where you will spend most of your time. It allows you to search and explore your data. Choose
your data sources and type in the search bar at the top. As you type your search, results will appear in
Answers
Answers are the result of a single search. You can save an answer you want to work more on later, or
just keep it for your personal use. Answers are for you alone, until you share them with others.
Pinboards
Pinboards are collections of related search results. You can create your own pinboard or add to an
existing one. Once a pinboard has been saved, it can be shared with others or viewed as a slideshow.
The Pinboards page shows a list of saved pinboards. Click on one to view, edit, or share it.
Data
DATA contains a list of data sources (tables and worksheets). These are usually loaded and managed by
your administrator. However, you may be able to import a spreadsheet (Excel or CSV) here, if you have
Admin
Admin only appears if you have administrator privileges. This section is covered in the ThoughtSpot
Administrator Guide.
Help
Help is a support resource for ThoughtSpot. It contains short videos, a keyword reference, links to
documentation, and other useful materials. You can also find the support contact information and
User
The user icon allows you to either view your preferences or log out. You can also change your icon here.
To learn more about this section, visit About the user profile.
Related information
• A network connection.
• A Web browser.
The following browsers are verified to work well with the ThoughtSpot application:
Tip: While Internet Explorer is supported, using it is not recommended. Depending on your
Log in
1. Open the browser and type in the Web address for ThoughtSpot: http://HOSTNAME_OR_IP
Log out
Once you’re done with your search session, you can optionally log out of ThoughtSpot. To log out of
1. Click your user icon at the top right hand corner of the screen.
To view the user actions, click on your user icon on the top right corner of the page.
Click Profile to go to your profile preference page, where you can change your icon, email, and locale
preferences.
The language the ThoughtSpot UX displays is based off of the locale in a user’s profile. The locale
preferences control the language and data formats (date and number formats) by geographic locations.
Locale Language
de-DE German
Locale Language
ja Japanese
Date and number formats change to reflect your locale. So, if you set Japanese as your default locale in
your profile settings, then the interface will update to reflect that after you refresh your page.
Keywords, operators, and error messages are included in the translated material. Formulas, however, are
For example, if you are using ThoughtSpot in the US, the number formatting should look like this:
Warning: It is possible that you set your locale but find strings in the UI still appear in English,
You can change your picture by clicking Upload Picture. The system accepts GIF , BMP , JPEG , and
You can change your email notifications preferences by checking or unchecking Email me sharing
Clicking Sign out logs you out of ThoughtSpot, and takes you back to the sign in page.
Understanding privileges
Summary: The things you can do in ThoughtSpot are determined by
the privileges you have. Privileges are granted through group
membership.
If you are trying to do something in ThoughtSpot, and cannot access the screens to accomplish it, you
may not have the correct privileges. In this case, you should contact your administrator and explain what
you want to accomplish. Your administrator may be able to grant you additional privileges.
Note: Permissions to see and edit tables, worksheets, and pinboards are not affected by
privileges. They are given when these items are shared with you.
Here are the privileges that the administrator sets, and the capabilities they enable:
Privilege Description
Has administration Can manage Users and Groups and has view and edit access to all data.
privileges Users with this privilege can also download a saved answer.
Can upload user data Can upload their own data from the application's DATA page using Ac-
tions > Upload data.
Can download data Can download data from search results and pinboards.
Can share with all Can see the names of and share with users outside of the groups the user
users belongs to. Members of groups with this privilege can also share with
groups marked as NOT SHAREABLE.
Can manage data Can create a worksheet. Can also create an aggregated worksheet from
the results of a search by selecting Save as worksheet. Can also use
ThoughtSpot Data Connect, if it is enabled on your cluster.
Can schedule pin- Can create pinboard schedules and edit their own scheduled jobs.
boards
Has Spot IQ privilege User can use SpotIQ's auto analyze function.
Privilege Description
The following table shows the intersection of user privilege and ability:
Page 18
The following table shows the intersection of user privilege and ability:
a
at
rs ps
1
. up s ps D t
ps ro se le hi hi s d ec yz
e
S S ro at
a G lu ru ns ns ol oa er n er l
it
W W .P a D in al LS io io C pl ew on ul na
g ol at ith ith at at n U Vi C d
o-
A
Ed Ag C D oa
d R el el de ith a he
e/ w w e R id a at t
at at
e ify oa
d nl e e ag D d
R H w m D Sc Au
re re od pl ow ar ar an rU ea e in he se se se
C C M U D Sh Sh M C R Se Jo Sc U U U
Has administration Y Y Y Y Y Y Y Y Y2 Y Y Y Y Y Y Y
privilege
Can upload user N N N Y N Y N N Y3 Y4 N N N N N N
data
Can download da- N N N N Y Y N N N Y4 N N N N N N
ta
Can manage data Y Y Y Y N Y N N Y4 Y4 Y5 Y N Y N N
Can Auto-Analyze N N N N N N N N N Y4 N N N N N Y
Can schedule pin- N N N N N N N N N Y4 N N N N Y N
boards
users
Can Administer N N N N N N N N Y N N N N N N N
and Bypass RLS
None N N N N N Y N N N Y4 N N N N N N
a
at
December 13, 2019
Page 19
rs ps
1 s
ps
. up se
s
hi
p D t e
ro le hi s ad ec yz
S S ro at
a G lu ru ns ns ol o er n er al
W W .P a in al LS io io C pl ew on l
An
it g ol at D
ith ith at at n U Vi C du -
Ed Ag C D oa
d R el el de ith a he to
e/ w w e R id a at
at at
e ify oa
d nl e e ag D d
R H w m D Sc Au
re re od pl ow ar ar an rU ea e i n he se se se
C C M U D Sh Sh M C R Se Jo Sc U U U
Table notes:
1. Applies to non-owners only.
2. Any tables.
3. Author of at least one table in relationship.
4. Only when read permission for columns used in the relationship.
5. With edit permission.
You can create stickers to make it easier for people to find data sources and pinboards. Stickers are
global in scope. This means that everyone can see the stickers and use them to tag objects. They can
also filter lists of objects by sticker. Stickers are often used to designate subject areas, such as sales,
HR, and finance, but you can use them any way you like.
Create a sticker
Only administrator users can create stickers. Anyone can apply the stickers you create, or use them as
To create a sticker:
1. Navigate to the Manage Data or Pinboards screen using the icons in the top navigation bar.
2. Choose Select sticker, scroll to the bottom of the list, and click + Add.
4. You can change the name or color of a sticker by clicking the edit icon next to its name.
Apply a sticker
Only administrators create stickers, but anyone with edit privileges can tag an object with a sticker.
2. Find the item(s) you want to tag in the list, and check the box next to its name.
3. Click the apply sticker icon and choose one from the list. You can apply as many stickers as
Filter by stickers
Whenever you are selecting objects from a list, you can filter by sticker to find what you’re looking for.
Anyone can use stickers to filter lists of pinboards or data sources. You can also filter by sticker when
To filter by sticker:
2. Click on Select sticker, and select a sticker to filter by. Click on its name.
Using ThoughtSpot’s relational search is simple, so anyone can use it. In the search bar, type what you
are interested in exploring, for example revenue midwest sales rep . Searches return a set of results
in the form of a table or a chart. ThoughtSpot likes to call this set of results in response to a search an
answer.
As you get better with ThoughtSpot’s search, you will be able to get more out of your data by performing
more complex searches. There are a few basic things you should understand before starting a new
ThoughtSpot search.
Click in the box and start typing some letters. As soon as you begin typing, ThoughtSpot suggests some
search terms Type slowly and use the suggestions to find what you’re looking for.
Whenever you finish typing a word, you’ll see an answer in the form of a chart or a table.
You should know that search in ThoughtSpot is more like an Amazon search than a conversation. For
Find me all books by Lewis Carroll with the title Alice in Wond
erland
You’d type:
carroll alice
You’d type:
or simply:
That’s how search works in ThoughtSpot. You can use some helping words like “by” and “for” but they
can also be left out, and the search will return the same answer.
Search is based on the tables that exist in your data. Tables are made of rows and columns, like
• Any of the values in the columns: like 20000, kitten chow, or richmond
• One of the special keywords ThoughtSpot understands: like yesterday, >, or contains
Save an answer
An answer is the result of a single search. You can save an answer you want to work more on later, or
just keep it for your personal use. You can also share an answer with other users. The Answers tab is
where you can view and then the your saved search results.
Related information
• Choose a data source
• Search suggestions
• Share an answer
1. Click Search on the top navigation bar. You can also click Search your data at the top of the
home page.
a. Filter through all available sources by using the search bar or stickers.
c. Click Done.
3. Add columns to the search bar, or double click columns in the Data column in the left panel.
The columns listed in the left panel are grouped together by data sources for discoverability
and ease of access. You can also add multiple columns at once by clicking each column to
Your search is given an automatic title based on your search columns, and is displayed as either a table
or chart, depending on how it is best represented. You can change the view to fit your needs.
To begin a new search, you must first select your data sources by clicking on the Choose Sources
button. You will see a list of data sources that have been shared with you. The data sources are usually
created by your administrator, though you can also upload your own data.
Searches happen in the context of the selected data sources. ThoughtSpot will also make suggestions
from other data sources for you, if what you’re typing can’t be found in the selected data source.
A lot of work has gone into making ThoughtSpot’s search bar intuitive and easy to use. However, it still
The search bar shows boxes around each search phrase, so you can easily see where it begins and
ends. Your search phrases still appear as text when you are typing, but whenever you click out of the
search bar, they are boxed. Search phrases have blue boxes, and filters have white boxes.
When you click on a search phrase, it is highlighted, so you can easily replace it with one of the
suggestions. When you hover over on a boxed phrase, you’ll see an x, which you can click to remove it.
If you find yourself looking at a table or chart, but it doesn’t seem to contain all the data you expect, try
looking in the search bar for white boxes (filters). If you remove all the filters, you will again see all the
Spell check
The search bar includes spell check. If you spell or type a term incorrectly, your suggestions will include
The spell check in the search bar also performs a metaphone check for similar sounding words on text
data values.
Dictionary synonyms
A dictionary of common word synonyms is bundled with ThoughtSpot. The dictionary contains
synonyms for common terms that occur in data. For example, if you type in “gross”, and that word is not
found, ThoughtSpot will consider it a synonym for “revenue”. We use the WordNet library of terms,
which takes word proximity into account, and weights words by similarity to the target term.
This frees you from having to know the exact term or column name used in a data source. You can still
find the answer in many cases, if you type a word with the same meaning as a different word that occurs
in the data.
Search help
If you type an unrecognized search term, you will be offered tips on searching. The search help appears
when you type a term that isn’t understood by ThoughtSpot and then press the Enter key.
Related searches
At the end of the Search page is the system provides searches you might find useful. These are quick
searches you can load into the search bar by simply click on the provided link.
Search suggestions
Summary: How ThoughtSpot learns from your searches and helps
you.
Search suggestions include complete recent searches that are similar to the search you are constructing.
Search suggestions are relevant to the data and personalized to your search behavior. ThoughtSpot
learns over time what columns are most important to you and to your company as a whole. Then, it uses
this knowledge to rank the search terms it offers. The term for this is usage-based ranking (UBR).
ThoughtSpot keeps usage statistics on frequency of search terms in its local cache. If you frequently use
type terms related to finance or to a particular product, ThoughtSpot provides you with related
suggestions more frequently. Using this information, frequently used terms and phrases are offered in
search suggestions more often than those that are not commonly used.
UBR based on search patterns makes ThoughtSpot more valuable over time. Search suggestions
Recent searches
As you type in the search bar, you are given search suggestions that include recent searches. This
makes it easier to learn what you can do with ThoughtSpot. In addition to displaying your own recent
searches, the search bar also learns from searches made by other people. This should provide you with
interesting searches that you may not have been aware of. You’ll see recent searches in a separate
section of search suggestions, as recent searches appear higher in suggestions than other terms.
Auto-disambiguation in search
When there are more than one possible meaning for a search term, you can provide disambiguation by
selecting from a list of choices. Now, your choice is sticky. That means you won’t have to select it again,
Search suggestions are not limited in scope to the columns that you select as the data sources.
Suggestions can include columns that are out of scope, too. If you choose one of these suggestions, the
Object searches
Search suggestions also include relevant pinboards that have already been created. This means that if a
pinboard that is similar to the search you’re trying to do already exists, it will appear in search
suggestions.
measures. The columns you choose impact your search results. That’s because several chart types
expect that your search contains a certain number of attributes and a certain number of measures.
Attributes
Attribute are primarily text or date values. Attributes make up the x-axis of your chart most of time. Some
examples of attributes in terms of a person include name, eye color, occupation, social security number,
Measures
Measures are numeric values you can do math on, with meaningful results. You will most likely find your
measures on the y-axis of your chart. Some examples of measures in terms of a person are age, height,
and weight.
Query details
After, or while completing a search, you can see how ThoughtSpot displayed the answer. Click the
exclamation mark on the right hand side of the search bar to open the Query details dialogue box.
This dialog shows measures ThoughtSpot computed, for each combination of attributes. Choose
QUERY VISUALIZER to see search filters and how the tables were linked and used.
Hover over the data when choosing a data source to see the last time it was updated. You will also see
You can also hover over a column in the DATA column to see when it was last refreshed. This popup will
And lastly, you can hover over a column or column name in an answer to see last updated information.
You can save the results of any search and share these with other people. Your saved searches appear
on the Answers page. From this page, you can see answers you saved and answers other people have
saved, provided these people shared them with you or a group you belong to.
Apply a sticker
Only administrators create stickers, but anyone with edit privileges can tag an object with a sticker. To
3. Click the apply sticker icon and choose one from the list.
Copy an answer
You can make a copy of an answer if you would like to make edits without changing the original answer.
When copying, you can type in a different name for your copy.
2. On the answer list page, click the answer you would like to copy.
4. Give your answer a new name and description. Then click Save.
Other features
At the bottom of the Answers page, you can find two additional areas, SpotIQ Insights and Related
Searches. These areas are derived from your original answer and you can select them to deepen your
search.
The SpotIQ Insights section is only visible to users with the Has SpotIQ privilege. Once you expand an
insight on this list, an Edit button allows you modify the insight and make it your own. Your installation
configuration determines how many insights can appear in this section. The default is 6.
Your search results are not limited by the number of attributes or columns in order to be presented as a
table. You can have a table with just one attribute or measure. When you choose to display your answer
as a table, ThoughtSpot will create the columns for you and any relevant headlines.
Sometimes when you view a table, the results will be aggregated (combined). For example, if you only
type “revenue”, you’ll see the total sum of all the revenue the table contains as one combined number. If
you include the keyword monthly , the results will be aggregated by month. You can rearrange the
Every table gives you the option to rearrange the column order and change the column widths.
You can rearrange the column order of your table after adding all of your search terms.
1. While viewing your answer as a table, click the column header you would like to move.
You can resize the column widths of your table after adding all of your search terms. Any adjustments
you make to the column widths of your table are saved when you pin the table to a pinboard. To resize
1. While viewing your answer as a table, hover over a column border in the column header row.
2. Click and drag the border to create your preferred column width.
Sort columns
You can sort a table by column values by clicking on the column title. If you hold down the SHIFT key
Tip: This same functionality is available on tables you see elsewhere in ThoughtSpot. For
Headlines display summary information of a table result. Headlines contain summary information for
each column of a table. They appear at the bottom of the table in individual boxes.
ThoughtSpot automatically creates up to 20 headlines for each table. Your ThoughtSpot configuration
You can modify how you’d like the value to be displayed by clicking the dropdown on a headline and
selecting a different type of aggregation. The usual available aggregations are total, average, standard
deviation, variance, minimum, and maximum. There are also unique count and total count values
To add a headline to a pinboard, hover over it and click the Add to pinboard icon.
You can decide whether or not to display headlines in your table results. To customize headlines, choose
In addition to column names, values, and filters, the search bar also accepts keywords. You can access
a list of keywords and other reference materials in the references section or in the help center. Open the
Within the help center, you’ll find videos and documentation that pertain to the current version of
ThoughtSpot. Here is where you can also find a list of keywords. You can expand each section to see
The top keyword can be a powerful addition to your search when you remember to use it. By using
one keyword, you can greatly simplify your searches. The top keyword is one such keyword. Its syntax
Types of keywords
Keywords serve a variety of predefined purposes, and are divided into different groups. The groups are
as follows:
• Basic keywords
You can use keywords such as top and “ bottom to, for example, only see results for the
• Date keywords
Date keywords give you the freedom to narrow your search by days, weeks, months,
quarters, or years. There are also a number of date related keywords such as after ,
before , and year-over-year . Use the new date keywords to describe dates in the future.
This is useful for exploring things that are scheduled for a future date, such as shipments due
• Time keywords
Time keywords are the most useful when trying to figure out how many visitors you’ve
• Text keywords
You can use text keywords to find similar words or phrases that contains a certain word. For
• Number keywords
These keywords allows you to define your search by sum, average, count, max, min, and
other accumulations.
• Comparative keywords
Filter keywords work in the same way as filters on table columns or chart axes.
• Location keywords
The keywords near and farther than allow you to search with spatial filters on your geo
type columns with latitude/longitude data. This lets you focus your search based on distance
and locations. You can specify a specific radius using miles, kilometers, or meters.
Related information
• Keyword reference
A time series is a set of data points ordered by time. For example, within the same week a sale on
Tuesday comes before a sale on Wednesday in such a data set. You can use ThoughtSpot’s time series
You might use this feature to compare a time period across other time periods. For examples sales for
each month across several years. You may also want to calculate an aspect such as growth over the
same time period across other periods. You can also do relative analysis such as sales for the last 3
You can use one or more of the following period keywords to create this type of analysis:
Period keywords
Keyword Example
All of these keywords sort the data using datetime semantics, that is chronologically in a time sequence.
By default, the Search bar suggests these keywords less frequently than others.
You can use these new keywords in combination with the existing data keywords which are:
• Detailed
• Hourly
• Daily
• Weekly
• Monthly
• Quarterly
• Yearly
Typically, when you search for answers about series data, the visualizations that answer your questions
are line charts. These charts frequently but not always include a stack to indicate a period.
When you search for an aspect of data of time series, a typical response is a line chart showing the
The child date time attribute is on the X-axis and the parent in the legend. For example, if you search
revenue month yearly the child, monthly , appears on the x-axis and the parent, yearly , in the
legend.
You can refine a simple date filters by adding hierarchical date filter to your query. The ability to specify
two bucket granularities such as “hour of day” or “week of year” are two examples. The syntax of this
type of query is
The INTEGER_CONDITION is optional but it must be an integer. For example, this query is valid:
• The system-defined fiscal rules are respected. This means, for example, if the fiscal year
not valid.
3 is valid.
• INTEGER_CONDITION with = or != require legal values, so day of week > accepts any
integer on the right hand side while day of week = requires a value in the legal 1-7 range.
• Simple date filters allow you to use edit the filter through the answer to refine your search,
adding a a hierarchical date filter in the search bar disables this ability.
The growth of keyword compares the data from different date periods, and returns a percentage of
growth.
1. Type growth of into the search bar, and choose a measure you’re interested in seeing the
growth of.
You will see a list of suggestions to choose from based on your sources. You can also type a
The growth is calculated as a positive or negative percentage, for each period relative to the
last period in the series. A line chart is a good way to display your data, but the waterfall chart
3. You can also do year-over-year analysis, which compares each time period to the
This type of growth analysis is more common in retail and other seasonal businesses. To do
this, type monthly year-over-year after your growth of phrase in the search bar.
This compares data between the same month from different years. For example, it will allow
you to compare sales from June of this year to the sales from June of last year. Note that for
the first year, values are labeled as “{Blank}” in the Data View since there are no previous data
Add an attribute to your search see the breakdown of how each grouping of the attribute
4. Click Configure Chart and add your attribute to the Legend field.
It looks like Q4, FY 15 was a much more productive period for a number of categories
Growth query now supports more hierarchical date buckets and period calculations. The growth query
syntax is as follows:
This table shows the possible buckets and the period-over keywords you can combine:
month-over- month-over-
month month
week-over-week
day-over-
day
For example, the following query growth of sales by date daily month-over-month :
Proximity keywords allow you to search and show the results on a map. Using proximity keywords
causes ThoughtSpot to display a circle that represents your set distance on the geo charts.
• near
The distance is calculated as a straight-line distance (not road distance) radius using miles, kilometers,
or meters from the central point. If you do not specify a distance, the system uses 10 km as the default.
Given a latitude, a longitude, and an optional distance, the search returns all instances of a geotype
column that falls within the parameters. These keywords are limited to 33 latitude/longitude pairs. They
work on duplicate counties. Finally, you can filter on them. Some examples of valid searches are:
You can bracket your search only with actual values found in the data. So “longitude between
-125.000000 and -115.316670 worked for me, but not longitude between -125 and -115 .
All your data must be in the same set. The worksheet or one of the tables must contain a column of type
longitude and a column of type latitude . The latitude and longitude data have to be on the same
base tables for the feature to work. You can’t, for instance, have a dimension table with all your cities
and their associated geo coordinates and join to it from your fact table and expect proximity search to
work.
Also, your administrators must have configured these columns using the appropriate GeoType.
Understand filters
Summary: Filters narrow down the search result to only include the
data you want to see.
When you add a value to your search, it becomes a filter. To add a filter from the search bar:
1. Click in the search bar and type the values you want to include in the search.
You can also use keywords like yesterday , after , and next month to filter your search.
2. Click outside of the search bar or push enter to apply your filter.
Simple filters can be applied to an answer, while pinboard filters can be applied to all visualizations of a
pinboard. You can find out more about pinboard filters in the pinboards section.
As you have seen with search, filters appear in white boxes in the search bar.
In an answer or a pinboard, filters appear just below the title. For pinboards, your filters apply to all
If you ever find that your search or pinboard does not appear to contain all the data you want to see,
check for any existing filters and remove them by clicking the X to see all the data.
Note: Filtering on NULL and empty values is a special case. You can find out more about how
these values are represented and how to filter for them in About filtering on null, blank, or empty
values.
Simple filters
Simple filters can be applied to searches in a few different ways. You can use the search bar or the
Change Configuration menu to add a filter to a search. You can apply simple filters to your search,
whether it shows a table or a chart. Your filters remain part of the search even when you change the
visualization type.
When adding a filter from the Change Configuration menu, numeric columns and text columns provide
you with a checkbox selector for values. If the column contains a date, you’ll see a calendar selector
when applying a filter. This is also where you’ll go to apply bulk filters.
Bulk filters
If you have a large worksheet or table with thousands or millions of rows, you may want to create bulk
filters. You can paste in a list of filter values, without having to click the box next to each value in the
filter selector.
Bulk filters can be very useful when you have a very large worksheet or table. You can use them to filter
a large list of values easily. For example, this is useful if you want to only search on a list of products that
your manager sent to you in an email. You can cut and paste those values into the bulk filter box to
quickly generate a report or chart that includes only those items of interest.
You can create a bulk filter by pasting a list of values, separated by commas, semicolons, new lines, or
tabs, into the bulk filter box. This allows you to easily search a large list of filters repeatedly.
1. While viewing your answer as a table, click Change configuration on the column header you
want to filter.
2. Select Filters.
4. Click Done.
If there are too many values, you can use the filter search bar to find the ones you want.
1. While viewing your answer as a chart, click the chart axis you want to filter on, and select
Filter.
2. Select the values you would like to include in your answer. Then click Done.
separated by commas, semicolons, new lines, or tabs, into the bulk filter box. A filter allows you to easily
Your filter can have up to 10k values in it. When you add a filter, the system does not check that the
value exists in the data. This allows you to anticipate values that may be added in your filter.
Before you can create a bulk filter, you must have Can edit permission on the table or worksheet. In this
example, you will cut and paste values to create a bulk filter. You could also get a list of text values from
another application such as an email or cells from an Excel or Google Sheets spreadsheet.
6. Click Done.
Delete a filter
Summary: You can delete a filter from an answer to return to the
original unfiltered search result.
There are multiple ways to delete a filter. To delete a filter you can click the x on the filter term in the
search bar.
You can also click the x on the filter bar above the answer.
Filtering on null, blank, or empty values can be tricky if your data contains both of these. You can use
this method to see what’s really going on with these types of values, and to get the filtering behavior you
want.
When you view a table or chart, you may see values that appear as {blank}. These can actually be one of
• blank or empty values, like an empty string of text or a string containing only whitespace
(spaces, tabs).
Both of these types of values are represented as {blank}, but if you filter on {blank}, the filter will apply to
only the NULL values. That is, only the NULL values will be included in your result. It can be hard to tell
what’s going on if you have a data source that contains both NULL and blank/empty values.
If you need to differentiate between NULL and blank values, you can Add a formula to make them
appear differently in charts and tables. In this example, we’ll use <text_column> to refer to the text
This formula will show “null” where the value contained in the column is actually NULL. When the value is
If you want to keep the same display format for NULL and blank values, but be able to filter on both
using “{blank}”, your formula will be slightly different. You can use a formula like:
Use the filter you created instead of the original text column in your search to get the result you desire.
After creating the above formula that fits what you want to do, you can filter on the formula column you
created in the search bar by typing the value {blank}, which will act as a filter. Or you can filter by left
clicking on a{blank} value in your search result table, then right clicking and selecting Show only
“{Blank}“.
can be performed in an ad hoc way, or you can pin your answer to a pinboard to save your
configurations.
You can change the view of your answer so it appears as a table or a chart. Sorting your
search allows you to order your answer, making it easier to read. You can change the date
Viewing the underlying data of your answer gives you an un-aggregated view of the
underlying data.
• Drill down
Drilling down allows you to see more information about the columns used within your search.
You can apply conditional formatting to tables or charts to highlight values in the data. This
You can make a copy of an answer if you would like to make edits without changing the
original answer.
• Replay search
You can instantly generate a step-by-step replay showing the creation of a table or chart.
Your search answer (results) have various display options. You can change the visualization used to
display your results, their sort oder, and how they are grouped or grouped.
You can change the view of your answer so it appears as a table or a chart. To change the view of your
answer:
Sorting your search allows you to order your answer, making it easier to read. To sort your search:
• If you are in the data (table) view, click the column header you would like to sort on.
By default, sorting applies in descending order. You can click on a column header to sort
Tip: Hold shift and click another column to add a secondary sort. You can even add
• If you are in the chart view, click the axis label of your chart and select Sort.
You can change the date bucketing on tables and charts for columns with date values. Bucketing is a
method for grouping a column in your data. For example, if you have a column of orders, you can use
ThoughtSpot chooses a default date bucket for you when you search. This default takes the entire
search result into account. For example, if your search includes last month, dates are bucketed daily
instead of monthly.
On a table view, you use the date bucket dropdown below the column header. On a chart, you can
The bucket values are a subset of date and time period keywords. To change the date bucketing:
2. Locate the column or axis value with the date value you want to change.
You can see the most granular details of a given result set, i.e. it shows the un-aggregated view. This
feature lets you understand what an answer consists of. For example, if you search for customer
region revenue , the answer shows the aggregate revenue value for each customer region. You can
then click on any row and then on Show underlying data, to see each value that revenue constitutes
Only the first 1,000 rows are shown when viewing the underlying data. You can even download the
results shown when you choose Show underlying data from a chart. The download file limit is a million
rows.
Note: Viewing underlying data does not work for answers that are derived from chasm trap
A new window opens that displays a summary and the underlying data.
Drilling down allows you to see more information about the columns used within your search. If you own
the pinboard you can drill down to the data beneath. Users you share the pinboard with can also drill
down provide they also have access to the data on which the board was based.
To drill down:
1. Right click on the visualization or table cell of interest, and select Drill down.
2. Click on any of the listed data to recreate the search with that data included.
You can apply conditional formatting to tables or charts to highlight values in the data. This makes
Many companies create pinboards with key metrics they want to track in daily or weekly staff meetings.
Using conditional formatting, they can see at a glance how they are performing relative to these metrics.
You can add visual cues for KPIs (Key Performance Indicators) or threshold metrics to charts and tables,
to easily show where you are falling short or exceeding targets. These visual cues are called conditional
formatting, which applies color formatting to your search result. For tables, you can add conditional
formatting to set the background color of cells in a table based on the values they contain. For charts,
you can add conditional formatting to show the threshold(s) you defined, and the data that falls within
You can use conditional formatting to show table cells with a background color determined by the value
they contain.
1. In the column header of your table for the column you want to apply formatting to, click the
4. Define the sets of values and the color to use for each set.
6. Note that if you change to a chart type, you will need to apply conditional formatting again.
You can use conditional formatting to show charts with a target value or range drawn as a line in the
chart, and the legend colors determined by where values fall relative to the target.
3. Define the ranges of values and the color to use for each range you want to track. To add
5. Note that if you change the chart type, you will need to apply conditional formatting again. It is
You have the option to download your table as a CSV (comma separated values), PDF, or XLSX (Excel)
file. When you download a chart, it will be a PNG file. To download your search:
• Click Actions. For a table, choose between Download as CSV, Download as PDF, or
Download as XLSX.
Currently, ThoughtSpot limits the maximum number of rows that can be downloaded to 10M (default is
Replay search
Summary: You can instantly generate a step-by-step replay showing
the creation of a table or chart.
The replay feature shows how to create the chart or table you are viewing. Use it to teach yourself, or
take a screencam of it and create your own ThoughtSpot training for your team.
1. When viewing a chart or table, click Actions and select Replay search.
The replay will start automatically. You can pause and resume it by clicking on it.
Understand charts
Summary: Charts display your search answer in a visual way.
Your search needs at least one attribute and one measure to be presented as a chart. When you choose
to display your answer as a chart, ThoughtSpot will assign it the best fit chart type.
Note: Colors are maintained across searches within a session. For example, when doing a
search on revenue by state, each state will keep its color assigned to it even if you change the
You can choose from a large number of chart types in ThoughtSpot. Each chart type provides you with a
You can also adjust the axes, labels, and view of the chart.
You can choose from a large number of chart types in ThoughtSpot. Each chart type provides you with a
You can change the chart type of your answer by clicking Change Visualization.
Note: Some chart types may be unavailable for you to select depending on the columns of your search.
For example, if your search does not contain at least one geographical column then you will not be able
to select any of the geo chart types. Unavailable chart types are grayed out. Hovering over one will tell
you what columns are needed before you can choose it.
• Column charts
The column chart is one of ThoughtSpot’s simplest, yet most versatile chart type. More often
than not, the column chart will be chosen as your default chart type.
• Bar charts
The bar chart is very similar to the column chart. The only difference is that it is oriented the
other way.
• Line charts
Like the column chart, the line chart is one of ThoughtSpot’s simplest, yet most versatile chart
type. More often than not the line chart will be chosen as your default chart type.
• Pie charts
The pie chart is a classic chart type that displays your search in a circle. The pie chart
• Area charts
The area chart is based on the line chart, but has filled in regions.
• Scatter charts
The scatter chart is useful for finding correlations or outliers in your data.
• Bubble charts
The bubble chart displays three dimensions of data with each containing a set of values.
• Pareto charts
The pareto chart is a type of chart that contains both columns and a special type of line chart.
• Waterfall charts
The waterfall chart is used to show how an initial value is affected by a series of intermediate
• Treemap charts
• Heatmap charts
The heatmap chart displays individual data values in a matrix following a color scale.
The line column chart combines the column and line charts.
• Funnel charts
The funnel chart shows a process with progressively decreasing proportions amounting to
There are three geo charts that let you visualize geographical data in ThoughtSpot.
Pivot tables in ThoughtSpot use the well known drag-and-drop interface. Creating a pivot
table enables exploring alternate visualization of data in a wide table. The basic idea is that
some data is easier to consume when laid out horizontally, while others, vertically.
Column charts
Summary: A column chart is the most versatile chart type
The column chart is one of ThoughtSpot’s simplest, yet most versatile chart type. More often than not,
Column charts are vertical bar charts that display your data using rectangular bars. The length of the bar
Your search needs at least one attribute and one measure to be represented as a column chart.
The stacked column chart is similar to the column chart, but with one major difference. It includes a
Stacked column charts are typically used when you want to compare aggregated data and the data that
it includes together. This chart type benefits when you add the Additional chart options option. Turning
it on will show the sum of the stacks at the top of each stack.
It is important to note that stacked column charts plot the y-axis as a percentage by default. You can
choose to toggle Show Y-Axis as % on or off in the Configuration Options. This feature is also available
Your search needs at least two attributes and one measure to be represented as a stacked column
chart.
Bar charts
The bar chart is very similar to the column chart. The only difference is that it is oriented the other way.
Bar charts display your data using horizontal rectangular bars. The length of the bar is proportional to the
data value.
Your search needs at least one attribute and one measure to be represented as a bar chart.
Line charts
Summary: Line charts are good at showing trends over intervals of
time.
Like the column chart, the line chart is one of ThoughtSpot’s simplest, yet most versatile chart type.
More often than not the line chart will be chosen as your default chart type.
Line charts displays your data as a series of data points connected by straight line segments. The
Your search needs at least one attribute and one measure to be represented as a line chart.
Pie charts
The pie chart is a classic chart type that displays your search in a circle. The pie chart ThoughtSpot
Pie charts divide your data into sectors that each represent a proportion of a whole circle. You can
display the exact values of each slice, in addition to the percentage values by toggling on Additional
Your search needs at least one attribute and one measure to be represented as a pie chart. Also, there
The pie in pie chart can be created from a regular pie chart in order to compare more than one
component of an attribute. Pie in pie charts show two concentric pie charts comparing different
measures.
To see a pie in pie chart, assign two different measures to the y-axis under Configure Chart.
Area Charts
The area chart is based on the line chart, but has filled in regions.
Area charts display quantitative data graphically. The area between the x-axis and the line are colored in
Your search needs at least one attribute and one measure to be represented as an area chart.
The stacked area chart is an area chart with an attribute in the legend, which divides the area into layers.
Stacked area charts show the relative contribution to the accumulated total of a measure over time.
Stacked area charts plot the y-axis as a percentage by default. You can choose to toggle Show Y-Axis
Your search needs at least two attributes and one measure to be represented as a stacked area chart.
Scatter charts
Summary: The scatter chart is useful for finding correlations or
outliers in your data.
Scatter charts display your data as a collection of points, which can either be evenly or unevenly
distributed. Each point is plotted based on its own axes values. This helps you determine if there is a
Your search needs at least one attribute and one measure to be represented as a scatter chart.
Bubble charts
Summary: The bubble chart displays three dimensions of data with
each containing a set of values.
The bubble chart is a variation of the scatter chart, with the data points replaced with bubbles. These
The size of each bubble depends on the measure you choose under Edit chart configuration.
Your search needs at least one attribute and two measures to be represented as a bubble chart.
Pareto charts
Summary: The pareto chart is a type of chart that contains both
columns and a special type of line chart.
The individual values of a pareto chart are represented in descending order by columns, and the
cumulative percent total is represented by the line. The y-axis on the left is paired with the columns,
while the y-axis on the right is paired with the line. By the end of the line, the cumulative percent total
Your search needs at least one attribute and one measure to be represented as a pareto chart.
Waterfall charts
Summary: The waterfall chart is used to show how an initial value is
affected by a series of intermediate positive or negative values.
Waterfall charts are good for visualizing positive and negative growth, and therefore work well with the
growth over time keyword. The columns are color-coded to distinguish between positive and negative
values.
Your search needs at least one attribute and one measure to be represented as a waterfall chart.
Treemap charts
Summary: The treemap chart displays hierarchical data as a set of
nested rectangles.
Treemap charts use color and rectangle size to represent two measure values. Each rectangle, or
branch, is a value of the attribute. Some branches can contain smaller rectangles, or sub-branches. This
You can rearrange the columns of your search into category, color, and size under Edit chart
configuration.
Your search needs at least one attribute and two measures to be represented as a treemap chart.
The line column chart combines the column and line charts. Your search needs at least one attribute and
Line column charts display one measure as a column chart and the other as a line chart. Each of these
You can choose to enable shared y-axis by clicking the link icon found under Edit chart configuration.
This chart is similar to the line column chart, except that it divides its columns with an attribute in the
You can choose to enable shared y-axis by clicking the link icon found under Edit chart configuration.
Funnel charts
Summary: The funnel chart shows a process with progressively
decreasing proportions amounting to 100 percent in total.
A funnel chart is similar to a stacked percent column chart, and is often used to represent stages in a
sales process. You can visualize the progression of data as it passes from one phase to another. Data in
Your search needs at least one attribute and one measure to be represented as a column chart. The
Geo charts
Summary: There are three geo charts that let you visualize
geographical data in ThoughtSpot.
Geo charts show data on a map by location. They are geo area, geo bubble, and geo heatmap charts.
And these geo charts can display six types of geographical data, which are:
• Country
• State
• County
• Zipcode
• Point (latitude/longitude)
In addition to the United States, ThoughtSpot also supports maps for the Canadian province/count
Here is a table that shows which GeoType data can be displayed using which geo chart type.
County Geo area (default), geo bub- Only for counties in the United States.
ble, geo heatmap
Point Geo bubble (default), geo Must use both latitude and longitude columns.
heatmap
State Geo area (default), geo bub- Only for states in the United States.
ble, geo heatmap
Zipcode Geo bubble (default), geo Zip codes and zip codes +4 in the United
heatmap States.
Other sub-na- Geo area (default), geo bub- The display will depend on the type of adminis-
tion regions ble, geo heatmap trative region chosen.
For data to be displayed using geo charts, your administrator must configure it as geographical data. If
you are expecting to be able to get a map visualization, but it isn’t available, contact your administrator
Area charts
Geo area charts highlight the regions of interest. Point data (longitude/latitude) doesn’t work on geo area
charts. Also, only geo area charts display boundaries for counties.
Your search needs one geographical column of granularity to be represented as a geo area chart.
Geo bubble charts, like bubble charts, display the value of the measure by the size of the bubble. Zip
code data makes the most sense for geo bubble charts.
Your search needs one geographical column or a pair of latitude and longitude columns to be
Heatmap charts
Heatmap charts are similar to treemap charts in that they both use a similar system of color-coding to
represent data values. However, the heatmap does not use size to measure data, and instead requires
an additional attribute.
The value of each cell depends on the measure you choose under Edit char configuration.
Pivot table
Summary: A pivot table is a chart type.
Creating a pivot table enables exploring alternate visualization of data in a wide table. It is useful
especially when improve data display when some data is best viewed horizontally, while others,
vertically. Pivot tables are a chart time table that use a drag-and-drop interface.
If a Pivot Table is available for your answer, you see this type of visualization as an option under the
You can restructure your pivot table by moving these values under Configure Chart or by dragging and
dropping column headings on the table itself. If you right click on a the row headings, the system
Click a column or row to expand it. Additionally, you can expand or collapse all by right clicking the
When you pin a pivot table to a pinboard, it will retain your expansion settings.
Display totals
You can show % Row Grand Total and, % of Column Grand Total, or % of Grand Total on pivot
tables. Grand totals aggregate data of the entire pivot grid. They show values summarized across all
available data.
You only see 100% value when grand total rows is enabled. This is because when it is disabled, the rows
and columns they have no parental total column and the percentage cannot be calculated. All
intermediate total (columns or rows) display the percentage values calculated with respect to their
parent. For each inner summary (column or row) the parental total values are assumed to be 100%
internally.
To see the total column make sure you also have Pivot Summaries checked.
For row headers, you can switch between the default view and a more compact (tree) layout:
From the header menu users, change the type of total shown for an aggregated measure:
The heatmap functionality allows you to see which measures contribute more than others (heat) within
the table.
Toggle on the Heatmap mode found under Configuration Options to add color coordination to your
data.
• Only the first 10,000 data values are used. If you would like to increase this limit, please
• Pivot table is not available if the dataset contains more than 100,000 rows.
Change a chart
Summary: You can adjust the axes, labels, and view of the chart.
Every chart gives you the option to move columns between the x- and y-axes, hide or Additional chart
The configure chart option (the top icon which looks like a small bar chart) gives you the ability to edit the
chart axes and legends. Click on the icon to view the chart axes, add a legend, lock a visualization, and
more.
When there are multiple columns on the x- or y-axis or legend of a chart, you can reorder
You can manually set the y-axis range by using the Edit chart configuration icon.
You can hide and show values on the chart using the legend.
You can zoom into your chart by selecting an area with your mouse.
The order in which columns appear on the axis or legend is based on the sequence they are added. The
first field is used as the primary sorting field for the chart. Adding another field adds it after the first one
on the axis label or legend. If you want to change the order, you can remove the fields and re-add them
1. While viewing your answer as a chart, click Edit chart configuration near the top right.
2. In the X-Axis box, delete the values. Then re-add them in the new preferred order.
3. Click Done.
configuration panel includes the option to manually set the y-axis range. To set the y-axis range:
1. While viewing your answer as a chart, click Edit chart configuration near the top right.
2. Under Y-Axis Range enter your preferred start and end values.
Your chart will reorganize itself to reflect the new y-axis range.
Clicking on a legend item will hide it from the chart. You can click it again to show it. To hide and show
values:
1. While viewing your answer as a chart, click Edit chart configuration on the right.
3. On the chart, click the legend value you would like to hide. Click the hidden legend value
You can also click only next to a legend value to only show that value on the chart.
To change the colors used in a chart, you can use the color picker from the chart. The color you set is
used in:
• legends on charts
To change the chart colors, you need at least one column in the chart’s legend. If the chart does not
have a legend (not all do) and it is a single-measure chart, you can apply a conditional format to change
the color. This type of conditional formatting does not work with Line charts.
Colors are maintained across searches within a session. For example, when doing a search on revenue
by state, each state will keep its color assigned to it even if you change the search or chart type.
1. While viewing your answer as a chart, click Edit chart configuration on the right.
1. On the chart, click the color icon of the legend value you would like to change the color of.
2. Use the color picker to choose a new color to represent that legend value.
Some charts have additional options under Configuration Options that are covered in each chart type
topic.
Display gridlines
You can use the lock icon to prevent ThoughtSpot from recommending other chart options or
configurations. For example, you want a line chart, you can lock that display and stop TS from
recommending an alternative visualization such as a funnel/pie/column and so forth. A lock applies for all
1. While viewing your answer as a chart, click Edit chart configuration on the right.
3. Select an area on your chart to zoom into by clicking and dragging your mouse.
4. If you would like to return to the original chart view, click Reset zoom under Zoom options.
The Formula Builder includes many types of operators, such as logical (if, then, else), math, date, and
You can create a formula from directly within a search. If you have the privilege that allows you to create
or edit worksheets, you can also create a formula within a worksheet. Formulas in worksheets act as
derived columns, so that anyone who uses the worksheet as a data source will see the formula as just
another column.
Adding a formula within a search works much the same way as adding a formula to a worksheet.
However, you will be able to edit the formula directly from within the answer. If you add the answer to a
pinboard and share it with the Edit privilege, other people can see the formula results, too. To make
edits to the formula, they also need to have the Edit privilege on the underlying data.
You can add a formula directly within a search. Some common reasons for using a formula in
a search are to perform mathematical functions, check for and replace null values, or add
if…then…else logic.
You can always go back and view or edit a formula that has been added to a search. Do this
by clicking the edit icon next to its name in the Columns listing.
When working with formulas, it is useful to understand the difference between regular (or row-
Some formulas require the input to be of a particular data type. If you find that you want to
pass a value to the function, but it is of the wrong data type, you can convert it using a
conversion formula.
Date formulas allow you to apply date related functions to your formulas.
You can use simple number functions to perform useful percent calculations.
Conditional formulas, or operators, allow you to apply if / then / else conditions in your
formulas.
Nested formulas, or formula on formula, allow you to reference a formula within another
formula.
You can create a formula that involves aggregated measures coming from multiple fact tables
of a chasm trap.
are to perform mathematical functions, check for and replace null values, or add conditional logic.
3. In the upper right hand side of the table, click Actions and select Add formula.
Note: Formulas elements are color coded by type and can include the formula
operators and functions (blue), the names of columns (purple), and/or constants (black).
5. You can see a list of formula operators with examples by clicking on Formula Assistant.
6. If you want to change what your formula returns, use the Advanced settings.Depending on
• Data type
• ATTRIBUTE or MEASURE
• Aggregation type
7. Name the formula by clicking on its title and typing the new name. Click Save.
Related information
edit icon next to its name in the Columns listing. Anyone who has edit privileges on an answer can also
1. Navigate to the pinboard that contains the answer with the formula, and open it.
2. Scroll down to the bottom of the Columns listing. You will see a data source called
Formulas.
3. Expand Formulas, and you’ll see a list of all the formulas in this answer.
Note: Formulas elements are color coded by type and can include the formula
operators and functions (blue), the names of columns (purple), and/or constants (black).
Formulas can be broken down into two types standard and aggregation formulas. Standard formulas act
on individual rows and returns one result per row. Standard formulas use functions like:
• add
• subtract
• multiply
• divide
• contains
• if...then...else
Aggregation formulas combine rows together and returns a single result for a group of rows. Aggregation
formulas use functions, some examples of functions you find in aggregation formulas are:
• average
• cumulative_sum
• moving_average
You can tell which formulas are aggregation formulas by looking at the function list in the Formula
Some more advanced aggregation functions are widely used in business intelligence, since they provide
better insight into data. Some of the more advanced aggregation functions are:
• Group aggregation functions apply a specific aggregate to a value, and group the results by
• Cumulative functions measure from the start of your data to the current point. They’re often
• Moving formulas measure within a window (usually time-based) that you define.
Data from any rows that are not included in the search result will not be incorporated, and you cannot
Whenever your search result combines rows, your formula will get aggregated automatically. For
example, if your search contains words like “region”, “monthly”, or “department”, the results will be
grouped (aggregated) by that category. The administrator can change the default aggregation that gets
applied through a configuration, and you can also change it using the dropdown list in the column
For example, this search would typically return a sum of total sales by department:
When you’re using division in your formula, and the search is aggregated like this, you may have to
change the order of operations to get the result you expect. This is best understood by using a real world
example.
Suppose you want to calculate the gross margin by department for a grocery store. The formula for
profit / sales
But if you use that as your formula, you won’t get the expected calculation. Why? It’s because the
formula will be evaluated in this order: For each row, divide profit by sales and then total up all the
results. As you can see, the results do not look like gross margin values, which should be between 0 and
1.
Instead, you’d need to use a formula that uses the order of operations you want:
Now the result is as expected, because the formula totals the profits for all rows, and then divides that
by the total of sales for all rows, returning an average gross margin:
Cumulative functions
Summary: Cumulative formulas are aggregate formulas.
Cumulative formulas that allow you to calculate the average, max, min, or sum or your data over time.
Although we usually talk about cumulative formulas over time, you can use them over any other
sequential data. Each of the cumulative formulas accepts a measure and one or more optional grouping
Only the measure value is required. If you supply both a measure and attributes, the formula returns the
aggregate of the measure accumulated by the attribute(s) in the order specified. You should experiment
with only a measure and then with an attribute to see which output best meets your use case.
Function Description
cumulative_average Takes a measure and one or more attributes. Returns the average of the
measure, accumulated by the attribute(s) in the order specified. For exam-
ple: cumulative_average (revenue, order date, state)
cumulative_max Takes a measure and one or more attributes. Returns the maximum of the
measure, accumulated by the attribute(s) in the order specified. For exam-
ple: cumulative_max (revenue, state)
cumulative_min Takes a measure and one or more attributes. Returns the minimum of the
measure, accumulated by the attribute(s) in the order specified. or exam-
ple: cumulative_min (revenue, campaign)
cumulative_sum Takes a measure and one or more attributes. Returns the sum of the mea-
sure, accumulated by the attribute(s) in the order specified. For example:
cumulative_sum (revenue, order date)
This example demonstrates using the cumulative_sum formula, also known as a running total. To use the
2. In the upper right hand side of the table, click Actions and select Add formula.
3. Enter the cumulative_sum formula, providing a measure and one or more attributes.
The example will return the sum of revenue, accumulated by the commit date.
4. Name the formula by clicking on its title and typing the new name.
5. Click Save.
The formula will appear in the search bar and in the table as its own column.
A headline box displaying the cumulative sum within the entire table will appear at the bottom.
This is known as a grouped aggregation, but some people call it a pinned measure or level-based
measure. You can do this for any aggregation using the grouping functions.
Each of the grouping functions accepts a measure and one or more optional attributes:
Only the measure value is required. If you supply both a measure and an attribute, the function returns
the aggregate of the measure grouped by the attribute(s). You should experiment with only a measure
and then with an attribute to see which output best meets your use case.
Group aggregation functions have names with formats like group_<aggregation> . The group
Function Description
group_average
Takes a measure and one or more attributes. Returns the average of the
measure grouped by the attribute(s).
group_count
Takes a measure and one or more attributes. Returns the count of the
measure grouped by the attribute(s).
Function Description
group_max
Takes a measure and one or more attributes. Returns the maximum of the
measure grouped by the attribute(s).
group_min
Takes a measure and one or more attributes. Returns the minimum of the
measure grouped by the attribute(s).
group_stddev
Takes a measure and one or more attributes. Returns the standard devia-
tion of the measure grouped by the attribute(s).
group_sum
Takes a measure and one or more attributes. Returns the sum of the mea-
sure grouped by the attribute(s).
group_unique_count
Takes a column name and one or more attributes. Returns the number of
unique values in a column, grouped by the attribute(s).
group_variance
Takes a measure and one or more attributes. Returns the variance of the
measure grouped by the attribute(s).
Moving functions
Summary: Moving formulas are aggregate formulas that allow you to
calculate the average, max, min, or sum of your data over a
predetermined interval, or window, with an adjustable range.
Moving formulas can be used to smooth out any irregularities in your data to easily recognize trends. The
larger the interval you set, the more the peaks and valleys are smoothed out. While the smaller the
interval, the closer the moving averages are to the actual data points.
Each of the moving formula accepts a measure, two integers to define the window, and one or more
optional attributes.
formula (measure,integer,integer,[attribute,attribute,...])
Only the measure and integer values are required. If you supply both required and optional values, the
formula returns the aggregate of the measure over the given window. You should experiment with only a
measure and integers leaving out the attribute and then adding it back in. This will help you decide which
Takes a measure, two integers to define the window to aggregate over, and one or more
attributes. Returns the average of the measure over the given window. The attributes are the
ordering columns used to compute the moving average. The window is ( current -
Num1...Current + Num2 ) with both end points being included in the window. For example,
1,1 will have a window size of 3. To see periods in the past, use a negative number for the
Takes a measure, two integers to define the window to aggregate over, and one or more
attributes. Returns the maximum of the measure over the given window. The attributes are the
ordering columns used to compute the moving maximum. The window is (current -
Num1…Current + Num2) with both end points being included in the window. For example,
1,1 will have a window size of 3. To see periods in the past, use a negative number for the
Takes a measure, two integers to define the window to aggregate over, and one or more
attributes. Returns the minimum of the measure over the given window. The attributes are the
ordering columns used to compute the moving minimum. The window is (current -
Num1…Current + Num2) with both end points being included in the window. For example,
1,1 will have a window size of 3. To see periods in the past, use a negative number for the
Takes a measure, two integers to define the window to aggregate over, and one or more
attributes. Returns the sum of the measure over the given window. The attributes are the
ordering columns used to compute the moving sum. The window is (current - Num1…Current
+ Num2) with both end points being included in the window. For example, 1,1 will have a
window size of 3. To see periods in the past, use a negative number for the second endpoint,
This example demonstrates using the moving_average formula. To use the moving function in a
search:
2. In the upper right hand side of the table, click Actions and select Add formula.
3. Enter the moving_average formula, providing a measure, a window, and one or more
attributes.
The example will return the average of revenue, within the commit date window size of 3. The
window includes the previous, current, and next rows. The attributes are the ordering columns
used to compute the moving average. The window is (current - Num1…Current + Num2) with
both end points being included in the window. For example, “1,1” will have a window size of
3. To see periods in the past, use a negative number for the second endpoint, as in the
4. Name the formula by clicking on its title and typing the new name. Click Save.
The formula will appear in the search bar and in the table as its own column.
A box displaying the moving average within the entire table will appear at the bottom.
Filters are useful for queries where the results should reflect a new, filtered value. On this page you learn
about comparative versus derivative filters, and the functions, and the keywords that you can use with
them.
Comparative filters compare two segments of some whole against each in the Search bar. For example,
a company that has locations across the United States, may want to compare total revenue in the West
to the East segment. In a comparative filter, one of the segments you are comparing is filtered.
An example of a comparative filter is comparing west revenue with total revenue. In these cases, one
measure is a filtered measure, for example, revenue region = west is a filtered measure.
Derivative filters add a column to your results which is derived from other columns in the same results.
For example, you search for revenue and cost and want to calculate profit in your result.
Some examples of comparative and derivative filters in the real world are:
If you plan to create these types of filters, you need to understand how to create filter functions.
Filter functions take two arguments, the column ( measure or attribute) to aggregate and the filter
condition:
• sum_if
• average_if
• count_if
• unique_count_if
• max_if
• min_if
• stddev_if
• variance_if
• vs
• all
Function Examples
sum_if(region=’west’, Only aggregate the revenue for the values corresponding to west re-
revenue) gion.
count_if(region Only aggregate the region for the values corresponding to west re-
=’west’, region) gion.
count_if(revenue > Count the number of times red appears when revenue was greater
100, red) than 100 (row level revenue data, not aggregated).
A condition can have multiple filters like sales region = west OR region = east . You can also just
type a value such as east as in sales east as a filter. If there are no rows matching the criteria, the
condition returns a 0 (zero). A 0 can result in situations where there are logic errors in the formula, so be
Once you have aggregated with a filter, you can do further comparisons with the vs and all
keywords.
You can use the vs and all keywords to expand the usefulness of your comparison filters. It
compares a measure across different sets of filters and or groupings. The basic format of a comparison
search is:
For example:
Try this syntax on using the Superstore example data. The first vs example compares two segments
The system automatically applies the sales token to both sides and groups each segment. You can
use the all keyword to break out the segments and avoid grouping.
• sales staples file caddy vs all monthly answers what the share of sales belonging
• sales (germany ariel vs laundry) july 2017 time answers what is the category
to the function, but it is of the wrong data type, you can convert it using a conversion formula.
to_bool Returns the input as a boolean (true or false). to_bool (0) = false
to_bool (married)
formulas allow you to apply date related functions to your formulas. The date functions include:
Calculating date formulas is useful when you want to compare data from different date periods. Here are
Example 1
The following example shows you how to create formulas that you can use to compare data from this
• The formula for this week is: week ( today () ) - week (date)
• The formula for last week is: diff_days ( week ( today ) ) , week ( date ) )
Example 2
The following example shows you how to calculate the percent increase from the last date period to this
1. Create the formula: this week revenue = sum ( if ( this week ) then revenue else
0 )
2. Then create the formula: last week revenue = sum ( if (last week ) then revenue
else 0 )
3. Use nested formulas to calculate the percent increase by creating a parent formula: percent
increase = ( ( last week revenue - this week revenue) / last week revenue )
\* 100
Calculate percentages
Calculating percentages is useful when you want to see, for example, the percentage revenue generated
from each channel (online, stores, partner, etc.). For example, you can figure out the percentage revenue
Now you can search by each channel, using the percent revenue formula that you just created.
Formula operators
Formula operators allow you to apply if / then / else conditions in your formulas. You can leverage
operators in your formulas to have them return true, false, or a predetermined value. The operators
include:
ifnull Returns the first value if it is not null, ifnull (cost, 'unknown')
otherwise returns the second.
Calculating the conditional sum is useful when you want to see, for example, the total revenue for a
product by region.
Conditional sum formulas follow this syntax: if (some condition) then (measure) else 0. You can use this
syntax to limit your search in cases when you don’t want to add a column filter. For example: if (
The following example shows you how to figure out the number of customers who bought both
products, in this case an ipad and galaxy tablet. You can then find out the revenue generated by both
products.
This formula will provide you with the number of ipads that were bought.
2. You can then create another formula that looks like this:
And this formula will provide you with the number of galaxys that were bought.
4. Now, you can search using the f1 formula to find out the revenue generated by both
products.
Nested formulas
Nested formulas, or formula on formula, allow you to reference a formula within another formula. This
graphic illustrates how you would define a formula and then reference it from another:
These formulas become columns, and are even suggested within the Formula Builder. There is no limit to
ThoughtSpot doesn’t allow users to create invalid formulas, such as cyclic (loops) or inconsistent
aggregation formulas. To support this, formulas have dependency awareness. For example, you cannot
delete a formula that is nested in another. Also, formula dependency awareness ensures that you do not
break any dependent formulas while editing a formula with dependent formulas. For example, common
Nesting enables encapsulation and decomposition of formula logic. Meaning, you may have a staff
member create some small useful formulas that others can use. This also minimizes duplication of
formulas.
chasm trap.
Just as you would create any other formula, you can create a formula that spans across a chasm trap.
The Formula Builder will provide column suggestions for formulas that span across chasm traps.
Worksheets can be created from tables or from searching. You can also create a worksheet from a
search. This is an advanced form of searching. A worksheet created from a search is called an
aggregated worksheet. Aggregated worksheets are effectively the same as any worksheet.
When you do a search on a data source, ThoughtSpot is only able to aggregate one column by one other
column. Because of this, you may come across searches you can’t do in one pass, because they are
essentially nested queries. But you can create the equivalent of nested queries using an aggregated
You can use search saved as a worksheet just like any other data source. You can even link it to other
sources by defining a relationship. When you save an answer as a worksheet, and then use it as a
source in a new search, it is similar to doing a nested query in SQL, only much easier to create.
To create a worksheet from a search, you must belong to a group that has the privilege Has
administration privileges or Can Manage Data. If you are not able to create aggregated worksheets,
contact your administrator and request the Can Manage Data privilege.
Suppose you have created a search on the sales fact table that shows the top ten Sales Reps by
revenue for the first quarter. Then you want to do some further investigations on that set of data, like
ranking them by how much they discounted a specific product using data from the orders fact table.
Unless you save your first answer as a worksheet, certain explorations like this won’t be possible. If you
3. Create a new search that includes your aggregated worksheet and the other sources you
4. You may want to create a new worksheet that includes these data sources.
This will make it easy for people to search using the same group of aggregated worksheet
Only users with administrative privileges are able to create aggregated worksheets and link them. Users
that create aggregated worksheets should keep in mind best practices for creating a worksheet and the
You can’t link an aggregated worksheet with a sharded table. If you do this and try to search on it, you
To be able to join an aggregated worksheet with a base table, your installation must be configured to
allow the behavior. The aggregated worksheet cannot have more than 5 tables involved. Moreover, the
number of rows in the final aggregated worksheet cannot be greater than 1000.
The order of the objects being linked (joined) matters, this is because joins are directional. The table/
aggregated worksheet with the foreign key needs to occur in the first (left) position. The table with the
For the best performance, the final aggregated worksheet should have 50 or fewer columns and no more
than 10 million rows. Exceeding these boundaries can make your worksheet creation slow or error
prone.
You can use an ETL (extract, transform, load) process to circumvent these limitations.
Any filters or aggregations created during this search will be reflected in the worksheet.
2. If you want to use a different aggregation than the default one for any column, set it from the
column header.
data, you’re ready to create your new search. To do a search on the aggregated worksheet, along with
1. Click the search icon, and select Data Source. Choose your linked sources.
2. Do a search using columns from the linked sources, including any aggregations you created.
3. Test the result, to make sure it’s what you expect. If your search shows no data found or
doesn’t look right to you, it is possible that one of the links between your sources was made
on the incorrect column. Check the relationships you created and try linking using a different
4. Once you have the expected answer, you can create a worksheet to make it easier for you
5. Click the Actions icon from the upper right side of the screen
Example 1
The first example involves creating an aggregated worksheet with a default filter. Say you want to create
a worksheet that only shows data for a particular US state. In your search, enter customer state =
texas . Then click Actions, and select Save as worksheet. Give your worksheet a name, then click
Now you have a worksheet that only contains data that pertains to Texas. You can share this worksheet
with others to search across. Another popular example of this concept includes creating a worksheet
Example 2
The second example involves joining two aggregated worksheets. Say you want to plot the revenue of
the top five states over time. Search for revenue , store state , and top 5 . Save this answer as an
aggregated worksheet called Top 5 states . Then start another search with the tokens revenue ,
store state , and date . Save this answer as an aggregated worksheet called Total monthly
purchases .
Now you want to join these two worksheets. Navigate to the DATA tab and make a relationship between
To start a new search, select your two aggregated worksheets as data sources, selecting the appropriate
columns: store state from Top 5 State s, and date and total sales from Total monthly
Purchases . You will only see data for the top five revenue states.
Example 3
The third example involves creating a search to find customers who bought product A, but did not buy
First, you would have to perform searches for total sales by customer for both A and B, and create
aggregated worksheets for both. Then join these two aggregated worksheets back in an outer join
looking for conditions where the A and B join values are null.
This approach can become clunky, but depending on the requirement, can also be easily implemented.
Pinboards act like live dashboards, and are collections of your related charts, tables, and headline.
You can pin charts and tables to any pinboard which you created, and those that have been shared with
you with the Edit privilege. When you create a pinboard, you can share it with other people with either
the View or Edit privilege. Pinboards are interactive, allowing you to perform actions like filtering,
Create a pinboard
To create a pinboard:
3. In the New Pinboard dialog box, give your pinboard a name and description. Then click
Create.
Instead of saving an answer you can add it to a pinboard by pinning it. To add an answer to a pinboard:
1. While viewing your answer of interest, click the Pin icon on the top right of the answer.
2. In the Copy to pinboard(s) dialog box, click the + icons next to the pinboards you would like
You can also select Create new pinboard at the top of the list to create a new pinboard, then
Download a pinboard
You can download a pinboard as a PDF file, without having to download each visualization separately.
Downloading a pinboard works just as it would when downloading an answer. To download a pinboard:
You can see who authored a pinboard, when it was created, and when it was last modified by choosing
Other pinboard actions include actions you normally perform on your search as well as actions that you
can only perform on a pinboard. Most of these actions are found under the Actions button.
Other actions are available on a pinboard display itself. Some actions are static others appear only when
you over over specific locations of the pinboard. This diagram displays active action areas on a
pinboard.
If you make a change to a pinboard, the system recognizes this and puts a Save changes button up in
the header to alert you. Simply press this button to make your changes permanent.
Visualizations within a pinboard are easy to move around and snap into place on a relative flow layout.
Your pinboard layout is also responsive to your browser resolution. This helps keep the layout of your
In addition, the size picker at the bottom of a visualization dropdown lets you toggle between
predetermined sizes for each visualization. Charts and graphs can be toggled between a small, medium,
and full width size, while headlines can be only one size (small). One row of the pinboard can hold a
2. On the pinboard list page, click the pinboard you would like to edit.
3. Resize your visualizations by choosing between the predetermined sizes under the
4. Drag and drop your visualizations on the layout grid to reorder your pinboard.
5. If you are unhappy with your layout or you would like ThoughtSpot to configure your layout for
To delete a visualization:
2. On the pinboard list page, click the pinboard you would like to edit.
3. Click Delete under the dropdown menu of the visualization you would like to delete.
Other pinboard actions include actions you normally perform on your search as well as actions that you
can only perform on a pinboard. Most of these actions are found under the Actions button.
Other actions are available on a pinboard display itself. Some actions are static others appear only when
you over over specific locations of the pinboard. This diagram displays active action areas on a
pinboard.
Pinboard filters
Filters, including bulk filters, can be applied to pinboards just as with tables and charts. These kinds of
filters apply to an entire pinboard, making it easy to see only the data that you are interested in across
Pinboard filters can be very useful when you want to apply the same filters to more than one related
visualization. You can narrow the focus of your pinboard for specific purposes or audiences.
When you apply a filter, the pinboard is not automatically saved with your filter applied. This is to
encourage ad hoc filtering. Therefore, people with read-only access can create pinboard filters. You
must have edit access to the pinboard, and view access (or higher) to the underlying data source in
Note that pinboard filters only apply to the tables and charts that are based on worksheets. If a pinboard
also includes tables and charts that were created from underlying tables or on user uploaded data, the
You can create a filter in the pinboard view for any pinboard. This allows you to easily manipulate the
Here is an example that shows you how to add a single filter to a pinboard. To create a pinboard filter:
2. In the populated columns menu, click the Add filter icon next to the columns you would like
to use as filters.
3. Choose the values you are interested in by typing them in, selecting the appropriate
4. Click Done.
When you apply a filter, the pinboard is not automatically saved with your filter applied to every object in
the pinboard that was created from a worksheet. Pinboard filters do not apply to tables and charts built
Your applied filter will sit at the top of the pinboard, where you can edit it in place:
Or delete it:
You can add multiple schedules with different configurations for a single pinboard. However, each job is
limited to one pinboard schedule. To add a schedule, you must have administrator or can schedule
pinboard privilege, and at least edit-only and view-only access to the pinboard.
To schedule a pinboard:
4. Click Actions and select Manage schedules to view all of the schedules set for the pinboard.
The system displays the Add a schedule for PINBORD page. On this page you configure
Field Description
Repeats You can rebuild a pinboard every n minutes, hourly, daily, weekly, or
monthly. For some of these, you can also choose specific times of the day
or days of the week. Make sure to note the Server time zone which is the
timezone which will be used.
Name Provide a short name for this schedule, Monthly Report Source is an
example of a good name.
Description Enter a description to remind yourself and to inform others. For example, if
this is an important schedule for a meeting or a report, you should mention
that.
Type CSV files provide all data for tables, with one attachment per table. Use
CSV files to perform further analysis offline. PDF files show all visualiza-
tions in the pinboard. Each chart takes up a whole page in the file, while
only the first 100 rows of a table are included. Use PDF files to skim the
data.
Gating
condition
Write a statement that returns a single boolean value (true or false). For ex-
ample, sum (revenue) > 100 is a valid condition but is_weekend
(commit_date) is not. You can use any valid formula in your statement.
Other than checking your formula syntax, ThoughtSpot does not validate
your formula returns a single boolean.
Recipients
You are limited to 1000 recipients per job. You can add Users or groups
to enter ThoughtSpot users or groups. Use Emails to add recipients that
are not ThoughtSpot users. Any users your ThoughtSpot admin must have
set your whitelist domains. Contact ThoughtSpot Support to set your
whitelist domains.
If you experience problems with sending email, your cluster may not have
SMTP enabled. Contact your system administrator to resolve this issue.
can within a search. You can interact directly with a visualization of a pinboard to perform ad hoc
• Editing a search - You can edit the original search and reconfigure the answer. In the
You will be taken to an edit mode, where you can view and change sources, search different
columns, change the view, save the answer as a worksheet, add a formula, and change the
chart.
Copy a pinboard
You can make a copy of a pinboard if you would like to make edits without changing the original
pinboard. Making a copy of a pinboard allows you to make your own edits without overwriting the
2. On the pinboard list page, click the pinboard you would like to copy.
4. Give your pinboard a new name and description. Then click Save.
You can copy and paste the copied link to include in a presentation or spreadsheet, or email or Slack it
to other people in your company. Note that when clicking the link, the person must be authenticated to
You can also use this link for embedding the chart or table in another Web page, Web portal, or
application when using the ThoughtSpot JavaScript API with Embedding or the REST API. For details,
2. On the pinboard list page, click the pinboard you would like to get a link for.
4. Copy the pinboard link. The highlighted portion is the pinboard ID.
5. To copy an individual visualization link, click Copy link under the dropdown menu of the
6. Copy the visualization link. The highlighted portion is the visualization ID.
Reset the layout of a pinboard to undo your changes or have ThoughtSpot create a layout for you.
You can reset the layout of your pinboard if you would like to undo your edits or have ThoughtSpot
optimize your layout space for you. This action will keep the sizes of your visualizations, but not the
order.
2. On the pinboard list page, click the pinboard you would like to edit.
Reset a visualization
After performing ad hoc actions or edits to a visualization of your pinboard, you can reset the
To reset a visualization:
Start a slideshow
Summary: Displaying your pinboard as a slideshow is a good way to
present its contents to others.
Presenting your pinboard displays your visualizations in order from left to right and top to bottom.
To start a slideshow:
2. On the pinboard list page, click the pinboard you would like to present.
3. Click Present under the dropdown menu of the visualization you would like to start the
slideshow with.
4. Use the left and right arrow keys to navigate between your pinboard’s visualizations.
5. Click the x at the top right of the screen or push the Esc key to exit the slideshow view.
The DATA tab lists all of the tables and data sources available to you. There are three types of data
sources that you may see in the data list. They are tables, worksheets, and user uploaded data. You will
most likely only see worksheets and user uploaded sources. These are the most commonly used data
Clicking on the name of a table or data source shows you detailed information about it. You won’t be
able to change these settings or edit the table unless it was shared with you with the Edit privilege. To
see how to edit a data source, refer to the ThoughtSpot Administrator Guide.
Use the filters at the top of the page to find the data you are interested in. From the DATA tab, you can
also delete or apply stickers to tables and data sources in bulk by selecting them and clicking the
Related information
• View your data profile
Basic column data profile information is available under Profile on the Data page.
• About sharing
Whenever you are working in ThoughtSpot, you are in your own private environment until you
share your work with others. This applies to searches, pinboards, and any data you upload.
Loading data through the Web browser is recommended for smaller tables (under 50MB) with simple
relationships between them. This method is recommended for small, one time data loads. Using this
Any user who belongs to a group that has the privilege Has administration privileges or Can upload
user data can upload their own data from the browser.
Your data should be in a CSV (comma separated values) before you load it. A CSV file is a text file made
up of data fields separated by a delimiter and optionally enclosed with an enclosing character. If your
data contains multiple tables, you’ll have a separate CSV for each table.
The first step in loading data is to obtain or create one or more CSV files that contain the data to be
loaded into ThoughtSpot. CSV is a common format for transferring data between databases.
Most applications such as Microsoft Excel or Google Sheets can output CSV formatted files. If your
1. Save, export, or download the file in CSV format. The exact procedure you use will depend on
Your source data may be in another database. If this is the case, your company’s ETL
(extract, transform, load) process will typically generate CSV files. If your source is another
database:
4. Extract each table you wish to import into ThoughtSpot as a CSV file.
Large organizations typically have a data administrator or department the builds ETL processes. If the
data you want is in another system, speak with your ThoughtSpot administrator about getting CSV files
A CSV file contains a delimiter that marks the separation between fields in the data. The delimiter is
usually comma, but it can be any character. The file also contains fields optionally enclosed with double
• If the CSV contains column headers, they must match the column names in the database
exactly.
• Often a | (pipe) or tab is used as the delimiter, because it may be less likely to occur within
• When a field contains a double quote, it must be escaped with the character specified in the
• When a field contains the delimiter, the field must be enclosed in double quotes.
ThoughtSpot supports a wide range of date and timestamp formats in the CSV file. Blank values in user
uploaded CSV files are interpreted as NULL values. These include the values (case insensitive):
• NULL
• \N
• NA
• N/A
• [space]
If you are appending data to an existing schema or table, columns in the CSV file must be in the same
Any user who belongs to a group that has the privilege Has administration privileges or Can upload
user data can upload their own data from the browser. To load the CSV or Excel file into ThoughtSpot:
3. Click the Actions button in the upper right corner, and select Upload Data.
5. Answer the question Are the column names already defined in the file header?
6. Answer the question Are the fields separated by? Click Next.
7. Click on the column header names to change them to more useful names, if you’d like. Click
Next.
8. Review the automatically generated data types for each column, and make any changes you
want. There are four data types: Text, Integer, Decimal, and Date.
9. Click Import.
When an upload is complete, the system reports the results and offers you some further
actions.
• Click Link to Existing Data if you want to link the data you uploaded to the data in
• Click Auto analyze if you want to use the SpotIQ feature to find insights in your
new data.
Troubleshoot uploads
Boolean data must use TRUE / FALSE values. Other values such as Y / N are not supported.
If you have permissions to upload data and permissions to a data source, you can add to that source by
uploading more data with CSV file. You can append data to your existing system tables through the
ThoughtSpot application, even if the tables were initially loaded using Data Connect or tsload . The
CSV file must have the same structure as the table it is being loaded into, including number and type of
3. Click the on the table you would like to append data to.
6. Answer the question Are the column names already defined in the file header?
7. Answer the question Do you want to append to the existing data or overwrite it?
8. Answer the question Are the fields separated by? Click Next.
9. Click on the column header names to change them to more useful names, if you’d like. Click
Next.
10. Review the automatically generated data types for each column, and make any changes you
want. There are four data types: Text , Integer , Decimal , and Date .
12. Click Link to Existing Data if you want to link the data you uploaded to the data in another
The data profile includes null values, min, max, average, and sum information for each table column. This
Profile view should help you get a better sense of what’s there before searching on the data.
preferences control the language and data formats (date and number formats) by geographic locations.
Locale Language
de-DE German
ja Japanese
Date and number formats change to reflect your locale. So, if you set Japanese as your default locale in
your profile settings, then the interface will update to reflect that after you refresh your page.
Keywords, operators, and error messages are included in the translated material. Formulas, however, are
For example, if you are using ThoughtSpot in the US, the number formatting should look like this:
Warning: It is possible that you set your locale but find strings in the UI still appear in English,
What is SpotIQ?
SpotIQ is a ThoughtSpot feature that helps you find insights into your data. Insights are trends,
correlations, explanations of increases, explanations of decreases, and outliers (values unique from what
Using SpotIQ, you can find interesting answers in your data that you might not have found on your own.
SpotIQ also learns from your responses to your insights. Meaning, how you interact with SpotIQ results
The SpotIQ feature is made for users who are not data magicians; however, data magicians can use it to
If you can see the SpotIQ on your ThoughtSpot dashboard, you have access to SpotIQ:
If you can’t see this option, ask your ThoughtSpot Administrator to give you the Has Spot IQ privilege.
The SpotIQ page shows you the all the analysis results in the system you have access to, these results
are called SpotIQ insights. You can create your own results from several different locations in your
system:
• tables or worksheets
• data uploads
• SpotIQ insights
The menu items that use SpotIQ have a lozenge that indicates this:
The best way to learn how to use SpotIQ is to try it for your self. The SpotIQ 101 tutorial walks you
you will be able to use the core features of SpotIQ in your ThoughtSpot installation.
If you want a detailed overview of what SpotIQ does before you try it out, first read the introduction to
SpotIQ.
Prerequisites
Before you begin, make sure you can login into ThoughtSpot application. To complete this tutorial, you
need the ability to log into ThoughtSpot and the ability to upload a CSV file. You also need the ability to
use the SpotIQ application. These features require that your user account must have the following
privileges:
Your ThoughtSpot administrator can give you these privileges. If you can see the SpotIQ option on your
You can use SpotIQ with any of the data in your system.
This tutorial uses a dataset containing a list of sales and movement data by item and department.
2. Click the DATA tab and choose Actions > Upload Data.
3. Browse to the sample data file you downloaded or drag the file into the upload area.
4. Choose YES for the Are the column names already defined in the file header setting.
5. Choose Comma for the Are the files separated by? setting.
7. Set the category_num column to TEXT on the Set column types page.
8. Click Upload.
Building insights can take time. How long depends on the data you are analyzing. The
moment.
Each time SpotIQ does an analysis, it generates a set of results. ThoughtSpots keeps the results until the
user that requested the analysis (or an admin), deletes them. You can run SpotIQ on the same object
1. To check for the results of your analysis, select the SpotIQ page.
The SpotIQ page allows you to see all results with data you have permission for. So the
2. Select Yours.
SpotIQ labels each result with a NAME, DESCRIPTION, STICKERS, and MODIFIED. The
NAME comes from the object that was analyzed which is referenced again in the
Not every SpotIQ analysis creates results. You can see information about each analysis as
Check the STATUS and also how long the RESULT took to generate. Since you got results,
7. Choose Results.
You should still see the results for your FoodDollarDataReal run. Deleting information about
an analysis run does not delete the actual results. You must delete each individually.
Where to go next
At this point, you’ve created a set of insights using SpotIQ, in the next section you Review insights you
created.
your first SpotIQ analysis. You should be able to look at the SpotIQ list and see when your analysis ran.
This is important knowledge because data changes, you’ll want to run multiple analyzes on the same
data.
In this section, you look at the results and see what insights SpotIQ discovered. You’ll learn about the
3. Look for results from your FoodDollarDataReal analysis and click on the NAME. The
You can tell that SpotIQ ran through 20 combinations and discovered 14 insights. The first
looked for an insight in a combination of the table_num and year columns in the
FoodDollarDataReal data and discovered one insight. The next to column combination
5. Close the details panel and look at the corresponding insight SpotIQ produced.
• 2 insights for CATEGORY_DESC have significantly higher Total imports than the
There is a reason there are three sets. You’ll learn the answer to that later.
You’ll notice that when you first look at an insight there is an expiration date in the upper right corner:
Insights also take space in the ThoughtSpot installation. A lot of people creating insights can add up to a
lot of data lying around. Just as water rising in a bath tub can overflow or just cause a problem you have
to wade through, too much data can create a lot of old reports to sift through.
Another reason to expire an insight is time. Typically, business data is changing every day if not more
frequently. Any particular set of insights are valid for data during a specific period of time. This doesn’t
mean old insights can’t provide information you can use, just that you are unlikely to get the same insight
twice.
If a set of insights look good, you can Save them and they are not removed when they expire. Do this
Data outliers
SpotIQ attempts to look for three central insights. The first insight it looks for are data outliers. An outlier
is a value that is “far away” or that differs from the other data.
Outliers can result from measurement or recording errors or they could contain valuable information. For
example, one store might sell significantly more towels in one week out of the year because there was a
1. Scroll to the first carousel of data that SpotIQ created for you.
A carousel groups a set of visualizations on a page. You can use the arrows attached to a
In this case, SpotIQ is indicating that the Total Imports value is significantly higher than the
Two facts about this outlier shouldn’t surprise, you. The first fact is that a total exceeds all the
other items in the data. That just makes sense so this isn’t a true outlier.
The second fact is that SpotIQ insights are not always interesting. In this case the data
included totals in the row data which caused nonsense outliers. You can use SpotIQ to fix this
The second category of insights SpotIQ attempts to find is cross-correlations. Cross-correlation looks for
and measures relationships between two quantitive, continous information sets – in our case two fields
(columns) in our dataset. Usually, you’ll see a cross-correlation in your insights if your data includes time
or date data.
The result of a correlation analysis shows how strong and in what direction a relationship between two
data sets moves. The range is -1 to 1, the closer the cross-correlation value is to 1, the more closely the
1. Scroll down your insight page, till you find the correlation results:
You can see that the over all total and the total category number values correlate very
In the business world the dependence of a variable Y (the dependent variable) on another
certain lapse of time. Such a lapse of time is called a lag. Good Data Help.
The third set of insights SpotIQ looks for is a trendline. A trendline is a straight or curved line that
indicates the general pattern or direction of a time series data (information in sequence over time). As
you may have guessed, trendlines rely on your data having a date or time column.
You can use a trendline to determine the general direction of a trend in your data. Are sales are climbing
At this point, you may have noticed that SpotIQ grouped each type of insights. Outliers, correlations, and
this last one, trendlines. This grouping makes it easier to locate and review similar types of insights.
Where to go next
In this section, you explored some of the functionality of the SpotIQ page. You learned that SpotIQ
• outliers
• cross-correlations
• trendlines
In the next section, you’ll learn how to schedule SpotIQ to deliver insights on a regular basis.
modify a SpotIQ analysis to extend or customize the analysis. You’ll edit an insight to customize the
Customize an analysis
In the second part of the tutorial, you reviewed the first output from SpotIQ. The outlier insights weren’t
The system responds by starting a new insight run based on the single chart. Each time you
If you recall, the first run against this data SpotIQ ran through 20 combinations and
discovered 14 insights. In this second run against one table, SpotIQ ran 49 combinations and
Running SpotIQ again does not necessarily result in fewer runs or even, as in this case a
reduced number of insights. It changes the analysis though, by selecting the single insight
from your first run, you gave SpotIQ information it could use to focus the next run.
9. Click ANALYZE.
You’ll find that the new analysis has the same name as the last one you ran. The new results
include an outlier and a cross-correlation. You’ll discover with these new charts a definite
outlier 6/30/2005 .
The changes you make in this step persist on the underlying data for all your future analyses. You can
unset these values by going back into the dialog and removing what you set.
Finally, you might have noticed the thumbs at the bottom of each insight. Use the thumbs up to tell
SpotIQ you like the data insight. Clicking thumb’s down display an Improve Analysis dialog:
You can exclude a value from this individual analysis and rerun the analysis. Unlike the Customize
Analysis action, this action works only on this analysis and does not persist.
The lines used in the cross-correlation are somewhat ambiguous. A different visualization may help in
this case. You can also modify the charts you see in your results. Try this now.
1. Select the menu on the Total imports, Total value_added by year chart.
The Edit Visualization appears. The layout is familiar to any user that has run a ThoughtSpot
search or worked with a result. This is dialog reveals the Search syntax used to generate the
insight. You can use this dialog to do all the things you would normally do with a search.
3. Edit the search bar and remove table_num from the search.
4. Select the chart icon and choose Line Column to change the visualization.
The chart with your changes now appears in the SpotIQ list. The outlier stands out very
You can present SpotIQ insights in several ways. You can present an individual result or all of them at
once. You can package all the insights in a PDF. This is useful for passing a packet of results. Since any
insight reflects the data at a specific point in time, always consider saving the insight as a PDF.
The system downloads a file containing all the insights. Keep in mind this file can be very
You can use the Present action to view visualizations that appear in a carousel, and present them as a
group.
2. Roll over the right corner of the menu to reveal the menu.
Click through the carousel with the next / previous arrow buttons, or use the left side menu of
chart names.
Also, each individual chart has a Download, Present, or Copy link action you can take.
If you find an analysis configuration that is useful. You can run that configuration periodically. This is a
good thing to do of course as, in a business, data changes all the time.
Every month SpotIQ will update your analysis with new data.
Keep in mind that SpotIQ jobs take resources in your system. So, you really don’t want to leave casual
jobs running in the system. Go ahead and delete this latest job. Now that you know how to schedule a
Congratulations!
Congratulations, at this point you’ve learned the basics of SpotIQ with ThoughtSpot. Throughout the
application, you’ll find the SpotIQ icon on search answers, pinboards, visualizations, and data. Wherever
you see this option, you can click to run suggested or custom analyses, and get new insights on the
SpotIQ page.
other feature, there things you can do to optimize the feature. This page contains some best practices
you can use to make SpotIQ more effective when you use it.
If you followed the tutorial, you know that right after uploading data is a good time to run Auto Analyze.
SpotIQ can very quickly help you find insights in your data.
Start from a Search. Enter a single measure in the bar; one you want to explore of course! Then, choose
Actions > Auto Analyze on the results. Choosing the single measure focuses SpotIQ.
Use Custom Analyze to focus or tweak the SpotIQ results. While you are tempted to keep all the
You can increase the SpotIQ’s effectiveness by ensuring you are practicing good data modeling. This is
true if you are user uploading the occasional data file or a data management professional. Modeling data
2. Click on a data source you own or can edit. This brings up the Columns screen, where you’ll
If you worked through the SpotIQ tutorial, you can try experiment on the FoodDollarDataReal
Make sure you set the INDEX PRIORITY for columns in your data source. Use a value between 8-10 for
important columns to improve their search ranking. Use 1-3 for low priority columns. INDEX PRIORITY
SpotIQ uses measures for correlations. For trendlines and outliers, if SpotIQ has a measure, it then drills
by attributes in turn.
You should also set AGGREGATION on your columns. SpotIQ applies the default aggregations from
Situations to avoid
Like any AI, some situations SpotIQ is not yet equip to handle. You should know what these are so you
can avoid them. If your data contains a measure that uses a MOVING_* or GROUP_* formula, SpotIQ
may return results that simply aren’t meaningful. When doing a correlation analysis, SpotIQ may not find
meaningful data if you have a measure with anything other than SUM .
You can set preferences for SpotIQ in your user profile. These preferences allow you to control how you
receive analysis notifications. They also allow you to exclude nulls or zero value measures from analysis.
The exclusions impact each SpotIQ analysis. It eliminates points with such values during statistical
calculations for example, for mean, standard deviation SpotIQ excludes values from any equation and
customized SpotIQ analysis. The customized analysis can be a one-time customization or can apply to
Every menu or location where you can Auto Analyze with ThoughtSpot, you can also choose Custom
Regardless of where you are in the ThoughtSpot UI, the SpotIQ Customize Analysis dialog has the
same layout. The columns, of course, are specific to the data you launched the dialog from.
This dialog has three tabs, Included columns, Excluded columns , and Customize Algorithms. The
The SpotIQ insights page has an option for this dialog and also an option to customize a single analysis.
The Improve Analysis dialog always excludes a value from all future analysis.
Finally, you can also set some analysis options from your user Profile.
You’ll notice only one of these options is actually related to analysis. The others relate to how you
You should always exclude columns you are not interested from your analysis.
You can always includes columns that interest you in your analysis.
Your data may contain known outliers. For example, you are in the middle of a quarter and only want to
analyize the previous quarter. Anything from the present quarter could contain an outlier.
Not applicable.
In the Search bar, add a filter date< last time period to the search
bar.
Your SpotIQ analysis may not provide you as many insights as you think it should.
Not applica-
ble.
Choose Customize Analysis and Customize algorithms Decrease the Multiplier
for Outlier Detection to a value closer to zero.
Advanced R Customizations
Admins and users with the Has SpotIQ privilege can run an R script using the Custom Analysis feature
of SpotIQ. This means you can run an R script from any point in ThoughtSpot where you find the
The R language is an open source programming language used for statistical computing. As such,
This section explains the feature and how to use it. It is not meant as an R primer. To learn more about R
and how to use it, visit the R Project for Statistical Computing.
ThoughtSpot provides R running as a service within a ThoughtSpot cluster. Permissions are restricted.
This means the R script does not have permission to issue system commands.
The ThoughtSpot cluster has pre-installed the basic R packages. If your script requires a specific
package, you must request your ThoughtSpot cluster admin to install the package on your behalf.
ThoughtSpot internally transforms and binds an R script prior to sending it to the cluster’s R service. The
system expects each script have a well-defined structure which is the following:
####R SCRIPT####
<Fill script body>
####COLUMN BINDINGS (ONE PER LINE)####
<Fill column bindings here>
The scripts contains the column bindings with the answer results appearing as parameters in the R
script. ThoughtSpot expects for each .param n in R your script must provide a corresponding binding.
The following pseudo code illustrates an R script in a form suitable for ThoughtSpot:
####R SCRIPT####
df <- data.frame(.param0,.param1, ...);
...
write.csv(..., file=#output_csv#, ...);
Notice that .param0 refers to first column in column binding and .param1 refers to the second.
Should you need a third binding, you would use .param2 and so forth.
The output of the script is either PNG or CSV. This example script uses #output_csv# to emit data in a
Presently, error reporting is limited for R scripts in SpotIQ. You should validate your R script independent
of your ThoughtSpot environment. Once you are sure they are free of syntax or other errors, then try the
script in ThoughtSpot.
The following illustrates how to run an R analysis on data that has a sales column and a zip code
column.
2. Use Choose Sources to locate a source with sales and zip code data. This example uses
If your source contains the proper data, you should see something similar to the following:
Selecting this option unsets all the other options on this tab and displays the Refine
Parameters field.
####R SCRIPT####
library(ggplot2)
set.seed(20)
df <- data.frame(.param0, .param1)
cluster <- kmeans(df[1:2], 3, nstart = 20)
cluster$cluster <- as.factor(cluster$cluster)
png(file=#output_file#,width=400,height=350,res=72)
print(ggplot(df, aes(.param0, .param1, color = cluste
r$cluster)) + geom_point())
####COLUMN BINDINGS (ONE PER LINE)####
Sales
Zip Code
This script binds .param0 to Sales and .param1 to the Zip Code column. You can see
10. Go to the SpotIQ page and click on the results of your newly triggered analysis.
You should see the results in PNG format similar to the following:
You can run another R script directly on this result to get CSV results. Try this on your own. Here is the
####R SCRIPT####
set.seed(20);
df <- data.frame(.param0,.param1);
cluster <- kmeans(df[1:2], 3, nstart = 20);
df$Cluster <- as.factor(cluster$cluster);
colnames(df)[1] <- 'Sales';
colnames(df)[2] <- 'Zip Code';
write.csv(df, file=#output_csv#, row.names=FALSE);
####COLUMN BINDINGS (ONE PER LINE)####
Sales
Zip Code
Overview of sharing
Whenever you are working in ThoughtSpot, you are in your own private environment until you share your
work with others. Sharing applies to searches, pinboards, and any data you upload.
This is a list of objects a regular, non-administrator user can share. Administrators have more granular
You can share with groups and with individual people. You can share several different types of objects:
Uploaded Data that was Only the user who uploaded the data (and any user with administrator
data uploaded us- privileges) has access to it by default. They can share a table (or se-
ing a Web lected columns) with other people or groups. See Share uploaded data
browser.
Pinboards A pinboard of Anyone who can view a pinboard can share it. See share a pinboard
saved search
results.
Answers The result of Anyone who can view an answer can share it. See share answers
a single
search.
You do not have to be an administrator or the owner, to share saved answers or pinboards. Any user can
If you upload a spreadsheet, you can share Can View or Can Edit privileges with other people, who can
further share them with others. This last point is important. Like sharing a secret, sharing an object or
your data can quickly spread in ths way to people you do not intend it to. So, if your data or work is
Finally, you can revoke access to an object (table, worksheet, or pinboard) that you have previously
Share a pinboard
Summary: Whenever you view a pinboard you have the option of
sharing it with others.
When you share a pinboard what you are really sharing is a live link to the pinboard, when you click
Share with…. So whenever someone else views it, they will see the most recently saved version with the
most recent data. You do not have to be an administrator or the owner to share saved pinboards. Any
user can share them, based on the access levels the user has.
To share a pinboard:
3. Click + Add users or groups and select users or groups that you want to share with.
4. Configure the level of access by selecting from the dropdown list. You will only see options
available, based on your own access level. For example, if you have only View access, you
• Can View to provide read-only access. If the person doesn’t have access to the
underlying data, they can only view a shared pinboard. If they change anything on
the pinboard, their changes are not saved. In order to persist the changes, the user
• Can Edit to allow modification. Enables renaming or deleting the shared pinboard.
If a person with edit privileges modifies a shared pinboard, their changes will be
saved to it.
Share answers
Summary: You do not have to be an administrator or the owner to
share saved answers. Any user can share them, based on the access
levels the user has.
Whenever you view an answer, you have the option of sharing it with others. It will be shared in its
current state, so if you have modified the answer by interacting with the table or chart, the modified
4. Click + Add users or groups and select users or groups that you want to share with.
5. Configure the level of access by selecting from the dropdown list. You can select:
• Can View to provide read-only access. If the user doesn’t have access to the
• Can Edit to allow modification. Enables renaming or deleting the shared answer. If
a user with edit privileges modifies a shared answer, their changes will be saved to
it.
7. Click Done.
Data that you uploaded from a Web browser is only visible to you and to the administrator. You can
By default, if you share only some table columns, users with access to those columns cannot see the
other column’s data in their searches. However, the data can become visible if a worksheet or pinboard
If you want to prevent shares of these types from also revealing the columns, you can ask your
6. Click + Add users or groups and select the users and groups that you want to share with.
7. Configure the level of access by selecting from the dropdown list. You can select:
• Can View to provide read-only access. This enables viewing the table data and
• Can Edit to allow modification. This enables renaming, modifying, or deleting the
9. Click Done.
1. Go to the area where the object(s) you want to unshare is located. From the top menu bar:
2. Find the object(s) in the list, and check the corresponding box(es).
4. Click the X next to the users and groups that you want to remove from sharing.
5. Click Done.
messaging application. Slack also allows users to communicate with applications like ThoughtSpot
through chat.
Spot has to be integrated with your Slack team before you can use it. Your team admin or ThoughtSpot
admin can do this. To test if your Slack team has a Spot integration, mention @spot and see if he barks
back:
In this particular channel, @spot is there for you but like his brothers @spot-east-credit is not in the
channel. Scroll down to Frequently asked questions to get started with Spot.
If @spot doesn’t come when you “call” you are spotless. Ask your administrator to see if you can get
one.
If this is the first time you’ve commanded the app, Spot tells you:
8. Go back to Slack and ask Spot to list what he does by typing @spot help.
Note: Spot only looks for objects with the spot sticker on them. Work your way from
10. Work your way from a pinboard to asking for a particular chart.
At this point, you should go onto explore your Spot’s talents on your own!
Whenever possible, Spot answers questions for you directly in channel. Here, though, are some frequent
Sure. This is done by your administrator when the integration is created. Um, I guess the answer is really
Spot can only fetch “toys” that are have the spot sticker. Your administrator should do this when he sets
up ThoughtSpot.
The screenshots in this document were taken on desktop integration of Slack. If you are using mobile
The first time you message Spot, it will send back a link which you can click to link your ThoughtSpot
account to Slack account. Once the accounts are linked all charts you query from Spot will be tied to
your permissions/authorization.
Any chart retrieved using spot can be subscribed to, and can have any number of channel/user
subscribers.
Messaging help to spot gives you a list of commands and how to use them.
There are multiple locations inside and outside the ThoughtSpot application where you can get more
help. This page describes some of the ways to get more help inside or outside of the application
interface.
Each version of ThoughtSpot has its own documentation set. ThoughtSpot releases new documentation
sets for every major release version ( x.y ) of ThoughtSpot. Documentation features added with minor
versions ( x.y.z ) are added to the corresponding major release. This means, for example, that new
documentation for 4.4.1 minor release version appears in the 4.4 major version documentation.
Tip: ThoughtSpot supplies release notes for every major release and every minor release
version (x.y.z).
Help menu
You can navigate directly to this site on the web by entering docs.thoughtSpot.com in your browser’s
address bar. By default, the latest version (4.4) is presented first. ThoughtSpot versions prior to 4.4
You can navigate to this documentation from inside the ThoughtSpot application as well. In this case,
the application links directly to the documentation version that matches your product version.
How search works a short video that explains how to use the Search bar
Along the bottom of the Help dialog you’ll see a link to contact Support as well as the version of
Learn
Choosing Learn from the Help menu takes a you to the Learn center. The center contains one or more
example queries. You can only play replay on data that you have access to.
Click on a item in Learn to replay it in ThoughtSpot. During a reply, you can click Pause or Resume or
Any administrator can add to the items in the Learn center. To add a replay, do the following:
2. Choose the pin from the answer that results. The system lists the pinboards you can pin to.
If you still can’t find what you’re looking for, you can contact support.
Keyword reference
You can use keywords when asking a question to help define your search. This reference lists the
various keywords. You can also see this list of keywords and examples from within the help center.
Currently, we have the following keyword translations, and plan to add more soon.
日本語 Deutsche
General
Keyword Examples
top • top sales rep by count sales for average revenue > 10000
• sales rep average revenue for each region top
Date
Keyword Examples
Keyword Examples
n days for each month sales last 2 days for each month
n days for each quar- revenue last 15 days for each quarter
ter
n days for each week total sold last 2 days for each week
n days for each year revenue last 300 days for each year
n hours for each day sales last 2 hours for each day
Keyword Examples
last year top 10 customers last year by sale by store for region west
last n years visitors last 5 years by revenue for sum revenue > 5000
Keyword Examples
Time
Keyword Examples
Text
Keyword Examples
not contains product color not contains 'tan' product color not contains 'red'
Keyword Examples
Number
Function Examples
Comparative
Function Examples
all all
Function Examples
Location
Keyword Examples
near... within n miles|km|meters revenue store name county near alameda within 50
miles
farther than n miles|km|meters average hours worked branch farther than 80 km from
from scarborough
Location keywords only work for searches where the data source includes latitude/longitude data.
Period
Keyword Example
TQL reference
TQL is the ThoughtSpot language for entering SQL commands. This reference lists TQL commands you
You can use TQL either through the ThoughtSpot application’s web interface or the command line
As a best practice, you should enclose object names (database, schema, table, and column) in double
quotes, and column values in single quotes. When referring to objects using fully qualified object names,
"database"."schema"."table"
To get help on SQL when using TQL, enter help on the command line.
You can use TQL to view and modify schemas and data in tables. Remember to add a semicolon after
each command. Commands are not case sensitive but are capitalized here for readability.
Note: Worksheets and pinboards in ThoughtSpot are dependent upon the data in the
underlying tables. Use caution when modifying tables directly. If you change or remove a schema
Syntax Description
Examples:
SHOW DATABASES;
Examples:
USE "fruit_database";
SHOW SCHEMAS
SHOW SCHEMAS;
SHOW TABLES Lists all tables within the current database by schema. For example:
SHOW TABLES;
SHOW TABLE Lists all the columns for a table. For example:
<table>
SCRIPT SERVER Generates the TQL schema for all tables in all databases on the server. For
example:
SCRIPT SERVER;
Syntax Description
SCRIPT DATABASE Generates the TQL schema for all tables in a database. For example:
<database>
SCRIPT TABLE Generates the TQL schema for a table. For example:
<table>
Syntax Description
SELECT
<cols_or_expr> If you do not specify the TOP number of rows to select, the top 50 rows will
FROM be returned by default. The number of rows to return can be set using the
<table_list> TQL command line flag:
[WHERE <predi-
cates>]
--query_results apply_top_row_count
[GROUP BY <ex-
pr>]
[ORDER BY <ex- You can use the following aggregation functions:
pr>]
• sum
• count
• count distinct
• stddev
• avg
• variance
• min
• max
For example:
Schema creation
Syntax Description
CREATE SCHEMA Creates a schema within the current database. For example:
<schema>
CREATE TABLE Creates a table with the specified column definitions and constraints.
<table> (<column_def-
initions>
Use PARTITION BY HASH to shard a table across all nodes. If no KEY
[<con-
is specified, the table will be randomly sharded.
straints>]) [PARTI-
TION BY HASH (<num-
ber>) [KEY Do not specify relationship constraints ( FOREIGN KEY or RELATION-
("<col- SHIP ) in the CREATE TABLE statement. Instead, define these using AL-
umn>")]]) TER TABLE statements at the end of your TQL script, after creating your
tables. This method guarantees that tables are created before they are
referenced in the constraint definitions. For example:
Schema modification
Syntax Description
DROP DATABASE Drops a database and all of its schemas and tables. For example:
<data-
base>
DROP DATABASE "fruit_database";
DROP SCHEMA Drops a schema within the current database, and drops all of the tables in
<schema> the schema. For example:
TRUNCATE TABLE
<table>
Removes all data from a table, but preserves its metadata, including all
GUIDs, relationships, etc. This can be used to force a new schema for a
table without losing the metadata.
However, this operation removes all existing data from the table and must
be used with caution. You must reload the data following a TRUNCATE , or
all dependent objects (worksheets and pinboards) in ThoughtSpot will be-
come invalid. For example:
Syntax Description
ALTER TABLE
<table> When you add a column to an existing table, you must provide a default
ADD|DROP|RENAME value to use for existing rows. For example:
COLUMN
<column>
ALTER TABLE "cart" ADD COLUMN "nickname" varchar(255) DE-
FAULT 'no
nickname';
ALTER TABLE Drops the named foreign key or relationship between two tables. For ex-
<table> DROP CON- ample:
STRAINT [FOREIGN
KEY| RELATIONSHIP]
ALTER TABLE "sales_fact" DROP CONSTRAINT FOREIGN KEY
<name>;
"FK_PO_number";
Syntax Description
You must use this syntax when dropping relationships between tables cre-
ated before ThoughtSpot version 3.2. This is because relationships could
ALTER TABLE
not be named in older versions.
<table> DROP [CON-
Drops the foreign key or relationship between two tables where you cannot
STRAINT FOREIGN
reference it by relationship name. If the relationship was created without a
KEY
name, use:
• the name of the referenced table, for a foreign key.
[<table_name>] |
• the name of the related table, for a relationship.
RELATIONSHIP
[WITH
<table_name>]; If you drop a foreign key without specifying the referenced table, all foreign
keys from the table you are altering will be dropped.
Examples:
Syntax Description
ALTER TABLE Changes the data type of a column. This can have implications on sharding
<table> MODIFY and primary key behavior. See About data type conversion. For example:
COLUMN <column>
<new_data_type>;
ALTER TABLE fact100 MODIFY COLUMN product_id int;
Modify data
Syntax Description
INSERT INTO Inserts values into a table. Only use this for testing. Do not use INSERT on
<table> VALUES ... a production system. For example:
Syntax Description
ALTER TABLE Sets the load priority for a table. Load priority determines the order in
<table> SET LOAD which a table is loaded on a cluster restart. You can set any value from
PRIORITY <value> 1-100 . The system default for all tables is 50 . For example:
<new_da-
ta_type>;
ALTER TABLE 'sales_facts' SET LOAD PRIORITY 1;
UPDATE <table> Updates rows in a table that match optionally provided predicates. Predi-
... SET ... cates have the form column = value connected by the AND keyword.
[WHERE ...] Sets the column values to the specified values. For example:
DELETE FROM Deletes rows from a table that match optionally provided predicates. Predi-
<table> [WHERE...] cates have the form column = value connected by the AND keyword.
For example.
Constraints and relationships in ThoughtSpot are used to define the relationships between tables (i.e.
how they can be joined). However, constraints are not enforced, as they would be in a transactional
database. You can define the following constraints when creating a table with CREATE TABLE , or add
Syntax Description
PRIMARY KEY Designates a unique, non-null value as the primary key for a table. This can
be one column or a combination of columns. If values are not unique, an
upsert will be performed if a row includes a primary key that is already pre-
sent in the data. Some examples: </p>
FOREIGN KEY
Defines a relationship where the value(s) in the table are used to join to a
second table. Uses an equality operator. The foreign key must match the
primary key of the table that is referenced in number, column type, and or-
der of columns.
When creating a foreign key, give it a name. You can reference the foreign
key name later, if you want to remove it.
Syntax Description
RELATIONSHIP
Defines a relationship where the value(s) in the table can be used to join to
a second table, using an equality condition (required) and one or more
range conditions (optional). These conditions act like a WHERE clause
when the two tables are joined. They are applied using AND logic, such
that all conditions must be met for a row to be included.
You may add multiple relationships between tables. When creating a rela-
tionship, give it a name. You can reference the relationship name later, if
you want to remove it.
Data types
section lists all the flags that can be used to modify the behavior of tsload .
--target_table <table> Specifies the tables that you The tables must exist in the database speci-
want to load into the data- fied by --target_database .
base.
--empty_target Specifies that any data in If supplied, any rows that exist in the table
the target table is to be re- specified by --target_database and --
moved before the new data target table will be deleted before this
is loaded. data load. To perform an “upsert” on the ex-
isting data, omit this flag or specify --
noempty_target .
--max_ignored_rows <num- Specifies the maximum If the number of ignored rows exceeds this
ber> number of rows that can be limit, the load will be aborted.
ignored if they fail to load.
--bad_records_file Specifies the file to use for Input rows that do not conform to the de-
<path_to_file>/<file_name> storing rows that failed to fined schema in ThoughtSpot will be ignored
load. and inserted into this file.
--date_format <date_for- Specifies the format string The default format is yearmonthday e.g.
matmask> for date values. “Dec 30th, 2001” and is represented as
20011230 . Use the date format specifica-
tions supported in the strptime library func-
tion.
--time_format <time_for- Specifies the format string The default is hour:minute:second. Use the
matmask> for time values. time format specifications supported in the
strptime library function.
--v=[0|1|2|3 Specifies the verbosity of Provide a value for verbosity level. By de-
log messages. fault, verbosity is set to the minimum, which
is 0. This value is similar to a volume control.
At higher levels your log receives more mes-
sages and that log more frequently. This is
used for debugging. You should not change
this value unless instructed by ThoughtSpot
Support.
--skip_second_fraction Skips fractional seconds If supplied, the upserts logic may be affect-
when loading data. ed, especially if the date time being loaded
is a primary key, and the data has millisec-
ond granularity. Load the data twice, once
as a string with a primary key, and again
with second granularity date time. There is
no support to store fractional seconds in the
ThoughtSpot system.
The following flags are used when loading data from an input file:
--source_data_format Specifies the data file for- Optional. The default is csv.
[csv|delimited] mat.
-- trailing_field_separa- Specifies that the field sepa- Example row with trailing field separator:
tor rator appears after every a,b,c,The default is false.
field, including the last field
per row.
--null_value "<null_repre- Specifies how null values These values will be converted to NULL up-
sentation>" are represented in the input on loading.
file.
--boolean_representation Specifies the format in The default is T_F. You can also use this flag
[true_false | 1_0 | T_F | which boolean values are to specify other values. For example, if your
Y_N] represented in the input file. data used Y for true and NULL for false, you
could specify: --boolean_representa-
tion Y_NULL
--has_header_row Indicates that the input file If supplied, the first row of the file is ignored.
contains a header row. If not supplied, the first row of the file is
loaded as data.
--escape_character "<char- Specifies the escape char- If no value is specified, the default is “(dou-
acter>" acter used in the input file. ble quotes).
--use_bit_boolean_values Specifies how boolean val- If supplied, the input CSV file uses a bit for
= [true | false] ues are represented in the boolean values, i.e. the false value is repre-
input file. sented as 0x0 and true as 0x1. If omitted or
set to false, boolean values are assumed to
be T_F, unless you specify something else
using the flag --boolean_representa-
tion [true_false | 1_0 | T_F | Y_N] .
tscli to take snapshots (backups) of data, apply updates, stop and start the services, and view
information about the system. This reference defines each subcommand and what you can accomplish
with it.
The command returns 0 upon success and a non-zero exit code upon failure. Because the tscli
command is typically running a command on multiple codes, an error may be called at different points.
As much as possible, the command attempts to save errors to the stderr directory as configured on a
node.
The tscli command has several subcommands such as alert , backup , and so forth. You issue a
tscli [subcommand ]
Subcommands have their own additional options and actions such as tscli backup create or
tscli [subcommand] -h
tscli subcommands
alert subcommand
• tscli alert off Disables all alerts from the cluster in the cluster’s timezone.
Silences the alert with alert_name . For example, DISK_ERROR. Silenced alerts are still
backup subcommand
name out
• --mode {full,light,dataless}
modes.
• --base BASE
Based snapshot name for incremental backup. (Not Implemented yet) (default:
None)
• --storage_type {local,nas}
• --remote
backup-policy
• tscli backup-policy create Prompts an editor for you to edit the parameters of the
backup policy.
• tscli backup-policy delete name Deletes the backup policy with name .
• tscli backup-policy update * name * Prompts an editor for you to edit the policy
name .
callhome
• tscli callhome disable Turns off the periodic call home feature.
Enables the “call home” feature, which sends usage statistics to ThoughtSpot This feature is
enabled by default.
• --d D Dest folder where tar file will be created. (default: None)
• --since DAYS
Grab callhome data from this time window in the past. Should be a human
(default: None) Generates a tar file of the cluster metrics and writes it to the
specified directory where DAYS is how far back you’d like to generate the tar file
from in days. For example, 30 . If this parameter is not specified, the command
cluster
Creates a new cluster from the release file specified by * release * . This command is used
by ThoughtSpot Support when installing a new cluster, for example, tscli cluster create
2.0.4.tar.gz
• tscli cluster get-config Get current cluster network and time configuration. Prints
JSON configuration to stdout. If for some reason the system cannot be connected to all
• tscli cluster load Load state from given backup onto existing cluster
Restores a cluster using the backup in the specified directory backupdir . If you’re restoring
from a dataless backup, you must supply the release tarball for the corresponding software
release.
• tscli cluster set-config Set cluster network and time configuration. Takes JSON
• tscli cluster status Gives the status of the cluster, including release number, date last
• tscli cluster stop Pauses the cluster (but does not stop storage services).
command
• --nodes NODES Space separated IPs of nodes where you want to run the command.
(default: all )
• --dest_dir DEST_DIR Directory to save the files containing output from each nodes.
(default: None)
• --copyfirst COPYFIRST Copy the executable to required nodes first. (default: False )
dr-mirror
• tscli dr-mirror start Starts a mirror cluster which will continuously recover from a
primary cluster.
• tscli dr-mirror status Checks whether the current cluster is running in mirror mode.
etl
Informatica_user `
Changes the Informatica Cloud account password used by ThoughtSpot Data Connect.
ThoughtSpot.
Cloud.
• tscli etl download-agent Downloads the ThoughtSpot Data Connect agent to the
cluster.
MAX_WAIT ]
You should contact ThoughtSpot Support for assistance in setting this up. Required
parameters are:
None)
(default: None)
• --groupname GROUPNAME
For ThoughtSpot, this is 001ZFA . org_id shouldn’t include the prefix Org . For
• --pin_to PIN_TO specifies the IP address to pin to. If you specify an IP to pin
to, that node becomes sticky to the Informatica agent, and will always be used.
Defaults to the public IP address of the localhost where this command was run.
• tscli etl show-lw Shows the status of ThoughtSpot Data Connect. It also returns the
event
tscli event list [-h] [--include INCLUDE ] [--since SINCE ] [--from FROM ] [--to
• --include INCLUDE Options are all, config, notification. Default config. (default: config)
• --since SINCE Grab events from this time window in the past. Should be a human
readable duration string, e.g. 4h (4 hours), 30m (30 minutes), 1d (1 day). (default: None)
• --from FROM Begin timestamp, must be of the form: yyyymmdd-HH:MM (default: None)
• --detail Print events in detail format. This is not tabular. Default is a tabular summary.
(default: False)
string. Multiple strings to check for can be specified by separating them with | (event
returned if it matchesALL). Put single quotes around the param value to prevent undesired
• --detail_contains DETAIL_CONTAINS Details of the event will be checked for this string.
Multiple strings to check for can be specified by separating them with | (event returned if it
matches ALL). Put single quotes around the param value to prevent undesired glob expansion
(default: None)
check for can be specified by separating them with | (event returned if it matches ALL). Put
single quotes around the param value to prevent undesired glob expansion (default: None)
feature
tscli feature get-all-config Gets the configured features in a cluster. The command will return a
list of features, such as custom branding, Data Connect, and call home, and tell you whether they are
enabled or disabled.
fileserver
Configures the secure file server username and password for file upload/download and the
call home feature. You only need to issue this command once, to set up the connection to the
secure file server. You only need to reissue this command if the password changes. The
enter it.
PASSWORD ] release Downloads the specified release file and its checksum. Specify the
release by number, to the second decimal point (e.g. 3.1.0, 3.0.5, etc.). You may optionally
specify the --user and --password to bypass the credentials that were specified when
configuring the file server connection with tscli fileserver configure . Before using this
command for the first time, you need to set up the file server connection using tscli
fileserver configure .
Uploads the file specified to the directory specified on the secure file server. You may
optionally specify the --user and --password to bypass the credentials that were
specified when configuring the file server connection with tscli fileserver configure .
Before using this command for the first time, you need to set up the file server connection
and the command prompts you for it if you do not supply it.
None) The SERVER_DIR_PATH parameter specifies the directory to which you want
to upload the file. It is based on your customer name, and takes the form
/Shared/support/* customer_name * .
firewall
Closes given ports through firewall on all nodes. Takes a list of ports to close, comma
separated. Only closes ports which were previously opened using “open-ports”. Ignores ports
which were not previously opened with “open-ports” or were already closed.
Opens given ports through firewall on all nodes. Takes a list of ports to open, comma
separated. Ignores ports which are already open. Some essential ports are always kept open
hdfs
ldap
Adds an SSL certificate for LDAP. Use only if LDAP has been configured without SSL and you
wish to add it. Use * name * to supply an alias for the certificate you are installing.
Configures LDAP using an interactive script. You can see detailed instructions for setting up
logs
Extracts logs from the cluster. Does not include any logs that have been deleted due to log
rotation.
• --include INCLUDE
interpreted via find(1) . Other entries are ignored. Put single quotes around the
• --exclude EXCLUDE
Comma separated list of logs to exclude. Applies to the list selected by –include.
• --since SINCE
Grab logs from this time window in the past. Should be a human readable duration
• --out OUT Tarball path for dumping logs from each node (default: /tmp/
logs.tar.gz )
• --maxsize MAXSIZE Only fetch logs if size is smaller that this value. Can be
• --sizeonly Do not collect logs. Just report the size. (default: False)
• --nodes NODES Comma separated list of nodes from where to collect logs. Skip
Runs a Unix command on logs in the cluster matching the given constraints. Results are
reported as text dumped to standard out, the specified output file, or as tarballs dumped into
• --cmd CMD
CMDSTR via pipe. eg. tail -n100 | grep ERROR gets auto-
• --include INCLUDE
find(1) . Other entries are ignored. TIP: put single quotes around the param
• --exclude EXCLUDE
• --since SINCE
Grab logs from this time window in the past. Should be a human readable duration
• --outfile OUTFILE File path for printing all the results. By default printed to
• --outdir OUTDIR Directory path for dumping results with original dir structure
None)
flag if output file will be of same format as input file (default: None)
• --nodes NODES Comma separated list of nodes where to run command. Skip
map-tiles
• tscli map-tiles enable [-h] [--online] [--offline] [--tar TAR] [--md5 MD5]
Enables ThoughtSpot’s map tiles, which are used when constructing geomap charts. If you
don’t have Internet access, you must download the map tiles tar and md5 files. Then you
monitoring
configuration.
• --email EMAIL Comma separated list (no spaces) of email addresses where the
nas
• --mount_point MOUNT_POINT
Directory on all cluster nodes where the NFS filesystem should be mounted
(target). This directory does not need to already exist. If this directory already
exists, a new directory is not created and the existing directory is used for
None)
• --uid UID
UID that will own all files or directories on the mounted filesystem when the server
does not provide ownership information. See man mount.cifs for more details.
(default: 1001 )
• --gid GID
Gid that will own all files or directories on the mounted filesystem when the server
does not provide ownership information. See man mount.cifs for more details.
(default: 1001 )
• --mount_point MOUNT_POINT
Directory on all cluster nodes where the NFS filesystem should be mounted
(target). This directory does not need to already exist. If this directory already
exists, a new directory is not created and the existing directory is used for
(default: noexec ).
Unmounts all devices from the specified DIR (directory) location. This command returns an
error if nothing is currently mounted on this directory via tscli nas mount (default: None)
node
SECONDARY ]
reinstall-preflight )
sdd )
(default: all )
(default: sdd )
rpackage
• --timeout REPO Timeout waiting for the R Package to be installed (default: 60)
(default: None)
• --nodes NODES Space separated IPs of nodes where you want to run the
• --timeout REPO Timeout waiting for the R Package to be removed (default: 60)
(default: None)
• --nodes NODES Space separated IPs of nodes where you want to run the
• tscli rpackage list [-h] [--detailed] List all R packages installed on the cluster.
saml
• tscli saml configure [-h] Configures SAML. To see a list of prerequisites refer to
Configure SAML.
scheduled-pinboards
• tscli scheduled-pinboards disable [-h] Disable scheduled pinboards for this cluster.
Note: When you enable scheduled pinboards, you should also configure a whitelist of intended
smtp
mapping.
• tscli smtp set-mailfromname mailfromname Sets the name, an email address, from
• tscli smtp set-mailname mailname Sets the mailname, a domain, where email alerts
• tscli smtp set-relayhost [-h] [--force FORCE] relayhost Sets the Relay Host for
• --force FORCE Set even if relay host is not accessible. (default: False )
• tscli smtp show-mailfromname Shows the mailname, from which email alerts are sent, for
the cluster.
• tscli smtp show-mailname Shows the mailname, where email alerts are sent, for the
cluster.
• tscli smtp show-relayhost Shows the for SMTP (email) sent from the cluster. If there is
snapshot
Learn more about snapshots and backups see the Understand the backup strategies documentation.
name out
• name Name of snapshot to pull out as a backup. To list all snapshots, run tscli
snapshot ls .
• out Directory where backup will be written, must not already exist.
• --base BASE Based snapshot name for incremental backup. (Not Implemented
local )
Creates a new snapshot with the name and reason provided. This command does not
accept . (periods), but does accept - (dashes). The ttl parameters is the number of
days after which this snapshot will be automatically deleted. A value of -1 disables
automatic deletion.
name Restore cluster to an existing snapshot. This takes the following parameters:
(default: False )
• ttl Extends the manual snapshot ttl (time-to-live) value. Use a positive value
snapshot-policy
• --config CONFIG Text format of periodic backup policy config (default: None)
spot
cache_timeout CACHE_TIMEOUT ]
• --token TOKEN Slack authroization token for Spot bot. This is required. You receive this
required.
ssl
• tscli ssl add-cert [-h] key certificate Adds an SSL certificate, key pair.
• tscli ssl clear-min-tls-version [-h] Clears any customizations for the minimum TLS
version to support.
Disables SSL. Disabling SSL will stop users from seeing a security warning when accessing
• tscli ssl on [-h] If SSL is enabled and there is no certificate, users will see a security
• tscli ssl set-min-tls-version [-h] {1.0,1.1,1.2} Sets the minimum supported TLS
version. Sets the minimum SSL version to be supported by the ThoughtSpot application.
Please ensure that client browsers are enabled for this version or newer.
storage
Garbage collect unused storage. Before issuing this command, you must stop the cluster
using tscli cluster stop . After garbage collection has completed, you can restart the
cluster with tscli cluster start . The command frees space in these directories:
• /tmp
• /usr/local/scaligent/logs/
• /export/logs/orion
• /export/logs/oreo
• /export/logs/hadoop
• /export/logs/zookeeper
• cores
• --log_age LOG_AGE
Delete logs older than these many hours. Use a non-zero value ideally. A zero value
will cause all temporary files to be deleted, including say those which are just
temporarily closed while they are being passed from one component to the next.
(default: 4 )
• --force Forces deletion of all logs and temporary files regardless of age. This
• --localhost_only If used, only the logs on the localhost will be removed. If not
Checks the disk usage on the relevant mounts. Returns output similar to the Linux system
command df -h <directory> .
support
list_selectors] [--since SINCE] [--from FROM] [--to TO] [--out OUT] [--nodes
NODES]
either a “selector” or a glob for matching files. To see the list of valid selectors, run
this command with --list_selectors . You may also specify: “ all to get all
selectors and logs, and “basic” to get only the basic selectors. Selectors may also
be selectors meant for logs collect: all, orion, system, ts, or the name of a service.
Anything starting with / is assumed to be a glob pattern and interpreted via find(1).
Other entries are ignored. TIP: put single quotes around the param value to prevent
undesired glob expansion. Use “all” to collect all selectors and all logs (default:
all_but_logs)
the list selected by --include . Params are interpreted just like in --include .
Use the special keyword “logs” to exclude logs collection all together. (default:
None)
• --since SINCE Grab logs from this time window in the past. Should be a
human readable duration string, e.g. 4h (4 hours), 30m (30 minutes), 1d (1 day).
(default: None)
• --out OUT Tarball path for dumping the support bundle (default: /tmp/
support_bundle.tar.gz )
• --nodes NODES Comma separated list of nodes from where to collect logs. Skip
• tscli support rm-admin-email Removes the email address for contacting the customer
• tscli support rm-feedback-email Removes the email address for product feedback.
• tscli support rm-admin-phone Removes the phone number for contacting the customer
• tscli support rm-feedback-email Removes the email for sending feedback out of the
system. If you would like to set a blank email address, issue the command tscli support
• tscli support set-admin-email email Sets the email address for contacting the
customer administrator. If you would like to display a blank email address, issue the
• tscli support set-feedback-email email Sets the email address for sending
feedback. If you would like to display a blank email address, issue the command tscli
• tscli support set-admin-phone phone_number Sets the phone number for contacting
the customer administrator. Specify a phone number using any value (e.g. +1 800-508-7008
Ext. 1 ). If you would like to display a blank phone number, issue the command tscli
support set-admin-phone .
• tscli support set-remote [-h] [--addr ADDR ] [--user USER ] Configures the
cluster for remote support through SSH tunneling, where ADDR is the address of support,
• tscli support show-admin-email Shows the email address for customer administrator, if
set.
• tscli support show-feedback-email Shows the email address for product feedback, if
set.
• tscli support show-admin-phone Shows the phone number for customer administrator, if
set.
• tscli support show-remote Shows the status and configuration of remote support.
tokenauthentication
define data formats in specific contexts and, depending on the context, your choices in data formatting
differ. You must understand date and time when you load data in these contexts:
Data loading formats do not change how data is displayed in tables and charts.
The context where you can control date and time formats is data modeling. Data modeling controls how
When loading via the tsload command you must specify date and timestamp formats using the
format specifications defined in thestrptime library function. Data is imported based on the timezone of
For date data types, the default format is %Y%m%d which translates to yearmonthday For example,
Dec 30th, 2001 is represented as 20011230 . For time and datetime data types, the default is
These date and time formats are supported in a CSV file when uploading via the browser. You cannot
specify the date format; ThoughtSpot will pick the format that fits your data best:
• 1/30/2014
• 2014-01-30
• 2014-1-30
• 30-Jan-2014
• 2014-Jan-30
• 2014-01-30 10:32 AM
• 2014-01-30 14:52
• 2014-01-30 10:32:22
• 2014-01-30 10:32:22 AM
• 2014-01-30 10:32:22.0
• 2014-01-30 10:32:22.0 AM
• 2014-01-30 10:32:22.000
• 2014-01-30 10:32:22.000 AM
• 1/30/2014
• 30-Jan-14
• 30/1/2014 10:32 AM
• 30/1/2014 14:52
• 30/1/2014 10:32:22
• 30/1/2014 10:32:22 AM
• 30/1/2014 10:32:22.0
• 30/1/2014 10:32:22.0 AM
• 30/1/2014 10:32:22.000
• 30/1/2014 10:32:22.000 AM
• 30-Jan-14 10:32 AM
• 30-Jan-14 14:52
• 30-Jan-14 10:32:22
• 30-Jan-14 10:32:22 AM
• 30-Jan-14 10:32:22.0
• 30-Jan-14 10:32:22.0 AM
• 30-Jan-14 10:32:22.000
• 30-Jan-14 10:32:22.000 AM
• 14:52
• 10:32 AM
• 10:32:22
• 10:32:22 AM
• 10:32:22.0
• 10:32:22.000
• 10:32:22.0 AM
• 10:32:22.000 AM
Data that is loaded via ETL arrives through ODBC or JDBC connection. After you extract the data from
the source and before you load it into ThoughtSpot, you must transform any date or timestamp into a
valid format for ThoughtSpot. Once transformed, no explicit data masking is required. See the data
integration guide for more details of loading data via ODBC and JDBC.
A user with administrative rights can configure data modeling for data on one or all files. You can set
number, date, and currency display formats. These formats define how these value types display in
tables and charts. See the Admin Guide for more information about data modeling settings. The
mm Minutes 00 - 59
ss Seconds 00 - 59
a AM/PM indicator
Valid delimiters include most non-alphabet characters. This includes but is not limited to:
• \ (forward slash)
• / (backward slash)
• | (pipe symbol)
• : (colon)
• - (dash)
• _ (underscore)
• = (equal sign)
Examples of valid format masks you can produce for display are as follows:
• MM/dd/yyyy
• MMM
• DD/MM/yyyy
• MM/dd/yyyy HH:mm
• DD/MM/yyyy HH:mm
to “true” for a particular row and group combination, that group will be able to see that row. This
reference lists the various operators and functions you can use to create rules.
For information on how to use the row level security functions and operators, see About Rule-Based
Row Level Security. There is a special variable called ts_groups, which you can use when creating row
level security rules. It fetches a list of the groups that the currently logged in user belongs to. For each
row, f the expression in the rule evaluates to ‘true’ for any one of these groups, that row will be shown to
the user.
You can also see this list of operators and examples from within the Rule Builder by selecting Rule
Assistant.
Conversion functions
These functions can be used to convert data from one data type to another. Conversion to or from date
to_bool Returns the input as a boolean (true or false). to_bool (0) = false
to_bool (married)
Date functions
Mixed functions
These functions can be used with text and numeric data types.
Number functions
Operators
ifnull Returns the first value if it is not null, ifnull (cost, 'unknown')
otherwise returns the second.
Text functions
Variables
ts_groups Returns a list of all the groups the current logged ts_groups = 'east'
in user belongs to. For any row, if the expression
evaluates to true for any of the groups, the user
can see that row.
ts_username Returns the user with the matching neame. ts_username != 'mark'
columns by building formulas using the Formula Assistant. An individual formula is constructed from n
This reference lists the various operators and functions you can use to create formulas.
Operators
ifnull Returns the first value if it is not null, ifnull (cost, 'unknown')
otherwise returns the second.
Aggregate functions
min_if Returns the minimum value among columns min_if( (revenue <
that meet a criteria. 10) , customer region
)
sum Returns the sum of all the values of a col- sum (revenue)
umn.
unique count Returns the number of unique values of a unique count (cus-
column. tomer)
Conversion functions
These functions can be used to convert data from one data type to another. Conversion to or from date
to_bool Returns the input as a boolean (true or false). to_bool (0) = false
to_bool (married)
Date functions
Mixed functions
These functions can be used with text and numeric data types.
Number functions
Text functions
Informational alerts
TASK_TERMINATED
Type: INFO
DISK_ERROR
Type: INFO
ZK_AVG_LATENCY
Type: INFO
ZK_MAX_LATENCY
Type: INFO
ZK_MIN_LATENCY
Type: INFO
ZK_OUTSTANDING_REQUESTS
Type: INFO
ZK_NUM_WATCHERS
Type: INFO
MASTER_ELECTION
Type: INFO
PERIODIC_BACKUP
Type: INFO
PERIODIC_SNAPSHOT
Type: INFO
HDFS_CORRUPTION
Type: INFO
APPLICATION_INVALID_STATE
Type: INFO
UPDATE_START
Type: INFO
UPDATE_END
Type: INFO
Errors
TIMELY_JOB_RUN_ERROR
Type: ERROR
TIMELY_ERROR
Type: ERROR
Warnings
DISK_SPACE
Msg: Machine {{.Machine}} has less than {{.Perc}}% disk space free
Type: WARNING
Raised when a disk is low on available disk space. Valid only in the 3.2 version of ThoughtSpot.
ROOT_DISK_SPACE
Msg: Machine {{.Machine}} has less than {{.Perc}}% disk space free on root partition
Type: WARNING
BOOT_DISK_SPACE
Msg: Machine {{.Machine}} has less than {{.Perc}}% disk space free on boot partition
Type: WARNING
UPDATE_DISK_SPACE
Msg: Machine {{.Machine}} has less than {{.Perc}}% disk space free on update
partition
Type: WARNING
EXPORT_DISK_SPACE
Msg: Machine {{.Machine}} has less than {{.Perc}}% disk space free on export
partition
Type: WARNING
HDFS_NAMENODE_DISK_SPACE
Msg: Machine {{.Machine}} has less than {{.Perc}}% disk space free on HDFS namenode
drive
Type: WARNING
Raised when a machine is low on available disk space on HDFS namenode drive.
MEMORY
Type: WARNING
OS_USERS
Type: WARNING
OS_PROCS
Type: WARNING
SSH
Type: WARNING
DISK_ERROR_EXTERNAL
Type: WARNING
ZK_FD_COUNT
Type: WARNING
ZK_EPHEMERAL_COUNT
Type: WARNING
HOST_DOWN
Type: WARNING
TASK_UNREACHABLE
Type: WARNING
TASK_NOT_RUNNING
Type: WARNING
Raised when a service task is not running on any machine in the cluster.
Critical alerts
TASK_FLAPPING
{{._earliest_duration_str}}
Type: CRITICAL
This alert is raised when a task is crashing repeatedly. The service is evaluted across the whole cluster.
So, if a service crashes 5 times in a day across all nodes in the cluster, this alert is generated.
OREO_TERMINATED
Type: CRITICAL
This alert is raised when the Oreo daemon on a machine terminates due to an error. This typically
HDFS_DISK_SPACE
Type: CRITICAL
ZK_INACCESSIBLE
Type: CRITICAL
PERIODIC_BACKUP_FLAPPING
{{._earliest_duration_str}}
Type: CRITICAL
PERIODIC_SNAPSHOT_FLAPPING
{{._earliest_duration_str}}
Type: CRITICAL
APPLICATION_INVALID_STATE_EXTERNAL
Type: CRITICAL
or other reports.
This section lists error codes that can appear in ThoughtSpot, with summary information and actions to
take. Error codes and messages are shown in ThoughtSpot when something goes wrong. These
When you see an error code, you will also see a message with a brief summary of what has happened. If
there is a remediation action you can take, it will be listed in this references. If there is no action listed,
Tip: Only the base code number is listed for each error. So keep this in mind when searching
through these codes. For example, error code TS-00125 is simply listed as 125.
TS-00102 ERROR Failure adding {1} to {1} could not be Please try again after
{2} due to corrup- added to {2} as the removing the invalid
tion pinboard has one or visualization(s) from
more invalid visual- {2} \# {1} – name of vi-
izations sualization \# {2} –
name/link to pinboard
TS-00105 ERROR Failure deleting vi- Visualization could Please try again after
sual from {1} due to not be deleted from removing the invalid
corruption {1} as the pinboard visualization(s) from
has one or more in- the pinboard
valid visualizations.
1 – name/link to pin-
board
TS-00179 ERROR Rule could not be We're not sure what None
saved happened. Please
email the trace file
to {adminEmail}.
TS-00181 ERROR Rule could not be We're not sure what None
deleted happened. Please
email the trace file
to {adminEmail}.
TS-00183 ERROR Item could not be We're not sure what None
deleted. happened. Please
email the trace file
to {adminEmail}.
TS-00500 ERROR Failed to fetch Failed to fetch leaf level data. None
leaf level data
TS-00503 ERROR Failed to fetch Failed to fetch data for visualizations. None
visualizations
data
TS-00512 ERROR The pinboard Uh oh. We’re not sure what happened. Please None
data could not click ‘Report Problem’ to email a report to
be exported to your administrator, {adminEmail}.
pdf.
TS-00700 ERROR Failure fetching table depen- Failed to fetch dependents for the None
dents table.
TS-00701 ERROR Failure fetching column de- Failed to fetch dependents for the None
pendents column.
TS-00702 ERROR Failure fetching incomplete Failed to fetch incomplete items. None
items
TS-00802 ERROR Failure searching from Mem- Failed to search from Mem- None
Cache Cache.
TS-00804 ERROR Failure setting LogLevel Failed to set Log Level. None
TS-00805 ERROR Failure getting debug info Failed to get debug info. None
TS-00900 ERROR Failure fetching table permis- Failed to fetch table permis- None
sions sions.
TS-00901 ERROR Failure fetching answer permis- Failed to fetch answer permis- None
sions sions.
TS-00902 ERROR Failure fetching pinboard per- Failed to fetch pinboard per- None
missions missions.
TS-00903 ERROR Failure getting metadata per- Failed to get metadata permis- None
missions sions.
TS-01006 ERROR Failed to fetch data rows. Failed to fetch data rows. None
TS-01007 ERROR Failed to delete files. Failed to fetch data rows. None
TS-01008 ERROR Failed to abort create table. Failed to abort create table. None
TS-01010 ERROR Failed to fetch table models. Failed to fetch table models. None
TS-01011 ERROR Failed to fetch sample values. Failed to fetch sample values. None
TS-01100 INFO The list of jobs. None Please click ‘Report Problem’ to email a re-
port to your administrator.
TS-01111 ERROR The job could not None Please click ‘Report Problem’ to email a re-
be created. port to your administrator.
TS-01113 ERROR The job could not None Please click ‘Report Problem’ to email a re-
be updated. port to your administrator.
TS-01115 ERROR The job could not None Please click ‘Report Problem’ to email a re-
be deleted. port to your administrator.
TS-01117 ERROR The job could not None Please click ‘Report Problem’ to email a re-
be paused. port to your administrator.
TS-01119 ERROR The job could not None Please click ‘Report Problem’ to email a re-
be resumed. port to your administrator.
TS-01200 ERROR Failed to fetch users list Failed to fetch users list None
TS-01201 ERROR Failed to fetch groups list Failed to fetch groups list None
TS-01202 ERROR Failed to fetch users and Failed to fetch users and None
groups list groups list
TS-01221 ERROR Failed to fetch profile pic Failed to fetch profile pic None
TS-01223 ERROR Failed to upload profile pic Failed to upload profile pic None
TS-01224 ERROR Successfully assigned groups Failed to assign user to group None
to group
TS-01400 ERROR Failed to fetch session Failed to fetch session info None
info
TS-01401 ERROR Failed to login Uh oh. We’re not sure what happened. None
Please email the trace file to {adminE-
mail}.
TS-01403 ERROR Failed to save client Failed to save client state None
state
TS-01404 ERROR Failed to fetch login Failed to fetch login config None
config
TS-01405 ERROR Failed to fetch slack Failed to fetch slack config None
config
TS-01407 ERROR Failed to fetch health Failed to fetch health portal token None
portal token
TS-01408 ERROR The health portal release Uh oh. We’re not sure what happened. None
name could not be re- Please email the trace file to {adminE-
trieved mail}.
TS-01600 ERROR Failed to fetch data Failed to fetch data source types None
source types
TS-01601 ERROR Failed to fetch data Failed to fetch data source sample None
source sample values values
TS-01602 ERROR Failed to delete data Failed to delete data source None
source
TS-01607 ERROR Failed to get creation Failed to get creation DDL None
DDL
TS-01608 ERROR Failed to load from data Failed to load from data source None
source
TS-01609 ERROR Failed to create connec- Failed to create connection to data None
tion to data source source
TS-01610 ERROR Failed to create data Failed to create data source None
source
TS-01611 ERROR Failed to connect to data Failed to connect to data source None
source
TS-01612 ERROR Failed to get data source Failed to get data source connection None
connection field info field info
TS-01613 ERROR Failed to get connection Failed to get connection list for data None
list for data source source
TS-01614 ERROR Failed to get connection Failed to get connection attributes for None
attributes for data source data source
TS-01615 ERROR Failed to get connections Failed to get connections to data None
to data source source
TS-01616 ERROR Failed to fetch data Failed to fetch data source config None
source config
TS-01621 ERROR Failed to execute sql. Please check the failing command, None
executed {1} statements successfully.
TS-01623 INFO Selected tables were Selected tables were queued for None
queued for loading. loading.
TS-01624 ERROR DataType conversion er- No mapping found for source None
ror. datatype to ThoughtSpot datatype.
TS-01800 WARNING Failed to fetch cluster information from search None None
service.
TS-01801 WARNING Failed to fetch table detail information from None None
search service.
TS-01802 WARNING Failed to fetch cluster information from data- None None
base service.
TS-01803 WARNING Failed to fetch table detail information from None None
databse service.
TS-01804 WARNING Failed to fetch cluster information from cluster None None
management service.
TS-01805 WARNING Failed to fetch detail information from cluster None None
management service.
TS-01806 WARNING Failed to fetch log from cluster management None None
service.
TS-01807 WARNING Failed to fetch snapshot list from cluster man- None None
agement service.
TS-01808 WARNING Failed to fetch cluster information from alert None None
management service.
TS-01809 WARNING Failed to fetch cluster information from event None None
service.
TS-01810 WARNING Failed to fetch alerts information from alert None None
management service.
TS-01811 WARNING Failed to fetch events information from alert None None
management service.
TS-01813 WARNING Sorry! Unable to submit the feedback at this None None
moment!
TS-01815 ERROR Sorry! Unable to export objects at this mo- What hap- None
ment! pened? {1}.
TS-01817 ERROR Sorry! Unable to import objects at this mo- What hap- None
ment! pened? {1}.
TS-09000 ERROR The data you are Some objects depend on the data delete the de-
trying to delete you are trying to delete pendencies
has some depen- before delet-
dencies ing this data.
TS-09001 ERROR Uh oh. We’re not Please email the trace file to {ad- None
sure what hap- minEmail}.
pened.
TS-09003 ERROR Uh oh. We’re not Please email the trace file to {ad- None
sure what hap- minEmail}.
pened.
TS-09005 ERROR Uh oh. We’re hav- Please email the trace file to {ad- None
ing trouble getting minEmail}.
data for this re-
quest.
TS-09006 ERROR Uh oh. We’re hav- Please email the trace file to {ad- None
ing trouble getting minEmail}.
data for this re-
quest.
TS-09007 ERROR Uh oh. We’re hav- Please email the trace file to {ad- None
ing trouble getting minEmail}.
data for this re-
quest.
TS-09008 ERROR Something went Uh oh. We’re not sure what hap- None
wrong with your pened. Please email the trace file
search to {adminEmail}.
TS-09009 ERROR The calculation Please email the trace file to {ad- None
engine has timed minEmail}.
out. Please try
again.
TS-09010 ERROR Cannot open Ob- Object cannot be opened due to None
ject errors in some of its dependencies
TS-0Blink
Generated
Errors
(9500 -
9599)
TS-09504 ERROR Cannot open {1} {1} cannot be opened due to er- None
rors in the following dependencies
1 - Type of the object Table/An-
swer/Pinboard etc.
TS-09506 ERROR Object is not pre- {1} is not present in the system 1 - None
sent in the system Type of the object Table/Answer/
Pinboard etc.
TS-10000 ERROR A system er- Uh oh. We’re not sure what happened. None
ror has oc- Please contact your administrator.
curred
TS-10001 ERROR Connection The metadata store is not reachable. Please contact
failed your administra-
tor
TS-10002 ERROR The input is Input from the client to the server is in- Please contact
invalid valid. your administra-
tor
TS-10003 ERROR Unfortunately, You are not authorized to perform {1}. Please request
you can’t do # {1} – action user is not authorized for access from
that your administra-
tor
TS-10004 ERROR The user User {0} is not authorized to perform Please request
could not be {1}. # {0} – name of the user # {1} – ac- access from
authorized tion user is not authorized for your administra-
tor
TS-10005 ERROR The base ob- An underlying object referenced by this Please contact
ject is miss- object is missing in store. your administra-
ing tor
TS-10007 ERROR There’s in- Invalid parameter values: {0}. Please contact
valid parame- your administra-
ter(s) tor
TS-10008 ERROR The user can- User {0} not found in store. # {0} – Please contact
not be found name of the user your administra-
tor
TS-10009 ERROR Cannot add This group already belongs to the None
group group you are trying to add it to.
TS-11006 ERROR Query execution failed Error in query execution to Falcon. None
TS-11007 ERROR Answer data generation Error in Answer data generation for None
failed Sage input.
TS-11009 ERROR Data generation failed Error in data generation in Callosum. None
TS-12701 ERROR Invalid input. The definition of the job is in- None
valid.
TS-12712 ERROR There are too many recipients. The max number of recipients None
is 1000.
TS-13003 ERROR The object can- Object with Id: {0} of None
not be found in type: {1} not found. #
store {0} – identity of the ob-
ject # {1} – type of ob-
ject
TS-30000 ERROR Table is not ready (data loading in progress). None None
Users with administrative privileges can see this displayed on the Admin > System Health > Overview
page.
It could be the index has not built with the latest data or something is causing the column to be dropped.
• View the table columns and check the INDEX TYPE value. If it is set to DONT_INDEX , change
it.
To learn more about modeling data see modeling data in this documentation.
If you are an administrator, you can use the Admin > System Health > Overview page to see the
number of tables currently being indexed. You can also review the
If you have a date field in my set of data and want to return the most recent set of data based on specific
date. To do this:
2. In the search bar, filter your dates by this formula for example: