Я создал базу данных в Data Lake Analytics. Затем заполняется данными из файлов в моем озере данных. Когда я затем запрашиваю таблицу, которую я сделал, у меня есть некоторый успех, но некоторые странные ошибки. (Странно для меня!)
Это работает: ГДЕ [Штампованный серийный номер] == "000074O1" Это не работает: ГДЕ [Номер CTN] == "000074-1"
Ошибка :
«Во время генерации кода произошел системный сбой. Не удалось сравнить два элемента в массиве».
Оба поля являются строками, поэтому я не уверен, в чем разница. Один (неудачный) также является частью моего индекса и дистрибутива, но я потерян, если это как-то связано с моими проблемами.
Весь код для определения таблицы, заполнения и финальных запросов приведен ниже. Если кто-нибудь может помочь мне понять, что я делаю неправильно...!? ...буду очень признателен :)
Скрипт: Создать таблицу
CREATE TABLE IF NOT EXISTS Play.RawData
(
[CTN Number] string
,[SeqNo] long
,[UTC Time Stamp for Event] string
,[Biz step Description] string
,[Stamped Serial number] string
,[Container Status] string
< -- more columns -- >,
INDEX
idx_CTN CLUSTERED ([CTN Number],[SeqNo])
DISTRIBUTED BY HASH ([CTN Number],[SeqNo])
);
Скрипт: Заполнить таблицу
DECLARE @dir string = "/myDataPath/";
DECLARE @file_set_path string = @dir + "File_{date:yyyy}{date:MM}{date:dd}.DAT";
@results_1 =
EXTRACT
[CTN Number] string
,[UTC Time Stamp for Event] string
,[Biz step Description] string
,[Stamped Serial number] string
,[Container Status] string
< -- more columns -- >,
,date DateTime // virtual file set column
FROM @file_set_path
USING Extractors.Tsv();
INSERT INTO Play.RawData(
[CTN Number],
[SeqNo],
[UTC Time Stamp for Event],
[Biz step Description],
[Stamped Serial number],
[Container Status],
< -- more columns -- >
)
SELECT
[CTN Number],
ROW_NUMBER() OVER(PARTITION BY [CTN Number] ORDER BY [UTC Time Stamp for Event] ASC) ?? -1 AS [SeqNo],
[UTC Time Stamp for Event],
[Biz step Description],
[Stamped Serial number],
[Container Status]
FROM @results_1
WHERE
date >= DateTime.Parse("2013-01-01")
AND
date < DateTime.Parse("2013-02-01");
Сценарий: тестовый запрос
@table =
SELECT [UTC Time Stamp for Event],
[Biz step Description],
[CTN Number],
[Stamped Serial number]
FROM [CTN].[Play].[RawData]
WHERE
//[Stamped Serial number] == "000074O1";
[CTN Number] == "000074-1";
OUTPUT @table
TO "/output/results.tsv"
USING Outputters.Tsv(outputHeader:true);