Даты и числа в выгрузках: локали и потеря точности
В тексте дата может выглядеть одинаково, но означать разное: в одном формате первым идёт день, в другом месяц. При импорте программа решает за вас. Если данные пришли из другой страны или системы, ошибка почти гарантирована. Числа теряют точность так же тихо. Ниже — что проверять.
Почему даты ломаются
В тексте дата может выглядеть одинаково, но означать разное: в одном формате первым идёт день, в другом месяц. При импорте программа решает за вас. Если данные пришли из другой страны, ошибка почти гарантирована.
Проверка на крайних значениях
Возьмите дату, где день больше двенадцати. Если она прочиталась как ошибка, формат перепутан. Второй признак — даты, сдвинутые на месяц или год. Проверьте несколько месяцев, включая февраль и декабрь.
Часовой пояс
Время сдачи работы и время сервера могут отличаться. При сравнении событий из разных систем приведите их к одному поясу. Иначе ночная сдача окажется следующей неделей.
Числа с запятой
Дробная часть отделяется запятой в русской локали и точкой в английской. Если файл открылся в другой локали, число может стать датой или текстом. Проверьте столбец с дробными значениями после импорта.
Тысячи и пробелы
Разделитель тысяч усложняет чтение. Для машинной обработки сохраняйте числа без разделителей, форматирование делайте на выводе. Иначе значение превратится в текст и не будет считаться.
Точность
Длинные идентификаторы и очень точные значения могут потерять последние цифры при чтении как чисел с плавающей точкой. Для кодов используйте текстовый тип. Это особенно важно для штрихкодов и номеров образцов.
Экспоненциальная запись
Большие числа иногда отображаются как степень. Это формат отображения, а не потеря значения, но при копировании превращается в текст. Проверьте, что после импорта число осталось числом.
Проценты
Значение с знаком процента — это текст. Если его нужно считать, преобразуйте в долю и проверьте, не умножили ли на сто дважды. Ошибка на этом шаге встречается чаще, чем кажется.
Отрицательные и нулевые
Проверьте, как читаются отрицательные значения и ноль. Иногда ноль превращается в пустую ячейку, а минус теряется. Сравните несколько известных значений с исходником.
Единицы
В одном столбце не должно быть разных единиц: граммы и килограммы, минуты и часы. Приведите к одной единице до анализа и запишите её в описании. Проверьте диапазон значений: он сразу выдаёт смешение.
Время и длительность
Длительность в формате времени иногда читается как момент времени. Если нужно считать сумму, переведите в секунды или минуты. Проверьте на значении больше суток.
Типичные ошибки
Путать день и месяц, игнорировать часовой пояс, оставлять разделители тысяч, хранить идентификаторы числами, смешивать единицы. Каждая ошибка меняет данные незаметно.
Как оформить проверку
Запишите формат дат, десятичный разделитель, единицы и часовой пояс в описании набора. Это три-четыре строки, которые спасают следующий анализ. Приложите пример корректной записи.
Итог
Даты и числа требуют явных договорённостей о формате, поясе и единицах, а проверка на крайних значениях ловит большинство ошибок.
Проверка на переходе месяца
Возьмите записи конца месяца и начала следующего. Если даты сдвинулись или часть записей оказалась в другом месяце, формат прочитан неверно. Границы периодов — самое чувствительное место любой выгрузки.
Как задать формат при импорте
Укажите формат явно, а не полагайтесь на автоматическое определение. Даже если программа угадала, при следующей выгрузке она может решить иначе. Явная настройка делает результат повторяемым и не зависящим от локали компьютера.
Сортировка и фильтрация
Если дата осталась текстом, сортировка будет алфавитной, и порядок окажется неверным. Проверьте, что после импорта дата сортируется по времени. Это простой признак того, что тип определён правильно.
Числа в идентификаторах
Коды образцов, штрихкоды и номера зачёток часто состоят из цифр, но числом не являются. Складывать их бессмысленно, а ведущий ноль при чтении как числа исчезает. Задайте текстовый тип до импорта, а не после того, как данные испортились.
Единицы и масштаб
Если в столбце смешаны метры и сантиметры, средние и суммы теряют смысл. Проверьте минимум и максимум: диапазон сразу покажет смешение. Приведите к одной единице и запишите её рядом с именем столбца.
Что записать в описание
Формат дат, часовой пояс, десятичный разделитель, единицы измерения и правила для пустых значений. Эти пять пунктов закрывают большинство будущих вопросов и позволяют повторить обработку без автора.
Чек-лист
- Формат даты проверен на значении с днём больше двенадцати.
- Часовой пояс указан и применён ко всем событиям.
- Десятичный разделитель распознан правильно.
- Идентификаторы хранятся как текст.
- Единицы измерения едины в каждом столбце.
- Ноль и отрицательные значения читаются корректно.
- Формат, пояс и единицы записаны в описании.
Частые вопросы
Как поймать перепутанный формат?
Проверить дату, где день больше двенадцати.
Почему теряются цифры?
Длинные коды читаются как дробные числа.
Что важнее всего?
Явно записать формат, пояс и единицы.
Пример
В выгрузке из зарубежной системы даты читались как американские: первым шёл месяц. Половина записей оказалась не в том месяце, пока проверка на значении с днём больше двенадцати не выявила ошибку.
Итог
Даты и числа надёжны, когда формат, часовой пояс и единицы заданы явно, а импорт проверен на крайних значениях.