為什麼次要合併結果查詢中會出現空值?

合併結果是一項方便的功能,可快速結合不同探索的資料,且無須在 LookML 中進行開發。合併結果會在主要查詢和次要查詢之間有效執行左鍵結,也就是說,欄位名稱、比對值和最終結果資料表,都取決於次要查詢的資料如何與主要查詢相符。

這可能會導致在執行探索之間的合併作業時,產生非預期的結果。合併結果說明文件會說明其中幾種情況,例如:

不過,如果您預期次要查詢的值會與主要查詢中的值相符,但最終結果顯示空值,該怎麼辦呢?

本頁面說明如何排解這個意外結果。

用途範例

以下範例用途是根據含有使用者和訂單資訊的電子商務資料集範例。在本例中,您想合併一個查詢 (每個城市的使用者人數,「使用者人數」) 和次要查詢 (「訂單數量」),並以「使用者城市」和「使用者州」為依據進行分組:

主要查詢

主要查詢是「使用者人數」,按「使用者所在城市」分組:

探索顯示主要查詢結果的合併結果資料表。

次要查詢

次要查詢是「訂單數量」,按「使用者所在城市」和「使用者所在州」分組:

探索顯示次要查詢結果的合併結果資料表。

合併規則會根據兩個查詢都含有的欄位「Users City」合併兩個查詢。您熟悉先前連結的說明文件中說明的資料集和預期的合併結果行為,因此知道每個資料列中的每個城市都應與州和使用者人數相符。您希望合併結果會比對所有值,且不會顯示空值。

不過,結果中有空值。超過一半的城市沒有與州或訂單數量相符:

合併結果資料表格,顯示次要查詢欄位的空值。

解決方案

別緊張。如果您確定資料中含有相符的值 (請嘗試執行個別查詢,確認是否確實如此),則有幾種可能的解決方案可修正這個結果,包括:

  • 以相同方式排序每個來源查詢。
  • 提高來源查詢的列數上限。

以相同方式排序每個來源查詢

由於合併結果是根據探索建立,而探索預設限制為 500 列,因此有時合併的查詢結果不會納入最終結果。

如要修正這個問題,您可以編輯排序個別來源查詢,讓兩者更相符。 

在範例用途中,主要查詢會依 Users City 由低至高排序。次要查詢則不會。為了讓兩項查詢的結果更相符,您可以排序次要查詢,方法與主要查詢相同,也就是以使用者所在城市為依據,依升冪排序。

將次要查詢排序成與主要查詢相似,即可在最終合併時更準確地比對結果:

合併結果資料表,顯示主要和次要查詢欄位的非空值。

提高來源查詢列數上限

與前述第一個解決方案類似,來源查詢中設定的列限制可能會導致非預期的空值。具體來說,在這個案例中,次要查詢 (受限於 500 列的預設值) 的資料列不足以與主要查詢產生的所有資料列相符,因此在最終合併作業中會顯示空值結果。

如要增加次要查詢中的資料列數量,以便與主要查詢相符,您可以提高次要查詢的資料列上限。這會導致更多可能的資料列與主要查詢相符,且次要查詢欄中的空值較少:

合併結果資料表,顯示主要和次要查詢欄位的非空值。

摘要

如果合併結果不如預期,您可以採取下列步驟進行疑難排解:

  1. 在「探索」的齒輪選單中選取「清除快取資料並重新整理」選項,確保查詢可取得最新的結果。
  2. 確認在顯示空值的來源查詢之間,是否有相符的值,如合併結果說明文件的「如果一個查詢沒有相符的資料值,該怎麼辦?」一節所述。
  3. 排序來源查詢,以便更準確地比對。
  4. 將來源查詢的列數上限提高至超過預設值,即可顯示更多可比對及合併的資料列。
  5. 如果上述解決方案都無法解決行為問題,請盡可能將彙整邏輯硬式編碼至 LookML,以便取得更精確的結果。