取消
顯示的結果
而不是尋找
你的意思是:

我怎麼查第一個祖先(人,first_ancestor)從一個表的記錄(孩子、家長)記錄嗎?

jonathan-dufaul
價值貢獻

我有一個這樣的表:

/ *輸入* / -父孩子| | | - | - - - | - - - | - | 1 | 2 | - - - | 2 | 3 |——| | 3 | 4 | 5 | 6 | - - - | 6 | | - - - | 7 8 9 10 11 | | | - - - | |

我希望創建看起來像這樣:

/ *輸出* / - | |人first_ancestor | - - - | - - - | - - - - - - - - - - - - - - - - - - | - - - | 1 | 1 | - - - | 2 | 1 | - - - | 3 | 1 | - - - | 4 | 1 | - - - | 5 | 5 | - - - | 6 | 5 | - - - | 7 | 5 | - - - | 8 8 8 | | - - - | 9 | | - - - | 10 | | - - - | 11 10 | |

如果我是使用bigquery,使用遞歸CTE簡單

——遞歸CTE:每個記錄的第一個祖先與遞歸table_data(——填充數據選擇1作為家長,孩子聯盟都選擇2、3 union all選擇3,4 union all選擇5、6 union all選擇6,7 union all選擇8、9 union all選擇10,11),base_records為(,使基本情況(所有記錄,不是另一個記錄)的孩子,也有過濾循環的影響團體(例如1 - > 2 - > - > 1)first_ancestor選擇父母,父母作為人從table_data家長不是在(從table_data選擇孩子)),lookup_table(——首先從基本情況……第一個祖先選擇人,first_ancestor base_records工會——遞歸地添加的後代,後代選擇table_data注意的第一個祖先。孩子的人,lookup_table。從lookup_table first_ancestor加入table_data lookup_table。人= table_data。父)選擇的人,從lookup_table first_ancestor first_ancestor秩序,人

是1)有一些函數,遞歸的磚(sql或pyspark火花),或者2)規範的方法?

我蠻力通過編碼任意長度可以加入(加入table_data t1 table_data t2 table_data t3…)但是在想如果有一個低效的/動態的方式更少。我不懂圖形數據庫或者適當的解決方案在於他們。

非常感謝你:slightly_smiling_face:

1接受解決方案

接受的解決方案

LandanG
尊敬的貢獻者
尊敬的貢獻者

嗨@Jonathan Dufault,

遞歸cte,目前他們並不支持Apache火花(磚)。有一些解決方法可能幫助這樣一個由我的同事https://medium.com/@24chynoweth recursive-cte-on-databricks-2ac0dff8ca06或者稍微更新文章https://medium.com/globant/how-to-implement-recursive-queries-in-spark-3d26f7ed3bc9

希望這有助於,LG

在原帖子查看解決方案

5回複5

LandanG
尊敬的貢獻者
尊敬的貢獻者

嗨@Jonathan Dufault,

遞歸cte,目前他們並不支持Apache火花(磚)。有一些解決方法可能幫助這樣一個由我的同事https://medium.com/@24chynoweth recursive-cte-on-databricks-2ac0dff8ca06或者稍微更新文章https://medium.com/globant/how-to-implement-recursive-queries-in-spark-3d26f7ed3bc9

希望這有助於,LG

哇這完全回答我的問題。你有意義的東西是否會在某種程度上實現/是多麼重要或不?主要隻是好奇。

嗨@Jonathan Dufault,

我很高興回答你的問題。我可以看到內部有一個像樣的數量的需求這一特性,所以我有一種感覺它將在未來,但我沒有時間。

OSS火花似乎還兩個拉請求,該特性實現遞歸cte顯示承諾

JGil
新的貢獻者三世

@Landan喬治

嘿,我看著同樣的問題,但是當我為CTE_Recursive執行有什麼建議的文章https://medium.com/globant/how-to-implement-recursive-queries-in-spark-3d26f7ed3bc9

我得到錯誤

錯誤的SQL語句:AnalysisException:表或視圖了CTE_Recursive;行x pos y;

我創建了相同的表作為文章的例子,甚至複製代碼和執行它所以我不做其他的事情。

你能請告知嗎?

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map