Как предположить, что метка времени - MST (США / Гора) вместо UTC

Я создаю конвейер в Data Fusion, где мы используем подключаемый модуль базы данных для приема данных из нашей локальной базы данных Oracle и вставки в таблицу BigQuery. Подключаемый модуль базы данных правильно определяет timestamp типы данных для полей даты в наших таблицах Oracle. Однако проблема в том, что поля даты на самом деле находятся в часовом поясе MST. Однако Data Fusion предполагает, что они находятся в формате UTC.

Пример: Дата в локальной БД - Mar 11, 2020, 5:45:40 AM MST, а в BigQuery она отображается как Mar 11, 2020, 5:45:40 AM UTC.

В конвейере я использую подключаемый модуль Wrangler для преобразования типов данных столбцов с помощью директив. Я пробовал использовать директиву parse-as-date DATE_COLUMN US/Mountain, но это не сработало.

Я спросил у службы поддержки GCP, есть ли способ установить часовой пояс Data Fusion по умолчанию на MST. Я прошу здесь посмотреть, есть ли способ сделать это с помощью плагинов.


person Korean_Of_the_Mountain    schedule 11.03.2020    source источник


Ответы (1)


Я не думаю, что есть способ установить MST в качестве часового пояса по умолчанию в Data Fusion; однако я попытался воспроизвести сценарий и смог использовать parse-as-date DATE_COLUMN MST для анализа столбца и вставить его в BigQuery с правильным временем в формате UTC Mar 11, 2020, 11:45:40 AM UTC.

person Tlaquetzal    schedule 11.03.2020
comment
Я пробовал использовать ваши директивы, но ничего не изменилось. однако мой конвейер выводит данные не только в BQ, но и в GCS. глядя на файл в GCS, я вижу временную метку unix в столбцах даты. Для столбца даты, который должен быть Aug 8, 2019, 11:00:24 AM MST, файл в GCS имеет 1565262024000000, что похоже на микросекундную версию Aug 8, 2019, 11:00:24 AM UTC. Я чувствую, что мне нужно использовать директиву format-unix-timestamp, но не знаю, какой шаблон использовать - person Korean_Of_the_Mountain; 12.03.2020
comment
Да, когда вы используете директиву, новый столбец представляет собой метку времени в формате Unix. Это значение, которое вам нужно вставить в BigQuery в качестве отметки времени. - person Tlaquetzal; 12.03.2020
comment
Но значение временной метки вставляется в BQ и все еще читается как UTC вместо того, чтобы понимать, что это MST. Aug 8, 2019, 11:00:24 AM UTC это то, что я вижу в BQ - person Korean_Of_the_Mountain; 12.03.2020
comment
Я неправильно прочитал ваш предыдущий комментарий. Если временная метка Unix неверна, значит, синтаксический анализ не работает, как вы указали. Можете ли вы поделиться изображением Wrangler с столбцом до и после синтаксического анализа по дате? - person Tlaquetzal; 12.03.2020
comment
поэтому я на самом деле не могу использовать пользовательский интерфейс Wrangler для своего приложения, потому что по какой-то причине он не работает с источником данных, который является подключаемым модулем Oracle. Это длинная история. В принципе, я могу использовать плагин Wrangler в Pipeline, когда он развернут, но это все. Похоже, мне нужно что-то сделать в sql-запросе, чтобы преобразовать в UTC до приема - person Korean_Of_the_Mountain; 12.03.2020
comment
Понятно, а вы смогли увидеть / записать формат метки времени после плагина oracle? Я провел несколько тестов, но получил правильный часовой пояс MST - person Tlaquetzal; 16.03.2020
comment
Да, значит, конвейер работает только при развертывании, но не может использовать его в предварительном просмотре или использовать пользовательский интерфейс Wrangler. Когда я смотрю на данные после запуска конвейера с предложенными директивами Wrangler, он неправильно принимает часовые пояса MST. Я использовал обходные пути, принимая временные метки как строки и анализируя как даты в BQ. - person Korean_Of_the_Mountain; 17.03.2020
comment
Итак, я пробовал разные трансформации. Я считаю, что наиболее гибким решением является использование преобразования Javascript. Отметка времени представлена ​​числом, и вы можете изменить ее при необходимости. Другой вариант - продолжить использование одной из директив синтаксического анализа в обработчике, но то, как вы их используете, зависит от того, как вы читаете дату из базы данных. Наконец, чтобы попробовать пользовательский интерфейс обработчика, вы можете создать образец файла с содержимым, аналогичным тому, что вы собираетесь читать, и поместить его в хранилище. Затем вы можете использовать Wrangler UI, чтобы поиграть и увидеть трансформации. - person Tlaquetzal; 20.03.2020
comment
Да, похоже, единственный вариант - это сделать один из многих возможных обходных путей. Я принимаю метку времени как строку с часовым поясом и анализирую ее позже как метку времени. Возможно, когда-нибудь BQ позволит изменить часовой пояс по умолчанию. - person Korean_Of_the_Mountain; 21.03.2020