Azure Stream Analytics выводит int64 как int32 - PullRequest
0 голосов
/ 30 августа 2018

У меня есть задание Stream Analytics, которое конвертирует метку времени в количество миллисекунд с начала эпохи.

Для этого я использую функцию JavaScript, которая возвращает bigint, используя следующий код:

new Date(date).getTime()

Когда я тестирую это задание на портале Azure, я получаю правильный результат, например: 2018-08-29T13:01:54.0000000Z становится 1535547714000:

enter image description here

Но когда я запускаю задание и оно начинает сохранять свои выходные данные в таблице Azure, 1535547714000 становится -2050577968.

Я заметил, что если я брошу bigint 1535547714000 в int, я получу -2050577968. Поэтому я проверил тип столбца и, как ни странно, это Int64:

enter image description here

TL; DR: Задание выдает bigint, тип столбца - bigint Int64, но каким-то образом где-то посередине значение кажется преобразованным в int.

Как мне это исправить?

1 Ответ

0 голосов
/ 31 августа 2018

Родольф. Если вы хотите перенести данные в хранилище таблиц Azure, вы должны следовать их правилам.

На основе doc хранилище таблиц Azure поддерживает только типы int32 и int64, а не тип bigint. Таким образом, на самом деле не существует загадочного механизма для преобразования вашего типа данных, просто когда данные bigint преобразуются в таблицу, они преобразуются в соответствующий тип Int64. Однако предполагается, что это будет 1535547714000. преобразовано в int. Вы можете отправить отзыв в Azure, чтобы опубликовать эту проблему.

В качестве обходного пути вы можете попытаться получить данные и преобразовать их в Int64 в функции запуска Azure Table Storage Azure. Пожалуйста, обратитесь к этому документ .

Надеюсь, это поможет вам.

...