當前為5.1版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

樹資料集

1. 概述

1.1 版本

FineBI 版本
5.0

1.2 應用場景

匯入使用者同步使用者 時,如何將部門層級結構同時匯入/同步呢?如下圖所示:

ku111.png

1.3 功能簡介

在資料庫中常常可以看到一種表結構,表中包含了 ID 與 parent ID 兩個欄位或者某一個欄位的長度有一定規律,這種表結構可構成樹資料集,透過樹資料集可生成樹形層級結構。

2. 範例

2.1 準備資料表

1)點選下載表資訊:

公司部門.xls

表資訊如下圖所示:

kuing.png

2)將「公司部門表」新增到使用者自己的資料庫中,或使用者在自己資料庫中建立使用者資訊表。

2.2 建立 SQL 資料集

管理者進入數據決策系統,點選「管理系統>資料連結>伺服器資料集>SQL資料集」,資料集名稱為「公司部門範例」,輸入 SQL 語句後,點選「儲存」。如下圖所示:

SQL 語句為:

select *from 公司部門

2.3 建立樹資料集

2.3.1 方法一:依賴所選資料集的父標記欄位構建樹

1)點選「樹資料集」,資料集名稱為「部門樹」,原始標記欄位為「部門ID」,父標記欄位為「上級ID」,如下圖所示:

樹資料集來源於本文 2.2 節建立的 SQL 資料集,「公司部門」中有一個部門 ID 和上級 ID,故可以使用依賴所選資料集的父標記欄位構建樹。

需要特別強調的是,此種情況,需要有唯一根節點(就是「上級 ID 」為空的節點),如果沒有,那麼構建樹時會無法正常建立索引。

2)點選「預覽」按鈕,可以看到如下圖所示的資料:

wa5.png

可看到資料集中多了三個欄位,FR_GEN_0 表示樹狀結構的第一層,FR_GEN_1 表示樹狀結構的第二層,FR_GEN_2 表示樹狀結構的第三層。

3)點選「儲存」按鈕,儲存建立的樹資料集。

2.3.2 方法二:依賴所選資料集的標記欄位的長度構建樹

1)點選「樹資料集」,資料集名稱為「部門樹」,原始標記欄位選擇「部門ID」,如下圖所示:

資料表中的欄位沒有父級欄位,而是透過欄位的長度來分辨其級別。公司部門的部門 ID 欄位,其欄位長度不一致,但是存在一定的規律,截止到第一個數字表示第一層級部門的部門 ID,截止到第二個數字表示第二層級部門的部門 ID,以此類推。

注:部門 ID,上級部門 ID,部門名是三個建樹欄位,在實際操作中,部門 ID 和部門名必須對應,不能存在部門 ID 相同的情況。

2)點選「預覽」按鈕,可以看到如下圖所示的資料:

wa8.png

可看到資料集中多了三個欄位,FR_GEN_0 表示樹狀結構的第一層,FR_GEN_1 表示樹狀結構的第二層,FR_GEN_2 表示樹狀結構的第三層。

3)點選「儲存」按鈕,儲存建立的樹資料集。

3. 生成樹資料集的資料表要求

3.1 原始標記欄位、父標記欄位為數字

3.1.1 資料表

ku1.png

這是個完整的樹資料集,構建樹資料集時,以「部門 ID」為原始標記欄位,「上級 ID」是父標記欄位。

第一行表示總部的標記是 1,父標記為空,表示它是根部門,沒有父部門,通常如果一個部門沒有父部門,那麼父部門標記為空。第二行的意思是「人力資源部」的原始標記為 11,其父部門是標記為 1 的部門(然後可以根據這個標記來查詢它的父部門是總部)。

遍歷這個資料集後,能得到所有的部門資訊,職位資訊;根據「上級 ID」,到「部門 ID」這一欄去尋找相應的部門名稱,進而可以構建父部門。

3.1.2 具體說明

「上級 ID」中出現的標記(除了是空),都必須在「部門ID」中找到對應的標記,可以看到上圖中所有的「上級 ID」都能在「部門 ID」中找到對應的值。

如果出現下圖的這種情況,「上級 ID」為 2,但是在「部門ID」中找不到是 2 的部門資訊,這樣就沒辦法構建「上級ID」為 2 的部門資訊,這樣就認為樹是不完整的。若同步包含使用者資訊的資料集,同步動作直接傳回,不進行同步操作。

ku2.png

3.2 原始標記欄位、父標記欄位為漢字

3.2.1 資料表

ku3.png

構建樹資料集時,原始標記欄位為「部門名稱」,父標記欄位為「上級名稱」。

3.2.2 具體說明

「上級名稱」中出現的標記(除了是空),都必須在「部門名稱」中找到對應的標記,否則就認為樹是不完整的,若同步包含使用者資訊的資料集,同步動作直接傳回,不進行同步操作。

3.3 原始標記欄位、父標記欄位為字母

3.3.1 資料表

ku4.png

構建樹資料集時,以「部門 ID」為原始標記欄位,「上級 ID」是父標記欄位。

同樣需要保證「上級 ID」列的能在「部門 ID」中能夠找的到,否則也會拒絕同步。

3.3.2 具體說明

確定樹資料集是正確的充要條件:

1)父標記欄位中出現的值(除了是空),在原始標記欄位中都能找到對應的值。

2)原始標記欄位相同的行,其部門名和父標記這兩列也必須相同,如上圖資料表中的最後兩行。

3)父標記和部門名相同的行,其原始標記列必須相同,如上圖資料表中的最後兩行。

無法構成樹資料集:

1)一個確定的部門有兩個父部門,顯然不是樹狀結構。如下圖所示:

ku5.png

2)一個標記對應的部門名稱不同也是錯誤的,這樣也會拒絕同步的。

ku6.png

3)意思就是在父部門確定的情況下,部門名稱是唯一的,那麼部門標記也是唯一的。下圖為錯誤範例:

ku7.png

部門名稱是可以相同的,比如銷售部有個子部門叫效能組,研發部也可以有個子部門叫效能組。但是當父部門確定的情況下,部門名是不能重複的。

例如:lyon 和 loy 所在的部門都是效能組,且父部門標記都是 d ,那就表明兩個人在同一個部門,那麼部門標記就應該相同,上圖的兩個員工部門標記不相同,那麼也會報錯,拒絕同步。即在父部門確定的情況下,根據部門名能唯一的確定一個部門。

4)實際情況中還有一種是互為上下級的情況,這種結構或者說資料有時候會在一些實行扁平化管理的公司出現,即 A 部門是 B 部門的上級,B 部門又是 A 部門的上級,這樣的兩個部門在組織同步的時候也會失敗,但很少見。

4. 注意事項

原始欄位和父標記欄位中不能出現 0、,0000000 類似的欄位,因為這些標記會被決議成 0,而 0 是過程中的保留欄位,是所有部門的 ID,所以要儘量避免。

在構建樹狀結構的時候,如果一個部門沒有父部門,那麼父部門就空着,不要隨便寫。

附件列表


主題: 连接到数据
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 评价文档,奖励 1 ~ 100 随机 F 豆!