Data types DataLens
DataLens uses multiple data sources whose fields may take different data types.
To streamline the data operations, DataLens converts the source data types to its own ones.
This optimizes data operations. For more information, see Data type mapping table.
You can change the field data type both in the dataset interface and in the wizard.
Geopoint
A geopoint is a coordinate point defined by latitude and longitude. In DataLens, you can set it using the GEOPOINT function.
At input, the function accepts the String
and Geopoint
data types, or two values of the Fractional number
or String
type.
If a single string is input, it must contain a list of two numbers in JSON format.
If the source data comes as a string in [55.75222,37.61556]
format, you can use the dataset interface or wizard to change the field data type without any formula.
Note
You can use ready-made geodata sets in DataLens format from Geointellect, our partner.
The archive contains the following data:
- Countries (polygons and points).
- Russian regions (polygons and points).
- Russian cities (points).
- Districts of million-plus cities (polygons).
Examples
GEOPOINT("[55.7912,37.6872]")
GEOPOINT("55.7912","37.6872")
GEOPOINT(55.7912, 37.6872)
Geopolygon
These are multiple coordinate points defining the polygon on the map. In DataLens, you create a geopolygon using the GEOPOLYGON function.
To fill in the polygon, DataLens uses the Even-Odd algorithm. This way you can create polygons with holes.
At input, the function accepts strings in [[[v1,v1], [v2,v2]], ..., [[vN-1,vN-1], [vN,vN]]]
format. If the source data is in this format, you can use the dataset interface or wizard to change the field data type without any formula.
Note
You can use ready-made geodata sets in DataLens format from Geointellect, our partner.
The archive contains the following data:
- Countries (polygons and points).
- Russian regions (polygons and points).
- Russian cities (points).
- Districts of million-plus cities (polygons).
Example notation
/* Polygon without a hole */
GEOPOLYGON("[[[55.79421,37.65046],[55.79594,37.6513],[55.79642,37.65133],[55.7969, 37.65114],[55.79783, 37.65098],[55.78871,37.75101]]]")
/* Polygons with a hole */
GEOPOLYGON("[[[55.75,37.52],[55.75,37.68],[55.65,37.60]],[[55.79,37.60],[55.76,37.57],[55.76,37.63]]]")
GEOPOLYGON("[[[55.75,37.50],[55.80,37.60],[55.75,37.70],[55.70,37.70],[55.70,37.50]],[[55.75,37.52],[55.75,37.68],[55.65,37.60]],[[55.79,37.60],[55.76,37.57],[55.76,37.63]]]")
Date
This means a date without specified time.
When using a date in formulas, make sure to put a #
(hash) before and after it, e.g., DATETRUNC(#2018-07-12#, "year", 5)
.
You can convert the source data type to Date
using the DATE and DATE_PARSE functions.
Example notation
#2018-01-18#
#2015-01-01#
DATETRUNC(#2018-07-12#, "year", 5)
DATEADD(#2018-01-12#, "day", 6)
Date and time
This type means a date with a specified time (the value is not converted to UTC).
Note
Field selectors with this type are always in line with the time zone of the data source regardless of the field time zone.
When using date and time in formulas, make sure to put ##
(double hash) before and after the value, e.g., DATEADD(#2018-01-12 01:02:03#, "second", 6)
.
You can convert the source data type to Date and time
using the DATETIME and DATETIME_PARSE functions.
Example notation
##2018-01-12 01:08:03##
##2018-05-01T##
DATEADD(##2018-01-12 01:02:03##, "second", 6)
DATETRUNC(##2018-07-12 11:07:13##, "month", 4)
Floating-point number
This is a decimal number, with a period as a separator.
You can convert the source data type to Floating-point number
using the FLOAT function.
Warning
When you convert the decimal
type to Floating-point number
, you may lose precision.
Example notation
1.47113
0.62024
FLOAT("34.567")
Boolean
The boolean type can take one of two possible values: TRUE
or FALSE
.
You can convert the source data type to Boolean
using the BOOL function.
Example notation
FALSE
String
This is a string containing text, enclosed in single or double quotes.
If you enclose your string in one type of quotes, you can use the second quote type inside the string without escaping,
e.g., 'Double quoted "example" and one " double quote.'
You can use the following characters inside strings:
\n
: Line feed (LF)\r
: Carriage return (CR)\t
: Tab\"
: Double quote\'
: Single quote\\
: Backslash
You can convert the source data type to String
by using the STR function.
Example notation
"String"
'String with a "substring"'
Integer
This is a number without any fractional part.
You can convert the source data type to Integer
by using the INT function.
Example notation
42
157
Array
An array is a structure made up of a series of elements of the same type.
DataLens supports processing columns in one-dimensional arrays for ClickHouse® and PostgreSQL. Array elements can have the following types:
Integer
Floating-point number
String
You can define an array in DataLens using the ARRAY function.
Example notation
[1, 2, 3]
[1.1, 1.2, 1.3]
["Cheese", "Bread"]
Tree of strings
DataLens allows you to create tree hierarchies. To do this, use the Tree of strings field type. The data is stored as an array with a full path for each node. The sequence of array values determines the order the tree is expanded.
Note
A tree can only be used in a Table chart.
Creating a tree
To create a tree, add a calculated field at the dataset or chart level using the following formula: TREE(ARRAY([lev_1],[lev_2],[lev_3],[lev_n]))
, where [lev_1]
,[lev_2]
,[lev_3]
, and [lev_n]
are dataset fields that determine the tree hierarchy.
Example of creating a tree for a source DB that contains no data array
-
Prepare data in the source:
-
Create a table with columns containing hierarchy values.
Example of creating a table in PostgreSQL
CREATE TABLE table_without_tree ( id serial primary key, country text, region text, city text );
-
Add data with a full path for each tree node to the table.
Example of adding data to PostgreSQL
INSERT INTO table_without_tree (country, region, city) VALUES('Russia', 'Altay', 'Barnaul'); INSERT INTO table_without_tree (country, region, city) VALUES('Russia', 'Altay', 'Biysk'); INSERT INTO table_without_tree (country, region, city) VALUES('Russia', 'Altay', 'Aleisk');
-
-
In a dataset, create:
-
Array of strings calculable field that describes the tree, e.g., the
position
field with theARRAY([country], [region], [city])
formula. -
Tree of strings calculated field, e.g., the
hierarchy
field with theTREE([position])
formula, whereposition
is a field of the Tree of strings type describing the tree.Tip
You can create an array and tree of strings in one field with the
TREE(ARRAY([country], [region], [city]))
formula.
-
Example of creating a tree for a source DB that contains an array of data
-
Prepare data in the source:
-
Create a table with an array of strings.
Example of creating a table in PostgreSQL
CREATE TABLE table_with_tree ( id serial primary key, position text[] );
-
Add data as an array with a full path for each tree node to the table.
Example of adding data to PostgreSQL
INSERT INTO table_with_tree (position) VALUES('{"Russia","Altay","Barnaul"}'); INSERT INTO table_with_tree (position) VALUES('{"Russia","Altay","Biysk"}'); INSERT INTO table_with_tree (position) VALUES('{"Russia","Altay","Aleisk"}');
-
-
In a dataset, create a Tree of strings calculable field, e.g., the
hierarchy
field with theTREE([position])
formula, whereposition
is a field of the Tree of strings type describing the tree.
Using trees in charts
You can use the prepared source data to create a tree in a Table chart:
-
Create a Table chart.
-
Drag a dimension with the Tree of strings type to the Columns section. You will see a tree hierarchy in the visualization area. Expand or collapse the tree using + or -, respectively.
Note
You can only use tree dimensions in the chart.
-
Add the required measures to the Columns section.
Limitations
Currently, tree hierarchies have the following limitations:
- You can use one tree or hierarchy per chart.
- You cannot use the Pagination option and Total row in a tree table.
- The tree expansion state is not remembered.
- Selectors do not support trees.
- The source should store intermediate tree nodes, even those with no data available.
ClickHouse® is a registered trademark of ClickHouse, Inc.