Конечная точка http фабрики данных azure в cosmosdb ошибка преобразования datetime

У меня есть конечная точка HTTP, которая возвращает данные, включая дату и время в формате:

"RowInsertDateTime": "2018-09-10T15:31:21.223",

У меня конвейер фабрики данных не смог импортировать эту строку как DATETIME из-за этой ошибки:

"message": "ErrorCode=UserErrorInvalidDataValue,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=,Source=,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column

'RowInsertDateTime' contains an invalid value '2018-09-10T15:39:50.33'. Cannot convert '2018-09-10T15:39:50.33' to type 'DateTime' with format 'YYYY-MM-DDTHH:MM:SS'.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=String was not recognized as a valid DateTime.,Source=mscorlib,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'RowInsertDateTime' contains an invalid value '2018-09-10T15:39:50.33'. Cannot convert '2018-09-10T15:39:50.33' to type 'DateTime' with format 'YYYY-MM-DDTHH:MM:SS'.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=String was not recognized as a valid DateTime.,Source=mscorlib,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'RowInsertDateTime' contains an invalid value '2018-09-10T15:39:50.33'. Cannot convert '2018-09-10T15:39:50.33' to type 'DateTime' with format 'YYYY-MM-DDTHH:MM:SS'.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=String was not recognized as a valid DateTime.,Source=mscorlib,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column 'RowInsertDateTime' contains an invalid value '2018-09-10T15:39:50.33'. Cannot convert '2018-09-10T15:39:50.33' to type 'DateTime' with format 'YYYY-MM-DDTHH:MM:SS'.,Source=Microsoft.DataTransfer.Common,''Type=System.FormatException,Message=String was not recognized as a valid DateTime.,Source=mscorlib,'",

Я попытался установить формат ГГГГ-ММ-ДДТЧЧ: ММ: СС, но получаю ту же ошибку. Любые идеи? Я думал, что формат даты и времени действителен.

0
0
187
1

Ответы 1

Я вижу, что у вас есть миллисекунды в дате, поэтому можете попробовать использовать следующий формат: «гггг-ММ-ддTHH: мм: ss.fff»

Невозможно преобразовать '2018-09-03T00: 00: 47.02' в тип 'DateTime' в формате 'yyyy-MM-ddTHH: mm: ss.fff'., Source = Microsoft.DataTransfer.Com‌ mon, '' Type = System .Fo‌ rmatException, Messag‌ e = Строка не была распознана как допустимая.

JamesMatson 10.09.2018 10:14

первый параметр содержит 3 цифры миллисекунд, поэтому я поставил .fff. В вашем комментарии у вас есть только .02, поэтому вам нужно поставить .ff. Если ваш формат DateTime не является постоянным, вы можете просто позволить ему проанализировать его без указанного формата. проверить документы docs.microsoft.com/en-us/dotnet/standard/base-types/…

DraganB 10.09.2018 10:48

Длина миллисекунд может быть разной, но что вы подразумеваете под синтаксическим анализом без указанного формата? Если я это сделаю, это все равно не удастся (если я не поставлю формат), что и побудило меня в первую очередь попробовать форматирование! Это ошибка без форматирования - сообщение = столбец «RowInsertDateTime» содержит недопустимое значение «2018-09-03T00: 00: 47.02». Невозможно преобразовать '2018-09-03T00: 00: 47.02' в тип 'DateTime' в формате 'yyyy-MM-dd HH: mm: ss.fffffff'., Source = Microsoft.DataTransfer.Common, '' Ty‌ pe = System.FormatExce‌ ption, Message = String не был распознан как допустимый DateTime

JamesMatson 10.09.2018 11:31

Ах да, если вы не укажете формат, он будет использовать формат по умолчанию, а именно «o».

DraganB 10.09.2018 11:42

Хм. Ok. Поэтому, если я не укажу формат, это не сработает. Если я укажу предложенный вами формат, он не сработает. Итак, какой у меня здесь вариант? Если что-нибудь? : /

JamesMatson 10.09.2018 11:44

Возможно, чтобы очистить данные перед adf, чтобы все значения даты были в одном формате. У ADF нет инструментов для какой-то глубокой интеллектуальной логики :) Его только для оркестрации / копирования. Или я о них не в курсе :)))

DraganB 10.09.2018 12:06

Согласен с DraganB. Если ваш формат datetime не зафиксирован, не могли бы вы просто записать его как строку вместо datetime? А затем обработайте значение datetime на стороне cosmos db.

Fang Liu 10.09.2018 12:47

Другие вопросы по теме