ایمیزون ریڈ شفٹ میں جہتی ماڈلنگ | ایمیزون ویب سروسز

ایمیزون ریڈ شفٹ میں جہتی ماڈلنگ | ایمیزون ویب سروسز

ماخذ نوڈ: 2778508

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

اس پوسٹ میں، ہم بحث کرتے ہیں کہ کس طرح ایک جہتی ماڈل کو نافذ کیا جائے، خاص طور پر کمبال طریقہ کار. ہم Amazon Redshift کے اندر طول و عرض اور حقائق کو نافذ کرنے پر تبادلہ خیال کرتے ہیں۔ ہم ایکسٹریکٹ، ٹرانسفارم، اور لوڈ (ELT) کو انجام دینے کا طریقہ دکھاتے ہیں، ایک انضمام کا عمل جو کہ ڈیٹا لیک سے خام ڈیٹا کو ماڈلنگ کرنے کے لیے اسٹیجنگ لیئر میں حاصل کرنے پر مرکوز ہے۔ مجموعی طور پر، پوسٹ آپ کو Amazon Redshift میں جہتی ماڈلنگ کے استعمال کے بارے میں واضح سمجھ دے گی۔

حل جائزہ

مندرجہ ذیل خاکہ حل کے فن تعمیر کی وضاحت کرتا ہے۔

مندرجہ ذیل حصوں میں، ہم سب سے پہلے جہتی ماڈل کے اہم پہلوؤں پر بحث کرتے ہیں اور ان کا مظاہرہ کرتے ہیں۔ اس کے بعد، ہم جہتی ڈیٹا ماڈل کے ساتھ Amazon Redshift کا استعمال کرتے ہوئے ایک ڈیٹا مارٹ بناتے ہیں جس میں ڈائمینشن اور فیکٹ ٹیبل شامل ہیں۔ کا استعمال کرتے ہوئے ڈیٹا کو لوڈ اور اسٹیج کیا جاتا ہے۔ COPY کمانڈ، طول و عرض میں ڈیٹا کا استعمال کرتے ہوئے لوڈ کیا جاتا ہے ضم بیان، اور حقائق کو ان جہتوں سے جوڑ دیا جائے گا جہاں سے بصیرت حاصل کی جاتی ہے۔ ہم استعمال کرتے ہوئے طول و عرض اور حقائق کی لوڈنگ کا شیڈول کرتے ہیں۔ Amazon Redshift Query Editor V2. آخر میں، ہم استعمال کرتے ہیں ایمیزون کوئیک سائٹ QuickSight ڈیش بورڈ کی شکل میں ماڈل کردہ ڈیٹا پر بصیرت حاصل کرنے کے لیے۔

اس حل کے لیے، ہم ایونٹ کے ٹکٹوں کی فروخت کے لیے Amazon Redshift کے ذریعے فراہم کردہ نمونہ ڈیٹاسیٹ (نارملائزڈ) استعمال کرتے ہیں۔ اس پوسٹ کے لیے، ہم نے سادگی اور مظاہرے کے مقاصد کے لیے ڈیٹا سیٹ کو کم کر دیا ہے۔ مندرجہ ذیل جدول ٹکٹوں کی فروخت اور مقامات کے ڈیٹا کی مثالیں دکھاتے ہیں۔

کے مطابق کمبال جہتی ماڈلنگ کا طریقہ کار، ایک جہتی ماڈل کو ڈیزائن کرنے میں چار اہم اقدامات ہیں:

  1. کاروباری عمل کی شناخت کریں۔
  2. اپنے ڈیٹا کے اناج کا اعلان کریں۔
  3. طول و عرض کی شناخت اور ان پر عمل درآمد کریں۔
  4. حقائق کی نشاندہی کریں اور ان پر عمل کریں۔

مزید برآں، ہم مظاہرے کے مقاصد کے لیے ایک پانچواں مرحلہ شامل کرتے ہیں، جو کاروباری واقعات کی رپورٹ اور تجزیہ کرنا ہے۔

شرائط

اس واک تھرو کے لیے، آپ کے پاس درج ذیل شرائط ہونی چاہئیں:

کاروباری عمل کی شناخت کریں۔

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

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

