共用方式為


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

在本教學課程中,您會將數據內嵌至 Delta Lakehouse 格式的 Fabric Lakehouse。 要瞭解的一些重要詞彙:

  • Lakehouse - Lakehouse 是檔案/資料夾/數據表的集合,代表Spark引擎和 SQL 引擎用於巨量數據處理之數據湖上的資料庫,並在使用開放原始碼 Delta 格式化數據表時包含 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 是本教學課程隨附的筆記本。

若要開啟本教學課程隨附的筆記本,請遵循準備系統以進行數據科學教學課程中的指示,將筆記本匯入您的工作區。

如果您想要複製並貼上此頁面中的程式碼,您可以 建立新的筆記本

開始執行程序代碼之前,請務必將 Lakehouse 附加至筆記本

銀行流失數據

數據集包含 10,000 個客戶的變換狀態。 它也包含可能會影響流失的屬性,例如:

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

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

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

資料集的範例資料列:

“CustomerID” “Surname” “CreditScore” “Geography” “Gender” “年齡” “任期” “餘額” “NumOfProducts” “HasCrCard” “IsActiveMember” “EstimatedSalary” “Exited”
15634602 哈格雷夫 619 法國 女性 42 2 0.00 1 1 1 101348.88 1
15647311 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.")

您將使用您剛擷取的數據: