আমাজন রেডশিফটে মাত্রিক মডেলিং | আমাজন ওয়েব সার্ভিসেস

আমাজন রেডশিফটে মাত্রিক মডেলিং | আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 2778508

আমাজন রেডশিফ্ট এটি একটি সম্পূর্ণরূপে পরিচালিত এবং পেটাবাইট-স্কেলের ক্লাউড ডেটা গুদাম যা হাজার হাজার গ্রাহক তাদের বিশ্লেষণ কাজের চাপকে শক্তিশালী করতে প্রতিদিন এক্সাবাইট ডেটা প্রক্রিয়া করতে ব্যবহার করে। আপনি আপনার ডেটা গঠন করতে পারেন, ব্যবসার প্রক্রিয়াগুলি পরিমাপ করতে পারেন এবং একটি মাত্রিক মডেল ব্যবহার করে দ্রুত মূল্যবান অন্তর্দৃষ্টি পেতে পারেন৷ আমাজন রেডশিফ্ট একটি মাত্রিক মডেল থেকে মডেলিং, অর্কেস্ট্রেটিং এবং প্রতিবেদনের প্রক্রিয়াকে ত্বরান্বিত করতে অন্তর্নির্মিত বৈশিষ্ট্যগুলি সরবরাহ করে।

এই পোস্টে, আমরা আলোচনা করব কিভাবে একটি মাত্রিক মডেল বাস্তবায়ন করা যায়, বিশেষ করে কিমবল পদ্ধতি. আমরা Amazon Redshift-এর মধ্যে মাত্রা এবং তথ্য বাস্তবায়ন নিয়ে আলোচনা করি। আমরা দেখাই কিভাবে এক্সট্র্যাক্ট, ট্রান্সফর্ম এবং লোড (ELT), একটি ইন্টিগ্রেশন প্রক্রিয়া যা মডেলিং করার জন্য ডেটা লেক থেকে একটি স্টেজিং লেয়ারে কাঁচা ডেটা পাওয়ার উপর দৃষ্টি নিবদ্ধ করে। সামগ্রিকভাবে, পোস্টটি আপনাকে অ্যামাজন রেডশিফ্টে ডাইমেনশনাল মডেলিং কীভাবে ব্যবহার করতে হয় সে সম্পর্কে একটি পরিষ্কার বোঝা দেবে।

সমাধান ওভারভিউ

নিম্নলিখিত চিত্রটি সমাধানের স্থাপত্যকে চিত্রিত করে।

নিম্নলিখিত বিভাগে, আমরা প্রথমে মাত্রিক মডেলের মূল দিকগুলি নিয়ে আলোচনা এবং প্রদর্শন করি। এর পরে, আমরা ডাইমেনশন এবং ফ্যাক্ট টেবিল সহ ডাইমেনশনাল ডেটা মডেল সহ Amazon Redshift ব্যবহার করে একটি ডেটা মার্ট তৈরি করি। ডেটা লোড করা হয় এবং ব্যবহার করে মঞ্চস্থ করা হয় অনুলিপি কমান্ড, মাত্রার ডেটা ব্যবহার করে লোড করা হয় মার্জ করুন বিবৃতি, এবং তথ্যগুলি সেই মাত্রার সাথে যুক্ত করা হবে যেখান থেকে অন্তর্দৃষ্টি প্রাপ্ত হয়। আমরা ব্যবহার করে মাত্রা এবং তথ্য লোড করার সময়সূচী অ্যামাজন রেডশিফ্ট ক্যোয়ারী এডিটর V2. অবশেষে, আমরা ব্যবহার করি অ্যামাজন কুইকসাইট একটি QuickSight ড্যাশবোর্ড আকারে মডেল করা ডেটার অন্তর্দৃষ্টি পেতে।

এই সমাধানের জন্য, আমরা ইভেন্ট টিকিট বিক্রয়ের জন্য Amazon Redshift দ্বারা সরবরাহিত একটি নমুনা ডেটাসেট (সাধারণকৃত) ব্যবহার করি। এই পোস্টের জন্য, আমরা সরলতা এবং প্রদর্শনের উদ্দেশ্যে ডেটাসেটটি সংকুচিত করেছি। নিম্নলিখিত সারণী টিকিট বিক্রয় এবং স্থানের ডেটার উদাহরণ দেখায়।

অনুযায়ী কিমবল মাত্রিক মডেলিং পদ্ধতি, একটি মাত্রিক মডেল ডিজাইন করার চারটি মূল ধাপ রয়েছে:

  1. ব্যবসায়িক প্রক্রিয়া চিহ্নিত করুন।
  2. আপনার তথ্য শস্য ঘোষণা.
  3. মাত্রা সনাক্ত এবং বাস্তবায়ন.
  4. ঘটনা চিহ্নিত করুন এবং বাস্তবায়ন করুন।

