蜂巢中的递归CTE

时间:2017-12-21 06:38:26

标签: java hive user-defined-functions common-table-expression recursive-cte

我有一个用SQL Server编写的递归CTE,我需要迁移到HIVE。 由于蜂巢不支持CTE的递归,我被困在这里。我建议为此编写一个java UDF,但我不是java的专家。如果有人可以帮助我,我会很棒。

代码(SQL服务器):

            WITH CTE_CATEGORY_TREE AS 
            (
                                            SELECT CT.seq
                                                            , CT.[name]
                                                            , CT.pseq
                                                            , convert(varchar(255), CT.seq) AS [sort]
                                                            , convert(nvarchar(255), CT.[name]) AS [depth_fullname]
                                            FROM [dbo].[table1] AS CT WITH(NOLOCK)
                                            WHERE CT.pseq = 0 
                            UNION ALL 
                                            SELECT PC.seq
                                            , PC.[name]
                                            , PC.pseq
                                            , convert(varchar(255), convert(nvarchar,CT2.sort) + N' > ' + convert(varchar(255), PC.seq)) AS [sort]
                                            , convert(nvarchar(255), convert(nvarchar,CT2.depth_fullname) + N' > ' + convert(nvarchar(255), PC.[name])) AS [depth_fullname] 
                                            FROM [dbo].[table1] AS PC WITH(NOLOCK)
                                            JOIN CTE_CATEGORY_TREE AS CT2 ON PC.pseq = CT2.seq
            )

            SELECT          seq
                            , [name]
                            , pseq
                            , sort
                            , depth_fullname 
            FROM CTE_CATEGORY_TREE

0 个答案:

没有答案