عشرة تحولات مرئية جديدة في AWS Glue Studio

عشرة تحولات مرئية جديدة في AWS Glue Studio

عقدة المصدر: 2641422

AWS الغراء ستوديو هي واجهة رسومية تسهل إنشاء وظائف استخراج وتحويل وتحميل (ETL) وتشغيلها ومراقبتها في غراء AWS. يسمح لك بتكوين مهام سير عمل تحويل البيانات بشكل مرئي باستخدام العقد التي تمثل خطوات معالجة البيانات المختلفة ، والتي يتم تحويلها لاحقًا تلقائيًا إلى تعليمات برمجية للتشغيل.

AWS الغراء ستوديو صدر مؤخرا 10 تحويلات مرئية إضافية للسماح بإنشاء وظائف أكثر تقدمًا بطريقة مرئية دون مهارات الترميز. في هذا المنشور ، نناقش حالات الاستخدامات المحتملة التي تعكس احتياجات ETL الشائعة.

التحولات الجديدة التي سيتم عرضها في هذا المنشور هي: التسلسل ، سلسلة الانقسام ، الصفيف إلى الأعمدة ، إضافة الطابع الزمني الحالي ، الصفوف المحورية إلى الأعمدة ، إلغاء تنشيط الأعمدة إلى الصفوف ، البحث ، صفيف التفجير أو تعيين الأعمدة ، العمود المشتق ، ومعالجة الموازنة التلقائية .

حل نظرة عامة

في حالة الاستخدام هذه ، لدينا بعض ملفات JSON مع عمليات خيارات المخزون. نريد إجراء بعض التحولات قبل تخزين البيانات لتسهيل تحليلها ، ونريد أيضًا إنتاج ملخص منفصل لمجموعة البيانات.

في مجموعة البيانات هذه ، يمثل كل صف تجارة عقود الخيارات. الخيارات هي أدوات مالية توفر الحق - ولكن ليس الالتزام - لشراء أو بيع أسهم الأسهم بسعر ثابت (يسمى  سعر الإضراب) قبل تاريخ انتهاء الصلاحية المحدد.

ادخال البيانات

تتبع البيانات المخطط التالي:

  • رقم التعريف الخاص بالطلب - معرف فريد
  • رمز - رمز يعتمد بشكل عام على بضعة أحرف لتحديد الشركة التي تصدر أسهم الأسهم الأساسية
  • صك - الاسم الذي يحدد الخيار المحدد الذي يتم شراؤه أو بيعه
  • عملة - كود العملة ISO الذي يتم التعبير عن السعر به
  • السعر - المبلغ الذي تم دفعه لشراء كل عقد خيار (في معظم البورصات ، يسمح لك عقد واحد بشراء أو بيع 100 سهم من الأسهم)
  • تبادل - رمز مركز الصرف أو مكان تداول الخيار
  • باعت - قائمة بعدد العقود التي تم تخصيصها لملء أمر البيع عندما تكون هذه صفقة بيع
  • اشترى - قائمة بعدد العقود التي تم تخصيصها لملء أمر الشراء عندما تكون هذه صفقة شراء

فيما يلي عينة من البيانات التركيبية التي تم إنشاؤها لهذا المنشور:

{"order_id": 1679931512485, "symbol": "AMZN", "instrument": "AMZN MAR 24 23 102 PUT", "currency": "usd", "price": 17.18, "exchange": "EDGX", "bought": [18, 38]}
{"order_id": 1679931512486, "symbol": "BMW.DE", "instrument": "BMW.DE MAR 24 23 96 PUT", "currency": "eur", "price": 2.98, "exchange": "XETR", "bought": [28]}
{"order_id": 1679931512487, "symbol": "BMW.DE", "instrument": "BMW.DE APR 28 23 101 CALL", "currency": "eur", "price": 14.71, "exchange": "XETR", "sold": [9, 59, 54]}
{"order_id": 1679931512489, "symbol": "JPM", "instrument": "JPM JUN 30 23 140 CALL", "currency": "usd", "price": 11.83, "exchange": "EDGX", "bought": [33, 42, 55, 67]}
{"order_id": 1679931512490, "symbol": "SIE.DE", "instrument": "SIE.DE MAR 24 23 149 CALL", "currency": "eur", "price": 13.68, "exchange": "XETR", "bought": [96, 89, 82]}
{"order_id": 1679931512491, "symbol": "NKE", "instrument": "NKE MAR 24 23 112 CALL", "currency": "usd", "price": 3.23, "exchange": "EDGX", "sold": [67]}
{"order_id": 1679931512492, "symbol": "AMZN", "instrument": "AMZN MAY 26 23 95 CALL", "currency": "usd", "price": 11.44, "exchange": "EDGX", "sold": [41, 62, 12]}
{"order_id": 1679931512493, "symbol": "JPM", "instrument": "JPM MAR 24 23 121 PUT", "currency": "usd", "price": 1.0, "exchange": "EDGX", "bought": [61, 34]}
{"order_id": 1679931512494, "symbol": "SAP.DE", "instrument": "SAP.DE MAR 24 23 132 CALL", "currency": "eur", "price": 15.9, "exchange": "XETR", "bought": [69, 33]}

متطلبات ETL

تحتوي هذه البيانات على عدد من الخصائص الفريدة ، كما هو موجود غالبًا في الأنظمة القديمة ، والتي تجعل استخدام البيانات أكثر صعوبة.

فيما يلي متطلبات ETL:

  • يحتوي اسم الأداة على معلومات قيمة مخصصة للإنسان لفهمها ؛ نريد تطبيعه في أعمدة منفصلة لتحليل أسهل.
  • السمات bought و sold متنافي يمكننا دمجها في عمود واحد بأرقام العقود ولدينا عمود آخر يشير إلى ما إذا كانت العقود تم شراؤها أو بيعها بهذا الطلب.
  • نريد الاحتفاظ بالمعلومات المتعلقة بتخصيصات العقود الفردية ولكن كصفوف فردية بدلاً من إجبار المستخدمين على التعامل مع مجموعة من الأرقام. يمكننا جمع الأرقام ، لكننا نفقد المعلومات حول كيفية تنفيذ الأمر (مما يشير إلى سيولة السوق). بدلاً من ذلك ، نختار إلغاء تنسيق الجدول بحيث يحتوي كل صف على عدد واحد من العقود ، وتقسيم الطلبات بأرقام متعددة إلى صفوف منفصلة. في تنسيق عمودي مضغوط ، غالبًا ما يكون الحجم الإضافي لمجموعة البيانات لهذا التكرار صغيرًا عند تطبيق الضغط ، لذلك من المقبول تسهيل الاستعلام عن مجموعة البيانات.
  • نريد إنشاء جدول ملخص للحجم لكل نوع خيار (شراء وبيع) لكل سهم. يوفر هذا مؤشرا على معنويات السوق لكل سهم والسوق بشكل عام (الجشع مقابل الخوف).
  • لتمكين ملخصات التجارة الإجمالية ، نريد توفير الإجمالي الكلي لكل عملية وتوحيد العملة إلى الدولار الأمريكي ، باستخدام مرجع تحويل تقريبي.
  • نريد إضافة التاريخ الذي حدثت فيه هذه التحولات. قد يكون هذا مفيدًا ، على سبيل المثال ، للحصول على مرجع حول وقت إجراء تحويل العملة.

بناءً على هذه المتطلبات ، ستنتج الوظيفة ناتجين:

  • ملف CSV مع ملخص لعدد العقود لكل رمز ونوع
  • جدول كتالوج للاحتفاظ بتاريخ النظام ، بعد إجراء التحولات المشار إليها
    مخطط البيانات

المتطلبات الأساسية المسبقة

ستحتاج إلى دلو S3 الخاص بك لمتابعة حالة الاستخدام هذه. لإنشاء دلو جديد ، ارجع إلى إنشاء دلو.

