แชร์ผ่าน


บทช่วยสอนส่วนที่ 1: นําเข้าข้อมูลลงใน Microsoft Fabric lakehouse โดยใช้ Apache Spark

ในบทช่วยสอนนี้ คุณจะรวบรวมข้อมูลลงใน Fabric lakehouses ในรูปแบบ delta lake คําศัพท์สําคัญบางคําที่ต้องทําความเข้าใจ:

  • เลคเฮ้าส์ - เลคเฮ้าส์ เป็นคอลเลกชันของไฟล์/โฟลเดอร์/ตารางที่แสดงถึงฐานข้อมูลผ่าน data lake ที่ใช้โดยกลไกจัดการ Spark และกลไก SQL สําหรับการประมวลผลข้อมูลขนาดใหญ่ และรวมถึงความสามารถที่เพิ่มขึ้นสําหรับธุรกรรม ACID เมื่อใช้ตารางที่มีการจัดรูปแบบ Delta แบบโอเพนซอร์ส

  • Delta Lake - Delta Lake เป็นเลเยอร์ที่เก็บข้อมูลแบบโอเพนซอร์สที่นําธุรกรรม ACID การจัดการเมตาดาต้าที่ปรับขนาดได้ และการประมวลผลชุดงานและการสตรีมข้อมูลไปยัง Apache Spark ตาราง Delta Lake เป็นรูปแบบตารางข้อมูลที่ขยายไฟล์ข้อมูล Parquet ด้วยบันทึกธุรกรรมตามไฟล์สําหรับธุรกรรม ACID และการจัดการเมตาดาต้าที่ปรับขนาดได้

  • Azure Open Datasets ได้รับการรวบรวมชุดข้อมูลสาธารณะที่คุณสามารถใช้เพื่อเพิ่มคุณลักษณะเฉพาะสถานการณ์ไปยังโซลูชันการเรียนรู้ของเครื่องสําหรับแบบจําลองที่ถูกต้องยิ่งขึ้น ชุดข้อมูลแบบเปิดอยู่ในระบบคลาวด์บน Microsoft Azure Storage และสามารถเข้าถึงได้โดยใช้วิธีต่าง ๆ รวมถึง Apache Spark, REST API, Data factory และเครื่องมืออื่น ๆ

ในบทช่วยสอนนี้ คุณจะใช้ Apache Spark เพื่อ:

  • อ่านข้อมูลจากคอนเทนเนอร์ Azure Open Datasets
  • เขียนข้อมูลลงในตาราง Delta ของ Fabric lakehouse

ข้อกำหนดเบื้องต้น

  • เพิ่มเลคเฮาส์ ลงในสมุดบันทึกนี้ คุณจะดาวน์โหลดข้อมูลจาก blob สาธารณะ จากนั้นจัดเก็บข้อมูลในเลคเฮ้าส์

ติดตามพร้อมกับในสมุดบันทึก

1-ingest-data.ipynb คือสมุดบันทึกที่มาพร้อมกับบทช่วยสอนนี้

เมื่อต้องการเปิดสมุดบันทึกที่มาพร้อมกับบทช่วยสอนนี้ ให้ทําตามคําแนะนําใน เตรียมระบบของคุณสําหรับบทช่วยสอนวิทยาศาสตร์ข้อมูล เพื่อนําเข้าสมุดบันทึกไปยังพื้นที่ทํางานของคุณ

ถ้าคุณต้องการคัดลอกและวางรหัสจากหน้านี้แทน คุณสามารถสร้าง สมุดบันทึกใหม่ได้

ตรวจสอบให้แน่ใจว่าแนบ lakehouse เข้ากับสมุดบันทึก ก่อนที่คุณจะเริ่มเรียกใช้รหัส

ข้อมูลการเลิกใช้บริการของธนาคาร

ชุดข้อมูลประกอบด้วยสถานะการเลิกใช้บริการของลูกค้า 10,000 ราย นอกจากนี้ยังมีแอตทริบิวต์ที่อาจส่งผลกระทบต่อการเลิกใช้บริการ เช่น:

  • คะแนนเครดิต
  • ตําแหน่งที่ตั้งทางภูมิศาสตร์ (เยอรมนี ฝรั่งเศส สเปน)
  • เพศ (ชาย, หญิง)
  • อายุ
  • ระยะเวลาการครอบครอง (ปีของการเป็นลูกค้าของธนาคาร)
  • ยอดคงเหลือบัญชี
  • เงินเดือนโดยประมาณ
  • จํานวนผลิตภัณฑ์ที่ลูกค้าซื้อผ่านธนาคาร
  • สถานะบัตรเครดิต (ว่าลูกค้ามีบัตรเครดิตหรือไม่)
  • สถานะสมาชิกที่ใช้งานอยู่ (ไม่ว่าจะเป็นลูกค้าของธนาคารที่ใช้งานอยู่หรือไม่)

ชุดข้อมูลยังรวมถึงคอลัมน์ เช่น หมายเลขแถว รหัสลูกค้า และนามสกุลของลูกค้าที่ไม่ควรมีผลกระทบต่อการตัดสินใจของลูกค้าในการออกจากธนาคาร

เหตุการณ์ที่กําหนดการเลิกใช้บริการของลูกค้าคือการปิดบัญชีธนาคารของลูกค้า คอลัมน์ exited ในชุดข้อมูลอ้างอิงถึงการละทิ้งลูกค้า มีบริบทไม่มากนักเกี่ยวกับแอตทริบิวต์เหล่านี้ดังนั้นคุณต้องดําเนินต่อโดยไม่ต้องมีข้อมูลพื้นหลังเกี่ยวกับชุดข้อมูล จุดมุ่งหมายคือการทําความเข้าใจว่าแอตทริบิวต์เหล่านี้มีส่วนร่วมใน exited สถานะอย่างไร

แถวตัวอย่างจากชุดข้อมูล:

"CustomerID" "นามสกุล" "CreditScore" "ภูมิศาสตร์" "เพศ" "อายุ" "ระยะเวลาการครอบครอง" "ยอดคงเหลือ" "NumOfProducts" "HasCrCard" "IsActiveMember" "ประมาณการเงินเดือน" "ออกแล้ว"
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

สำคัญ

ตรวจสอบให้แน่ใจว่าคุณ ได้เพิ่มเลคเฮาส์ ลงในสมุดบันทึกก่อนเรียกใช้งาน ความล้มเหลวในการทําเช่นนั้นจะส่งผลให้เกิดข้อผิดพลาด

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.")

คุณจะใช้ข้อมูลที่คุณเพิ่งนําเข้า: