Поскольку я пытался указать в своем последнем ответе, который по какой-то причине был удален, вы не можете выполнять преобразование типов или преобразование данных, поступивших в планировщик.
Чтобы получить правильную метку времени, у вас есть двапараметры:
- Выполните преобразование с помощью Kafka Connect, используя преобразования одного сообщения, на которые я ссылался в исходном удаленном ответе (https://docs.confluent.io/current/connect/transforms/timestampconverter.html), или
- Скопируйте данныеиз Kafka как есть и выполните преобразование после того, как вы скопировали данные в таблицу Vertica или гибкую таблицу.
Чтобы выполнить второй вариант, вы бы взяли эпоху метки времени из миллиметра из Kafka, чтобы разделить еена 1000, а затем используйте функцию * 1013. * Если эпоха метки времени Кафки была 1556204536000, то вы можете выполнить следующий SQL, чтобы получить фактическую метку времени:
SELECT TO_TIMESTAMP(1556204536000 / 1000);
, которая будет возвращать значение:
2019-04-25 15:02:16
Однако второй вариант потребует от вас новых преобразований каждый раз, когда вы получаете новые данные, поэтому он действительно полезен только в том случае, если вывы используете Kafka для массовых загрузок.
Лучше всего использовать преобразования одного сообщения или найти какой-либо другой способ преобразования столбцов меток времени в строковый формат перед отправкой данных в Kafka.Vertica примет строку в столбце TIMESTAMP
, поэтому вам не нужно будет выполнять кастинг на стороне Vertica.