ایک عام غلطی ایک کمپنی کے محکموں کو کاروباری عمل کے طور پر استعمال کرنا ہے۔ ڈیٹا (کاروباری عمل) کو مختلف محکموں میں مربوط کرنے کی ضرورت ہے، اس صورت میں، مارکیٹنگ سیلز ڈیٹا تک رسائی حاصل کر سکتی ہے۔ درست کاروباری عمل کی نشاندہی کرنا بہت ضروری ہے — اس قدم کو غلط کرنے سے پورے ڈیٹا مارٹ پر اثر پڑ سکتا ہے (اس کی وجہ سے اناج کو ڈپلیکیٹ کیا جا سکتا ہے اور حتمی رپورٹس میں غلط میٹرکس ہو سکتا ہے)۔

اپنے ڈیٹا کے اناج کا اعلان کریں۔

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

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

طول و عرض کی شناخت اور ان پر عمل درآمد کریں۔

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

جہتی ماڈل (اسکیما) کی ساخت کو ڈیزائن کرتے وقت، آپ یا تو ایک بنا سکتے ہیں۔ ستارہ or میں Snowflake سکیما ڈھانچے کو کاروباری عمل کے ساتھ قریب سے ہم آہنگ ہونا چاہیے۔ لہذا، ایک ستارہ سکیما ہماری مثال کے لیے بہترین فٹ ہے۔ مندرجہ ذیل اعداد و شمار ہمارے ہستی کے تعلقات کا خاکہ (ERD) دکھاتا ہے۔

درج ذیل حصوں میں، ہم طول و عرض کو نافذ کرنے کے اقدامات کی تفصیل دیتے ہیں۔

سورس ڈیٹا کو اسٹیج کریں۔

اس سے پہلے کہ ہم طول و عرض کی جدول بنائیں اور لوڈ کر سکیں، ہمیں سورس ڈیٹا کی ضرورت ہے۔ لہذا، ہم ماخذ ڈیٹا کو اسٹیجنگ یا عارضی ٹیبل میں مرتب کرتے ہیں۔ یہ اکثر کے طور پر کہا جاتا ہے سٹیجنگ پرت، جو ماخذ ڈیٹا کی خام کاپی ہے۔ Amazon Redshift میں ایسا کرنے کے لیے، ہم استعمال کرتے ہیں۔ کاپی کمانڈ ڈائمینشنل-ماڈلنگ-ان-ایمیزون-ریڈ شفٹ پبلک S3 بالٹی سے ڈیٹا لوڈ کرنے کے لیے us-east-1 علاقہ۔ نوٹ کریں کہ COPY کمانڈ استعمال کرتی ہے۔ AWS شناخت اور رسائی کا انتظام (IAM) کے ساتھ کردار ایمیزون S3 تک رسائی. کردار کی ضرورت ہے۔ کلسٹر کے ساتھ منسلک. سورس ڈیٹا کو اسٹیج کرنے کے لیے درج ذیل مراحل کو مکمل کریں:

  1. بنائیں venue ماخذ جدول:
CREATE TABLE public.venue ( venueid bigint, venuename character varying(100), venuecity character varying(30), venuestate character(2), venueseats bigint
) DISTSTYLE AUTO SORTKEY (venueid);

  1. مقام کا ڈیٹا لوڈ کریں:
COPY public.venue
FROM 's3://redshift-blogs/dimensional-modeling-in-amazon-redshift/venue.csv'
IAM_ROLE '<Your IAM role arn>'
DELIMITER ','
REGION 'us-east-1'
IGNOREHEADER 1

  1. بنائیں sales ماخذ جدول:
CREATE TABLE public.sales (
    salesid integer,
    venueid character varying(256),
    saletime timestamp without time zone,
    qtysold BIGINT,
    commission numeric(18,2),
    pricepaid numeric(18,2)
) DISTSTYLE AUTO;

  1. سیلز سورس ڈیٹا لوڈ کریں:
COPY public.sales
FROM 's3://redshift-blogs/dimensional-modeling-in-amazon-redshift/sales.csv'
IAM_ROLE '<Your IAM role arn>'
DELIMITER ','
REGION 'us-east-1'
IGNOREHEADER 1

  1. بنائیں calendar ٹیبل:
CREATE TABLE public.DimCalendar(
    dateid smallint,
        caldate date,
        day varchar(20),
        week smallint,
        month varchar(20),
        qtr varchar(20),
        year smallint,
        holiday boolean
) DISTSTYLE AUTO
SORTKEY
    (dateid);

  1. کیلنڈر ڈیٹا لوڈ کریں:
COPY public.DimCalendar
FROM 's3://redshift-blogs/dimensional-modeling-in-amazon-redshift/date.csv'
IAM_ROLE '<Your IAM role arn>'
DELIMITER ',' 
REGION 'us-east-1'
IGNOREHEADER 1

طول و عرض کی میز بنائیں

طول و عرض کی میز کو ڈیزائن کرنا آپ کی کاروباری ضرورت پر منحصر ہو سکتا ہے — مثال کے طور پر، کیا آپ کو وقت کے ساتھ ڈیٹا میں ہونے والی تبدیلیوں کو ٹریک کرنے کی ضرورت ہے؟ وہاں ہے سات مختلف طول و عرض کی اقسام. ہماری مثال کے طور پر، ہم استعمال کرتے ہیں ٹائپ 1 کیونکہ ہمیں تاریخی تبدیلیوں کو ٹریک کرنے کی ضرورت نہیں ہے۔ قسم 2 کے بارے میں مزید جاننے کے لیے، رجوع کریں۔ Amazon Redshift میں آہستہ آہستہ بدلتے ہوئے طول و عرض میں ٹائپ 2 میں ڈیٹا لوڈنگ کو آسان بنائیں. طول و عرض کی میز کو ایک بنیادی کلید، سروگیٹ کلید، اور ٹیبل میں ہونے والی تبدیلیوں کی نشاندہی کرنے کے لیے کچھ اضافی فیلڈز کے ساتھ غیر معمول بنا دیا جائے گا۔ درج ذیل کوڈ دیکھیں:

create schema SalesMart;

CREATE TABLE SalesMart.DimVenue( 
    "VenueSkey" int IDENTITY(1,1) primary key
    ,"VenueId" VARCHAR NOT NULL
    ,"VenueName" VARCHAR NULL
    ,"VenueCity" VARCHAR NULL
    ,"VenueState" VARCHAR NULL
    ,"VenueSeats" INT NULL
    ,"InsertedDate" DATETIME NOT NULL
    ,"UpdatedDate" DATETIME NOT NULL
) 
diststyle AUTO;

طول و عرض کی میز کی تخلیق کے بارے میں چند نوٹ:

  • فیلڈ کے نام کاروبار کے موافق ناموں میں تبدیل ہو گئے ہیں۔
  • ہماری بنیادی کلید ہے۔ VenueID، جسے ہم منفرد طور پر اس مقام کی شناخت کے لیے استعمال کرتے ہیں جہاں فروخت ہوئی تھی۔
  • دو اضافی قطاریں شامل کی جائیں گی، جس سے یہ ظاہر ہوتا ہے کہ ریکارڈ کب داخل اور اپ ڈیٹ کیا گیا تھا (تبدیلیوں کو ٹریک کرنے کے لیے)
  • ہم ایک استعمال کر رہے ہیں۔ آٹو تقسیم کا انداز Amazon Redshift کو تقسیم کے انداز کو منتخب کرنے اور ایڈجسٹ کرنے کی ذمہ داری دینے کے لیے

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

Amazon Redshift میں، سروگیٹ کیز کو عام طور پر شناختی کلیدی لفظ کا استعمال کرتے ہوئے بنایا جاتا ہے۔ مثال کے طور پر، پہلے والا CREATE سٹیٹمنٹ a کے ساتھ ایک ڈائمینشن ٹیبل بناتا ہے۔ VenueSkey سروگیٹ کلید. دی VenueSkey کالم خود بخود منفرد اقدار کے ساتھ آباد ہو جاتا ہے کیونکہ جدول میں نئی ​​قطاریں شامل ہوتی ہیں۔ اس کالم کو پھر وینیو ٹیبل میں شامل ہونے کے لیے استعمال کیا جا سکتا ہے۔ FactSaleTransactions میز.