উপরন্তু, আমরা প্রদর্শনের উদ্দেশ্যে একটি পঞ্চম ধাপ যোগ করি, যা ব্যবসায়িক ইভেন্টের প্রতিবেদন এবং বিশ্লেষণ করা।

পূর্বশর্ত

এই ওয়াকথ্রুটির জন্য, আপনার নিম্নলিখিত পূর্বশর্তগুলি থাকা উচিত:

ব্যবসায়িক প্রক্রিয়া চিহ্নিত করুন

সহজ শর্তে, ব্যবসায়িক প্রক্রিয়া সনাক্তকরণ একটি পরিমাপযোগ্য ইভেন্টকে চিহ্নিত করা যা একটি সংস্থার মধ্যে ডেটা তৈরি করে। সাধারণত, কোম্পানিগুলির কিছু ধরণের অপারেশনাল সোর্স সিস্টেম থাকে যা তাদের ডেটা তাদের কাঁচা বিন্যাসে তৈরি করে। এটি একটি ব্যবসায়িক প্রক্রিয়ার জন্য বিভিন্ন উত্স সনাক্ত করার জন্য একটি ভাল সূচনা পয়েন্ট।

ব্যবসা প্রক্রিয়া তারপর একটি হিসাবে অব্যাহত থাকে ডেটা মার্ট মাত্রা এবং তথ্য আকারে। আগে উল্লিখিত আমাদের নমুনা ডেটাসেটের দিকে তাকিয়ে, আমরা স্পষ্টভাবে দেখতে পারি যে ব্যবসায়িক প্রক্রিয়া হল একটি প্রদত্ত ইভেন্টের জন্য করা বিক্রয়।

একটি সাধারণ ভুল হল একটি কোম্পানির বিভাগগুলিকে ব্যবসায়িক প্রক্রিয়া হিসাবে ব্যবহার করা। ডেটা (ব্যবসায়িক প্রক্রিয়া) বিভিন্ন বিভাগে একত্রিত করা প্রয়োজন, এই ক্ষেত্রে, বিপণন বিক্রয় ডেটা অ্যাক্সেস করতে পারে। সঠিক ব্যবসায়িক প্রক্রিয়া শনাক্ত করা গুরুত্বপূর্ণ—এই পদক্ষেপটি ভুল হলে তা সমগ্র ডেটা মার্টের উপর প্রভাব ফেলতে পারে (এটি শস্যের ডুপ্লিকেট হতে পারে এবং চূড়ান্ত রিপোর্টে ভুল মেট্রিক্স হতে পারে)।

আপনার তথ্য শস্য ঘোষণা

শস্য ঘোষণা করা হল আপনার ডেটা উৎসে একটি রেকর্ডকে অনন্যভাবে সনাক্ত করার কাজ। তথ্যটি সঠিকভাবে পরিমাপ করতে এবং আপনাকে আরও রোল আপ করতে সক্ষম করতে ফ্যাক্ট টেবিলে শস্য ব্যবহার করা হয়। আমাদের উদাহরণে, এটি বিক্রয় ব্যবসায়িক প্রক্রিয়ার একটি লাইন আইটেম হতে পারে।

আমাদের ব্যবহারের ক্ষেত্রে, যখন বিক্রয় হয়েছিল তখন লেনদেনের সময় দেখে একটি বিক্রয়কে স্বতন্ত্রভাবে চিহ্নিত করা যেতে পারে; এটি হবে সবচেয়ে পারমাণবিক স্তর।

মাত্রা সনাক্ত এবং বাস্তবায়ন

আপনার ডাইমেনশন টেবিল আপনার ফ্যাক্ট টেবিল এবং এর গুণাবলী বর্ণনা করে। আপনার ব্যবসায়িক প্রক্রিয়ার বর্ণনামূলক প্রসঙ্গ শনাক্ত করার সময়, আপনি ফ্যাক্ট টেবিল গ্রেইনকে মাথায় রেখে পাঠ্যটিকে একটি পৃথক টেবিলে সংরক্ষণ করেন। ফ্যাক্ট টেবিলে ডাইমেনশন টেবিলে যোগ দেওয়ার সময়, ফ্যাক্ট টেবিলের সাথে শুধুমাত্র একটি সারি যুক্ত হওয়া উচিত। আমাদের উদাহরণে, আমরা একটি মাত্রা টেবিলে বিভক্ত করার জন্য নিম্নলিখিত টেবিলটি ব্যবহার করি; এই ক্ষেত্রগুলি এমন তথ্য বর্ণনা করে যা আমরা পরিমাপ করব।

