知識庫

合併多個日期欄位


發佈時間 : 24 Apr 2017
上次修改日期 : 09 Apr 2024

問題

如何將多個欄位合併至單一軸或單一日期標題

例如,每筆訂單都有 [訂單日期] 和 [出貨日期]。最終目標是顯示每個月提交訂單和出貨訂數量的折線圖或交叉資料表。若以 [訂單日期] 做為軸或標題,則每個月的出貨訂單數將不正確,反之亦然。

環境

Tableau Desktop

答案

附帶的範例工作簿使用樣本資料集合 Superstore 示範所有選項。
按一下以展開解決方案
選項 1:樞紐分析日期欄位
  1. 樞紐分析日期欄位,以便只有一個包含日期資料的欄位,而第二個欄位(例如「事件」)描述事件則為「已提交訂單」或「已出貨訂單」,附註:對於某些資料來源,可以直接在 Tableau Desktop 中進行樞紐分析。有關詳細說明,請參閱從欄到列對資料進行樞紐分析
  2. 按一下滑鼠右鍵,並將 [樞紐欄位值] 拖曳至「列」架
  3. 在「放置欄位」對話方塊中,選取「MY(Pivot Field Values)」,並按一下「確定」
  4. 在資料窗格中的 [樞紐欄位名稱] 按一下滑鼠右鍵,並選取「別名...」
  5. 在「編輯別名」對話方塊中,為「訂單日期」和「出貨日期」提供更簡單易懂的別名,並按一下「確定」
  6. 將 [樞紐欄位名稱] 拖曳至「欄」架
  7. 按一下滑鼠右鍵,並將 [訂單 ID] 拖曳至「標記」卡片上的「文字」
  8. 在「放置欄位」對話方塊中,選取「CNTD(Order ID)」,並按一下「確定」
按一下以展開解決方案
選項 2:使用 LOD 計算
此選項要求每個日期欄位在檢視中的每個日期資料桶至少有一筆記錄。在此範例中,每一列是一個月份,因此,[訂單日期] 和 [出貨日期] 每個月都必須有至少一筆訂單。
  1. 選擇某個日期欄位,以建立日期軸或標題。此範例使用 [訂單日期]
  2. 按一下滑鼠右鍵,並將 [訂單日期] 拖曳至「列」架
  3. 在「放置欄位」對話方塊中,選取帶有藍色 # 圖示的 MY(Order Date),並按一下「確定」
  4. 按一下滑鼠右鍵,並將 [訂單 ID] 拖曳至「標記」卡片上的「文字」
  5. 在「放置欄位」對話方塊中,選取「CNTD(Order ID)」
  6. 在檢視中,以滑鼠右鍵按一下標題「訂單 ID 的相異計數」,然後選取「編輯別名...」
  7. 在「編輯別名」對話方塊中,輸入一個新名稱,並按一下「確定」
  8. 使用類似於以下內容的計算來建立一個名稱類似於「已出貨訂單」的導出欄位:

    MIN(
    IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Ship Date])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9.按兩下資料窗格中的 [已出貨訂單],將欄位新增至視圖

     
按一下以展開解決方案
選項 3:使用日期 Scaffolding
此選項要求某日期欄位一律位於另一個日期欄位之前,並且在兩個日期欄位定義日期範圍時效果最佳。
  1. 建立包含所有可能日期之主要清單的資料表,該資料表可加入原始資料連線。在此範例中,此資料表名稱為「主要日期清單」。
  2. 導覽到 Tableau Desktop 中的「資料來源」索引標籤
  3. 將「工作表 1」表新增至畫布區域
  4. 在「加入」對話方塊中,執行以下動作:
    1. 選擇「左」
    2. 在「資料來源」下,選擇 Order Date(訂單日期)
    3. 在「工作表 1」下方,選取「日期」
    4. 按一下等號,並選擇 <=
    5. 在「資料來源」下,按一下「新增新的加入子句」,並選擇 Ship Date(發貨日期)
    6. 在「工作表 1」下方,選取「日期」
    7. 按一下等號,並選擇 >=
  5. 選擇「分析」>「建立計算欄位」
  6. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 為計算欄位命名。在此範例中,導出欄位命名為「已提交訂單」。
    2. 在公式欄位中,建立類似於如下的計算:
      COUNTD(
      IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Date])
      THEN [Order ID]
      END
      )
  7. 使用類似於以下內容的計算來建立一個名稱類似於「已出貨訂單」的導出欄位:
    COUNTD(
    IF DATETRUNC('month', [Ship Date]) = DATETRUNC('month', [Date])
    THEN [Order ID]
    END
    )
  8. 按一下滑鼠右鍵,並將 [日期] 拖曳至「列」架
  9. 在「放置欄位」對話方塊中,選擇 MY(Date) 並按一下「確定」
  10. 將 [已提交訂單] 拖曳至「標記」卡片上的「文字」
  11. 按兩下資料窗格中的 [已出貨訂單],將欄位新增至視圖
按一下以展開解決方案
選項 4:使用日期繫結
此選項在日期範圍內無效。
  1. 建立包含所有可能日期之主要清單的資料表,並建立與該清單的新連線。在此範例中,該連線稱為「Sheet1(主要日期清單)」
  2. 巡覽至「資料」>「樣本 - Superstore」>「複製」。在此範例中,為了清楚起見,我已將兩份「樣本 - Superstore」命名為「樣本 - Superstore(訂單日期上的連結)」和「樣本 - Superstore(出貨日期上的連結)」。
  3. 巡覽至「資料」>「編輯關係...」
  4. 在「關係」對話方塊中,執行以下動作:
    1. 對於主要資料來源,請選取「Sheet1(主要日期清單)」
    2. 對於次要資料來源,請選取「樣本 - Superstore(訂單日期上的連節)」
    3. 選取「自訂」選項按鈕
    4. 按一下「新增...」
  5. 在「新增/編輯欄位對應」對話方塊中,執行以下動作:
    1. 按一下「日期」旁的箭頭,展開日期選項
    2. 選取與檢視中所使用之最精細日期層級相符的日期層級。在此範例中,檢視使用 MY(Date)。
    3. 在右側窗格中,按一下「訂單日期」旁的箭頭
    4. 選取「訂單日期」的相符日期層級
    5. 按一下「確定」
  6. 使用「樣本 - Superstore(出貨日期上的連結)」做為次要資料來源,重複步驟 4-5,並在 MY(Date) = MY(Ship Date) 上新增關係
  7. 按一下「確定」,以關閉「關係」對話方塊
  8. 在新的工作表中,按一下滑鼠右鍵,並將 [日期] 從「Sheet1(主要日期清單)」資料連線拖曳至檢視
  9. 在「放置欄位」對話方塊中,選擇 MY(Date) 並按一下「確定」
  10. 在檢視中,以滑鼠右鍵按一下標題「訂單 ID 的相異計數」,然後選取「編輯別名...」
  11. 在「編輯別名」對話方塊中,輸入更簡單易懂的名稱,並按一下「確定」
  12. 按一下滑鼠右鍵,並將 [訂單 ID] 從「樣本 - Superstore(訂單日期上的連結)」資料來源拖曳至「標記」標籤上的「文字」
  13. 在「放置欄位」對話方塊中,選取「CNTD(Order ID)」,並按一下「確定」
  14. 按一下滑鼠右鍵,並將 [訂單 ID] 從「樣本 - Superstore(出貨日期上的連結)」資料來源拖曳至「標記」標籤上的「文字」
  15. 在「放置欄位」對話方塊中,選取「CNTD(Order ID)」,並按一下「確定」
  16. 將 CNTD(Order ID) 從「標記」卡片上的「詳細資訊」中拖曳到檢視中的數字上方,然後放置欄位
  17. 在「編輯別名」對話方塊中,輸入更簡單易懂的名稱,並按一下「確定」

其他資訊

有關選項 2(詳細層級運算式)的注意事項:
  • 對於檢視中使用的日期層級,每個日期欄位必須有至少一筆記錄
  • FIXED 運算式將會針對 [出貨日期] 中的每個月傳回已出貨訂單的相異計數總計,無論檢視中 [出貨日期] 的月份出現在哪一個月份。例如,二月出貨的訂單是在一月和二月提交的。因此,FIXED 運算式本身將傳回 MY(Order Date) = January 和 MY(Order Date) = February 的 59 筆訂單。
  • 整個 IF 陳述式都包裝在 MIN() 中,以避免發生 LOD 運算式在 IF 陳述式內傳回重複值的問題。

有關選項 3(建立日期結構)的注意事項:
  • 也可以列出較高日期層級的所有日期,例如每個月的第一天。然後在步驟 4-2 和 4-5 中,使用聯結計算,該計算會將原始表中的日期設為正確的日期層級,例如 DATETRUNC('month', [Order Date])
  • 如果無法將資料表新增至包含所有日期的原始資料來源,則會針對包含所有日期的外部表建立跨資料庫聯結。這須升級到 Tableau Desktop 10.5 或更新版本,方便利用跨資料庫聯結功能的加入子句中的不等式。
  • 此選項將會複製資料,這可能會影響使用相同資料來源的其他檢視
  • 自 Tableau Prep 2021.3.1 起,無需建立日期清單,便可在 Tableau Prep 中建立日期 Scaffolding。請參閱填補順序資料的間隙以取得指示。
有關選項 4(資料混合)的注意事項:
  • 資料混合有許多限制。如需潛在問題的說明,請參閱疑難排解資料混合
  • 連結的日期必須與「關係」對話方塊中所選取最精細的日期層級完全相符。
  • 建立不同資料來源的欄位之間的關係時,每個欄位一次只能與另一個欄位建立關聯,這就是為什麼必須複製原始資料來源的原因
  • 與 [訂單日期] 相關聯的任何欄位都必須從 MY(Date) = MY(Order Date) 上連結的原始資料來源副本中提取,相對而言,對於與 [出貨日期] 相關聯的任何欄位也一樣。

顯示一段時間內的活動記錄
混合您的資料
在 Tableau 中建立詳細層級運算式
CASE 和 IF 陳述式包含詳細資訊等級運算式傳回意外結果
這篇文章是否解決了問題?