【Power BI 教學】Power BI 日期關聯失敗案例:Date 欄位含時間導致 DateTable 無法篩選

Power BI 日期關聯失敗案例:Date 欄位含時間導致 DateTable 無法篩選

TROUBLESHOOTING CASE // Power BI 模型除錯經驗

一、問題背景

在 Power BI 中,我有兩類資料:

1. DateTable
- 每一天一筆
- Date 為純日期,例如:2026/01/01、2026/01/02、2026/01/03

2. Sheet1_Sheet
- 原始資料中的 Date 實際上包含「日期 + 時間」
- 例如:2026/01/03 03:31:57、2026/01/10 06:18:31

Power BI 模型設定為:
DateTable[Date] 1 ───── * Sheet1_Sheet[Date]
並使用:
- 一對多 1:*
- 單向篩選
- DateTable → Sheet1_Sheet

PHENOMENON // 異常現象

二、發生的現象

建立關聯後,看起來所有設定都正常。

沒有使用 DateTable 篩選時:
Sheet1_Sheet 的資料可以正常顯示。

但只要使用:
DateTable[Year](例如選擇 2026),Sheet1_Sheet 的資料就全部消失。同時 DateTable 的 Year Slicer 中還出現了 (空白),這表示需要進一步檢查 DateTable 與明細表的日期是否真的能匹配。

MISJUDGMENT // 容易誤判的地方

三、容易誤判的地方

一開始最容易認為:Sheet1_Sheet[Date] 已經在 Power BI 中設定成「日期」,所以應該可以跟 DateTable[Date] 關聯。

但這次實際測試證明不能只靠「資料類型顯示為日期」判斷。原始 Date 欄位本身包含時間資訊。即使在 Power BI 將資料類型設定為「日期」,Relationship 仍然沒有成功匹配。

CHECK // 資料匹配驗證

四、如何確認日期到底有沒有匹配?

可以在 Sheet1_Sheet 建立一個暫時的檢查欄:

Date_Match_Check =
IF (
    ISBLANK ( Sheet1_Sheet[Date] ),
    "日期空白",
    IF (
        CONTAINS (
            DateTable,
            DateTable[Date], Sheet1_Sheet[Date]
        ),
        "OK",
        "找不到日期"
    )
)

測試結果顯示:找不到日期(持續重複)。

再建立年份檢查:

Year_Check = YEAR ( Sheet1_Sheet[Date] )

年份又能正常得到:2020、2020、2020... 等。

因此可以進一步鎖定:日期欄可以被 Power BI 辨識為日期/時間資料,但原始 Date 值與 DateTable[Date] 並沒有完全匹配。

SOLUTION // 建立純日期欄位

五、最後有效的解決方法

不要繼續使用原本的 Sheet1_Sheet[Date] 建立 Relationship。直接建立一個乾淨的純日期欄位:

DateOnly =
DATE (
    YEAR ( Sheet1_Sheet[Date] ),
    MONTH ( Sheet1_Sheet[Date] ),
    DAY ( Sheet1_Sheet[Date] )
)

這個欄位只重新組成:年 + 月 + 日。例如原始資料 2026/01/03 03:31:57,新的 DateOnly 即為 2026/01/03。

RELATIONSHIP // 關聯設定調整

六、Relationship 改用 DateOnly

原本:
DateTable[Date] (1) ───── (*) Sheet1_Sheet[Date]

改成:
DateTable[Date] (1) ───── (*) Sheet1_Sheet[DateOnly]

設定:
- 基數:一對多 1:*
- DateTable:1 端
- Sheet1_Sheet:* 端
- 交叉篩選方向:單一
- 關聯作用中:是

修改後,DateTable[Year] 即可正常篩選 Sheet1_Sheet,問題解決。

EXPERIENCE // 核心經驗總結

七、這次問題最重要的經驗

1. 「顯示格式」與「實際值」要分開看
Power BI 中看到 2026/01/03,不一定代表底層原始值一開始就是單純的 2026/01/03,原始資料可能實際來自 2026/01/03 03:31:57。發生日期關聯異常時,不要只看畫面顯示格式。

2. Relationship 必須確認實際值能匹配
DateTable 的 2026/01/03 要對 Fact Table 的 2026/01/03,而不是表面顯示相似、實際來源卻帶有時間資訊的 DateTime。

3. 最穩定的方法是另外建立 DateOnly
若分析只需要「日期」,可以保留原始 DateTime,再另外建立 DateOnly 欄位專門用於 DateTable Relationship,這樣也不會破壞原始資料。

WORKFLOW // 快速排查步驟

八、日後遇到類似問題的快速 Troubleshooting 流程

如果再次發生:「不選日期有資料,一選 DateTable 年/月,資料就全部消失」,建議依序檢查:

Step 1 檢查 Relationship
確認 DateTable[Date] (1) → (*) FactTable[Date] 作用中、單向、DateTable 位於 1 端。

Step 2 確認 DateTable 範圍
確認 DateTable 是否涵蓋完整資料年份(如 2020~2026)。

Step 3 檢查是否真的匹配
使用 CONTAINS 建立 Date_Match_Check 欄位。

Step 4 如果「找不到日期」
檢查來源 Date 是否包含時間。

Step 5 建立純日期欄
建立 DateOnly = DATE ( YEAR(...), MONTH(...), DAY(...) )。

Step 6 Relationship 改連 DateOnly
將關聯對準 DateOnly,再測試切片器篩選。

ARCHITECTURE // 實際模型架構

本次 FTE 實際模型架構

DateTable[Date]

├──→ FTE_Sheet[Date]

├──→ FTE_LRR_Sheet[Date]

└──→ Sheet1_Sheet[DateOnly]

其中所有關聯都是 DateTable 為 1、資料表為多、單向篩選。這個案例很值得保留,以後遇到 Excel、SQL 或其他來源只要帶有 DateTime,遇到日期切片失效時即可優先用這套方法快速排查。

💡 一句話記住這次經驗:Power BI 日期關聯失敗時,不要只看欄位「顯示成日期」,要確認實際值是否真正相等;若來源 Date 含時間,建立獨立的 DateOnly 欄位再與 DateTable 關聯,是最佳解決方案。

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...