Неправильные дата и время в моих запросах и на графиках¶
Вы выполняете вычисления с датами и временем или отображаете их в графиках, но:
- Значения кажутся неправильными, или
- Суммарные значения неправильные.
Связана ли проблема с часовыми поясами?¶
Возможная причина
Дата и время хранится в разных часовых поясах, но некоторые или все эти часовые пояса не учитываются при выполнении вычислений (т.е. проблема несогласованных данных).
Решение
Для решения этой проблемы вам понадобятся ответы на следующие вопросы:
- Какой часовой пояс для ваших данных отображается неправильно (т.е. какой должен быть правильный ответ)?
- Есть ли явная настройка часового пояса на каждой временно́й метке, или некоторые (или все) временны́е метки хранятся без часового пояса? Например,
Dec 1, 2019 00:00:00Z00
включает часовой пояс (показан послеZ
), аDec 1, 2019
— нет. - Какой часовой пояс использует сервер базы данных?
- Какой часовой пояс использует Glarus BI?
Как только вы получите ответы на эти вопросы, посмотрите эти случаи:
- Ваш запрос или график сравнивает, или сортирует значения с несогласованными или отсутствующими часовыми поясами. Например, если время вылета и прилета самолета сообщается в местном времени, то он может прибыть до того, как он вылетит.
- Ваш запрос агрегирует временны́е метки с разными часовыми поясами: например, "ежедневные" итоги посещаемости вашего веб-сайта включают более 24 часов данных, потому что вы используете местные даты из Восточной Азии, Европы и Америки.
Как только вы поймёте, что идентифицировали проблему — углубитесь в неё, чтобы понять, какая именно конвертация часового пояса вызывает ошибку. Например, предположим, что вы смотрите на временной ряд с ежедневными значениями; если ваша ошибка происходит с недельными итогами, вы можете сделать следующее:
- Выберите конкретный день, в котором вы знаете, что число неправильное.
- Нажмите на точку данных в графике или ячейку в таблице результатов и выберите "Просмотреть эти X".
- Откройте этот запрос в двух других вкладках вашего браузера. Измените фильтры даты так, чтобы одна вкладка содержала строки в базовой таблице из предыдущего дня, а другая таблица содержала строки в базовой таблице из следующего дня.
- Проверьте, что поле даты, используемое для группировки результата в базовом отображении, является правильным. Если оно отличается от того, что у вас хранится в базе данных или в другом инструменте, то временна́я метка преобразуется неправильно. Это часто происходит, когда вы используете дату или время без явного часового пояса.
- Если базовые временны́е метки правильны (имеют явные часовые пояса), то отдельные значения, вероятно, группируются в дни в другом часовом поясе, отличном от того, который вам нужен.
- Чтобы узнать, в какой часовой пояс они преобразуются, измените время на фильтрах даты в запросе, который вы смотрите, перемещая начальное время и начальную дату назад на час, пока вы не получите правильное число, или вы не вернётесь на 12 часов. (Если какой-либо из ваших часовых поясов включает Индию, Ньюфаундленд или другую юрисдикцию с часовым поясом полушага, вам может потребоваться сделать это с интервалом в полчаса.)
- Если это не сработает, попробуйте переместить начальное и конечное время вперёд на час, пока вы не получите правильное число, или не продвинетесь на 12 часов вперёд.
- Если к этому моменту у вас есть правильное значение, это означает, что ваш часовой пояс был преобразован на количество часов вперёд или назад, которое вы вручную задали фильтром. Если так, проверьте, соответствует ли смещение, которое вы придумали, либо часовому поясу хранилища данных, либо часовому поясу самой Glarus BI.
Неправильно задан часовой пояс отчёта?¶
Возможная причина
Ошибочные числа в запросах или диаграммах могут быть вызваны несоответствием часового пояса, используемого Glarus BI, и часового пояса, используемого хранилищем данных.
Решение
- Проверьте Настройки часового пояса отчётов из Управление > Настройки > Локализация.
- Если вы используете базу данных, которая не поддерживает настройку часового пояса отчёта, убедитесь, что часовой пояс Glarus BI соответствует часовому поясу базы данных. Часовой пояс Glarus BI — это часовой пояс виртуальной машины Java, обычно устанавливаемый с помощью параметра
-Duser.timezone<..>
или переменной средыJAVA_TIMEZONE
. Его изменение будет зависеть от того, как вы запускаете Glarus BI. Обратите внимание, что часовой пояс Glarus BI не влияет на базы данных, которые используют часовой пояс отчёта.
Запросы SQL не учитывают настройку часового пояса отчёта?¶
Возможная причина
Мы в настоящее время не применяем часовой пояс отчёта к результатам SQL-запросов.
Решение
Задайте часовой пояс отчёта явно в своём SQL-запросе.
Например, вы можете написать запрос к PostgreSQL:
Это выражение сначала приводит столбец к типу данных timestamp
, а затем преобразует timestamp
в тип данных timestamptz
с часовым поясом «EST».
Даты без явного часового пояса преобразуются в другой день?¶
Возможная причина
Вы группируете по дате (а не по времени), которая не имеет часового пояса.
Решение
- Проверьте каждое использование полей вашего фильтра и убедитесь в том, что каждое из них имеет простой тип "Дата".
- Если это так, убедитесь, что часовой пояс сервера соответствует часовому поясу отчёта, потому что при выполнении запроса в Glarus BI сервер применяет настроенный часовой пояс к этой дате.
Вы смешиваете явные и неявные часовые пояса?¶
Возможная причина
Вы сравниваете или выполняете арифметические операции над двумя датами, где одна с часовым поясом, а другая — нет.
Решение
- Обычно это происходит с запросом, который использует несколько полей: например, вы фильтруете одну метку времени и группируете по другой. Проверьте часовые пояса каждой из дат или времени, которые вы используете в своём запросе.
- Вам нужно будет явно задать часовой пояс для любого значения, которое хранится без часового пояса. Это необходимо сделать либо в SQL-запросе, либо преобразовать данные в вашей базе данных, чтобы обеспечить наличие часовых поясов у обеих меток времени.