如何在U-SQL中爆炸数组而不丢失Null值?
在正常的交叉应用| Explode(),空值丢失。
我从here中提取了以下脚本:
@content =
SELECT *
FROM(
VALUES
(
12,
"a, b, c,NULL"
),
( 75,
"f, g, h, i, j"
)) AS t([ID], LetterList);
@inArray =
SELECT [ID],
SqlArray.Create(LetterList.Split(',')) AS LetterArray
FROM @content;
@exploded =
SELECT [ID],
letter.Trim() AS Letter
FROM @inArray
CROSS APPLY
EXPLODE(LetterArray) AS r(letter);
OUTPUT @exploded
TO "/Outputs/explosion.tsv"
USING Outputters.Tsv();
我期望的输出是:
ID-字母------------12-一个12-b12-c12-空75-f75-克75小时75-我75-j
您可以使用OUTER APPLY
:
当指定OUTER APPLY时,即使右侧行集表达式返回该行的空行集,左侧行集的每一行也会产生一行。]
OUTER APPLY