如何爆炸而不会丢失空值?

问题描述 投票:0回答:1

如何在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

azure azure-data-lake u-sql
1个回答
0
投票

您可以使用OUTER APPLY

当指定OUTER APPLY时,即使右侧行集表达式返回该行的空行集,左侧行集的每一行也会产生一行。]

OUTER APPLY
© www.soinside.com 2019 - 2024. All rights reserved.