Ограничения SQL Backend

Режим SQL Backend имеет ряд ограничений по сравнению с In-memory:

  1. Не поддерживаются операции редактирования строк в таблицах. Возможно только чтение данных. При получении подобного запроса строка будет добавлена в таблицу на ViQube(In-memory) и не будет видна при включенном SQL Backend.

  2. Имеются отличия при работе с NULL в выражениях (по сравнению с ViQube(In-memory)):

    • В результате сравнения с NULL в случае ViQube(In-memory) будет возвращено FALSE, а в случае ViQube(SQL Backend) будет возвращено NULL

    • При арифметических операциях NULL в ViQube(In-memory) интерпретируется как (1+NULL =1), а в SQL-базе как UNDEFINED (1+NULL =NULL )

  3. Имеется специфика при работе с некоторыми базами данных, а именно:

    • В PostgreSQL не работает sum(boolean). Поэтому могут быть отличия в результатах работы расчетных показателей.

    • В Oracle нет типа данных Boolean. В ViQube такие поля фигурируют как целочисленные (0/1). По этой причине не работают логические выражения в сформированном SQL-запросе.

  4. Использование VERTICA:

    • В VERTICA при сортировке по полю нет возможности указывать характер сортировки NULL-значений (нет директив NULL FIRST/LAST). Местоположение строк при сортировке полей с NULL-значениями зависит от типа сортируемых данных.

  5. Ограничения, касающиеся использования MySQL:

    • Нет возможности указать, каким образом сортировать NULL-значения, так как в MySQL не работают директивы NULLS FIRST и NULLS LAST.

    • Для получения разности дат, необходимо использовать функцию DATEDIFF вместо date1 - date2. Например: SELECT SUM(DATEDIFF(period2_id, period_id)) AS `0-0` FROM `fact_rur`

    • На запросы с указанием гранулярности Год за неделю приходят значения за каждый год и неделю в году.

    • Иногда приходят не ожидаемые ответы на запросы, в которых присутствует сравнение строковых значений. Зачастую это связано с отличием кодировки, используемой в базе данных MySQL, от кодировки, используемой в ViQube.

  6. Если источником данных таблицы является внешняя база данных, то при экспорте этой таблицы из ViQube, данные, хранящиеся во внешней базе данных, экспортироваться не будут. Экспортируются только те данные, которые были внесены в базу данных ViQube.

  7. Ограничение, касающееся использования MS SQL:

    • При использовании MS SQL, для получения разницы дат необходимо использовать функцию DATEDIFF(date1, date2). При попытке получения разницы с помощью вычитания date1-date2, произойдет ошибка.