Технические лайфхаки
Сбор данных

Как изменить тип поля в AW BI: пошаговое руководство

Любой специалист по аналитике данных рано или поздно сталкивается с одной и той же ситуацией: данные есть, но типы полей в источнике вызывают лёгкое профессиональное раздражение. Дата хранится как строка, числа как текст, а иногда наоборот.

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

Хорошая новость: в AW BI есть несколько способов привести типы данных в порядок. Причём сделать это можно на разных этапах: от уровня источника до уровня модели.

Разберём основные варианты на практическом примере.

В качестве источника данных будем использовать базу PostgreSQL AW_SampleDB. В таблице видно, что поля date_create и date_modify имеют тип varchar, хотя по смыслу это даты. Исправим эту небольшую архитектурную несправедливость.

Преобразование через SQL-запрос к источнику

Самый прямолинейный и часто самый правильный способ: выполнить преобразование прямо в SQL-запросе к источнику данных.

Если поле date_create хранится как строка (VARCHAR), его можно привести к типу DATE с помощью стандартной функции TO_DATE.
Пример запроса:
SELECT

id,

state_region_code,

position_name,

TO_DATE(date_create, 'YYYY-MM-DD') AS date_create_date

FROM public.cv;
Что здесь происходит:
  • поле date_create преобразуется из строки в дату в формате YYYY-MM-DD;
  • результат сразу получает корректный тип;
  • в модель AW BI данные попадают уже в нужном формате.

Такой подход хорош тем, что преобразование происходит на стороне базы данных, а значит модель остаётся проще и чище.

Важно помнить: при написании запроса используется SQL-диалект подключённой базы данных.

Преобразование через ETL-блок в «Моделях»

Иногда менять SQL на уровне источника неудобно или невозможно. В этом случае можно выполнить преобразование внутри модели AW BI.
Для этого используется ETL-блок «SQL-блок».

Как это работает:
  1. В модели добавляем ETL-блок SQL;
  2. Перетаскиваем в него источник данных;
  3. Пишем SQL-запрос.

При выполнении такого блока используется Spark SQL, поэтому доступны все его функции.
Пример: если нужно преобразовать поле date_modify, представленное как строка (VARCHAR), в тип DATE, это можно сделать с помощью следующего SQL-блока в модели, попутно захватив нужные нам поля:
SELECT

id,

state_region_code,

position_name,

DATE(date_modify) AS date_modify

FROM child;
В результате строковое поле преобразуется в дату уже на этапе обработки модели.

Кстати, этот способ отлично работает не только с базами данных, но и с файловыми источниками.
Пример: у вас несколько одинаковых по структуре таблиц в документах, вы объединяете их блоком UNION и пишите к ним SQL-запрос, который преобразует сразу везде тип поля:
SELECT id, state_region_code, position_name, DATE(date_create) AS create_date

FROM junion
В итоге тип поля корректируется сразу для всех объединённых таблиц.

Изменение типа через параметры источника

Если источник данных — файл, есть ещё более простой вариант: изменить тип поля прямо на этапе загрузки.

В настройках источника можно использовать параметр «Тип», который позволяет задать нужный формат поля до того, как данные попадут в модель.

Например:
  • поле было распознано как числовое;
  • мы меняем тип на строковый.
Это удобно, когда структура файла известна заранее и не требует дополнительной обработки.

Использование вычисляемого поля

Ещё один способ: создать вычисляемое поле в модели.

Фактически мы просто создаём новое поле с нужным преобразованием, используя функции Spark SQL.
Пример для поля date_create:
DATE (date_create)

После этого:
  • новое поле будет иметь корректный тип DATE;
  • исходное поле можно скрыть;
  • в модели и дашбордах будет использоваться уже правильный тип данных.
Этот подход часто применяют, когда нужно быстро исправить тип без изменения источника данных.
В AW BI изменить тип поля можно несколькими способами. Потому что в реальных проектах данные редко бывают идеальными.

В зависимости от задачи преобразование можно выполнить:
  • на уровне SQL-запроса к источнику;
  • через ETL-блоки в модели;
  • через параметры загрузки файлового источника;
  • с помощью вычисляемого поля.

Проще говоря, если данные пришли «немного не в том виде» — это не проблема.
На практике данные редко приходят в идеальном виде, поэтому перед использованием в аналитике их почти всегда приходится приводить к корректной структуре и типам.