سروگیٹ چابیاں ڈیزائن کرنے کے لیے چند نکات:

  • سروگیٹ کلید کے لیے ایک چھوٹی، مقررہ چوڑائی والے ڈیٹا کی قسم کا استعمال کریں۔ یہ کارکردگی کو بہتر بنائے گا اور اسٹوریج کی جگہ کو کم کرے گا۔
  • شناختی کلیدی لفظ استعمال کریں، یا ترتیب وار یا GUID قدر کا استعمال کرتے ہوئے سروگیٹ کلید بنائیں۔ یہ یقینی بنائے گا کہ سروگیٹ کلید منفرد ہے اور اسے تبدیل نہیں کیا جا سکتا۔

MERGE کا استعمال کرتے ہوئے مدھم ٹیبل لوڈ کریں۔

آپ کی مدھم میز کو لوڈ کرنے کے متعدد طریقے ہیں۔ کچھ عوامل پر غور کرنے کی ضرورت ہے - مثال کے طور پر، کارکردگی، ڈیٹا کا حجم، اور شاید SLA لوڈنگ کے اوقات۔ کے ساتہ ضم بیان میں، ہم ایک سے زیادہ داخل اور اپ ڈیٹ کمانڈز کی وضاحت کرنے کی ضرورت کے بغیر ایک اپسرٹ انجام دیتے ہیں۔ آپ ترتیب دے سکتے ہیں۔ ضم ایک میں بیان ذخیرہ شدہ طریقہ کار ڈیٹا کو آباد کرنے کے لیے۔ اس کے بعد آپ سوال ایڈیٹر کے ذریعے پروگرام کے مطابق چلانے کے لیے ذخیرہ شدہ طریقہ کار کو شیڈول کرتے ہیں، جسے ہم بعد میں پوسٹ میں ظاہر کریں گے۔ درج ذیل کوڈ ایک ذخیرہ شدہ طریقہ کار بناتا ہے جسے کہا جاتا ہے۔ SalesMart.DimVenueLoad:

CREATE OR REPLACE PROCEDURE SalesMart.DimVenueLoad()
AS $$
BEGIN
MERGE INTO SalesMart.DimVenue USING public.venue as MergeSource
ON SalesMart.DimVenue.VenueId = MergeSource.VenueId
WHEN MATCHED
THEN
UPDATE
SET VenueName = ISNULL(MergeSource.VenueName, 'Unknown')
, VenueCity = ISNULL(MergeSource.VenueCity, 'Unknown')
, VenueState = ISNULL(MergeSource.VenueState, 'Unknown')
, VenueSeats = ISNULL(MergeSource.VenueSeats, -1)
, UpdatedDate = GETDATE()
WHEN NOT MATCHED
THEN
INSERT (
VenueId
, VenueName
, VenueCity
, VenueState
, VenueSeats
, UpdatedDate
, InsertedDate
)
VALUES (
ISNULL(MergeSource.VenueId, -1)
, ISNULL(MergeSource.VenueName, 'Unknown')
, ISNULL(MergeSource.VenueCity, 'Unknown')
, ISNULL(MergeSource.VenueState, 'Unknown')
, ISNULL(MergeSource.VenueSeats, -1)
, ISNULL(GETDATE() , '1900-01-01')
, ISNULL(GETDATE() , '1900-01-01')
);
END;
$$
LANGUAGE plpgsql;

طول و عرض کی لوڈنگ پر چند نوٹ:

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

حقائق کی نشاندہی کریں اور ان پر عمل کریں۔

اب جب کہ ہم نے اپنے اناج کو ایک مخصوص وقت پر ہونے والی فروخت کا واقعہ قرار دیا ہے، ہمارا فیکٹ ٹیبل ہمارے کاروباری عمل کے لیے عددی حقائق کو محفوظ کرے گا۔

ہم نے پیمائش کے لیے درج ذیل عددی حقائق کی نشاندہی کی ہے:

  • فی فروخت ٹکٹوں کی مقدار
  • فروخت کے لیے کمیشن

حقیقت کو نافذ کرنا

