Преобразовать десятичную строку в строку для сравнения в U-SQL
Я пытаюсь преобразовать данные из загруженного в CSV-файл в таблицу Azure, но у меня возникают проблемы, когда одно из значений загружается в строку, а эквивалентное значение в таблице является десятичным.
@ProdOutput =
EXTRACT
[p_description] string,
[p_code] string,
[p_price] string,
[p_colour] string
FROM "testing/martin/items.csv"
USING Extractors.Csv(skipFirstNRows:1);
// @items has been brought in from a table in Data Lake Analytics
@holdings_query =
SELECT ROW_NUMBER() OVER (ORDER BY h.code) AS rn,
h.description AS Description,
h.cd AS Code,
h.priceGBP AS Price,
h.col AS Colour
FROM @items AS h;
@result =
SELECT
p_description == Description ? p_description : String.Concat("Mismatch", p_description, " !! ", Description) AS [Desc],
p_code == Code ? p_description : String.Concat("Mismatch", p_code, " !! ", Code) AS [Code],
p_price == Price ? p_price: String.Concat("Mismatch", p_price, " !! ", Price) AS [Price]
FROM @holdings_query AS h
LEFT OUTER JOIN @prod_data AS p ON h.Code == p.p_code;
Проблема в том, что я хочу, чтобы оператор EXTRACT приводил все в общем виде в виде строки, так как я не всегда буду знать тип каждого из столбцов. Поэтому, когда я делаю сравнение в последнем утверждении, я хотел бы преобразовать цену из десятичной (как в таблице) в строку, чтобы сравнить с тем, что выходит из CSV.
Я пробовал ToString(), ToString("G"), (строка?), Но все они выдают ошибки. Что я делаю неправильно?
ТИА Мартин
Пример данных:
Items.csv:
"Элемент1","IT1","3,65"
"Элемент2","IT2","4,00"
"Item3", "IT3", "524,2123"
таблица @items:
"Item1", "IT1", 3,65
"Item2", "IT2", 4,00
"Item3", "IT3", 524.2123
1 ответ
Пытаться Decimal.Parse
на string
тип. Этот метод "... преобразует строковое представление числа в его десятичный эквивалент". Я получил следующее заявление на работу, где p_price
это строковое значение:
@result =
SELECT
Decimal.Parse(p.p_price) == h.Price ? 1 : 0 AS isEqual
...