AWS Glue Studio میں دس نئے بصری تبدیلیاں

AWS Glue Studio میں دس نئے بصری تبدیلیاں

ماخذ نوڈ: 2641422

AWS گلو اسٹوڈیو ایک گرافیکل انٹرفیس ہے جو اس میں ایکسٹریکٹ، ٹرانسفارم، اور لوڈ (ETL) جابز بنانا، چلانا اور مانیٹر کرنا آسان بناتا ہے۔ AWS گلو. یہ آپ کو نوڈس کا استعمال کرتے ہوئے ڈیٹا ٹرانسفارمیشن ورک فلوز کو بصری طور پر تحریر کرنے کی اجازت دیتا ہے جو ڈیٹا ہینڈلنگ کے مختلف مراحل کی نمائندگی کرتے ہیں، جو بعد میں چلانے کے لیے خود بخود کوڈ میں تبدیل ہو جاتے ہیں۔

AWS گلو اسٹوڈیو حال ہی میں جاری کوڈنگ کی مہارت کے بغیر بصری انداز میں مزید جدید ملازمتیں تخلیق کرنے کی اجازت دینے کے لیے 10 مزید بصری تبدیلیاں۔ اس پوسٹ میں، ہم ممکنہ استعمال کے معاملات پر تبادلہ خیال کرتے ہیں جو عام ETL ضروریات کی عکاسی کرتے ہیں۔

اس پوسٹ میں جو نئی تبدیلیاں دکھائی جائیں گی وہ یہ ہیں: کنکٹینٹ، اسپلٹ سٹرنگ، ارے ٹو کالم، موجودہ ٹائم اسٹیمپ شامل کریں، کالموں میں محور قطار، قطاروں میں کالموں کو ان پیوٹ کریں، تلاش کریں، ایکسپلوڈ اری یا کالموں میں نقشہ کریں، اخذ کردہ کالم، اور آٹو بیلنس پروسیسنگ۔ .

حل جائزہ

اس استعمال کے معاملے میں، ہمارے پاس اسٹاک آپشن آپریشنز کے ساتھ کچھ JSON فائلیں ہیں۔ ہم ڈیٹا کو ذخیرہ کرنے سے پہلے کچھ تبدیلیاں کرنا چاہتے ہیں تاکہ تجزیہ کرنا آسان ہو، اور ہم ایک علیحدہ ڈیٹا سیٹ کا خلاصہ بھی تیار کرنا چاہتے ہیں۔

اس ڈیٹاسیٹ میں، ہر قطار آپشن معاہدوں کی تجارت کی نمائندگی کرتی ہے۔ اختیارات ایسے مالیاتی آلات ہیں جو ایک مقررہ قیمت پر اسٹاک کے حصص خریدنے یا بیچنے کا حق فراہم کرتے ہیں — لیکن ذمہ داری نہیں —  سٹرائیک پرائس) ایک مقررہ میعاد ختم ہونے کی تاریخ سے پہلے۔

ان پٹ ڈیٹا

ڈیٹا مندرجہ ذیل اسکیما پر عمل کرتا ہے:

  • آرڈر کی شناخت - ایک منفرد ID
  • علامت - ایک کوڈ عام طور پر کارپوریشن کی شناخت کے لیے چند حروف پر مبنی ہے جو بنیادی اسٹاک کے حصص کو خارج کرتا ہے۔
  • آلہ - وہ نام جو خریدے یا بیچے جانے والے مخصوص آپشن کی نشاندہی کرتا ہے۔
  • کرنسی - 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]}

ای ٹی ایل کی ضروریات

اس ڈیٹا میں متعدد منفرد خصوصیات ہیں، جیسا کہ اکثر پرانے سسٹمز پر پائی جاتی ہیں، جو ڈیٹا کو استعمال کرنا مشکل بنا دیتی ہیں۔