وہاں ہے تین قسم کے حقائق کی میزیں (ٹرانزیکشن فیکٹ ٹیبل، متواتر سنیپ شاٹ فیکٹ ٹیبل، اور جمع اسنیپ شاٹ فیکٹ ٹیبل)۔ ہر ایک کاروباری عمل کا ایک مختلف نقطہ نظر پیش کرتا ہے۔ ہماری مثال کے طور پر، ہم ٹرانزیکشن فیکٹ ٹیبل استعمال کرتے ہیں۔ درج ذیل مراحل کو مکمل کریں:

  1. حقائق کی میز بنائیں
CREATE TABLE SalesMart.FactSaleTransactions( 
    CalendarDate date NOT NULL
    ,SaleTransactionTime DATETIME NOT NULL
    ,VenueSkey INT NOT NULL
    ,QuantitySold BIGINT NOT NULL
    ,SaleComission NUMERIC NOT NULL
    ,InsertedDate DATETIME DEFAULT GETDATE()
) diststyle AUTO;

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

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

ہم ایک ذخیرہ شدہ طریقہ کار کا استعمال کرتے ہوئے فیکٹ ٹیبل لوڈ کرتے ہیں اور تاریخ کا پیرامیٹر استعمال کرتے ہیں۔

  1. درج ذیل کوڈ کے ساتھ ذخیرہ شدہ طریقہ کار بنائیں۔ اسی ڈیٹا کی سالمیت کو برقرار رکھنے کے لیے جو ہم نے ڈائمینشن لوڈ میں لاگو کیا تھا، ہم NULL قدروں کو، اگر کوئی ہیں، کو مزید کاروباری مناسب اقدار سے بدل دیتے ہیں:
create or replace procedure SalesMart.FactSaleTransactionsLoad(loadate datetime)
language plpgsql
as
    $$
begin
--------------------------------------------------------------------
/*** Delete records loaded for the day, should there be any ***/
--------------------------------------------------------------------
Delete from SalesMart.FactSaleTransactions
where cast(InsertedDate as date) = CAST(loadate as date);
RAISE INFO 'Deleted rows for load date: %', loadate;
--------------------------------------------------------------------
/*** Insert records ***/
--------------------------------------------------------------------
INSERT INTO SalesMart.FactSaleTransactions (
CalendarDate    
,SaleTransactionTime    
,VenueSkey  
,QuantitySold  
,Salecomission
)
SELECT DISTINCT
    ISNULL(c.caldate, '1900-01-01') as CalendarDate
    ,ISNULL(a.saletime, '1900-01-01') as SaleTransactionTime
    ,ISNULL(b.VenueSkey, -1) as VenueSkey
    ,ISNULL(a.qtysold, 0) as QuantitySold
    ,ISNULL(a.commission, 0) as SaleComission
FROM
    public.sales as a
 
LEFT JOIN SalesMart.DimVenue as b
on a.venueid = b.venueid
 
LEFT JOIN public.DimCalendar as c
on to_char(a.saletime,'YYYYMMDD') = to_char(c.caldate,'YYYYMMDD');
--Optional filter, should you want to load only the latest data from source
--where cast(a.saletime as date) = cast(loadate as date);
  
end;
$$;

  1. مندرجہ ذیل کمانڈ کے ساتھ طریقہ کار کو کال کرکے ڈیٹا لوڈ کریں:
call SalesMart.FactSaleTransactionsLoad(getdate())

ڈیٹا لوڈ کو شیڈول کریں۔

اب ہم Amazon Redshift Query Editor V2 میں ذخیرہ شدہ طریقہ کار کو شیڈول کر کے ماڈلنگ کے عمل کو خودکار کر سکتے ہیں۔ درج ذیل مراحل کو مکمل کریں:

  1. ہم پہلے ڈائمینشن لوڈ کو کہتے ہیں اور ڈائمینشن لوڈ کے کامیابی سے چلنے کے بعد، فیکٹ لوڈ شروع ہوتا ہے:
BEGIN;
----Insert Dim Loads
call SalesMart.DimVenueLoad(); ----Insert Fact Loads. They will only run if the DimLoad is successful
call SalesMart.FactSaleTransactionsLoad(getdate());
END;

