แชร์ผ่าน


บทช่วยสอน: อัปเกรดไปป์ไลน์ Azure Data Factory ของคุณเป็นไปป์ไลน์ Fabric โดยใช้ PowerShell

คุณสามารถโยกย้ายไปป์ไลน์ Azure Data Factory (ADF) ของคุณไปยัง Microsoft Fabric โดยใช้โมดูล Microsoft.FabricPipelineUpgrade PowerShell บทช่วยสอนนี้แสดงตัวอย่างของขั้นตอนทั้งหมดในการดําเนินการย้ายข้อมูลพร้อมคําแนะนํา ภาพหน้าจอ และขั้นตอนการแก้ไขปัญหาเฉพาะ สําหรับคําแนะนําทั่วไปที่กระชับยิ่งขึ้น โปรดดูภาพรวม

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

ในการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีข้อกําหนดเบื้องต้นดังต่อไปนี้:

เตรียมอัปเกรด

ก่อนที่คุณจะเริ่มอัปเกรดไปป์ไลน์ ให้ตรวจสอบว่า สภาพแวดล้อมของคุณมีเครื่องมือและโมดูลที่จําเป็น:

ติดตั้ง PowerShell 7.4.2 (x64) หรือใหม่กว่า

คุณต้องมี PowerShell 7.4.2 หรือใหม่กว่าบนเครื่องของคุณ

ดาวน์โหลด PowerShell

ติดตั้งและนําเข้าโมดูล FabricPipelineUpgrade

  1. เปิด PowerShell 7 (x64)

  2. เลือกเมนู เริ่ม ค้นหา PowerShell 7 เปิดเมนูบริบทของแอป แล้วเลือก เรียกใช้ในฐานะผู้ดูแลระบบ

    สกรีนช็อตของไอคอน PowerShell

  3. ในหน้าต่าง PowerShell ที่ยกระดับ ให้ติดตั้งโมดูลจากแกลเลอรี PowerShell:

    Install-Module Microsoft.FabricPipelineUpgrade -Repository PSGallery -SkipPublisherCheck
    
  4. นําเข้าโมดูลไปยังเซสชันของคุณ:

    Import-Module Microsoft.FabricPipelineUpgrade
    
  5. หากคุณเห็นข้อผิดพลาดของนโยบายการลงนามหรือการดําเนินการ ให้เรียกใช้คําสั่งนี้แล้วนําเข้าโมดูลอีกครั้ง:

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
    

ตรวจสอบการติดตั้งของคุณ

เรียกใช้คําสั่งนี้เพื่อยืนยันว่าโหลดโมดูลอย่างถูกต้อง:

Get-Command -Module Microsoft.FabricPipelineUpgrade

สกรีนช็อตของเอาต์พุตคําสั่งโมดูล

เปิดหน้าต่าง PowerShell ของคุณไว้ คุณจะใช้มันสําหรับการอัปเกรด

การอัปเกรดครั้งแรกของคุณ

เราจะสร้างไปป์ไลน์ตัวอย่างและอัปเกรดเป็น Fabric เพื่อเป็นคําแนะนําของกระบวนการ

สร้างไปป์ไลน์ ADF อย่างง่าย

ใน Azure Data Factory Studio สร้างไปป์ไลน์และเพิ่มกิจกรรม รอ คุณสามารถตั้งชื่ออะไรก็ได้ แต่บทช่วยสอนนี้ใช้ pipeline1

เตรียมสภาพแวดล้อม PowerShell ของคุณ

  1. ในหน้าต่าง PowerShell ของคุณ ให้แทนที่ค่าและ <your subscription ID> เรียกใช้คําสั่งเหล่านี้ใน PowerShell เพื่อลงชื่อเข้าใช้และตั้งค่าการสมัครใช้งานของคุณ:

    Add-AzAccount 
    Select-AzSubscription -SubscriptionId <your subscription ID>
    
  2. เรียกใช้คําสั่งนี้เพื่อจัดเก็บโทเค็น ADF ที่ปลอดภัยสําหรับเซสชันของคุณ:

    $adfSecureToken = (Get-AzAccessToken -ResourceUrl "https://management.azure.com/").Token
    
  3. ในหน้าต่าง PowerShell ให้แทนที่ค่าสําหรับ <your subscription ID>, <your Resource Group Name>และ <your Factory Name>และ และเรียกใช้:

    Import-AdfFactory -SubscriptionId <your subscription ID> -ResourceGroupName <your Resource Group Name> -FactoryName <your Factory Name> -PipelineName "pipeline1" -AdfToken $adfSecureToken
    

    เคล็ดลับ

    สําหรับโรงงานข้อมูลที่มีไปป์ไลน์หลายรายการ คุณสามารถนําเข้าไปป์ไลน์ทั้งหมดพร้อมกันได้โดยเว้น -PipelineName พารามิเตอร์

คําสั่งนี้จะโหลดไปป์ไลน์และสิ่งประดิษฐ์ที่เกี่ยวข้องจาก Azure Data Factory ของคุณ และสร้าง JSON สําหรับ "ความคืบหน้าในการอัปเกรด" ครั้งแรก

{
  "state": "Succeeded",
  "alerts": [],
  "result": {
    "importedResources": {
      "type": "AdfSupportFile",
      "adfName": "testdatafactory,
      "pipelines": {
        "pipeline1": {
          "name": "pipeline1",
          "type": "Microsoft.DataFactory/factories/pipelines",
          "properties": {
            "activities": [
              {
                "name": "Wait1",
                "type": "Wait",
                "dependsOn": [],
                "userProperties": [],
                "typeProperties": {
                  "waitTimeInSeconds": 1
                }
              }
            ],
            ],
            "policy": {
              "elapsedTimeMetric": {}
            },
            "annotations": [],
            "lastPublishTime": "2025-09-09T02:46:36Z"
          },
          "etag": "aaaaaaaa-bbbb-cccc-1111-222222222222"
        }
      },
      "datasets": {},
      "linkedServices": {},
      "triggers": {}
    }
  },
  "resolutions": []
}

ความหมายของฟิลด์เหล่านี้

  • state: แสดงสถานะ ถ้ามันบอกว่า Succeeded แสดงว่าคุณเก่ง
  • การแจ้งเตือน: แสดงรายการปัญหาหรือข้อมูลเพิ่มเติม
  • result: แสดงผลลัพธ์ ที่นี่ importedResources จะแสดงรายการสิ่งประดิษฐ์ ADF
  • ความละเอียด: ใช้สําหรับการแมป ADF Linked Services กับ Fabric Connections (ส่วนที่ใหม่กว่า)

แปลงไปป์ไลน์ ADF ของคุณเป็นไปป์ไลน์แฟบริค

  1. ในหน้าต่าง PowerShell ของคุณ ให้ใช้คําสั่ง Import-AdfFactory ที่คุณเพิ่งเรียกใช้ แล้วเพิ่ม | จากนั้นจึงใช้คําสั่ง ConvertTo-FabricResources ที่ส่วนท้ายของบรรทัด

    คําสั่งแบบเต็มของคุณควรมีลักษณะดังนี้:

    Import-AdfFactory -SubscriptionId <your subscription ID> -ResourceGroupName <your Resource Group Name> -FactoryName <your Factory Name> -PipelineName  "pipeline1" -AdfToken $adfSecureToken | ConvertTo-FabricResources
    
  2. เรียกใช้คําสั่ง คุณควรเห็นการตอบกลับดังนี้:

    {
      "state": "Succeeded",
      "alerts": [],
      "result": {
        "exportableFabricResources": [
          {
            "resourceType": "DataPipeline",
            "resourceName": "pipeline1",
            "resolve": [],
            "export": {
              "name": "pipeline1",
              "properties": {
                "activities": [
                  {
                    "name": "Wait1",
                    "type": "Wait",
                    "dependsOn": [],
                    "userProperties": [],
                    "description": null,
                    "typeProperties": {
                      "waitTimeInSeconds": 1
                    }
                  }
                ]
              },
              "annotations": []
            }
          }
        ]
      },
      "resolutions": []
    }
    

คุณจะยังคงเห็นความคืบหน้าการอัปเกรดมาตรฐาน แต่ตอนนี้ฟิลด์ผลลัพธ์รวมถึง exportableFabricResources นั่นเป็นสิ่งที่คาดหวัง คุณกําลังเตรียมทรัพยากร Fabric ให้พร้อมที่จะส่งออก

คุณจะได้เรียนรู้เกี่ยวกับฟิลด์ความละเอียดในภายหลัง สําหรับตอนนี้ ฟิลด์การส่งออกจะแสดงไปป์ไลน์ Fabric ที่มีกิจกรรม รอ

ถ้าคุณหยุดที่นี่ คําสั่งนี้จะทําหน้าที่เหมือน What-If: มันแสดงให้เห็นว่าการอัปเกรดจะสร้างอะไร และเป็นวิธีที่ดีในการตรวจสอบความถูกต้องของการอัปเกรดก่อนที่จะทําการเปลี่ยนแปลงใดๆ

รวบรวมข้อมูลจากพื้นที่ทํางาน Fabric ของคุณ

ก่อนส่งออกไปป์ไลน์ Fabric คุณจะต้องมีรายละเอียดเล็กน้อยจากพื้นที่ทํางาน Fabric ของคุณ เปิดไฟล์ข้อความเปล่าเพื่อคัดลอกค่าที่คุณต้องการในภายหลัง

  1. เปิด Microsoft Fabric UX และนําทางไปยังพื้นที่ทํางาน Data Factory ของคุณ

  2. พื้นที่ทํางานของคุณอยู่ในขอบเขต เช่น daily, dxt, msitหรือprod สังเกตภูมิภาคนี้ คุณจะต้องใช้ในภายหลัง หากคุณไม่แน่ใจ ให้ใช้prod

  3. ค้นหา Workspace ID ของคุณและคัดลอกลงในไฟล์ข้อความของคุณ

  4. เรียกใช้คําสั่ง PowerShell นี้เพื่อรับโทเค็นการเข้าถึง Fabric และจัดเก็บไว้สําหรับเซสชันของคุณ:

    $fabricSecureToken = (Get-AzAccessToken -ResourceUrl "https://analysis.windows.net/powerbi/api").Token
    

    เคล็ดลับ

    โทเค็นการเข้าถึงจะหมดอายุหลังจากผ่านไปประมาณหนึ่งชั่วโมง เมื่อเป็นเช่นนั้น ให้เรียกใช้คําสั่งอีกครั้ง คุณจะทราบว่าโทเค็นหมดอายุแล้วหาก Export-FabricResources แสดงข้อผิดพลาดการหมดอายุของโทเค็น

ส่งออกท่อส่งผ้า

  1. รวมรายละเอียดทั้งหมดที่คุณรวบรวมไว้ในคําสั่งนี้:

    Import-AdfFactory -SubscriptionId <your Subscription ID> -ResourceGroupName <your Resource Group Name> -FactoryName <your Data Factory Name> -PipelineName  "pipeline1" -AdfToken $adfSecureToken | ConvertTo-FabricResources | Export-FabricResources -Region <region> -Workspace <workspaceId> -Token $fabricSecureToken
    
  2. ตอนนี้คัดลอกคําสั่งของคุณจากเอกสารข้อความลงในหน้าต่าง PowerShell แล้วเรียกใช้คําสั่ง

    คุณควรเห็นการตอบกลับดังนี้:

    {
        "state": "Succeeded",
        "alerts": [],
        "result": {
          "exportedFabricResources": {
            "pipeline1": {
              "type": "DataPipeline",
              "workspaceId": "<your Workspace ID>",
              "id": "<The GUID of your new Pipeline>,
              "displayName": "pipeline1",
              "description": null
            }
          }
        }
      }
    

ซึ่งหมายความว่ามันได้ผล! ส่วน exportedFabricResources จะแสดงไปป์ไลน์ใหม่และรหัสของคุณ ตอนนี้ เปิดพื้นที่ทํางาน Fabric ของคุณใน Fabric UX รีเฟรชหน้า แล้วคุณจะเห็นไปป์ไลน์ 1 ในรายการ เปิดแล้วคุณจะพบสิ่งที่คุณคาดหวัง!