ای ٹی ایل کے تقاضے درج ذیل ہیں:

  • آلے کے نام میں قیمتی معلومات ہیں جو انسانوں کے سمجھنے کے لیے ہیں؛ ہم آسان تجزیہ کے لیے اسے علیحدہ کالموں میں معمول بنانا چاہتے ہیں۔
  • صفات bought اور sold باہمی طور پر خصوصی ہیں؛ ہم ان کو کنٹریکٹ نمبرز کے ساتھ ایک کالم میں اکٹھا کر سکتے ہیں اور ایک اور کالم رکھ سکتے ہیں جس میں یہ بتایا جائے کہ آیا اس آرڈر میں معاہدے کہاں خریدے یا بیچے گئے ہیں۔
  • ہم انفرادی کنٹریکٹ ایلوکیشن کے بارے میں معلومات رکھنا چاہتے ہیں لیکن صارفین کو نمبروں کی ایک صف سے نمٹنے کے لیے مجبور کرنے کے بجائے انفرادی قطار کے طور پر۔ ہم نمبرز کو شامل کر سکتے ہیں، لیکن ہم اس بارے میں معلومات کھو دیں گے کہ آرڈر کیسے بھرا گیا (مارکیٹ کی لیکویڈیٹی کی نشاندہی کرتا ہے)۔ اس کے بجائے، ہم جدول کو غیر معمولی کرنے کا انتخاب کرتے ہیں تاکہ ہر قطار میں متعدد نمبروں کے ساتھ آرڈرز کو الگ الگ قطاروں میں تقسیم کرتے ہوئے، معاہدے کی ایک ہی تعداد ہو۔ کمپریسڈ کالم فارمیٹ میں، جب کمپریشن لاگو کیا جاتا ہے تو اس تکرار کا اضافی ڈیٹاسیٹ سائز اکثر چھوٹا ہوتا ہے، اس لیے ڈیٹاسیٹ کو استفسار کرنا آسان بنانا قابل قبول ہے۔
  • ہم ہر اسٹاک کے لیے ہر آپشن کی قسم (کال اور پوٹ) کے لیے حجم کا ایک خلاصہ جدول تیار کرنا چاہتے ہیں۔ یہ ہر اسٹاک اور مارکیٹ کے عمومی طور پر (لالچ بمقابلہ خوف) کے لیے مارکیٹ کے جذبات کا اشارہ فراہم کرتا ہے۔
  • مجموعی تجارتی خلاصوں کو فعال کرنے کے لیے، ہم ہر آپریشن کے لیے مجموعی طور پر مجموعی رقم فراہم کرنا چاہتے ہیں اور ایک تخمینی تبادلوں کا حوالہ استعمال کرتے ہوئے کرنسی کو امریکی ڈالر میں معیاری بنانا چاہتے ہیں۔
  • ہم اس تاریخ کو شامل کرنا چاہتے ہیں جب یہ تبدیلیاں ہوئیں۔ یہ مفید ہو سکتا ہے، مثال کے طور پر، کرنسی کی تبدیلی کب ہوئی اس کے حوالے سے۔

ان ضروریات کی بنیاد پر، کام دو نتائج پیدا کرے گا:

  • ہر علامت اور قسم کے معاہدوں کی تعداد کے خلاصے کے ساتھ ایک CSV فائل
  • اشارہ کردہ تبدیلیاں کرنے کے بعد آرڈر کی تاریخ رکھنے کے لیے ایک کیٹلاگ ٹیبل
    ڈیٹا اسکیما

شرائط

اس استعمال کے کیس کے ساتھ پیروی کرنے کے لیے آپ کو اپنی S3 بالٹی کی ضرورت ہوگی۔ ایک نئی بالٹی بنانے کے لیے رجوع کریں۔ ایک بالٹی بنانا.

مصنوعی ڈیٹا تیار کریں۔

اس پوسٹ کے ساتھ پیروی کرنے کے لیے (یا اس قسم کے ڈیٹا کے ساتھ خود تجربہ کریں)، آپ اس ڈیٹاسیٹ کو مصنوعی طور پر تیار کر سکتے ہیں۔ مندرجہ ذیل Python اسکرپٹ کو Python ماحول پر Boto3 انسٹال اور رسائی کے ساتھ چلایا جا سکتا ہے۔ ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔

ڈیٹا بنانے کے لیے، درج ذیل مراحل کو مکمل کریں:

  1. AWS Glue Studio پر، آپشن کے ساتھ ایک نئی جاب بنائیں ازگر شیل اسکرپٹ ایڈیٹر.
  2. کام کو ایک نام دیں اور اس پر ملازمت کی تفصیلات ٹیب، منتخب کریں a مناسب کردار اور ازگر اسکرپٹ کا نام۔
  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. کام کو چلائیں اور انتظار کریں جب تک کہ یہ رنز ٹیب پر کامیابی کے ساتھ مکمل نہ ہو جائے (اس میں صرف چند سیکنڈ لگیں گے)۔

