Data Factory DataSet обработка часового пояса - PullRequest
0 голосов
/ 30 августа 2018

При вводе данных CSV (в хранилище BLOB-объектов) со смещением часового пояса, например

2018-08-29T06: 38: 19 + 01: 00

И в наборе данных есть колонка en-GB для столбца.

т.е.

      {
        "name": "TransactionDateTime",
        "type": "Datetime",
        "culture": "en-gb"
      },

Это приземляется в ADLS как:

2018-08-29 05: 38: 19.0000000

Похоже, что он анализируется как +1, а затем записывается как UTC, хотя культура выходного набора данных en-gb.

В основном мы установили en-gb, поскольку в фабрике данных по умолчанию используется en-us, что для нас не очень разумно.

В документации фабрики данных предлагается просмотреть в документации по c # строки форматирования, поэтому я предполагаю, что она использует реализацию .net Framework.

Если s не содержит информацию о часовом поясе, свойство Kind Возвращенный объект DateTime - DateTimeKind.Unspecified. Это поведение можно изменить с помощью флага DateTimeStyles.AssumeLocal, который возвращает значение DateTime, свойство Kind которого равно DateTimeKind.Local, или используя DateTimeStyles.AssumeUniversal и DateTimeStyles.AdjustToUniversal flags, которая возвращает значение DateTime чье свойство Kind - DateTimeKind.Utc. Если s содержит часовой пояс информация, время при необходимости конвертируется в местное время, и свойство Kind возвращаемого объекта DateTime установлено в DateTimeKind.Local. Это поведение можно изменить с помощью DateTimeStyles.RoundtripKind флаг, чтобы не конвертировать координированный универсальный Время (UTC) по местному времени и установить для свойства Kind значение DateTimeKind.Utc.

Попытка повторить это в c #, возможно, что-то вроде:

var inputInBlobDate = "2018-08-29T06:38:19+01:00";

var outputInADLSDate = "2018-08-29 05:38:19.0000000"; 

CultureInfo culture = new CultureInfo("en-GB");

var parsed = DateTime.ParseExact(inputInBlobDate, "yyyy-MM-ddTHH:mm:ssK", culture, DateTimeStyles.AdjustToUniversal);

parsed.ToString("yyyy-MM-dd HH:mm:ss.fffffff").Dump(); //2018-08-29 05:38:19.0000000

Верны ли мои теории, что написано как UTC?

Меня беспокоит, как будет обрабатываться британское летнее время, если мы укажем культуру Великобритании. Если только ГБ-культура не является просто строкой форматирования, но я не вижу такой строки форматирования ни в одном из CultureInfo, поэтому не думаю, что она предназначена только для форматирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...