Типы данных DataLens

DataLens работает с различными источниками данных, в которых типы данных полей могут отличаться.

Для более эффективной работы с данными, DataLens конвертирует типы данных полей источника в собственные типы.
Это оптимизирует работу с данными. Подробнее в разделе Таблица соответствий типов данных.

Вы можете изменять тип данных у полей в интерфейсе датасета и в визарде.

Геоточка

Точка координат, которая состоит из значений широты и долготы. В DataLens задается с помощью функции GEOPOINT.

Функция принимает на вход типы данных Строка, Геоточка, или два значения с типом Дробное число или Строка.
Если на вход подается одна строка, в ней должен содержаться список из двух чисел в JSON-синтаксисе.

Если в источнике данные записаны в формате следующей строки "[55.75222,37.61556]", вы можете изменить тип данных поля в интерфейсе датасета и в визарде без использования формулы.

Примечание

Вы можете воспользоваться готовыми наборами геоданных, подготовленных в формате DataLens от нашего партнера, компании Геоинтеллект.

В архиве собраны данные:

  • страны мира (полигоны и точки);
  • регионы РФ (полигоны и точки);
  • города РФ (точки);
  • районы городов-миллионников (полигоны).

Пример записи

GEOPOINT("[55.7912,37.6872]")GEOPOINT("[55.8538,37.6312]")

Геополигон

Несколько точек координат, которые описывают полигон на карте. В DataLens задается с помощью функции GEOPOLYGON.
Для заливки полигона используется алгоритм Even-Odd. Это позволяет создавать полигоны с вырезами.

Функция принимает на вход строку вида "[[[v1,v1], [v2,v2]], ..., [[vN-1,vN-1], [vN,vN]]]". Если в источнике данные записаны в таком формате, вы можете изменить тип данных поля в интерфейсе датасета и в визарде без использования формулы.

Примечание

Вы можете воспользоваться готовыми наборами геоданных, подготовленных в формате DataLens от нашего партнера, компании Геоинтеллект.

В архиве собраны данные:

  • страны мира (полигоны и точки);
  • регионы РФ (полигоны и точки);
  • города РФ (точки);
  • районы городов-миллионников (полигоны).

Пример записи

/* Полигон без выреза */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]]]")/* Полигоны с вырезом */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]]]")

Дата

Дата без указанного времени.

При использовании в формулах необходимо задавать дату с помощью знака решетки #. Например DATETRUNC(#2018-07-12#, "year", 5).

Вы можете привести исходный тип данных в тип Дата с помощью функций DATE и DATE_PARSE.

Пример записи

#2018-01-18##2015-01-01#DATETRUNC(#2018-07-12#, "year", 5)DATEADD(#2018-01-12#, "day", 6)

Дата и время

Дата с указанным временем (без приведения значения к UTC).

При использовании в формулах необходимо задавать дату и время с помощью удвоенного знака решетки ##. Например DATEADD(##2018-01-12 01:02:03##, "second", 6).

Вы можете привести исходный тип данных в тип Дата и время с помощью функций DATETIME и DATETIME_PARSE.

Пример записи

##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)

Дробное число

Вещественное число. В качестве разделителя используется символ точки.

Вы можете привести исходный тип данных в тип Дробное число с помощью функции FLOAT.

Важно

При конвертации типа decimal в Дробное число возможна потеря точности.

Пример записи

1.471130.62024FLOAT("34.567")

Логический

Логический тип, который принимает только одно из двух значений — TRUE или FALSE.

Вы можете привести исходный тип данных в тип Логический с помощью функции BOOL.

Пример записи

FALSE

Строка

Строка с текстом. Задается с помощью символов одиночных или двойных кавычек.
В случае использования одного вида кавычек, второй вид можно свободно использовать в этой строке без экранирования.
Например, 'Парные кавычки "пример" и одна " кавычка.'

