共用方式為


教學課程第 1 部分:使用 Apache Spark 將資料內嵌至 Microsoft Fabric Lakehouse

在本教學課程中,您會將資料內嵌至 Delta Lakehouse 格式的 Fabric Lakehouse。 要了解的一些重要字詞:

  • Lakehouse - Lakehouse 是檔案/資料夾/資料表的集合,代表 Spark 引擎和 SQL 引擎用於巨量資料處理之 Lakehouse 上的資料庫,並在使用開放原始碼差異格式化資料表時,包含 ACID 交易的增強功能。

  • Delta Lake - Delta Lake 是開放原始碼儲存體層,可將 ACID 交易、可調整的中繼資料管理,以及批次和串流資料處理帶入 Apache Spark。 Delta Lake 資料表是一種資料表格式,可擴充 Parquet 資料檔案,其中包含 ACID 交易的檔案型交易記錄和可調整的中繼資料管理。

  • Azure 開放資料集是策展的公用資料集,您將其用於機器學習解決方案的案例專屬功能,以獲得更準確的模型。 開放資料集位於 Microsoft Azure 儲存體的雲端,可透過各種方法存取,包括 Apache Spark、REST API、Data Factory 和其他工具。

在本教學課程中,您可以使用 Apache Spark 來:

  • 從 Azure 開放資料集容器讀取資料。
  • 將資料寫入 Fabric Lakehouse 差異資料表。

必要條件

  • 將 Lakehouse 新增至此筆記本。 您將會從公用 Blob 下載資料,然後將資料儲存在 Lakehouse 中。

遵循筆記本中的指示

1-ingest-data.ipynb 是本教學課程隨附的筆記本。

銀行流失資料

資料集包含 10,000 個客戶的流失狀態。 它也包含可能會影響流失率的屬性,例如:

  • 信用分數
  • 地理位置 (德國、法國、西班牙)
  • 性別 (男性、女性)
  • 年齡
  • 會員年資 (成為銀行客戶的年資)
  • 帳戶餘額
  • 估算薪資
  • 客戶透過銀行購買的產品數目
  • 信用卡狀態 (客戶是否有信用卡)
  • 作用中成員狀態 (是否為作用中的銀行客戶)

資料集也包含資料列號碼、客戶識別碼和客戶姓氏等資料行,這些資料行對客戶離開銀行的決定沒有影響。

定義客戶流失的事件是客戶銀行帳戶關閉。 資料集中的資料行 exited 是指客戶的放棄。 這些屬性沒有太多可用的內容,因此您必須在沒有資料集背景資訊的情況下繼續。 其目的旨在了解這些屬性如何參與 exited 狀態。

資料集的範例資料列:

"CustomerID" "Surname" "CreditScore" "Geography" "Gender" "Age" "Tenure" "Balance" "NumOfProducts" "HasCrCard" "IsActiveMember" "EstimatedSalary" "Exited"
15634602 Hargrave 619 法國 女性 42 2 0.00 1 1 1 101348.88 1
15647311 Hill 608 西班牙 女性 41 1 83807.86 1 0 1 112542.58 0

下載資料集並上傳至 Lakehouse

提示

藉由定義下列參數,可以輕鬆地將此筆記本與不同的資料集搭配使用。

IS_CUSTOM_DATA = False  # if TRUE, dataset has to be uploaded manually

DATA_ROOT = "/lakehouse/default"
DATA_FOLDER = "Files/churn"  # folder with data files
DATA_FILE = "churn.csv"  # data file name

此程式碼會下載公開可用的資料集版本,然後將其儲存在 Fabric Lakehouse 中。

重要

在執行之前,請確定已將 Lakehouse 新增至筆記本。 無法執行這項操作時,將會發生錯誤。

import os, requests
if not IS_CUSTOM_DATA:
# Download demo data files into lakehouse if not exist
    remote_url = "https://synapseaisolutionsa.blob.core.windows.net/public/bankcustomerchurn"
    file_list = [DATA_FILE]
    download_path = f"{DATA_ROOT}/{DATA_FOLDER}/raw"

    if not os.path.exists("/lakehouse/default"):
        raise FileNotFoundError(
            "Default lakehouse not found, please add a lakehouse and restart the session."
        )
    os.makedirs(download_path, exist_ok=True)
    for fname in file_list:
        if not os.path.exists(f"{download_path}/{fname}"):
            r = requests.get(f"{remote_url}/{fname}", timeout=30)
            with open(f"{download_path}/{fname}", "wb") as f:
                f.write(r.content)
    print("Downloaded demo data files into lakehouse.")

您將使用剛擷取的資料: