تبسيط التحويل في رسم خرائط تدفق البيانات

ينطبق على:Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

تتوفر تدفقات البيانات في كل من Azure Data Factory وخطوط أنابيب Azure Synapse. تنطبق هذه المقالة على تعيين تدفقات البيانات. إذا كنت جديداً في مجال التحويلات، فيرجى الرجوع إلى المقالة التمهيدية تحويل البيانات باستخدام تدفق بيانات التعيين.

قم باستخدام التحويل المبسط لأخذ قيم الصفيف داخل الهياكل الهرمية مثل JSON وافتحها في صفوف فردية. تُعرف هذه العملية بإلغاء البيانات المكررة.

التكوين

يحتوي التحويل المبسط على إعدادات التكوين التالية.

Screenshot that shows flatten settings.

Unroll من قِبل

تحديد صفيف لإلغاء التسجيل. سيكون لبياناتِ الإخراج صف واحد لكل عنصر في كل صفيف. إذا كان Unroll من قِبل الصفيف في صف الإدخال خالي أو فارغ، فسيكون هناك صف إخراج واحد بقيم غير مسجلة على أنها خالية. لديك خيار إلغاء تسجيل أكثر من صفيف واحد لكل تحويل Flatten. انقر فوق زر الجمع (+) لتضمين صفائف متعددة في تحويل واحد مسطح. يمكنك استخدام دالات تعريف تدفق بيانات ADF هنا بما في ذلك nametype واستخدام مطابقة النمط إلى صفائف unroll التي تطابق تلك المعايير. عند تضمين صفائف متعددة في تحويل Flatten واحد، ستكون نتائجك منتجا ديكارتيا لجميع قيم الصفيف المحتملة.

Screenshot that shows flatten results.

جذر Unroll

بشكل افتراضي، تحويل تبسيط صفيف unrolls إلى أعلى التسلسل الهرمي موجود في. يمكنك اختياريًا تحديد مصفوفة كجذر unroll الخاص بك. يلزم أن يكون جذر unroll صفيفة من الكائنات المعقدة التي إما يكون أو يحتوي على unroll من قِبل الصفيف. في حال تم تحديد جذر unroll، فإن بيانات الإخراج تحتوي على صف واحد على الأقل لكل عنصر في جذر unroll. في حال لم يكن صف الإدخال يتضمن أية عناصر في جذر unroll، فسيتم إسقاطه من بيانات الإخراج. سيؤدي اختيار جذر unroll دائما إلى إخراج عدد أقل من الصفوف أو يساويه من السلوك الافتراضي.

رسم المخططات بالتبسيط

على غرار التحويل المحدد، قم باختيار إسقاط البنية الجديدة من الحقول الواردة ونشر تكرار الصفيف. إذا تم تعيين مصفوفة غير منسقة، فسيكون عمود الإخراج من نفس نوع البيانات مثل المصفوفة. في حال كان unroll من قِبل الصفيف عبارة عن مصفوفة من العناصر المعقدة التي تحتوي على مصفوفات فرعية، فإن تعيين عنصر من هذا النطاق الفرعي سينتج صفيف.

ارجع إلى علامة التبويب لفحص ومعاينة البيانات للتحقق من إخراج التعيين.

التعيين المسند للقواعد

يدعم التحويل المبسط التعيين المسند إلى القواعد مما يتيح لك إنشاء تحويلات ديناميكية ومرنة التي من شأنها تسوية المصفوفات استنادًا إلى القواعد وتسوية البنيات استنادًا إلى مستويات التسلسل الهرمي.

Flatten pattern

شرط المطابقة

قم بإدخال شرط مطابقة النمط للعمود أو الأعمدة التي ترغب في تبسيطها باستخدام المطابقة أو الأنماط. مثال: like(name,'cust%')

تجاوز العمود العميق

إعداد اختياري يخبر الخدمة بالتعامل مع جميع الأعمدة الفرعية لعنصر فردي معقد بدلاً من معالجة الكائن المعقد كعمود كامل.

مستوى التسلسل الهرمي {0}

اختر مستوى التسلسل الهرمي الذي ترغب في توسيعه.

مطابقة الاسم (تعبير عادي)

اختياريًا، اختر التعبير عن تطابق اسمك كتعبير عادي في هذا المربع، بدلاً من استخدام شرط المطابقة أعلاه.

الأمثلة

ارجع لعنصر JSON التالي للحصول على الأمثلة التالية للتحويل المبسط

{
  "name":"MSFT","location":"Redmond", "satellites": ["Bay Area", "Shanghai"],
  "goods": {
    "trade":true, "customers":["government", "distributer", "retail"],
    "orders":[
        {"orderId":1,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":2}]}},
        {"orderId":2,"orderTotal":323.34,"shipped":{"orderItems":[{"itemName":"Mice","itemQty":2},{"itemName":"Keyboard","itemQty":1}]}}
    ]}}
{"name":"Company1","location":"Seattle", "satellites": ["New York"],
  "goods":{"trade":false, "customers":["store1", "store2"],
  "orders":[
      {"orderId":4,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":3}]}},
      {"orderId":5,"orderTotal":343.24,"shipped":{"orderItems":[{"itemName":"Chair","itemQty":4},{"itemName":"Lamp","itemQty":2}]}}
    ]}}
{"name": "Company2", "location": "Bellevue",
  "goods": {"trade": true, "customers":["Bank"], "orders": [{"orderId": 4, "orderTotal": 123.34}]}}
{"name": "Company3", "location": "Kirkland"}

لا يوجد جذر unroll مع صفيف سلسلة

Unroll من قِبل جذر Unroll إسقاط
البضائع. العملاء بلا اسم
العميل = البضائع. العميل

الإخراج

{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}

لا يوجد جذر unroll مع صفيف معقد

Unroll من قِبل جذر Unroll إسقاط
goods.orders.shipped.orderItems بلا اسم
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
الموقع= الموقع

الإخراج

{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}
{ 'Company3', null, null, null, 'Kirkland'}

نفس الجذر مثل صفيف unroll

Unroll من قِبل جذر Unroll إسقاط
البضائع. الأوامر البضائع. الأوامر اسم
goods.orders.shipped.orderItems.itemName
goods.customers
موقع

الإخراج

{ 'MSFT', ['Laptop','Charger'], ['government','distributer','retail'], 'Redmond'}
{ 'MSFT', ['Mice', 'Keyboard'], ['government','distributer','retail'], 'Redmond'}
{ 'Company1', ['Laptop','Charger'], ['store', 'store2'], 'Seattle'}
{ 'Company1', ['Chair', 'Lamp'], ['store', 'store2'], 'Seattle'}
{ 'Company2', null, ['Bank'], 'Bellevue'}

جذر unroll مع صفيف معقد

Unroll من قِبل جذر Unroll إسقاط
goods.orders.shipped.orderItem البضائع. الأوامر اسم
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
الموقع= الموقع

الإخراج

{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}

البرنامج النصي لتدفق البيانات

بناء الجملة

<incomingStream>
foldDown(unroll(<unroll cols>),
    mapColumn(
        name,
        each(<array>(type == '<arrayDataType>')),
        each(<array>, match(true())),
        location
    )) ~> <transformationName>

مثال

source foldDown(unroll(goods.orders.shipped.orderItems, goods.orders),
    mapColumn(
        name,
        orderId = goods.orders.orderId,
        itemName = goods.orders.shipped.orderItems.itemName,
        itemQty = goods.orders.shipped.orderItems.itemQty,
        location = location
    ),
    skipDuplicateMapInputs: false,
    skipDuplicateMapOutputs: false)