В строках вы можете использовать следующие символы:

  • \n - перенос строки (LF);
  • \r - возврат каретки (CR);
  • \t - табуляция;
  • \" - двойная кавычка;
  • \' - одинарная кавычка;
  • \\ - обратная косая черта.

Вы можете привести исходный тип данных в тип Строка с помощью функции STR.

Пример записи

"Строка"'Строка с "подстрокой"'

Целое число

Число, которое не содержит дробной части.

Вы можете привести исходный тип данных в тип Целое число с помощью функции INT.

Пример записи

42157

Массив

Структура, которая состоит из последовательности элементов одного типа.

DataLens поддерживает работу со столбцами одномерных массивов в БД ClickHouse и PostgreSQL. Элементы массива могут быть следующих типов:

  • Целое число
  • Дробное число
  • Строка

Важно

Определить массив внутри DataLens нельзя.

Пример записи

[1, 2, 3][1.1, 1.2, 1.3]["Cheese", "Bread"]

Дерево строк

В DataLens можно создавать древовидные иерархии. Для этого используется тип поля Дерево строк. Данные хранятся в формате массива с полным путем для каждого узла. Последовательность значений в массиве определяет порядок раскрытия дерева.

Примечание

Дерево можно использовать только в чарте типа Таблица.

Создание дерева

Чтобы создать дерево, добавьте вычисляемое поле на уровне датасета или чарта через формулу TREE(ARRAY([lev_1],[lev_2],[lev_3],[lev_n])), где [lev_1],[lev_2],[lev_3], [lev_n] — поля датасета, определяющие иерархию дерева.

Пример создания дерева для БД-источника, не содержащего массив данных
  1. Подготовьте данные в источнике:

    1. Создайте таблицу со столбцами, которые содержат значения иерархии.

      Пример создания таблицы в PostgreSQL
      CREATE TABLE table_without_tree (   id serial primary key,   country text,   region text,   city text);
    2. Добавьте в таблицу данные с полным путем для каждого узла дерева.

      Пример добавления данных в 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');
  2. В датасете создайте:

    • Вычисляемое поле с типом Массив строк, описывающее дерево. Например, поле position с формулой ARRAY([country], [region], [city]).

    • Вычисляемое поле с типом Дерево строк. Например, поле hierarchy с формулой TREE([position]), где position — поле с типом Массив строк, описывающее дерево.

      Совет

      Создание массива и дерева строк можно объединить в одном поле с формулой TREE(ARRAY([country], [region], [city])).

Пример создания дерева для БД-источника, содержащего массив данных
  1. Подготовьте данные в источнике:

    1. Создайте таблицу, содержащую массив строк.

      Пример создания таблицы в PostgreSQL
      CREATE TABLE table_with_tree (  id serial primary key,  position text[]);
    2. Добавьте в таблицу данные в виде массива с полным путем для каждого узла дерева.

      Пример добавления данных в 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"}');
  2. В датасете создайте вычисляемое поле с типом Дерево строк. Например, поле hierarchy с формулой TREE([position]), где position — поле с типом Массив строк, описывающее дерево.

Использование дерева в чарте

Подготовленные в источнике данные можно использовать для создания дерева в чарте Таблица:

  1. Создайте чарт Таблица.

  2. Перетащите в секцию Столбцы измерение с типом Дерево строк. В области визуализации отобразится древовидная иерархия. Используйте значок + или -, чтобы раскрыть или свернуть дерево.

    Примечание

    Не используйте в чарте другие измерения, кроме дерева.

  3. Добавьте в секцию Столбцы необходимые показатели.

    image

Ограничения

В текущей версии древовидная иерархия имеет следующие ограничения:

  • Одно дерево/иерархия на чарт.
  • В таблице с деревьями недоступно использование опции Пагинация и строки Итоги.
  • Состояние раскрытия дерева не запоминается.
  • В селекторах не поддерживается использование дерева.
  • В источнике необходимо хранить промежуточные узлы дерева, даже те, по которым нет данных.