การอัปเกรดครั้งที่สอง: คัดลอกข้อมูลบางส่วน

การอัปเกรดครั้งที่สองนี้เหมือนกับครั้งแรก แต่แนะนําแนวคิดใหม่สองสามอย่าง:

  • ชุดข้อมูลและ LinkedServices
  • มติ

ปัจจุบัน Fabric Pipeline Upgrader รองรับ ชุดข้อมูลที่จํากัด ดังนั้นเราจะใช้การเชื่อมต่อ Azure Blob Storage และชุดข้อมูล JSON มาดําดิ่งกันเถอะ

  1. ใน ADF Studio ให้สร้างไปป์ไลน์ที่ คัดลอก ไฟล์ JSON จากโฟลเดอร์หนึ่งในที่เก็บข้อมูล Azure Blob ของคุณไปยังอีกโฟลเดอร์หนึ่ง เราจะเรียกไปป์ไลน์นี้ว่า "pipeline2" และการเชื่อมต่อที่เก็บข้อมูล Azure Blob "BlobStore1" แต่คุณสามารถใช้ชื่อใดก็ได้ที่คุณต้องการ

  2. เรียกใช้คําสั่ง What-If เดียวกันกับก่อนหน้านี้เพื่อนําเข้าไปป์ไลน์ของคุณและตรวจสอบว่าผลลัพธ์การย้ายข้อมูลจะเป็นอย่างไร อย่าลืมอัปเดตชื่อไปป์ไลน์

    Import-AdfFactory -SubscriptionId <your Subscription ID> -ResourceGroupName <your Resource Group Name> -FactoryName <your Data Factory Name> -PipelineName  "pipeline2" -AdfToken $adfSecureToken | ConvertTo-FabricResources
    

ในผลลัพธ์ ไปป์ไลน์มีลักษณะคล้ายกับก่อนหน้านี้ แต่ตอนนี้มีรายละเอียดเพิ่มเติม รวมถึง exportableFabricResources สองรายการ:

  • หนึ่งเดียวสําหรับการเชื่อมต่อ
  • หนึ่งสําหรับไปป์ไลน์

นี่คือตัวอย่างของส่วน การเชื่อมต่อ ของเอาต์พุต:

{
    "resourceName": "BlobStore1",
    "resourceType": "Connection",
    "resolve": [
    {
        "type": "LinkedServiceToConnectionId",
        "key": "BlobStore1",
        "targetPath": "id",
        "hint": {
        "linkedServiceName": "BlobStore1",
        "connectionType": "AzureBlobStorage",
        "datasource": "...",
        "template": {
            "type": "LinkedServiceToConnectionId",
            "key": "BlobStore1",
            "value": "<Fabric Connection ID>"
        }
        }
    }
    ],
    "export": {
    "id": "00000000-0000-0000-0000-000000000000"
    }
}

ขั้นตอนการแก้ไขกล่าวว่า: Find the correct GUID and insert it into the id field of this resource. สําหรับตอนนี้ ID เป็นศูนย์ทั้งหมด (GUID ว่างเปล่า) เนื่องจากผู้ส่งออกไม่สามารถแก้ไขได้ คําแนะนําจึงให้คําแนะนําเกี่ยวกับวิธีการแก้ไขปัญหา

ส่วน ไปป์ไลน์ มีขั้นตอนที่คล้ายกัน:

"resolve": [
  {
    "type": "AdfResourceNameToFabricResourceId",
    "key": "Connection:BlobStore1",
    "targetPath": "properties.activities[0].typeProperties.source.datasetSettings.externalReferences.connection"
  },
  {
    "type": "AdfResourceNameToFabricResourceId",
    "key": "Connection:BlobStore1",
    "targetPath": "properties.activities[0].typeProperties.sink.datasetSettings.externalReferences.connection"
  }
],

ขั้นตอนเหล่านี้ทําอะไรได้บ้าง

