Мы всегда рекомендуем разработчикам исследовать сначала использование чистого подхода U-SQL вместо использования UDO C#, вот еще один способ выполнения этой задачи.
Во-первых, подумайте, как бы вы просто получили список чисел в U-SQL.
@numbers_10 =
SELECT
*
FROM
(VALUES
(0),
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8),
(9)
) AS T(Value);
Всего 10 чисел — от 0 до 9. Мы можем использовать CROSS JOIN, чтобы расширить список.
@numbers_100 =
SELECT (a.Value*10 + b.Value) AS Value
FROM @numbers_10 AS a
CROSS JOIN @numbers_10 AS b;
Теперь у нас есть от 0 до 99. Мы можем использовать CROSS JOIN, чтобы генерировать еще больше чисел.
@numbers_10000 =
SELECT (a.Value*100 + b.Value) AS Value
FROM @numbers_100 AS a CROSS JOIN @numbers_100 AS b;
Затем сгенерируйте список дат из этого.
DECLARE @StartDate = DateTime.Parse("1979-03-31");
...
@result =
SELECT
Value,
@StartDate.AddDays( Value ) AS Date
FROM @numbers_10000;
Полный скрипт выглядит так:
DECLARE @StartDate = DateTime.Parse("1979-03-31");
@numbers_10 =
SELECT
*
FROM
(VALUES
(0),
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8),
(9)
) AS T(Value);
@numbers_100 =
SELECT (a.Value*10 + b.Value) AS Value
FROM @numbers_10 AS a CROSS JOIN @numbers_10 AS b;
@numbers_10000 =
SELECT (a.Value*100 + b.Value) AS Value
FROM @numbers_100 AS a CROSS JOIN @numbers_100 AS b;
@result =
SELECT
Value,
@StartDate.AddDays( Value ) AS Date
FROM @numbers_10000;
OUTPUT @result TO "/res.csv" USING Outputters.Csv(outputHeader:true);
Когда у вас есть список чисел или дат, может быть удобно сохранить его в таблицу U-SQL, чтобы вы могли легко получить список позже.
person
saveenr
schedule
23.07.2017