ہر رن ایک 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 گلو کے لیے موزوں کردار پر ملازمت کی تفصیلات ٹیب.
  3. ایک S3 ڈیٹا ماخذ شامل کریں (آپ اسے نام دے سکتے ہیں۔ JSON files source) اور S3 URL درج کریں جس کے تحت فائلیں محفوظ ہیں (مثال کے طور پر، 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 مشتق کالم کے طور پر تو یہ اسے اوور رائیڈ کرتا ہے، اور درج ذیل ایس کیو ایل اظہار درج کریں:
    CASE WHEN length(year) = 2 THEN ('20' || year) ELSE year END
    سال سے ماخوذ کالم کی تشکیل

سہولت کے لیے، ہم ایک بناتے ہیں۔ expiration_date وہ فیلڈ جو صارف کے پاس آخری تاریخ کے حوالے کے طور پر ہو سکتا ہے آپشن استعمال کیا جا سکتا ہے۔

  1. ایک شامل کریں مربوط کالم نوڈ اور اس کا نام Build expiration date.
  2. نئے کالم کا نام بتائیں expiration_date، کالم منتخب کریں۔ year, month، اور day (اس ترتیب میں)، اور اسپیسر کے طور پر ایک ہائفن۔
    مربوط تاریخ کی تشکیل

اب تک کا خاکہ مندرجہ ذیل مثال کی طرح نظر آنا چاہیے۔

ماؤنٹین

اب تک کے نئے کالموں کا ڈیٹا پیش نظارہ درج ذیل اسکرین شاٹ کی طرح نظر آنا چاہیے۔

ڈیٹا کا پیش نظارہ

معاہدوں کی تعداد کو معمول بنائیں

اعداد و شمار میں ہر ایک قطار ہر آپشن کے معاہدوں کی تعداد کی نشاندہی کرتی ہے جو خریدے یا بیچے گئے تھے اور بیچز جن پر آرڈرز بھرے گئے تھے۔ انفرادی بیچوں کے بارے میں معلومات کو کھونے کے بغیر، ہم ہر ایک رقم کو انفرادی قطار میں ایک رقم کی قدر کے ساتھ رکھنا چاہتے ہیں، جب کہ باقی معلومات کو تیار کردہ ہر قطار میں نقل کیا جاتا ہے۔

پہلے، آئیے رقم کو ایک کالم میں ضم کرتے ہیں۔

  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 کالم.
    پیوٹ کنفیگریشن

عام طور پر، آپ اسے کسی بیرونی ڈیٹا بیس یا فائل میں حوالہ کے لیے محفوظ کریں گے۔ اس مثال میں، ہم اسے Amazon S3 پر CSV فائل کے طور پر محفوظ کرتے ہیں۔

  1. ایک شامل کریں آٹو بیلنس پروسیسنگ نوڈ اور اس کا نام Single output file.
  2. اگرچہ اس ٹرانسفارم قسم کو عام طور پر متوازی کو بہتر بنانے کے لیے استعمال کیا جاتا ہے، یہاں ہم اسے ایک فائل میں آؤٹ پٹ کو کم کرنے کے لیے استعمال کرتے ہیں۔ لہذا، درج کریں 1 پارٹیشن کی ترتیب کی تعداد میں۔
    خودکار توازن کی تشکیل
  3. ایک S3 ہدف شامل کریں اور اسے نام دیں۔ CSV Contract summary.
  4. ڈیٹا فارمیٹ کے طور پر CSV کا انتخاب کریں اور ایک S3 راستہ داخل کریں جہاں کام کے کردار کو فائلز کو ذخیرہ کرنے کی اجازت ہو۔

کام کا آخری حصہ اب درج ذیل مثال کی طرح نظر آنا چاہیے۔
ماؤنٹین

  1. کام کو بچائیں اور چلائیں۔ کا استعمال کرتے ہیں رنز ٹیب کو چیک کرنے کے لیے جب یہ کامیابی سے ختم ہو گیا ہے۔
    آپ کو اس راستے کے نیچے ایک فائل ملے گی جو کہ ایک CSV ہے، اس توسیع کے نہ ہونے کے باوجود۔ اسے کھولنے کے لیے آپ کو شاید اسے ڈاؤن لوڈ کرنے کے بعد ایکسٹینشن شامل کرنے کی ضرورت ہوگی۔
    ایک ٹول پر جو CSV کو پڑھ سکتا ہے، خلاصہ مندرجہ ذیل مثال کی طرح نظر آنا چاہیے۔
    سپریڈ شیٹ

عارضی کالموں کو صاف کریں۔

مستقبل کے تجزیے کے لیے آرڈرز کو تاریخی جدول میں محفوظ کرنے کی تیاری میں، آئیے راستے میں بنائے گئے کچھ عارضی کالموں کو صاف کرتے ہیں۔

  1. ایک شامل کریں ڈراپ فیلڈز کے ساتھ نوڈ Explode contracts نوڈ کو اس کے والدین کے طور پر منتخب کیا گیا ہے (ہم علیحدہ آؤٹ پٹ پیدا کرنے کے لیے ڈیٹا پائپ لائن کو برانچ کر رہے ہیں)۔
  2. چھوڑنے کے لیے فیلڈز کو منتخب کریں: instrument_arr, month, day، اور year.
    باقی ہم رکھنا چاہتے ہیں تاکہ وہ تاریخی جدول میں محفوظ ہو جائیں جسے ہم بعد میں بنائیں گے۔
    کھیتوں کو چھوڑیں۔

کرنسی کی معیاری کاری

یہ مصنوعی ڈیٹا دو کرنسیوں پر فرضی کارروائیوں پر مشتمل ہے، لیکن ایک حقیقی نظام میں آپ پوری دنیا کی مارکیٹوں سے کرنسیاں حاصل کر سکتے ہیں۔ ایک واحد حوالہ کرنسی میں ہینڈل کی جانے والی کرنسیوں کو معیاری بنانا مفید ہے تاکہ رپورٹنگ اور تجزیہ کے لیے ان کا آسانی سے موازنہ اور جمع کیا جا سکے۔

ہم استعمال کرتے ہیں ایمیزون ایتینا تخمینی کرنسی کے تبادلوں کے ساتھ ایک جدول کی تقلید کرنے کے لیے جو وقتاً فوقتاً اپ ڈیٹ ہوتا رہتا ہے (یہاں ہم فرض کرتے ہیں کہ ہم آرڈرز پر بروقت کارروائی کرتے ہیں کہ تبادلوں کا موازنہ مقاصد کے لیے ایک معقول نمائندہ ہے)۔

  1. اسی علاقے میں ایتھینا کنسول کھولیں جہاں آپ 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. پارکیٹ فارمیٹ کو تیز کمپریشن کے ساتھ ترتیب دیں، اور S3 ٹارگٹ پاتھ فراہم کریں جس کے تحت نتائج کو اسٹور کیا جائے (خلاصہ سے الگ)۔
  3. منتخب کریں ڈیٹا کیٹلاگ میں ایک ٹیبل بنائیں اور اس کے بعد چلنے پر، اسکیما کو اپ ڈیٹ کریں اور نئے پارٹیشنز شامل کریں۔.
  4. ٹارگٹ ڈیٹا بیس اور نئے ٹیبل کے لیے ایک نام درج کریں، مثال کے طور پر: option_orders.
    ٹیبل سنک کی تشکیل

خاکہ کا آخری حصہ اب مندرجہ ذیل جیسا نظر آنا چاہیے، جس میں دو الگ الگ آؤٹ پٹ کے لیے دو شاخیں ہیں۔
ماؤنٹین

کام کو کامیابی سے چلانے کے بعد، آپ ایتھینا جیسے ٹول کا استعمال کر کے نئے ٹیبل سے استفسار کر کے جاب کے تیار کردہ ڈیٹا کا جائزہ لے سکتے ہیں۔ آپ ایتھینا کی فہرست میں ٹیبل تلاش کرسکتے ہیں اور منتخب کرسکتے ہیں۔ پیش نظارہ ٹیبل یا صرف ایک SELECT استفسار چلائیں (ٹیبل کے نام کو آپ کے استعمال کردہ نام اور کیٹلاگ میں اپ ڈیٹ کرنا):

SELECT * FROM default.option_orders limit 10

آپ کے ٹیبل کا مواد درج ذیل اسکرین شاٹ سے ملتا جلتا نظر آنا چاہیے۔
ٹیبل کا مواد

صاف کرو

اگر آپ اس مثال کو برقرار نہیں رکھنا چاہتے ہیں تو، آپ کی تخلیق کردہ دو ملازمتیں، ایتھینا میں دو میزیں، اور S3 راستے کو حذف کریں جہاں ان پٹ اور آؤٹ پٹ فائلیں محفوظ تھیں۔

نتیجہ

اس پوسٹ میں، ہم نے دکھایا کہ کس طرح AWS Glue Studio میں نئی ​​تبدیلیاں آپ کو کم سے کم کنفیگریشن کے ساتھ مزید جدید تبدیلی کرنے میں مدد کر سکتی ہیں۔ اس کا مطلب ہے کہ آپ کسی بھی کوڈ کو لکھنے اور برقرار رکھنے کے بغیر مزید ETL استعمال شدہ کیسز کو لاگو کر سکتے ہیں۔ نئی تبدیلیاں AWS Glue Studio پر پہلے سے ہی دستیاب ہیں، لہذا آپ آج نئی تبدیلیوں کو اپنی بصری ملازمتوں میں استعمال کر سکتے ہیں۔


مصنف کے بارے میں

گونزالو ہیریروس AWS Glue ٹیم میں ایک سینئر بگ ڈیٹا آرکیٹیکٹ ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS بگ ڈیٹا