עשר טרנספורמציות חזותיות חדשות ב-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. תן שם לתפקיד ועל ה פרטי עבודה לשונית, בחר א תפקיד מתאים ושם לסקריפט Python.
  3. ב פרטי עבודה סעיף, הרחב מאפיינים מתקדמים וגלול מטה אל פרמטרים לעבודה.
  4. הזן פרמטר בשם --bucket והקצה כערך את שם הדלי שבו ברצונך להשתמש כדי לאחסן את הנתונים לדוגמה.
  5. הזן את הסקריפט הבא לעורך ה-AWS Glue shell:
    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. הפעל את העבודה והמתן עד שהיא תראה כמושלמה בהצלחה בלשונית ריצות (זה אמור להימשך מספר שניות בלבד).

כל הפעלה תייצר קובץ 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 על פרטי עבודה TAB.
  3. הוסף מקור נתונים S3 (תוכל לתת לו שם JSON files source) והזן את כתובת האתר של S3 שמתחתיה מאוחסנים הקבצים (לדוגמה, s3://<your bucket name>/transformsblog/inputdata/), ולאחר מכן בחר JSON כפורמט הנתונים.
  4. בחר להסיק סכמה כך שהוא מגדיר את סכימת הפלט בהתבסס על הנתונים.

מצומת מקור זה, תמשיך לשרשר טרנספורמציות. בעת הוספת כל טרנספורמציה, ודא שהצומת שנבחר הוא האחרון שנוסף כך שהוא יוקצה כהורה, אלא אם צוין אחרת בהוראות.

אם לא בחרת את ההורה הנכון, תמיד תוכל לערוך את ההורה על ידי בחירתו ובחירה בהורה אחר בחלונית התצורה.

תצורת אב הצומת

עבור כל צומת שנוסף, תיתן לו שם ספציפי (כך שמטרת הצומת מופיעה בגרף) ותצורה ב- לשנות TAB.

בכל פעם שהטרנספורמציה משנה את הסכימה (לדוגמה, הוסף עמודה חדשה), יש לעדכן את סכימת הפלט כך שהיא תהיה גלויה לטרנספורמציות במורד הזרם. אתה יכול לערוך באופן ידני את סכימת הפלט, אבל זה מעשי ובטוח יותר לעשות זאת באמצעות התצוגה המקדימה של הנתונים.
בנוסף, כך תוכל לוודא שהשינוי פועל עד כה כמצופה. כדי לעשות זאת, פתח את ה תצוגה מקדימה של נתונים הכרטיסייה עם הטרנספורמציה שנבחרה והתחל הפעלת תצוגה מקדימה. לאחר שווידאתם שהנתונים שעברו שינוי נראים כצפוי, עבור אל סכימת פלט לחץ על הכרטיסייה ובחר השתמש בסכימת תצוגה מקדימה של נתונים כדי לעדכן את הסכימה באופן אוטומטי.

כאשר אתה מוסיף סוגים חדשים של טרנספורמציות, התצוגה המקדימה עשויה להציג הודעה על תלות חסרה. כשזה קורה, בחר סיום סשן ולהתחיל אחד חדש, כך שהתצוגה המקדימה קולטת את הסוג החדש של צומת.

חלץ מידע על המכשיר

נתחיל בטיפול במידע על שם המכשיר כדי לנרמל אותו לעמודות שקל יותר לגשת אליהן בטבלת הפלט המתקבלת.

  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 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 עמודה.
    תצורת Pivot

בדרך כלל, היית מאחסן אותו במסד נתונים או קובץ חיצוני כלשהו לעיון; בדוגמה זו, אנו שומרים אותו כקובץ 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 ולא צריך להגדיר מיפוי.חיפוש תצורת
    בזמן כתיבת שורות אלה, טרנספורמציה של Lookup אינה נתמכת בתצוגה המקדימה של הנתונים והיא תציג שגיאה שהטבלה לא קיימת. זה מיועד רק לתצוגה מקדימה של הנתונים ואינו מונע מהעבודה לפעול כהלכה. השלבים הספורים שנותרו בפוסט אינם מחייבים אותך לעדכן את הסכימה. אם אתה צריך להפעיל תצוגה מקדימה של נתונים בצמתים אחרים, אתה יכול להסיר את צומת הבדיקה באופן זמני ולאחר מכן להחזיר אותו.
  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. הגדר פורמט פרקט עם דחיסה מהירה, וספק נתיב יעד S3 שמתחתיו לאחסן את התוצאות (בנפרד מהסיכום).
  3. בחר צור טבלה בקטלוג הנתונים ובריצות עוקבות, עדכן את הסכימה והוסף מחיצות חדשות.
  4. הזן מסד נתונים יעד ושם לטבלה החדשה, למשל: option_orders.
    תצורת כיור שולחן

החלק האחרון של התרשים אמור כעת להיראות דומה לחלק הבא, עם שני ענפים עבור שני הפלטים הנפרדים.
DAG

לאחר שתפעיל את העבודה בהצלחה, תוכל להשתמש בכלי כמו Athena כדי לסקור את הנתונים שהעבודה הפיקה על ידי שאילתה בטבלה החדשה. אתה יכול למצוא את הטבלה ברשימת אתנה ולבחור תצוגה מקדימה של טבלה או פשוט הפעל שאילתת SELECT (עדכון שם הטבלה לשם ולקטלוג שהשתמשת בהם):

SELECT * FROM default.option_orders limit 10

תוכן הטבלה שלך אמור להיראות דומה לצילום המסך הבא.
תוכן הטבלה

לנקות את

אם אינך רוצה לשמור את הדוגמה הזו, מחק את שתי המשימות שיצרת, את שתי הטבלאות ב- Athena ואת הנתיבים של S3 שבהם אוחסנו קבצי הקלט והפלט.

סיכום

בפוסט זה, הראינו כיצד ההמרה החדשה ב-AWS Glue Studio יכולה לעזור לך לבצע טרנספורמציה מתקדמת יותר עם מינימום תצורה. זה אומר שאתה יכול ליישם יותר מקרי שימוש ב-ETL מבלי שתצטרך לכתוב ולתחזק קוד כלשהו. הטרנספורמציות החדשות כבר זמינות ב-AWS Glue Studio, כך שתוכל להשתמש בטרנספורמציות החדשות היום בעבודות החזותיות שלך.


על הסופר

גונזלו הררוס הוא ארכיטקט ביג דאטה בכיר בצוות AWS Glue.

בול זמן:

עוד מ AWS Big Data