ขั้นตอนเหล่านี้ resolve เป็นคําแนะนําสําหรับคุณในการแมปบริการที่เชื่อมโยง ADF ของคุณกับ แหล่งที่มา ของกิจกรรมและ ซิงจ์ ด้วย Fabric Connection ID ที่สอดคล้องกัน

ทําไมสิ่งนี้ถึงเกิดขึ้น?

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

ตอนนี้เรามาส่งออก Fabric Pipeline (พยายาม 1)

  1. หากโทเค็นเพื่อการเข้าถึงของคุณหมดอายุ ให้รีเฟรชทันที

  2. เรียกใช้ขั้นตอนเดียวกับที่คุณใช้ในบทเรียนก่อนหน้า แต่สําหรับ "pipeline2" ในครั้งนี้

    Import-AdfFactory -SubscriptionId <your Subscription ID> -ResourceGroupName <your Resource Group Name> -FactoryName <your Data Factory Name> -PipelineName  "pipeline2" -AdfToken $adfSecureToken | ConvertTo-FabricResources | Export-FabricResources -Region <region> -Workspace <workspaceId> -Token $fabricSecureToken
    
  3. สิ่งนี้ล้มเหลว คราว Import | Convert | Export นี้คําสั่งจะส่งคืนบางอย่างเช่น:

    {
        "state": "Failed",
        "alerts": [
          {
            "severity": "RequiresUserAction",
            "details": "Please use the hint and template to create/find a new connection and add its ID to your resolutions.",
            "connectionHint": {
              "linkedServiceName": "BlobStore1",
              "connectionType": "AzureBlobStorage",
              "datasource": "...",
              "template": {
                "type": "LinkedServiceToConnectionId",
                "key": "BlobStore1",
                "value": "<Fabric Connection ID>"
              }
            }
          }
        ],
        "resolutions": [],
        "result": {}
      }
    

(ถ้าคุณอ่านตอนท้ายของขั้นตอนสุดท้าย คุณอาจจํา connectionHintได้ )

ข้อผิดพลาดระบุว่าเราจําเป็นต้อง "เพิ่ม ID ของการเชื่อมต่อในความละเอียดของคุณ"

เกิดอะไรขึ้น?

Fabric Upgrader ไม่สามารถสร้างการเชื่อมต่อ Fabric ได้ด้วยตัวเอง คุณต้องช่วยโดยการสร้างการเชื่อมต่อ Fabric ด้วยตนเอง แล้วแจ้งให้ตัวอัปเกรดทราบว่าควรใช้เมื่อใด

สร้างไฟล์ความละเอียด

  1. ขั้นแรก ให้สร้างไฟล์ Resolutions คุณสามารถตั้งชื่ออะไรก็ได้และบันทึกได้ทุกที่ที่คุณต้องการบนเครื่องของคุณ (ตราบใดที่ PowerShell สามารถเข้าถึงได้) แต่บทช่วยสอนนี้ใช้ D:\Resolutions.json.

  2. เริ่มต้นไฟล์ด้วย:

    [
    ]
    
  3. จากนั้น ให้เพิ่มความละเอียดที่ขาดหายไปจากคําใบ้ที่ตัวอัปเกรดของคุณให้ไว้ คุณสามารถค้นหาได้ภายใต้ 'เทมเพลต' ในส่วน connectionHint ของข้อความแสดงข้อผิดพลาด

    [
        "type": "LinkedServiceToConnectionId",
        "key": "BlobStore1",
        "value": "<Fabric Connection ID>"
    ]
    
  4. ต่อไปเราต้องหาว่า <Fabric Connection ID>. เมื่อต้องการทําเช่นนั้น ให้ไปที่พื้นที่ทํางาน Fabric ของคุณใน Fabric UX เลือกไอคอนรูปเฟืองที่มุมขวาบน จากนั้นเลือก จัดการการเชื่อมต่อและเกตเวย์

  5. หากยังไม่มีการเชื่อมต่อใน Fabric ให้สร้างการเชื่อมต่อใหม่ไปยังบัญชี Azure Blob Storage เดียวกันกับที่ไปป์ไลน์ ADF ของคุณใช้ คุณสามารถตั้งชื่ออะไรก็ได้ แต่บทช่วยสอนนี้ใช้ "myblob"

  6. หลังจากสร้างการเชื่อมต่อแล้ว ให้วางเมาส์เหนือปุ่มจุดไข่ปลาถัดจากชื่อการเชื่อมต่อเพื่อแสดงเมนู

  7. เลือก การตั้งค่า จากเมนู จากนั้นคัดลอก ID การเชื่อมต่อ และวางลงในไฟล์ความละเอียดของคุณแทน<Fabric Connection ID>

  8. ไฟล์ความละเอียดของคุณควรมีลักษณะดังนี้ (ของคุณจะ value แตกต่างออกไป):

    [
        {
            "type": "LinkedServiceToConnectionId",
            "key": "BlobStore1",
            "value": "dddddddd-9999-0000-1111-eeeeeeeeeeee"
        }
    ]
    
  9. ในขณะที่คุณทําอยู่ คุณสามารถเพิ่มความคิดเห็นในความละเอียดของคุณดังนี้:

    [
       {
          "comment": "Resolve the ADF 'BlobStore1' LinkedService to the Fabric 'myblob' Connection",
          "type": "LinkedServiceToConnectionId",
          "key": "BlobStore1",
          "value": "dddddddd-9999-0000-1111-eeeeeeeeeeee"
       }
    ]
    