اگر طول و عرض کا بوجھ ناکام ہوجاتا ہے، تو حقیقت کا بوجھ نہیں چلے گا۔ یہ اعداد و شمار میں مستقل مزاجی کو یقینی بناتا ہے کیونکہ ہم فیکٹ ٹیبل کو فرسودہ جہتوں کے ساتھ لوڈ نہیں کرنا چاہتے۔

  1. لوڈ شیڈول کرنے کے لیے، منتخب کریں۔ شیڈول سوال ایڈیٹر V2 میں۔

  1. ہم استفسار کو ہر روز صبح 5:00 بجے چلانے کے لیے شیڈول کرتے ہیں۔
  2. اختیاری طور پر، آپ فعال کر کے ناکامی کی اطلاعات شامل کر سکتے ہیں۔ ایمیزون سادہ نوٹیفکیشن سروس (ایمیزون ایس این ایس) اطلاعات۔

Amazon Quicksight میں ڈیٹا کی رپورٹ اور تجزیہ کریں۔

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

ہم حقائق کو بصری طور پر ڈیش بورڈ کی شکل میں پیش کرنے کے لیے اپنے ڈیٹا مارٹ کا استعمال کرتے ہیں۔ شروع کرنے اور QuickSight ترتیب دینے کے لیے، رجوع کریں۔ ایسے ڈیٹا بیس کا استعمال کرتے ہوئے ڈیٹاسیٹ بنانا جو خود سے دریافت نہ ہو۔.

QuickSight میں آپ کے ڈیٹا کا ذریعہ بنانے کے بعد، ہم اپنی سروگیٹ کلید کی بنیاد پر ماڈل کردہ ڈیٹا (ڈیٹا مارٹ) میں شامل ہو جاتے ہیں۔ skey. ہم اس ڈیٹاسیٹ کو ڈیٹا مارٹ کو دیکھنے کے لیے استعمال کرتے ہیں۔

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

صاف کرو

مستقبل کے چارجز سے بچنے کے لیے، آپ نے اس پوسٹ کے حصے کے طور پر بنائے گئے کسی بھی وسائل کو حذف کر دیں۔

نتیجہ

اب ہم نے اپنا استعمال کرتے ہوئے ڈیٹا مارٹ کو کامیابی کے ساتھ نافذ کیا ہے۔ DimVenue, DimCalendar، اور FactSaleTransactions میزیں ہمارا گودام مکمل نہیں ہے۔ جیسا کہ ہم ڈیٹا مارٹ کو مزید حقائق کے ساتھ بڑھا سکتے ہیں اور مزید مارٹس کو لاگو کر سکتے ہیں، اور جیسے جیسے وقت کے ساتھ کاروباری عمل اور تقاضے بڑھتے جائیں گے، اسی طرح ڈیٹا گودام بھی بڑھے گا۔ اس پوسٹ میں، ہم نے Amazon Redshift میں جہتی ماڈلنگ کو سمجھنے اور لاگو کرنے کے بارے میں ایک اختتام سے آخر تک نقطہ نظر دیا۔

اپنے ساتھ شروع کریں۔ ایمیزون ریڈ شفٹ جہتی ماڈل آج.


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

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

ابھیشیک پین ایک WWSO ماہر SA-Analytics ہے جو AWS انڈیا پبلک سیکٹر کے صارفین کے ساتھ کام کر رہا ہے۔ وہ صارفین کے ساتھ ڈیٹا سے چلنے والی حکمت عملی کی وضاحت کرنے، تجزیات کے استعمال کے معاملات پر گہرے غوطہ خوری کے سیشن فراہم کرنے، اور قابل توسیع اور پرفارمنس تجزیاتی ایپلی کیشنز کو ڈیزائن کرنے کے لیے مشغول رہتا ہے۔ اس کے پاس 12 سال کا تجربہ ہے اور وہ ڈیٹا بیس، اینالیٹکس، اور AI/ML کے بارے میں پرجوش ہے۔ وہ ایک شوقین مسافر ہے اور اپنے کیمرے کے لینس کے ذریعے دنیا کو قید کرنے کی کوشش کرتا ہے۔

ٹائم اسٹیمپ:

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