মাত্রিক মডেলের (স্কিমা) কাঠামো ডিজাইন করার সময়, আপনি হয় একটি তৈরি করতে পারেন তারকা or তুষারকণা স্কিমা কাঠামোটি ব্যবসায়িক প্রক্রিয়ার সাথে ঘনিষ্ঠভাবে সারিবদ্ধ হওয়া উচিত; অতএব, একটি তারকা স্কিমা আমাদের উদাহরণের জন্য সবচেয়ে উপযুক্ত। নিম্নলিখিত চিত্রটি আমাদের সত্তা সম্পর্ক চিত্র (ERD) দেখায়।

নিম্নলিখিত বিভাগগুলিতে, আমরা মাত্রাগুলি বাস্তবায়নের পদক্ষেপগুলি বিশদভাবে বর্ণনা করি৷

উৎস তথ্য পর্যায়

আমরা ডাইমেনশন টেবিল তৈরি এবং লোড করার আগে, আমাদের সোর্স ডেটা দরকার। অতএব, আমরা উত্স ডেটাকে একটি স্টেজিং বা অস্থায়ী টেবিলে রাখি। এটি প্রায়ই হিসাবে উল্লেখ করা হয় স্টেজিং স্তর, যা উৎস তথ্যের কাঁচা অনুলিপি। অ্যামাজন রেডশিফটে এটি করতে, আমরা ব্যবহার করি কপি কমান্ড ডাইমেনশনাল-মডেলিং-ইন-অ্যামাজন-রেডশিফ্ট পাবলিক S3 বালতি থেকে ডেটা লোড করতে us-east-1 অঞ্চল. উল্লেখ্য যে COPY কমান্ড একটি ব্যবহার করে এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট সঙ্গে (IAM) ভূমিকা অ্যামাজন এস৩-এ অ্যাক্সেস. ভূমিকা থাকা দরকার ক্লাস্টারের সাথে যুক্ত. উত্স ডেটা স্টেজ করার জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  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, যা আমরা অনন্যভাবে একটি স্থান সনাক্ত করতে ব্যবহার করি যেখানে বিক্রয় হয়েছিল
  • দুটি অতিরিক্ত সারি যোগ করা হবে, এটি নির্দেশ করে যে কখন একটি রেকর্ড ঢোকানো এবং আপডেট করা হয়েছে (পরিবর্তন ট্র্যাক করতে)
  • আমরা একটি ব্যবহার করছি অটো বন্টন শৈলী অ্যামাজন রেডশিফ্টকে ডিস্ট্রিবিউশন শৈলী বেছে নেওয়ার এবং সামঞ্জস্য করার দায়িত্ব দিতে

ডাইমেনশনাল মডেলিংয়ের ক্ষেত্রে বিবেচনা করার আরেকটি গুরুত্বপূর্ণ বিষয় হল এর ব্যবহার সারোগেট কী. সারোগেট কীগুলি হল কৃত্রিম কী যা মাত্রা সারণীতে প্রতিটি রেকর্ডকে স্বতন্ত্রভাবে সনাক্ত করতে মাত্রিক মডেলিংয়ে ব্যবহৃত হয়। এগুলি সাধারণত একটি ক্রমিক পূর্ণসংখ্যা হিসাবে তৈরি হয় এবং ব্যবসায়িক ডোমেনে তাদের কোনও অর্থ নেই৷ তারা বিভিন্ন সুবিধা অফার করে, যেমন স্বতন্ত্রতা নিশ্চিত করা এবং যোগদানে কর্মক্ষমতা উন্নত করা, কারণ এগুলি সাধারণত প্রাকৃতিক কীগুলির চেয়ে ছোট এবং সারোগেট কী হিসাবে তারা সময়ের সাথে পরিবর্তন হয় না। এটি আমাদেরকে সামঞ্জস্যপূর্ণ হতে এবং আরও সহজে তথ্য এবং মাত্রা যোগ করার অনুমতি দেয়।

অ্যামাজন রেডশিফ্টে, সারোগেট কীগুলি সাধারণত আইডেন্টিটি কীওয়ার্ড ব্যবহার করে তৈরি করা হয়। উদাহরণস্বরূপ, পূর্ববর্তী 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 AM এ কোয়েরি চালানোর জন্য নির্ধারিত করি।
  2. ঐচ্ছিকভাবে, আপনি সক্ষম করে ব্যর্থতার বিজ্ঞপ্তি যোগ করতে পারেন অ্যামাজন সাধারণ বিজ্ঞপ্তি পরিষেবা (Amazon SNS) বিজ্ঞপ্তি।

আমাজন কুইকসাইট-এ তথ্যের প্রতিবেদন এবং বিশ্লেষণ করুন

