我的問題和圖表中的日期和時間不正確

您正在使用日期和時間進行計算,或在圖表中顯示它們,但是

  • 值似乎不正確,或
  • 摘要值不正確。

問題是否是由於時區?

根本原因:日期和時間使用不同的時區儲存,但在進行計算時,並未考慮部分或所有這些時區(即,問題是資料不一致)。

採取步驟

若要修正此問題,您需要這些問題的答案

  1. 您認為顯示不正確的資料的正確時區是什麼(即,正確答案是什麼)?
  2. 每個時間戳記上是否有明確的時區設定,或者是否在未設定時區的情況下儲存部分或所有時間戳記?例如,2019 年 12 月 1 日 00:00:00Z00 包含時區(在 Z 之後顯示),但 2019 年 12 月 1 日 沒有。
  3. 資料庫伺服器使用的時區是什麼?
  4. Metabase 使用的時區是什麼?

取得這些答案後,尋找像這樣的案例

  1. 您的問題或圖表正在比較或排序具有不一致或遺失時區的值。例如,如果航班的起飛和抵達時間以當地時間回報,則可能看起來在起飛前就抵達。
  2. 您的問題正在彙總具有不同時區的時間戳記:例如,您網站流量的「每日」總計包含超過 24 小時的資料,因為您使用的是來自東亞、歐洲和美洲的當地日期。

一旦您認為已找出問題,請深入研究以瞭解確切的時區轉換導致的根本問題。例如,假設您正在查看具有每日值的時間序列;如果您的錯誤發生在每週總計中,您可以

  1. 選取您知道數字不正確的特定日期。
  2. 按一下圖表中的資料點,或結果表格中的儲存格,然後選取「查看這些 X」。
  3. 在瀏覽器的另兩個索引標籤中開啟此問題。變更日期篩選器,讓一個索引標籤具有來自一天的基礎表格中的列,而另一個表格具有來自一天的基礎表格中的列。
  4. 檢查用於在基礎顯示中分組結果的日期欄位是否正確。如果它與您儲存在資料庫中的內容或您在另一個工具中的內容不同,則時間戳記正在整個範圍內錯誤地轉換。當您使用缺少明確時區的日期或時間時,通常會發生這種情況。
  5. 如果基礎時間戳記正確(如果它們具有明確的時區,則應該正確),則個別時間可能以與您想要的時區不同的時區分組為天。
  6. 若要找出它們轉換成的時區,請調整您正在查看的問題的日期篩選器上的時間,方法是將開始時間和開始日期向後移動一小時,直到您獲得正確的數字或已向後移動 12 小時。(如果您的任何時區包含印度、紐芬蘭或其他具有半步時區的司法管轄區,您可能需要以半小時的增量執行此操作。)
  7. 如果這樣做無效,請嘗試將開始時間和結束時間向前移動一小時,直到您獲得正確的數字或已向前移動 12 小時。
  8. 如果到此時您已獲得正確的值,則表示您的時區已轉換為您手動設定篩選器的向前或向後小時數。如果是這種情況,請檢查您提出的偏移是否符合資料倉儲的時區或 Metabase 本身的時區。

報告時區是否設定不正確?

根本原因:問題或圖表中的錯誤數字可能是由於 Metabase 使用的時區與資料倉儲使用的時區不符所造成。

採取步驟

  1. 管理設定 > 設定 > 在地化檢查報告時區設定
  2. 如果您使用的資料庫不支援報告時區設定,請確保 Metabase 的時區與資料庫的時區相符。Metabase 的時區是 Java 虛擬機器的時區,通常透過 -Duser.timezone<..> 參數或 JAVA_TIMEZONE 環境變數設定;其確切設定方式將取決於您啟動 Metabase 的方式。請注意,Metabase 的時區不會影響任何使用報告時區的資料庫。

SQL 查詢是否未遵循報告時區設定?

根本原因:我們目前未將報告時區套用至 SQL 查詢的結果。

採取步驟

在您的 SQL 查詢中明確設定報告時區。

例如,您可以使用 PostgreSQL 撰寫類似這樣的內容

SELECT column::TIMESTAMP AT TIME ZONE 'EST' AS column_est

此陳述式首先將欄轉換為 timestamp 資料類型,然後將 timestamp 轉換為 timestamptz 資料類型,時區為「EST」。

沒有明確時區的日期是否轉換為另一天?

根本原因:您正在依缺少時區的日期(而不是依時間)進行分組。

採取步驟

  1. 查看您的問題在資料模型參考中使用的每個時間欄位,並查看其中是否有任何欄位只是「日期」欄位。
  2. 如果是,請確保伺服器時區反映報告時區,因為在 Metabase 上執行查詢時,伺服器會將設定的時區套用至該日期。

您是否混合使用明確和隱含時區?

根本原因:您正在比較或對兩個日期執行算術運算,其中一個日期具有明確的時區,而另一個日期沒有。

採取步驟

  1. 這通常發生在使用多個欄位的問題中:例如,您正在篩選一個時間戳記,並依另一個時間戳記分組。檢查您在問題中使用的每個日期或時間的時區。
  2. 您需要為任何缺少明確時區的值明確設定時區。這需要透過 SQL 查詢或透過轉換資料庫中的資料來完成,以確保兩個時間戳記都具有時區。

閱讀其他Metabase 版本的文件。