產生主鍵

以資料庫術語來說,主鍵是一個資料欄或一組資料欄,可用於唯一識別資料表中的資料列。範例:

  • 若為記錄資料或其他交易資料,時間戳記通常為不重複的 ID。

    提示:如果您認為您的資料集需要主要 ID,請在刪除可能有用的資料欄前,先嘗試識別或建立一個主要 ID。

  • 產品資訊通常含有 SKU ID。若並未提供,則可能需要品牌、規格加上型號的組合,可使用以下所述的方法建立一個 ID。

組織完善的來源資料很可能已有這項資訊,但是在某些情況下,您可能需要產生專屬的主鍵。

提示:在「轉換器」頁面中檢查資料集是否有主鍵最快的方式,就是將字串型資料的資料直方圖內的類別數量與資料列的數量交互比較。如果數字相等,就適合將資料欄就當做主鍵使用。但是,如果曾彙整其他的資料集,請務必重新檢查欄位是否適用,且可能需要建構新的主鍵欄位。請注意,該數量是套用於顯示的樣本上,而非整個資料集。

本節提供了兩種在資料集中產生主鍵的方法。

不重複資料列 ID 的方法

第一次將資料集載入「轉換器」頁面時,可以在左側看見一排黑點。若資訊尚能使用,只要將游標移至這些黑點上,即可查看從原始來源擷取的資料列數量。此方法是根據資料列的數量來產生主鍵,當您最後的輸出結果中含有的合併資料集數量相對較少時,就相當合用。

附註:部分轉換會導致原始資料列排序資訊不可用,請參閱來源中繼資料參照

提示:當您第一次載入資料集至「Transformer」(轉換器) 頁面時,請產生一個包含原始資料列資訊的資料欄,如下所示:

轉換名稱 New formula
參數:公式類型 Single row formula
參數:公式 SOURCEROWNUMBER()
參數:新資料欄名稱 origRowId

當您所有資料集的各個方案完成初次推斷且結構化後,就相當適合加入此種轉換。

標準化格式設定

此資料欄的輸出結果是資料集從 1 或 2 到最後一個資料列的數字值。建議您將這些值標準化,當做不重複的 ID 使用。舉例而言,當在設定一組有順序的訂單時,可能想要在不重複的資料列 ID 前面加上代碼,並設定長度固定的格式,如下所示:

origRowIdkeyPrefixprimaryKey
1ORD000ORD0001
2ORD000ORD0001
ORD000
10ORD00ORD0010
ORD00
99ORD00ORD0099
100ORD0ORD0100

此種建構作業會產生長度一致的主鍵。假設已建立好 origRowId 資料欄,就可以使用下列步驟,將其格式設定標準化。

步驟:

  1. 將此資料欄變更為字串類型。請在資料欄中的資料類型下拉式選單中,選取 [字串]
  2. 建立資料欄,欄中必須包含前置 ID 和合適數量的零。邏輯接下來會依據 origRowId 中的值長度,產生具有合適數量的零的字串。

    轉換名稱 New formula
    參數:公式類型 Single row formula
    參數:公式 IF(LEN(origRowId) > 3, 'ORD', IF(LEN(origRowId) > 2, 'ORD0',IF(LEN(origRowId) > 1, 'ORD00','ORD000')))
    參數:新資料欄名稱 keyPrefix

    注意:下列工作在原始資料集內最多可處理 10,000 個資料列。當您的資料列數目超過 10,000 時,就必須另外新增 IF 子句。

  3. 現在您可以將這些資料欄合併在一起:

    轉換名稱 Merge columns
    參數:資料欄 keyPrefix,origRowId
    參數:新資料欄名稱 primaryKey
  4. 現在您可以刪除前置資料欄:

    轉換名稱 Delete columns
    參數:資料欄 keyPrefix
    參數:動作 Delete selected columns

請將這些步驟套用至想要在合併到輸出資料集內的所有資料集上。

合併資料集

在您合併或充實資料集後,可以將來自每個資料集的原始資料列 ID 欄位結合在一起,以使用下列方法在合併的資料集中建立超級主鍵:

合併欄位方法

如果最終資料集內含有多個合併的資料集,這個用來建立主鍵的基本方法,是用來在最終資料集中找出可代表整體不重複 ID 的結合欄位。資料欄:

  • LastName
  • FirstName
  • TestNumber
  • TestScore

由於每個人都有多個測試資料的例項,因此沒有可用來當做主鍵使用的單一欄位。

步驟:

  1. 在「Transformer」(轉換器) 頁面中載入資料集。
  2. 找出可共同對資料列進行唯一識別的資料欄。在 TestScores-All 範例中,這些資料欄如下所示:
    1. LastName
    2. FirstName
    3. TestNumber

      注意:您也許可使用 LastName 和 TestNumber 來設定鍵值,但這點無法保證。如果資料集隨時間變更,以這些資料欄為依據的鍵值可能會毀損。

  3. 使用 merge 轉換並將這些資料欄結合成為新資料欄,如下所示:

    轉換名稱 Merge columns
    參數:資料欄 LastName,FirstName,TestNum
    參數:分隔符 '-'
    參數:新資料欄名稱 TestID

    with 子句會識別合併資料欄值之間的分隔符號。

  4. 資料值看起來應該如下所示:

    TestID
    Smith-Joe-2
    Doe-Jane-4
    Jones-Jack-1
  5. 在部分情況下,您可能會想要刪除主鍵的來源資料欄。
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