QuickSight হল একটি ব্যবসায়িক গোয়েন্দা পরিষেবা যা অন্তর্দৃষ্টি প্রদান করা সহজ করে তোলে। একটি সম্পূর্ণরূপে পরিচালিত পরিষেবা হিসাবে, QuickSight আপনাকে সহজেই ইন্টারেক্টিভ ড্যাশবোর্ড তৈরি এবং প্রকাশ করতে দেয় যা তারপরে যেকোনো ডিভাইস থেকে অ্যাক্সেস করা যায় এবং আপনার অ্যাপ্লিকেশন, পোর্টাল এবং ওয়েবসাইটগুলিতে এম্বেড করা যায়।

আমরা একটি ড্যাশবোর্ড আকারে তথ্য দৃশ্যমানভাবে উপস্থাপন করতে আমাদের ডেটা মার্ট ব্যবহার করি। শুরু করতে এবং QuickSight সেট আপ করতে, পড়ুন একটি ডাটাবেস ব্যবহার করে একটি ডেটাসেট তৈরি করা যা স্বয়ংক্রিয়ভাবে আবিষ্কৃত নয়.

আপনি QuickSight-এ আপনার ডেটা উত্স তৈরি করার পরে, আমরা আমাদের সারোগেট কী-এর উপর ভিত্তি করে মডেল করা ডেটা (ডেটা মার্টে) একসাথে যোগদান করি skey. আমরা এই ডেটাসেটটি ডেটা মার্টের কল্পনা করতে ব্যবহার করি।

আমাদের শেষ ড্যাশবোর্ডে ডেটা মার্টের অন্তর্দৃষ্টি থাকবে এবং গুরুত্বপূর্ণ ব্যবসায়িক প্রশ্নের উত্তর দেওয়া হবে, যেমন স্থান প্রতি মোট কমিশন এবং সর্বোচ্চ বিক্রয়ের তারিখ। নিম্নলিখিত স্ক্রিনশট ডেটা মার্টের চূড়ান্ত পণ্য দেখায়।

পরিষ্কার কর

ভবিষ্যত চার্জ এড়াতে, এই পোস্টের অংশ হিসাবে আপনার তৈরি করা কোনো সংস্থান মুছে দিন।

উপসংহার

আমরা এখন সফলভাবে আমাদের ব্যবহার করে একটি ডেটা মার্ট বাস্তবায়ন করেছি DimVenue, DimCalendar, এবং FactSaleTransactions টেবিল আমাদের গুদাম সম্পূর্ণ নয়; আমরা যেমন আরও তথ্যের সাথে ডেটা মার্টকে প্রসারিত করতে পারি এবং আরও মর্টগুলি বাস্তবায়ন করতে পারি, এবং ব্যবসার প্রক্রিয়া এবং প্রয়োজনীয়তা সময়ের সাথে সাথে বৃদ্ধি পায়, তেমনি ডেটা গুদামও হবে। এই পোস্টে, আমরা Amazon Redshift-এ মাত্রিক মডেলিং বোঝার এবং প্রয়োগ করার বিষয়ে একটি এন্ড-টু-এন্ড ভিউ দিয়েছি।

আপনার সঙ্গে শুরু করুন আমাজন রেডশিফ্ট মাত্রিক মডেল আজ।


লেখক সম্পর্কে

বার্নার্ড ভার্স্টার স্কেলযোগ্য এবং দক্ষ ডেটা মডেল তৈরি করতে, ডেটা ইন্টিগ্রেশন কৌশলগুলি সংজ্ঞায়িত করতে এবং ডেটা শাসন ও নিরাপত্তা নিশ্চিত করতে বছরের পর বছর ধরে এক্সপোজার সহ একজন অভিজ্ঞ ক্লাউড ইঞ্জিনিয়ার। তিনি ব্যবসার প্রয়োজনীয়তা এবং উদ্দেশ্যগুলির সাথে সারিবদ্ধ করার সময় অন্তর্দৃষ্টি চালাতে ডেটা ব্যবহার করার বিষয়ে উত্সাহী৷

অভিষেক প্যান একজন WWSO বিশেষজ্ঞ SA-Analytics AWS India পাবলিক সেক্টর গ্রাহকদের সাথে কাজ করছেন। তিনি ডেটা-চালিত কৌশল সংজ্ঞায়িত করতে গ্রাহকদের সাথে যুক্ত হন, বিশ্লেষণের ক্ষেত্রে গভীর ডাইভ সেশন প্রদান করেন এবং পরিমাপযোগ্য এবং পারফরম্যান্ট বিশ্লেষণাত্মক অ্যাপ্লিকেশন ডিজাইন করেন। তার 12 বছরের অভিজ্ঞতা রয়েছে এবং ডাটাবেস, বিশ্লেষণ এবং এআই/এমএল সম্পর্কে উত্সাহী। তিনি একজন আগ্রহী ভ্রমণকারী এবং তার ক্যামেরার লেন্সের মাধ্যমে বিশ্বকে ধারণ করার চেষ্টা করেন।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস বিগ ডেটা