توليد بيانات تركيبية

لمتابعة هذا المنشور (أو تجربة هذا النوع من البيانات بنفسك) ، يمكنك إنشاء مجموعة البيانات هذه بشكل تركيبي. يمكن تشغيل نص Python النصي التالي على بيئة Python مع تثبيت Boto3 والوصول إليه خدمة تخزين أمازون البسيطة (أمازون S3).

لإنشاء البيانات ، أكمل الخطوات التالية:

  1. في AWS Glue Studio ، أنشئ وظيفة جديدة باستخدام الخيار محرر نصوص بايثون شل.
  2. إعطاء اسم الوظيفة وعلى تفاصيل الوظيفة علامة التبويب ، حدد أ دور مناسب واسم نص بايثون.
  3. في مجلة تفاصيل الوظيفة قسم ، توسيع خصائص متقدمة وانتقل الى معلمات الوظيفة.
  4. أدخل معلمة مسماة --bucket وقم بتعيين اسم الحاوية الذي تريد استخدامه لتخزين بيانات العينة كقيمة.
  5. أدخل النص التالي في محرر غلاف AWS Glue:
    import argparse
    import boto3
    from datetime import datetime
    import io
    import json
    import random
    import sys # Configuration
    parser = argparse.ArgumentParser()
    parser.add_argument('--bucket')
    args, ignore = parser.parse_known_args()
    if not args.bucket: raise Exception("This script requires an argument --bucket with the value specifying the S3 bucket where to store the files generated") data_bucket = args.bucket
    data_path = "transformsblog/inputdata"
    samples_per_file = 1000 # Create a single file with synthetic data samples
    s3 = boto3.client('s3')
    buff = io.BytesIO() sample_stocks = [("AMZN", 95, "usd"), ("NKE", 120, "usd"), ("JPM", 130, "usd"), ("KO", 130, "usd"), ("BMW.DE", 95, "eur"), ("SIE.DE", 140, "eur"), ("SAP.DE", 115, "eur")]
    option_type = ["PUT", "CALL"]
    operations = ["sold", "bought"]
    dates = ["MAR 24 23", "APR 28 23", "MAY 26 23", "JUN 30 23"]
    for i in range(samples_per_file): stock = random.choice(sample_stocks) symbol = stock[0] ref_price = stock[1] currency = stock[2] strike_price = round(ref_price * 0.9 + ref_price * random.uniform(0.01, 0.3)) sample = { "order_id": int(datetime.now().timestamp() * 1000) + i, "symbol": stock[0], "instrument":f"{symbol} {random.choice(dates)} {strike_price} {random.choice(option_type)}", "currency": currency, "price": round(random.uniform(0.5, 20.1), 2), "exchange": "EDGX" if currency == "usd" else "XETR" } sample[random.choice(operations)] = [random.randrange(1,100) for i in range(random.randrange(1,5))] buff.write(json.dumps(sample).encode()) buff.write("n".encode()) s3.put_object(Body=buff.getvalue(), Bucket=data_bucket, Key=f"{data_path}/{int(datetime.now().timestamp())}.json")

  6. قم بتشغيل المهمة وانتظر حتى تظهر على أنها مكتملة بنجاح في علامة التبويب Runs (يجب أن يستغرق الأمر بضع ثوانٍ فقط).

سينشئ كل تشغيل ملف JSON به 1,000 صف ضمن المجموعة المحددة والبادئة transformsblog/inputdata/. يمكنك تشغيل المهمة عدة مرات إذا كنت تريد الاختبار باستخدام المزيد من ملفات الإدخال.
كل سطر في البيانات التركيبية هو صف بيانات يمثل كائن JSON مثل ما يلي:

{ "order_id":1681986991888, "symbol":"AMZN", "instrument":"AMZN APR 28 23 100 PUT", "currency":"usd", "price":2.89, "exchange":"EDGX", "sold":[88,49]
}

أنشئ وظيفة AWS Glue المرئية