cmdlet Import-FabricResolutions

คุณสามารถนําเข้าไฟล์ความละเอียดนี้เพื่อตรวจสอบว่าไฟล์นั้นทําอะไรได้บ้าง

ใน PowerShell ให้เรียกใช้:

Import-FabricResolutions -rf "D:\Resolutions.json"

คุณควรดู:

{
  "state": "Succeeded",
  "alerts": [],
  "result": {},
  "resolutions": [
    {
      "type": "LinkedServiceToConnectionId",
      "key": "BlobStore1",
      "value": "dddddddd-9999-0000-1111-eeeeeeeeeeee"
    }
  ]
}

นี่เป็นออบเจ็กต์ความคืบหน้าการอัปเกรดอีกรายการหนึ่ง แต่ตอนนี้ resolutions ฟิลด์ถูกเติมข้อมูลแล้ว

คุณสามารถเรียกใช้Import-FabricResolutionsได้ทุกจุดในห่วงโซ่คําสั่งก่อนหน้านี้Export-FabricResources มติจะดําเนินการต่อไปในขั้นตอนต่อมา

ส่งออกไปป์ไลน์ผ้า (พยายาม 2)

ตอนนี้เรามีไฟล์ความละเอียดแล้วเราสามารถลองส่งออกอีกครั้งหลังจากเพิ่ม Import-FabricResolutions ขั้นตอน

  1. อัปเดตคําสั่งของคุณโดยเพิ่ม Import-FabricResolutions ระหว่าง Convert และ Export:

    Import-AdfFactory -SubscriptionId <your Subscription ID> -ResourceGroupName <your Resource Group Name> -FactoryName <your Data Factory Name> -PipelineName  "pipeline2" -AdfToken $adfSecureToken | ConvertTo-FabricResources | Import-FabricResolutions -ResolutionsFilename "<path to your resolutions file>" | Export-FabricResources -Region <region> -Workspace <workspaceId> -Token $fabricSecureToken
    
  2. เรียกใช้คําสั่งใน PowerShell

คราวนี้ได้ผล! อีกครั้ง ส่วน exportedFabricResources จะแสดงไปป์ไลน์ใหม่และรหัสของคุณ

ตอนนี้เปิดพื้นที่ทํางาน Fabric ของคุณใน Fabric UX รีเฟรชหน้า แล้วคุณจะเห็นไปป์ไลน์ 1 ในรายการ เปิดแล้วคุณจะพบสิ่งที่คุณคาดหวัง!

ขั้นตอนถัดไป

เมื่อคุณอัปเกรดไปป์ไลน์สองรายการสําเร็จแล้ว คุณสามารถใช้สิ่งที่คุณเรียนรู้เพื่ออัปเกรดไปป์ไลน์เพิ่มเติมได้