Поле ДАТА-ВРЕМЯ / МЕТКА ВРЕМЕНИ в файле паркета отображается в виде чисел в просмотрщиках файлов паркета

#r #parquet #apache-arrow

Вопрос:

Предположим, у меня есть data.frame/tibble, как показано ниже:

 library(readr)
library(arrow)

# testFyl was originally read from a csv file with readr::read_csv()

testFyl <- structure(list(
  BILL_NO = c("36/2015-16", "39/15-16", "771", "254", "731", "610", "200", "23 /2015-16", "21/2015-16", "30/15-16"),
  BILL_DT_TIME = structure(c(1438021800, 1436898600, 1438021800, 1436293800, 1437935400, 1437589800, 1436207400, 1438108200, 1437676200, 1437330600), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
  BILL_DT = structure(c(16643, 16630, 16643, 16623, 16642, 16638, 16622, 16644, 16639, 16635), class = "Date")),
  spec = structure(list(cols = list(BILL_NO = structure(list(), class = c("collector_character", "collector")), BILL_DT_TIME = structure(list(format = ""), class = c("collector_datetime", "collector")), BILL_DT = structure(list(format = ""), class = c("collector_date", "collector"))), default = structure(list(), class = c("collector_guess", "collector")), delim = ","), class = "col_spec"), row.names = c(NA, -10L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"))

 

Тестовый файл выглядит так:

 # A tibble: 10 x 3
   BILL_NO     BILL_DT_TIME        BILL_DT   
   <chr>       <dttm>              <date>    
 1 36/2015-16  2015-07-27 18:30:00 2015-07-27
 2 39/15-16    2015-07-14 18:30:00 2015-07-14
 3 771         2015-07-27 18:30:00 2015-07-27
 4 254         2015-07-07 18:30:00 2015-07-07
 5 731         2015-07-26 18:30:00 2015-07-26
 6 610         2015-07-22 18:30:00 2015-07-22
 7 200         2015-07-06 18:30:00 2015-07-06
 8 23 /2015-16 2015-07-28 18:30:00 2015-07-28
 9 21/2015-16  2015-07-23 18:30:00 2015-07-23
10 30/15-16    2015-07-19 18:30:00 2015-07-19
 

Обратите внимание, что столбец BILL_DT содержит те же даты, что и столбец BILL_DT_TIME, с удаленной информацией о времени.

Теперь запишите эту таблицу в parquet формате с

 write_parquet(testFyl, "testFyl.parquet")
 

При чтении этого parquet файла обратно в R с

 read_parquet("testFyl.parquet")
 

все абсолютно нормально. Таблица точно такая же, как и выше, как и ожидалось.

Однако, когда я загружаю этот файл паркета с помощью следующих двух внешних инструментов просмотра файлов паркета, они отображают даты в форматах, которые я не понимаю:

1. Паркетвьюер из https://github.com/mukunku/ParquetViewer

Снимок экрана ParquetViewer

Здесь в столбце BILL_DT_TIME показаны цифры, которые мне кажутся странными.

2. Средство просмотра файлов Bigdata с https://github.com/Eugene-Mark/bigdata-file-viewer

Снимок экрана средства просмотра файлов Bigdata

Здесь в столбцах BILL_D_TIME, а также BILL_DT отображаются числа, которые я не понимаю. Эти числа отображаются при data.frame сохранении с dput помощью функции.

Видя date-time (странные) и date (понятные) столбцы в ParquetViewer, кажется, что можно выполнить некоторое форматирование date-time столбца в среде R перед его экспортом в parquet формате, чтобы он правильно отображался в ParquetViewer. Кто-нибудь может помочь мне разобраться в этом?

Редактировать: Тем временем я поднял проблему (запрос функций) на github по адресу https://github.com/mukunku/ParquetViewer/issues/40

Edit2: Разработчик любезно обновил ParquetViewer, чтобы отображать метки времени в понятном для человека формате. Таким образом, этот вопрос решен.

Ответ №1:

Этот формат называется «метка времени». Это временная метка Unix, выраженная в микросекундах.

https://www.epochconverter.com/

https://github.com/apache/parquet-format/blob/master/LogicalTypes.md

Текущие приложения для просмотра графического интерфейса для этих форматов довольно ограничены.

Комментарии:

1. Тот факт, что R сохраняет временные метки в виде количества секунд с 01-01-1970, вылетел у меня из головы — возможно, потому, что до сих пор время было незначительным для моей работы, и я работал только с компонентом даты — всегда видимым должным образом в понятном для человека формате.