لإنشاء وظيفة AWS Glue المرئية ، أكمل الخطوات التالية:

  1. انتقل إلى AWS Glue Studio وأنشئ وظيفة باستخدام الخيار مرئي مع قماش فارغ.
  2. تعديل Untitled job لإعطائها اسمًا وتعيينها دور مناسب لـ AWS Glue على تفاصيل الوظيفة علامة التبويب.
  3. أضف مصدر بيانات S3 (يمكنك تسميته JSON files source) وأدخل عنوان URL الخاص بـ S3 الذي يتم تخزين الملفات تحته (على سبيل المثال ، s3://<your bucket name>/transformsblog/inputdata/) ، ثم حدد JSON كتنسيق البيانات.
  4. أختار استنتاج المخطط لذلك يقوم بتعيين مخطط الإخراج بناءً على البيانات.

من عقدة المصدر هذه ، ستستمر في تسلسل التحويلات. عند إضافة كل تحويل ، تأكد من أن العقدة المحددة هي آخر عقدة تمت إضافتها بحيث يتم تعيينها كأصل ، ما لم يُذكر خلاف ذلك في التعليمات.

إذا لم تحدد الوالد الصحيح ، يمكنك دائمًا تحرير الأصل عن طريق تحديده واختيار والد آخر في جزء التكوين.

تكوين أصل العقدة

لكل عقدة تمت إضافتها ، ستمنحها اسمًا محددًا (لذلك يظهر الغرض من العقدة في الرسم البياني) والتكوين في ملف تحول علامة التبويب.

في كل مرة يغير فيها التحويل المخطط (على سبيل المثال ، أضف عمودًا جديدًا) ، يحتاج مخطط الإخراج إلى التحديث حتى يكون مرئيًا للتحولات النهائية. يمكنك تحرير مخطط الإخراج يدويًا ، ولكن القيام بذلك يكون عمليًا وأكثر أمانًا باستخدام معاينة البيانات.
بالإضافة إلى ذلك ، بهذه الطريقة يمكنك التحقق من أن عملية التحويل تعمل بقدر ما هو متوقع. للقيام بذلك ، افتح ملف معاينة البيانات علامة التبويب مع التحويل المحدد وابدأ جلسة المعاينة. بعد التحقق من أن البيانات المحولة تبدو كما هو متوقع ، انتقل إلى مخطط الإخراج علامة التبويب واختيار استخدم مخطط معاينة البيانات لتحديث المخطط تلقائيًا.

أثناء إضافة أنواع جديدة من التحويلات ، قد تعرض المعاينة رسالة حول التبعية المفقودة. عندما يحدث هذا ، اختر جلسة نهاية وبدء واحدة جديدة ، لذلك تلتقط المعاينة النوع الجديد من العقدة.

استخراج معلومات الصك

لنبدأ بالتعامل مع المعلومات الموجودة على اسم الأداة لتطبيعها في أعمدة يسهل الوصول إليها في جدول الإخراج الناتج.

  1. إضافة سلسلة الانقسام العقدة وسمها Split instrument، والتي ستعمل على ترميز عمود الأداة باستخدام تعبير عادي للمسافة البيضاء: s+ (يمكن استخدام مساحة واحدة في هذه الحالة ، ولكن هذه الطريقة أكثر مرونة ووضوحًا بصريًا).
  2. نريد الاحتفاظ بمعلومات الأداة الأصلية كما هي ، لذا أدخل اسم عمود جديدًا للصفيف المقسم: instrument_arr.
    التكوين الانقسام
  3. إضافة صفيف إلى أعمدة العقدة وسمها Instrument columns لتحويل عمود الصفيف الذي تم إنشاؤه للتو إلى حقول جديدة ، باستثناء symbol، والتي لدينا بالفعل عمود لها.
  4. حدد العمود instrument_arr، تخطي الرمز المميز الأول واطلب منه استخراج أعمدة الإخراج month, day, year, strike_price, type باستخدام الفهارس 2, 3, 4, 5, 6 (المسافات بعد الفواصل مخصصة للقراءة ، ولا تؤثر على التكوين).
    تكوين صفيف

يتم التعبير عن السنة المستخرجة برقمين فقط ؛ دعنا نضع حلاً مؤقتًا لنفترض أنه في هذا القرن إذا استخدموا فقط رقمين.

  1. إضافة العمود المشتق العقدة وسمها Four digits year.
  2. أدخل year كعمود مشتق بحيث يتخطاه ، وأدخل تعبير SQL التالي:
    CASE WHEN length(year) = 2 THEN ('20' || year) ELSE year END
    تكوين العمود المشتق من العام

للراحة ، نبني ملف expiration_date الحقل الذي يمكن أن يكون للمستخدم مرجعًا للتاريخ الأخير الذي يمكن فيه ممارسة الخيار.

  1. إضافة أعمدة متسلسلة العقدة وسمها Build expiration date.
  2. اسم العمود الجديد expiration_date، حدد الأعمدة year, monthو day (بهذا الترتيب) ، وواصلة كمباعد.
    تكوين التاريخ المتسلسل

يجب أن يبدو الرسم التخطيطي حتى الآن مثل المثال التالي.

DAG

يجب أن تبدو معاينة البيانات للأعمدة الجديدة حتى الآن مثل لقطة الشاشة التالية.

معاينة البيانات

تطبيع عدد العقود

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

أولاً ، دعنا ندمج المبالغ في عمود واحد.

  1. إضافة أعمدة Unpivot في صفوف العقدة وسمها Unpivot actions.
  2. اختر الأعمدة bought و sold لإلغاء تنشيط وتخزين الأسماء والقيم في الأعمدة المسماة action و contracts، على التوالي.
    التكوين غير المحوري
    لاحظ في المعاينة أن العمود الجديد contracts لا يزال مصفوفة من الأرقام بعد هذا التحول.
  1. إضافة انفجر صفيف أو خريطة في صفوف صف اسمه Explode contracts.
  2. اختيار contracts العمود وأدخل contracts كعمود جديد لتجاوزه (لسنا بحاجة للاحتفاظ بالصفيف الأصلي).

تُظهر المعاينة الآن أن كل صف يحتوي على ملف contracts المبلغ ، وبقية الحقول هي نفسها.

هذا يعني أيضا أن order_id لم يعد مفتاحًا فريدًا. بالنسبة لحالات الاستخدام الخاصة بك ، عليك أن تقرر كيفية نمذجة بياناتك وما إذا كنت تريد إلغاء التطابق أم لا.
تنفجر التكوين

لقطة الشاشة التالية هي مثال لما تبدو عليه الأعمدة الجديدة بعد التحولات حتى الآن.
معاينة البيانات

قم بإنشاء جدول ملخص

الآن تقوم بإنشاء جدول ملخص مع عدد العقود المتداولة لكل نوع وكل رمز سهم.

دعنا نفترض لأغراض التوضيح أن الملفات التي تمت معالجتها تنتمي إلى يوم واحد ، لذا فإن هذا الملخص يمنح مستخدمي الأعمال معلومات حول اهتمامات السوق ومشاعره في ذلك اليوم.

  1. إضافة حدد الحقول العقدة وحدد الأعمدة التالية للاحتفاظ بها للملخص: symbol, typeو contracts.
    الحقول المختارة
  2. إضافة الصفوف المحورية في الأعمدة العقدة وسمها Pivot summary.
  3. تتجمع على contracts العمود باستخدام sum واختر تحويل ملف type العمود.
    التكوين المحوري

عادة ، يمكنك تخزينه على قاعدة بيانات خارجية أو ملف كمرجع ؛ في هذا المثال ، نحفظه كملف CSV على Amazon S3.

  1. إضافة معالجة التوازن الذاتي العقدة وسمها Single output file.
  2. على الرغم من استخدام نوع التحويل هذا عادةً لتحسين التوازي ، إلا أننا نستخدمه هنا لتقليل الإخراج إلى ملف واحد. لذلك ، أدخل 1 في تكوين عدد أقسام.
    تكوين التوازن التلقائي
  3. أضف هدف S3 وقم بتسميته CSV Contract summary.
  4. اختر CSV كتنسيق البيانات وأدخل مسار S3 حيث يُسمح لدور الوظيفة بتخزين الملفات.

يجب أن يبدو الجزء الأخير من الوظيفة الآن مثل المثال التالي.
DAG

  1. احفظ وشغل الوظيفة. استخدم ال أشواط علامة التبويب للتحقق عند الانتهاء بنجاح.
    ستجد ملفًا تحت هذا المسار يكون CSV ، على الرغم من عدم وجود هذا الامتداد. ستحتاج على الأرجح إلى إضافة الامتداد بعد تنزيله لفتحه.
    في أداة يمكنها قراءة ملف CSV ، يجب أن يبدو الملخص مشابهًا للمثال التالي.
    جدول

نظف الأعمدة المؤقتة

استعدادًا لحفظ الطلبات في جدول تاريخي للتحليل المستقبلي ، دعنا ننظف بعض الأعمدة المؤقتة التي تم إنشاؤها على طول الطريق.

  1. إضافة إسقاط الحقول العقدة ذات Explode contracts العقدة المحددة كأصل لها (نحن نتفرع من خط أنابيب البيانات لتوليد مخرجات منفصلة).
  2. حدد الحقول التي تريد تجاهلها: instrument_arr, month, dayو year.
    الباقي الذي نريد الاحتفاظ به حتى يتم حفظهم في الجدول التاريخي الذي سننشئه لاحقًا.
    إفلات الحقول

توحيد العملة

تحتوي هذه البيانات التركيبية على عمليات وهمية على عملتين ، ولكن في نظام حقيقي يمكنك الحصول على عملات من الأسواق في جميع أنحاء العالم. من المفيد توحيد العملات التي يتم التعامل معها في عملة مرجعية واحدة بحيث يمكن مقارنتها وتجميعها بسهولة لإعداد التقارير والتحليل.

نستخدم أمازون أثينا لمحاكاة جدول بتحويلات العملات التقريبية التي يتم تحديثها بشكل دوري (هنا نفترض أننا نعالج الطلبات في الوقت المناسب بما يكفي ليكون التحويل ممثلاً معقولاً لأغراض المقارنة).

  1. افتح وحدة تحكم Athena في نفس المنطقة التي تستخدم فيها AWS Glue.
  2. قم بتشغيل الاستعلام التالي لإنشاء الجدول عن طريق تعيين موقع S3 حيث يمكن لكل من أدوار Athena و AWS Glue القراءة والكتابة. أيضًا ، قد ترغب في تخزين الجدول في قاعدة بيانات مختلفة عن default (إذا قمت بذلك ، فقم بتحديث اسم الجدول المؤهل وفقًا لذلك في الأمثلة المتوفرة).
    CREATE EXTERNAL TABLE default.exchange_rates(currency string, exchange_rate double)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    STORED AS TEXTFILE
    LOCATION 's3://<enter some bucket>/exchange_rates/';

  3. أدخل بعض نماذج التحويلات في الجدول:
    INSERT INTO default.exchange_rates VALUES ('usd', 1.0), ('eur', 1.09), ('gbp', 1.24);
  4. يجب أن تكون الآن قادرًا على عرض الجدول باستخدام الاستعلام التالي:
    SELECT * FROM default.exchange_rates
  5. مرة أخرى إلى وظيفة AWS Glue المرئية ، أضف ملف بحث عقدة (كعنصر تابع لـ Drop Fields) وتسميته Exchange rate.
  6. أدخل الاسم المؤهل للجدول الذي أنشأته للتو باستخدام currency كمفتاح وحدد ملف exchange_rate مجال للاستخدام.
    نظرًا لأن الحقل يحمل الاسم نفسه في كل من البيانات وجدول البحث ، يمكننا فقط إدخال الاسم currency ولا تحتاج إلى تحديد تعيين.تكوين البحث
    في وقت كتابة هذه السطور ، لم يكن تحويل البحث مدعومًا في معاينة البيانات وسيظهر خطأ يفيد بأن الجدول غير موجود. هذا فقط لمعاينة البيانات ولا يمنع المهمة من العمل بشكل صحيح. الخطوات القليلة المتبقية للنشر لا تتطلب منك تحديث المخطط. إذا كنت بحاجة إلى تشغيل معاينة البيانات على العقد الأخرى ، يمكنك إزالة عقدة البحث مؤقتًا ثم إعادتها مرة أخرى.
  7. إضافة العمود المشتق العقدة وسمها Total in usd.
  8. اسم العمود المشتق total_usd واستخدم تعبير SQL التالي:
    round(contracts * price * exchange_rate, 2)
    تكوين تحويل العملات
  9. إضافة أضف الطابع الزمني الحالي العقدة وتسمية العمود ingest_date.
  10. استخدم التنسيق %Y-%m-%d للطابع الزمني الخاص بك (لأغراض العرض ، نحن نستخدم التاريخ فقط ؛ يمكنك جعله أكثر دقة إذا كنت ترغب في ذلك).
    تكوين الطابع الزمني

احفظ جدول الطلبات التاريخية

لحفظ جدول الطلبات التاريخية ، أكمل الخطوات التالية:

  1. أضف عقدة هدف S3 وقم بتسميتها Orders table.
  2. قم بتكوين تنسيق Parquet باستخدام ضغط سريع ، وتوفير مسار هدف S3 يتم تخزين النتائج تحته (منفصل عن الملخص).
  3. أختار قم بإنشاء جدول في كتالوج البيانات وفي عمليات التشغيل اللاحقة ، قم بتحديث المخطط وإضافة أقسام جديدة.
  4. أدخل قاعدة بيانات هدف واسمًا للجدول الجديد ، على سبيل المثال: option_orders.
    تكوين حوض الجدول

يجب أن يبدو الجزء الأخير من الرسم البياني الآن مشابهًا لما يلي ، مع وجود فرعين للمخرجات المنفصلة.
DAG

بعد تشغيل الوظيفة بنجاح ، يمكنك استخدام أداة مثل Athena لمراجعة البيانات التي أنتجتها الوظيفة عن طريق الاستعلام عن الجدول الجديد. يمكنك العثور على الجدول في قائمة أثينا واختيار جدول المعاينة أو قم فقط بتشغيل استعلام SELECT (تحديث اسم الجدول إلى الاسم والكتالوج الذي استخدمته):

SELECT * FROM default.option_orders limit 10

يجب أن يبدو محتوى الجدول الخاص بك مشابهًا للقطة الشاشة التالية.
محتوى الجدول

تنظيف

إذا كنت لا تريد الاحتفاظ بهذا المثال ، فاحذف الوظيفتين اللتين أنشأتهما ، والجدولين في أثينا ، ومسارات S3 حيث تم تخزين ملفات الإدخال والإخراج.

وفي الختام

في هذا المنشور ، أظهرنا كيف يمكن للتحولات الجديدة في AWS Glue Studio أن تساعدك على إجراء تحويل أكثر تقدمًا مع الحد الأدنى من التكوين. هذا يعني أنه يمكنك تنفيذ المزيد من حالات استخدامات ETL دون الحاجة إلى كتابة أي تعليمات برمجية والاحتفاظ بها. تتوفر التحولات الجديدة بالفعل في AWS Glue Studio ، لذا يمكنك استخدام التحولات الجديدة اليوم في مهامك المرئية.


عن المؤلف

جونزالو هيريروس هو كبير مهندسي البيانات الضخمة في فريق AWS Glue.

الطابع الزمني:

اكثر من بيانات AWS الضخمة