Course-এর সূচি

17.5

Amazon QuickSight

dashboard আর analysis, SPICE, user আর group, আর column-level security।

14 মিনিট পড়া + Animation

টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।

এই লেসন শেষে তুমি পারবে

  • Business intelligence (BI) কী, analytics pipeline-এর শেষ মাথায় Amazon QuickSight কোথায় বসে, আর পরীক্ষার কোন কোন বাক্য শুনলে QuickSight বুঝতে হয়, তা বোঝাতে।
  • QuickSight-কে AWS-এর source (Athena, Redshift, RDS, Aurora, S3, OpenSearch, Timestream), অফিসের নিজস্ব database, SaaS application আর upload করা file-এর সাথে জুড়তে, VPC connection দিয়ে private database-সহ।
  • Data SPICE-এ import করবে নাকি সরাসরি source-কে query করবে, তা বাছতে, আর SPICE-এর capacity ও refresh-এর পরিকল্পনা করতে।
  • Dataset → analysis → publish করা dashboard → user আর group-এর সাথে share, এই পথটা বোঝাতে, আর QuickSight-এর user ও group কেন IAM-এর user ও group না, তা বলতে।
  • Row-level security (RLS) আর column-level security (CLS) দিয়ে row আর column আটকাতে, আর কোন edition-এ কী পাওয়া যায় তা জানতে।
  • Per-user আর capacity (session) pricing ধরে QuickSight-এর খরচ আন্দাজ করতে, আর নিজের application-এর ভেতরে dashboard embed করতে।

#Business intelligence আর QuickSight

#Business intelligence জিনিসটা কী

প্রতিটা ব্যবসা নানা জায়গায় data জমায়: order থাকে database-এ, click থাকে S3 data lake-এ, lead থাকে CRM-এ, call record থাকে telecom-এর server-এ। Business intelligence (BI) হলো শেষ ধাপটা, যেটা এই data-কে এমন উত্তরে বদলে দেয় যা দেখে মানুষ সিদ্ধান্ত নিতে পারে: chart, dashboard, report আর alert, যেগুলো একজন manager সোমবার সকালে browser-এ খোলেন। এই অধ্যায়ের আগের লেসনগুলো data রাখে আর query করে (Athena লেসন ১৭.১-এ, Redshift লেসন ১৭.২-এ); BI tool বসে তাদের মাথায়, আর ছবিটা আঁকে। লেসন ১৬.১-এর OLTP / OLAP ভাগের এটা OLAP দিক: একটা একটা করে order লেখা না, অনেক row পড়ে তার সারসংক্ষেপ বের করা।

#QuickSight কী

Amazon QuickSight হলো interactive dashboard, chart আর report বানানোর জন্য AWS-এর serverless, machine learning-চালিত BI service:

  • Serverless আর auto-scaling: কোনো server বা BI cluster-এর মাপ ঠিক করা, patch করা বা license কেনার ঝামেলা নেই। Reader দশজন হোক বা দশ হাজার, QuickSight নিজেই scale করে।
  • দ্রুত: import করা data আসে SPICE থেকে, একটা in-memory engine (নিচে বিস্তারিত)।
  • Embed করা যায়: dashboard তোমার নিজের website বা app-এর ভেতরে দেখানো যায়।
  • ML দিয়ে insight: anomaly detection (গতকালের বিক্রিতে অস্বাভাবিক পতন), forecasting (trend দেখে আগামী quarter-এর বিক্রি), আর auto-narrative, যেটা একটা chart-কে বাক্যে বর্ণনা করে। Amazon Q in QuickSight এর সাথে যোগ করে স্বাভাবিক ভাষায় প্রশ্ন (“গত মাসে বিভাগ ধরে বিক্রি”) আর generative সারাংশ।
  • দাম user বা session ধরে: টাকা দাও author আর reader-এর জন্য, অথবা reader session-এ মাপা capacity-র জন্য, server-এর জন্য না (নিচে বিস্তারিত)।

সাধারণ use case: business analytics, visualisation বানানো, ad-hoc analysis (“সিলেটে return হঠাৎ বাড়ল কেন?”), আর কোম্পানির হাতে থাকা data থেকে business insight বের করা।

#Data source আর QuickSight সেখানে কীভাবে পৌঁছায়

QuickSight তোমার কাঁচা data নিজের কাছে রাখে না; data যেখানে আছে সেখানে যুক্ত হয়, তারপর হয় প্রতিবার query করে, নয়তো একটা copy SPICE-এ import করে। Data source হলো connection-টা (endpoint, credential, network-এর পথ); dataset হলো তার ওপর তুমি যা বানাও (কোন table বা SQL query, কোন column, calculated field, join), আর analysis এই dataset-ই ব্যবহার করে।

ধরনউদাহরণখেয়াল রাখো
AWS-এর database আর analyticsRDS, Aurora, Redshift, Athena, OpenSearch, Timestreamএকই account আর Region-এ নিজে থেকেই খুঁজে পায়। Big data-র জন্য সবচেয়ে বেশি ব্যবহৃত source হলো Redshift আর Athena।
S3Bucket-এ CSV, TSV, JSON, Excel আর log fileপড়ে একটা manifest file দিয়ে, যেটা file-গুলোর তালিকা দেয়। Data বড় বা partition করা হলে S3-কে বরং Athena দিয়ে query করো।
যেকোনো জায়গার database (JDBC)EC2-তে বা অফিসে (on premises) চলা MySQL, PostgreSQL, SQL Server, Oracle, Teradata, Snowflake, Databricks…Internet দিয়ে, অথবা আরও ভালো, VPC connection আর VPN বা Direct Connect দিয়ে private পথে।
SaaS applicationSalesforce, Jira, GitHub, Adobe Analytics…OAuth দিয়ে sign in করা built-in connector; data SPICE-এ import হয়।
File uploadExcel (.xlsx), .csv, .tsv, .json, ELF আর CLF-এর web-server logতোমার computer থেকে সরাসরি SPICE-এ upload।

#Private database: VPC connection

QuickSight চলে AWS-এর নিজের network-এ, তোমার VPC-র বাইরে। Private subnet-এর database-এর (ওটাই database-এর ঠিক জায়গা, অধ্যায় ৩) কোনো public address নেই, তাই internet দিয়ে QuickSight সেখানে পৌঁছাতে পারে না। উপায় হলো একটা VPC connection (Enterprise edition): QuickSight তোমার বাছা subnet-এ network interface (ENI) বসায়, তোমার বাছা security group দিয়ে, আর ওই interface দিয়ে database-এর private address-এর সাথে কথা বলে। Database-এর security group-এ port খুলে দাও VPC connection-এর security group থেকে। অফিসের database-ও একইভাবে চলে: VPC Site-to-Site VPN বা Direct Connect দিয়ে data centre-এ পৌঁছায়, আর QuickSight যুক্ত হয় VPC connection দিয়ে।

পুরোনো বিকল্প হলো database-কে public-এ খুলে দেওয়া, আর তার security group-এ ওই Region-এর জন্য QuickSight-এর প্রকাশিত IP range-কে অনুমতি দেওয়া। কাজ করে, কিন্তু পরীক্ষা যে উত্তর পছন্দ করে সেটা হলো private database আর VPC connection।

#AWS source-এ অনুমতি

QuickSight Athena call করে, S3 পড়ে আর Redshift cluster-এর তালিকা দেখে নিজের service role দিয়ে, যে মানুষ click করছে তার permission দিয়ে না। একজন admin এই access দেয় QuickSight-এর security and permissions page-এ: Athena-তে টিক, প্রতিটা S3 bucket-এ টিক (Athena-র query-result bucket-সহ), আর encrypted data-র জন্য QuickSight কোন KMS key ব্যবহার করতে পারবে তা বাছা। কোনো query Athena console-এ চলছে অথচ QuickSight-এ access denied দিচ্ছে, তার মানে প্রায় সবসময়ই এমন একটা bucket, যেটায় ওখানে কখনো টিক দেওয়া হয়নি। Data lake যদি Lake Formation দিয়ে নিয়ন্ত্রিত হয়, তাহলে QuickSight-এর user বা group-কে table আর column-এর অনুমতি দিতে হয় সেখানেই (লেসন ১৭.৬)।

QuickSight কীভাবে data-র কাছে পৌঁছায়

ঢাকার একটা e-commerce shop মাস শেষের sales dashboard বানায় তিন জায়গার data দিয়ে: S3 data lake (Athena দিয়ে), private RDS-এর orders database আর Salesforce। প্রতিটা পথ দেখো, আর যে দুটো ভুলে পথগুলো ভেঙে যায় সেগুলোও।

পরিস্থিতি

QuickSight নিজে Parquet file পড়ে না: সে Athena-কে SQL পাঠায়, আর Athena S3 পড়ে।

VPC
S3 data lakeParquet file
AthenaS3-এ SQL
Orders DBprivate subnet
QuickSightdataset
Manager-রা
SalesforceSaaS
ধাপ 1 / 4
1

একজন author Athena-র “orders_2026” table-এর ওপর একটা dataset বানাল। Dataset হলো কোনো source-এর ওপর QuickSight-এর সংরক্ষিত দৃষ্টি: কোন table বা query, কোন column, আর কীভাবে আনা হবে।

#SPICE আর direct query

#Dashboard-এ data আনার দুটো উপায়

প্রতিটা dataset দুটো query mode-এর একটা ব্যবহার করে:

  • Direct query: QuickSight কোনো copy রাখে না। প্রতিবার কোনো visual আঁকা, filter বা refresh হলে সে source-এ একটা query পাঠায়। Data সবসময় হালনাগাদ, কিন্তু প্রত্যেক viewer-এর প্রতিটা click source-এর ঘাড়ে চাপ হয়ে পড়ে (আর Athena হলে খরচও), আর dashboard ঠিক ততটাই দ্রুত, যতটা source।
  • SPICE-এ import: QuickSight dataset-এর query একবার চালায়, আর result রেখে দেয় SPICE-এ, অর্থাৎ Super-fast, Parallel, In-memory Calculation Engine-এ। SPICE হলো QuickSight-এর ভেতরের একটা columnar, in-memory store, টিকে থাকার জন্য একাধিক copy-তে রাখা। Visual হিসাব হয় memory থেকে, তাই দ্রুত, আর পরের refresh পর্যন্ত source-কে ছোঁয়াই হয় না। SPICE ব্যবহার হয় শুধু data import করলে; direct query-র dataset কখনো SPICE ছোঁয় না।
SPICE-এ importDirect query
গতিদ্রুত, memory থেকে, source যেমনই হোকSource যতটা দ্রুত, ততটা
হালনাগাদশেষ refresh পর্যন্তসবসময় এই মুহূর্তের
Source-এর ওপর চাপ আর খরচপ্রতি refresh-এ একবারপ্রতিটা দেখা, filter আর click-এ
আকারপ্রতি dataset ১ TB পর্যন্ত (নতুন data preparation দিয়ে ২ TB, ২০২৬), account-এর SPICE capacity-র মধ্যেQuickSight-এর দিক থেকে সীমা নেই
কখন লাগেSaaS source আর file upload (সবসময় import হয়), কিছু ML featureখুব বড় বা real-time data, যেখানে source অনেক query সামলানোর জন্যই বানানো (প্রায়ই Redshift)

#SPICE capacity

SPICE কিনতে হয় মাসে প্রতি GB ধরে। Enterprise edition-এ প্রত্যেক Author-এর সাথে আসে ১০ GB (Author Pro পায় ১০ GB credit), আর বাড়তি capacity-র দাম প্রায় মাসে প্রতি GB $0.38; যেকোনো সময় বাড়ানো বা ছেড়ে দেওয়া যায়। একটা Region-এ পুরো account এই capacity ভাগাভাগি করে। ফুরিয়ে গেলে নতুন import ব্যর্থ হয়, কিন্তু আগের dataset-গুলো চলতে থাকে: আরও কেনো, অব্যবহৃত dataset মুছে দাও, বা কম column আর row import করো (শুধু শেষ ৯০ দিন, শুধু visual-এ লাগা column)।

#SPICE refresh

SPICE-এর data একটা snapshot, তাই refresh করতে হয়:

  • Full refresh পুরো copy বদলে দেয়। Schedule: দুই edition-এই দিনে, সপ্তাহে বা মাসে একবার, আর Enterprise edition-এ ঘণ্টায় একবার। Console-এ প্রতি dataset-এ পাঁচটা পর্যন্ত schedule; schedule করা refresh বাছা সময়ের ১০ মিনিটের মধ্যে শুরু হয়।
  • Incremental refresh (Enterprise edition, Athena, Redshift, RDS-এর মতো SQL source) একটা date column ধরে শুধু look-back window-এর ভেতরের row আবার পড়ে, ধরো শেষ দুই দিন, আর চলতে পারে ১৫ বা ৩০ মিনিট পরপর।
  • চাওয়ামাত্র: “Refresh now” চাপো, অথবা data pipeline-এর শেষ মাথা থেকে CreateIngestion API call করো, ধরো Glue job শেষ হওয়ার পরে একটা Lambda function থেকে, যাতে নতুন data নামার ঠিক পরেই dashboard হালনাগাদ হয় (লেসন ১৭.৮)। Code থেকে refresh চালাতে capacity pricing লাগে।

Refresh ব্যর্থ হলে (column-এর নাম বদল, table মুছে ফেলা, password-এর মেয়াদ শেষ, source-এর time out), SPICE শেষ সফল copy রেখে দেয়: dashboard চলতে থাকে কিন্তু পুরোনো সংখ্যা দেখায়, আর dataset-এ “refresh ব্যর্থ হলে owner-কে email করো” option চালু থাকলে QuickSight owner-কে email করে। জরুরি dashboard-এ “last refreshed” সময় দেখিয়ে রাখলে পুরোনো data চোখে পড়ে।

SPICE নাকি direct query

মাসের পয়লা তারিখ সকাল ৯টায় shop-এর ২০০ জন manager একই sales dashboard খোলেন। প্রতিবার Athena-কে জিজ্ঞেস করা আর SPICE-এ রাখা একটা copy থেকে পড়া পাশাপাশি দেখো, তারপর refresh সফল আর ব্যর্থ হওয়াও দেখো।

পরিস্থিতি

প্রতিটা screen-এর প্রতিটা visual source-এ একটা করে query পাঠায়।

S3 data lake২ TB order
Athena
Dashboard
২০০ manager
২০০ বার খোলা
ধাপ 1 / 4
1

Dataset-টা direct query-তে রাখা: QuickSight কোনো copy রাখে না। প্রতিবার কোনো visual আঁকা, filter বা refresh হলে সে source-কে আবার জিজ্ঞেস করে।

#Analysis, dashboard, user আর group

#Dataset থেকে dashboard

QuickSight বানানো আর পড়াকে আলাদা রাখে:

  1. Dataset data তৈরি করে রাখে (source, column, join, calculated field, SPICE নাকি direct query)।
  2. Analysis হলো author-এর কাজের টেবিল: visual, filter, parameter, control, theme। Analysis বানাতে বা বদলাতে পারে শুধু author।
  3. Analysis publish করলে তৈরি হয় একটা dashboard: analysis-এর শুধু-পড়ার একটা snapshot, যেটা তার configuration রেখে দেয়, অর্থাৎ author যেভাবে বসিয়েছে সেভাবেই filter, parameter, control আর sort order। Author যে control রেখে গেছে, reader সেগুলো ব্যবহার করতে পারে (মাস বাছা, drill down, অনুমতি থাকলে visual export), কিন্তু visual বদলাতে পারে না।
  4. Dashboard user বা group-এর সাথে share করা হয়। Dashboard share করতে হলে আগে publish করতেই হবে।

Analysis বদলালে dashboard বদলায় না: author আবার publish করলে তবেই reader বদলটা দেখে (QuickSight আগের version রেখে দেয়, তাই owner চাইলে ফিরে যেতে পারে)। Analysis-ও share করা যায়, কিন্তু তাতে মানুষ হয়ে যায় সহ-author, যারা সেটা বদলাতে পারে; analysis share করো অন্য author-দের সাথে, dashboard share করো reader-দের সাথে।

যে dashboard দেখতে পারে, সে তার visual-এর পেছনের data-ও দেখতে পারে (যেমন export বা drill down করে)। Dashboard-এর filter কোনো নিরাপত্তা না। কিছু row বা column সবার জন্য না হলে dataset-এ row-level বা column-level security বসাও।

QuickSight dashboard-কে schedule ধরে email report হিসেবেও পাঠাতে পারে (PDF বা email-এর ভেতরে), threshold alert দিতে পারে (“দিনে return ৫০০ পার হলে জানাও”), আর ছাপার মতো output-এর জন্য paginated report বানাতে পারে।

#User, group আর role

QuickSight-এর নিজস্ব user আর group আছে। এরা থাকে শুধু QuickSight-এর ভেতরে, IAM-এ না: একজন IAM user, এমনকি administrator-ও, তাঁর জন্য QuickSight user register না করা পর্যন্ত QuickSight খুলতে পারেন না, আর dashboard share করার সময় কোনো IAM group বাছা যায় না।

  • পরিচয়: user sign in করতে পারে নিজের IAM পরিচয় দিয়ে (QuickSight user সেটার সাথে জোড়া থাকে), IAM Identity Center বা অন্য কোনো SAML identity provider দিয়ে (single sign-on), Active Directory দিয়ে (Enterprise edition), অথবা email-এ আমন্ত্রণ পাওয়া QuickSight-এর নিজস্ব user হিসেবে।
  • Role: Admin, Author (data জোড়ে, analysis বানায়, publish করে), Reader (dashboard দেখে আর ব্যবহার করে), সাথে generative AI feature-সহ Author Pro আর Reader Pro।
  • Group: QuickSight user-দের দল, share করা আর RLS rule লেখার জন্য। Group পাওয়া যায় Enterprise edition-এ (standard edition-এ শুধু user)। মানুষ ধরে না, group ধরে share করো: তাহলে নতুন একজন branch manager একটা group-এ যোগ দিলেই সব dashboard পেয়ে যান।
  • Namespace (Enterprise) user আর group-কে আলাদা আলাদা বিচ্ছিন্ন দলে ভাগ করে, যেমন multi-tenant SaaS product-এ প্রতি customer-এর জন্য একটা।

Analysis থেকে share করা dashboard

Shop-এর data analyst মাস শেষের report বানায়, সেটাকে dashboard হিসেবে publish করে, আর branch manager-দের group-এর সাথে share করে।

পরিস্থিতি

Analysis হলো কারখানা; dashboard হলো publish করা, শুধু-পড়ার ফল।

AnalystAuthor
Analysisবদলানো যায়
Dashboardশুধু পড়া
GroupBranch-Managers
ManagerReader
visual, filter যোগ
ধাপ 1 / 5
1

Analyst sales dataset থেকে একটা analysis বানায়: বিভাগ ধরে bar chart, মাসের trend line, product category-র ওপর filter, আর একটা date parameter, তার control-সহ।

#Row-level আর column-level security

#Row-level security (RLS)

Row-level security দিয়ে একটা dashboard অনেক রকম দর্শকের কাজে লাগে, প্রত্যেকে শুধু নিজের row দেখে। এটা Enterprise edition-এর feature। তুমি একটা rules dataset (permissions dataset-ও বলে) বানাও, যাতে থাকে:

  • একটা column, যেটা user বা group চেনায় (user-এর নাম বা group-এর নাম, অথবা তাদের ARN), আর
  • যে যে field ধরে filter হবে তার প্রতিটার জন্য একটা column, অনুমোদিত মানগুলো নিয়ে। ফাঁকা মান মানে সব মান।

Rules dataset-টা আসল data-র dataset-এর সাথে জুড়ে দাও। এরপর থেকে QuickSight ওই viewer-এর প্রতিটা query-তে মিলে যাওয়া rule-গুলো filter হিসেবে জুড়ে দেয়, SPICE হোক বা direct query, কোনো visual হিসাবের আগেই: মোট, export আর drill-down-এ থাকে শুধু অনুমোদিত row। মনে রাখার নিয়মগুলো:

  • যে user বা group-এর কোনো মিলে যাওয়া rule নেই, সে কোনো row দেখে না: RLS বন্ধ দিকে ব্যর্থ হয়।
  • Dataset-এর owner সব দেখে; RLS আটকায় তাদের, যাদের সাথে dataset share করা হয়েছে।
  • RLS filter করে text field (সংখ্যা বা তারিখ না)।
  • Database-এ রাখা rules dataset direct query দিয়ে ব্যবহার করলে table বদলানোর সাথে সাথেই হালনাগাদ হয়; file দিয়ে বানানোটা আবার upload করতে হয়।
  • Anonymous embedded user-দের জন্য (যাদের কোনো QuickSight user নাম নেই) ব্যবহার করো tag-based RLS: application embed URL চাওয়ার সময় session tag পাঠায় (buyer = B17), আর dataset সেই tag দিয়ে row মেলায়।

#Column-level security (CLS)

Column-level security (এটাও Enterprise edition) dataset-এর কিছু column নির্দিষ্ট user বা group-এর জন্য রাখে: salary, customer-এর phone number, জাতীয় পরিচয়পত্রের নম্বর। বাকি সবার কাছে column-টা থাকেই না: visual-এ যোগ করতে পারে না, আর যে visual সেটা ব্যবহার করে সেটা restricted দেখায়। RLS row সরায়; CLS column সরায়; একটা dataset দুটোই ব্যবহার করতে পারে।

Row-level আর column-level security

একটা bank একটাই branch-performance dashboard publish করেছে। ঢাকা আর চট্টগ্রামের branch manager একই dashboard খোলেন; কে কোন row পাবেন, তা ঠিক করে rules dataset।

পরিস্থিতি

Dhaka-Managers group-এর rule শুধু সেই row রাখে, যেখানে Region হলো Dhaka।

Rules datasetকে কী দেখবে
Branch datasetRLS চালু
Dashboard
ঢাকার manager
rules জোড়া
ধাপ 1 / 3
1

Rules dataset একটা ছোট table: একটা group-name (বা user-name) column, আর যে field ধরে filter হবে তার প্রতিটার জন্য একটা column। একটা row: Dhaka-Managers → Region = Dhaka। এটা branch dataset-এর সাথে তার permissions dataset হিসেবে জোড়া।

Sharing আর row-level security ল্যাব

একটা bank-এর analyst branch-এর আমানতের একটা dashboard বানাচ্ছে। তিনটা ধাপ পার হও, row-level আর column-level security চালু বা বন্ধ করো, তারপর আলাদা আলাদা মানুষ হয়ে dashboard খোলো।

ধাপ

Dataset-এর security

Rules dataset

Dhaka-Managersঢাকা
Ctg-Managersচট্টগ্রাম
Head-Office(ফাঁকা = সব)

যে হিসেবে dashboard খুলবে

Dashboard খুলতে ওপরে একজনকে বেছে নাও।

QuickSight-এর RLS আর CLS data রক্ষা করে QuickSight-এর ভেতরে। একই data যারা Athena, Redshift Spectrum বা EMR দিয়ে query করে তাদের জন্যও যদি আটকাতে হয়, তাহলে row আর column-এর অনুমতি একবারই Lake Formation-এ লিখে দাও, আর Athena দিয়ে query করা QuickSight user-রাও একই বাধা পাবে (লেসন ১৭.৬)।

#Edition আর দাম

#Standard আর Enterprise edition

StandardEnterprise
কাদের জন্যএকা মানুষ আর ছোট teamপ্রতিষ্ঠান; নতুন account-এর default
Group, Active Directory, namespaceনা (শুধু user)হ্যাঁ
Row-level আর column-level securityনাহ্যাঁ
Private source-এ VPC connectionনাহ্যাঁ
ঘণ্টায় আর incremental SPICE refreshনাহ্যাঁ
Embedding, capacity pricing, paginated report, alertনাহ্যাঁ
নিজের KMS key দিয়ে SPICE encrypt (২০২২ থেকে)হ্যাঁহ্যাঁ

Standard edition এখন পাওয়া যায় শুধু API দিয়ে (CreateAccountSubscription), বার্ষিক plan-এ মাসে user-প্রতি প্রায় $9। পরীক্ষার কথাটা সোজা: CLS (আর RLS, group, VPC connection) লাগলে Enterprise edition।

#দাম (Enterprise edition, অক্টোবর ২০২৬)

কীদাম
Authorমাসে user-প্রতি $24
Author Pro (Author + generative AI)মাসে user-প্রতি $40
Readerমাসে user-প্রতি $3
Reader Pro (Reader + generative AI)মাসে user-প্রতি $20
Reader capacity (session)মাসে ৫০০ session $250 থেকে শুরু (বাড়তি session-প্রতি $0.50), অথবা ৫০,০০০ session থেকে শুরু বার্ষিক ধাপ; এক session = ৩০ মিনিটের ব্যবহার
SPICEপ্রতি Author-এর সাথে ১০ GB, তারপর মাসে GB-প্রতি প্রায় $0.38
Account feeমাসে $250, শুধু যদি account-এ কোনো Pro user বা Q&A topic থাকে

একটা হিসাব: shop-এ ৩ জন author আর dashboard পড়েন এমন ৪০ জন manager: ৩ × $24 + ৪০ × $3 = মাসে $192, সাথে ৩০ GB SPICE ফ্রি। আবার shop যদি নিজের marketplace-এ ২০,০০০ seller-এর জন্য dashboard embed করে, per-user pricing-এ লাগবে ২০,০০০ × $3 = মাসে $60,000, অথচ বেশিরভাগ seller সপ্তাহে একবার তাকান; capacity pricing টাকা নেয় সত্যিই যতগুলো ৩০ মিনিটের session ব্যবহার হলো ততগুলোর জন্য। এই কারণেই পরীক্ষা বড় বা মাঝে মাঝে আসা দর্শকের ক্ষেত্রে QuickSight-কে “per-session pricing”-এর সাথে জোড়ে।

#নিজের application-এ dashboard embed করা

একটা dashboard (বা একটা visual, বা Q search bar) তোমার নিজের website বা app-এর ভেতরে চলতে পারে, এমন customer বা partner-এর জন্য যাঁরা কখনো QuickSight console দেখেন না:

  • Registered-user embedding: যাঁরা আগে থেকেই QuickSight user (intranet-এ ভেতরের কর্মী), তাঁদের জন্য। তোমার backend GenerateEmbedUrlForRegisteredUser call করে; session চলে ওই user হিসেবেই, তাঁর sharing আর RLS নিয়ে।
  • Anonymous embedding: QuickSight account নেই এমন অনেক বাইরের user-এর জন্য (portal-এর customer, public site-এর নাগরিক)। তোমার backend GenerateEmbedUrlForAnonymousUser call করে dashboard-এর ARN, tag-based RLS-এর জন্য দরকার হলে session tag, আর অনুমোদিত domain দিয়ে। এর জন্য capacity pricing লাগে: টাকা দাও session ধরে, দর্শক ধরে না।

কীভাবে চলে আর কোথায় ভুল হয়: embed URL-এ থাকে একবার-ব্যবহারের একটা token, ৫ মিনিট বৈধ, আর এটা দিয়ে খোলা session চলে ১৫ মিনিট থেকে ১০ ঘণ্টা (default ১০)। প্রতিটা page load-এর জন্য server-এ নতুন URL বানাও; cache করা URL ব্যর্থ হয়। Page-এর domain থাকতে হবে QuickSight-এর domain allow list-এ (অথবা call-এর মধ্যেই দিতে হবে, তিনটা পর্যন্ত), নইলে iframe দেখাতে রাজি হয় না; এতে অন্য site তোমার dashboard frame করতে পারে না। Session tag আসলে security credential: শুধু server-এ বসাও, browser যা পাঠায় সেই মান দিয়ে কখনো না।

নিজের app-এ dashboard embed করা

একটা garments factory প্রত্যেক বিদেশি buyer-কে নিজেদের buyer portal-এর ভেতরেই একটা live production dashboard দেখায়। Buyer-দের কোনো QuickSight account নেই।

পরিস্থিতি

Backend QuickSight-এর কাছে অল্প সময়ের একটা URL চায়, সাথে একটা session tag, যেটা row filter করে।

Buyer-এর browser
Portal backendportal.example.com
QuickSight API
Dashboardtag-based RLS
portal-এ log in
ধাপ 1 / 5
1

একজন buyer factory-র নিজের portal-এ, portal-এর নিজের login দিয়ে ঢোকেন। QuickSight এই password কখনো দেখে না।

#নিরাপত্তা আর পরিচালনা

  • Access: QuickSight-এর user আর group, role (Admin, Author, Reader), dashboard আর dataset ধরে sharing, RLS আর CLS। কে QuickSight পরিচালনা করবে আর তার API call করবে (quicksight:* action), তা ঠিক করে IAM policy।
  • Network: VPC connection private source-এ যাওয়া traffic তোমার network-এর ভেতরেই রাখে, database-কে internet-এ খুলতে হয় না।
  • Encryption: SPICE-এর data at rest encrypted থাকে (AWS-এর নিজের key দিয়ে, অথবা তোমার নিজের KMS customer managed key দিয়ে, দুই edition-এই); connection-গুলো TLS ব্যবহার করে।
  • Audit: QuickSight-এর API call আর console-এর কাজ (data source আর dataset বানানো, dashboard share করা, embed URL চাওয়া) CloudTrail-এ লেখা থাকে (অধ্যায় ১৯)। SPICE ingestion-এর অবস্থা dataset ধরে আর API দিয়ে দেখা যায়।

#কোথায় ভুল হয়

  • Private database-এর data source time out হয়: VPC connection নেই, অথবা database-এর security group VPC connection-এর security group-কে অনুমতি দেয়নি। Database-কে public কোরো না।
  • Athena console-এ চলে, QuickSight বলে access denied: QuickSight-এর service role-কে security and permissions page-এ S3 bucket (বা Athena-র result bucket, বা KMS key) কখনো দেওয়া হয়নি, অথবা Lake Formation-এ QuickSight user-এর জন্য কোনো grant নেই।
  • Dashboard ধীর, আর Athena-র bill চড়ছে: dataset Athena-র ওপর direct query-তে, আর প্রত্যেক reader-এর প্রতিটা click একটা scan চালায়। SPICE-এ import করে schedule ধরে refresh করো।
  • সংখ্যা এক দিনের পুরোনো, কেউ টেরও পায়নি: SPICE refresh ব্যর্থ হয়েছে (schema বদল, credential-এর মেয়াদ শেষ), আর SPICE শেষ ভালো copy রেখে দিয়েছে। ব্যর্থতার email-এ নজর রাখো, refresh-এর সময় দেখিয়ে রাখো।
  • SPICE-এর অভাবে import ব্যর্থ: capacity কেনো, অব্যবহৃত dataset সরাও, কম row বা column import করো, অথবা ওই table-এর জন্য direct query।
  • Reader নতুন chart দেখছে না: analysis save হয়েছে, কিন্তু dashboard আবার publish হয়নি।
  • একজন administrator QuickSight খুলতে পারছেন না, বা share-এর তালিকায় IAM group নেই: QuickSight-এর user আর group IAM থেকে আলাদা; user register করো আর QuickSight group ব্যবহার করো।
  • একজন branch manager সব branch দেখছেন: dataset-এ RLS নেই (অথবা rules dataset ছাড়া একটা copy বানানো হয়েছে)। Dashboard-এর filter নিরাপত্তা না।
  • নতুন কর্মী ফাঁকা chart দেখছেন: RLS চালু, আর তাঁর user বা group-এর জন্য কোনো rule নেই।
  • Menu-তে CLS বা RLS “নেই”: account Standard edition-এ।
  • Embed করা dashboard error দেখাচ্ছে: page-এর domain অনুমোদিত না, অথবা embed URL ৫ মিনিট পরে আবার ব্যবহার করা হয়েছে; capacity pricing ছাড়া anonymous embedding-ও ব্যর্থ হয়।

#System design-এ QuickSight

চেনা কয়েকটা নকশা:

  • Data lake-এর ওপর BI: S3 → Glue Data Catalog → Athena → QuickSight (SPICE)। Serverless analytics-এর পুরো stack: শুরু থেকে শেষ পর্যন্ত কিছুই চালাতে হয় না।
  • Data warehouse-এর ওপর BI: অনেক source → Redshift → QuickSight, প্রায়ই direct query-তে, কারণ Redshift একসাথে অনেক analytical query সামলানোর জন্যই বানানো, আর সবচেয়ে বেশি দেখা dashboard-এর জন্য SPICE।
  • Operational database থেকে report: RDS বা Aurora → VPC connection দিয়ে QuickSight, SPICE-এ import করে, যাতে report production database-কে ধীর না করে (অথবা একটা read replica-কে দেখাও, অধ্যায় ৭)।
  • Customer-এর সামনে analytics: একটা SaaS product প্রতিটা tenant-এর জন্য dashboard embed করে anonymous embedding দিয়ে, tag-based RLS-এর জন্য session tag আর capacity pricing নিয়ে।
  • Big data ingestion pipeline-এর শেষ মাথা: IoT → Kinesis → Firehose → S3 → Athena → QuickSight (লেসন ১৭.৮)।

QuickSight কখন ভুল বাছাই: server আর application-এর operational metric আর alarm-এর জায়গা CloudWatch dashboard (অধ্যায় ১৯) বা Grafana; log খোঁজা আর ঘাঁটা-র জায়গা OpenSearch Dashboards (লেসন ১৭.৩); SQL চালানো-র জায়গা Athena বা Redshift, QuickSight শুধু তাদের query করে; প্রতিটা event ধরে real-time সিদ্ধান্ত-এর জায়গা stream processing।

#নিজে করে দেখো

এই command-গুলো AWS CLI v2 দিয়ে, এমন একটা account-এ যেখানে ap-southeast-1-এ আগে থেকেই QuickSight Enterprise subscription আছে। Account ID 111122223333 একটা placeholder। QuickSight user আর SPICE-এর GB ধরে টাকা নেয়, তাই যা বানাবে তা মুছে ফেলো।

# 1. একজন reader register করো (QuickSight user, IAM থেকে আলাদা), আর একটা group বানাও
aws quicksight register-user --aws-account-id 111122223333 --namespace default \
  --identity-type QUICKSIGHT --user-role READER \
  --email dhaka.manager@example.com --user-name dhaka-manager
# { "User": { "Arn": "arn:aws:quicksight:ap-southeast-1:111122223333:user/default/dhaka-manager",
#             "Role": "READER", "IdentityType": "QUICKSIGHT", "Active": false, ... },
#   "UserInvitationUrl": "https://quicksight.aws.amazon.com/sn/console/signup?..." }

aws quicksight create-group --aws-account-id 111122223333 --namespace default \
  --group-name Dhaka-Managers --description "Branch managers, Dhaka region"
aws quicksight create-group-membership --aws-account-id 111122223333 --namespace default \
  --group-name Dhaka-Managers --member-name dhaka-manager

# 2. একটা Athena data source বানাও (QuickSight-এর role-কে S3 bucket-এর অনুমতি দেওয়া থাকতে হবে)
aws quicksight create-data-source --aws-account-id 111122223333 \
  --data-source-id athena-sales --name "Athena sales" --type ATHENA \
  --data-source-parameters '{"AthenaParameters":{"WorkGroup":"primary"}}'
# { "Arn": "arn:aws:quicksight:ap-southeast-1:111122223333:datasource/athena-sales",
#   "CreationStatus": "CREATION_IN_PROGRESS", "Status": 202 }

# 3. এর ওপর একটা SPICE dataset বানানোর পরে (console-এ, বা ImportMode SPICE দিয়ে create-data-set),
#    একটা refresh চালাও আর অবস্থা দেখো
aws quicksight create-ingestion --aws-account-id 111122223333 \
  --data-set-id sales-2026 --ingestion-id refresh-2026-10-30-0600
aws quicksight describe-ingestion --aws-account-id 111122223333 \
  --data-set-id sales-2026 --ingestion-id refresh-2026-10-30-0600 \
  --query 'Ingestion.[IngestionStatus,RowInfo.RowsIngested,ErrorInfo]'
# [ "COMPLETED", 1843201, null ]
# ব্যর্থ refresh দেখতে এমন: [ "FAILED", null, { "Type": "SQL_EXCEPTION", "Message": "..." } ]

# 4. Publish করা একটা dashboard group-এর সাথে share করো (শুধু পড়ার action)
aws quicksight update-dashboard-permissions --aws-account-id 111122223333 \
  --dashboard-id month-end-sales --grant-permissions \
  'Principal=arn:aws:quicksight:ap-southeast-1:111122223333:group/default/Dhaka-Managers,Actions=quicksight:DescribeDashboard,quicksight:ListDashboardVersions,quicksight:QueryDashboard'

# 5. Portal-এর anonymous দর্শকের জন্য embed করো (capacity pricing লাগে), RLS-এর জন্য session tag দিয়ে
aws quicksight generate-embed-url-for-anonymous-user --aws-account-id 111122223333 \
  --namespace default --session-lifetime-in-minutes 60 \
  --authorized-resource-arns arn:aws:quicksight:ap-southeast-1:111122223333:dashboard/buyer-orders \
  --experience-configuration '{"Dashboard":{"InitialDashboardId":"buyer-orders"}}' \
  --session-tags Key=buyer,Value=B17 --allowed-domains https://portal.example.com
# { "EmbedUrl": "https://ap-southeast-1.quicksight.aws.amazon.com/embed/...", "Status": 200,
#   "AnonymousUserArn": "arn:aws:quicksight:ap-southeast-1:111122223333:user/default/..." }
# URL-টা কাজ করে একবারই, ৫ মিনিটের মধ্যে।

# 6. পরিষ্কার করো
aws quicksight delete-group --aws-account-id 111122223333 --namespace default --group-name Dhaka-Managers
aws quicksight delete-user --aws-account-id 111122223333 --namespace default --user-name dhaka-manager

Console-এও করে দেখো: বিক্রির একটা ছোট CSV SPICE-এ upload করো, একটা bar chart আর একটা filter control দিয়ে analysis বানাও, publish করো, তারপর dataset-এ row-level security হিসেবে একটা rules CSV (GroupName,Region, প্রতি group-এর জন্য একটা row) যোগ করো, আর অন্য browser-এ reader হিসেবে dashboard খুলে দেখো।

#সারসংক্ষেপ

মূল কথা

  • QuickSight = interactive dashboard-এর জন্য AWS-এর serverless, ML-চালিত BI service; দ্রুত, নিজে scale করে, embed করা যায়, দাম user বা session ধরে। Use case: business analytics, visualisation, ad-hoc analysis, business insight। ২০২৫ থেকে এটা Amazon Quick-এর অংশ (Quick Sight); পরীক্ষা আর API এখনও বলে QuickSight।
  • Source: RDS, Aurora, Redshift, Athena, S3, OpenSearch, Timestream; অফিসের JDBC database; SaaS (Salesforce, Jira…); file (Excel, CSV, TSV, JSON, ELF/CLF log)। Private database-এর জন্য VPC connection; AWS source-এর জন্য QuickSight-এর service role-কে bucket-এর অনুমতি দিতে হয়।
  • SPICE = Super-fast, Parallel, In-memory Calculation Engine, ব্যবহার হয় data import করলে: দ্রুত, source-এর চাপ কমায়, হালনাগাদ শুধু শেষ refresh পর্যন্ত। Direct query: সবসময় এই মুহূর্তের, source যতটা দ্রুত ততটা। “হাজার গুণ দ্রুত” AWS-এর কোনো সংখ্যা না।
  • SPICE: প্রতি Author-এর সাথে ১০ GB, বাড়তি মাসে GB-প্রতি প্রায় $0.38; refresh দিনে/সপ্তাহে/মাসে, ঘণ্টায় (Enterprise), ১৫ মিনিট পরপর incremental (Enterprise, SQL source), বা CreateIngestion দিয়ে চাওয়ামাত্র। Refresh ব্যর্থ হলে পুরোনো copy থেকে যায়।
  • Analysis (বদলানো যায় এমন কাজের জায়গা) → publish → dashboard (শুধু-পড়ার snapshot, filter, parameter, control, sort রেখে দেয়) → user বা group-এর সাথে share। Share করার আগে publish করতেই হবে; বদল আনতে আবার publish। Dashboard-এর দর্শক পেছনের data-ও দেখতে পায়।
  • QuickSight-এর user আর group থাকে শুধু QuickSight-এ, IAM-এ না। Group-এর জন্য Enterprise edition।
  • RLS (Enterprise): user/group → অনুমোদিত মান, এমন একটা rules dataset; ফাঁকা = সব; rule নেই = কোনো row নেই; owner সব দেখে; anonymous embedding-এর জন্য tag-based RLS। CLS (Enterprise): কিছু column শুধু কিছু user বা group-এর জন্য।
  • দাম: Author $24, Reader $3, Pro role $40 / $20, বড় দর্শক আর anonymous embedding-এর জন্য ৩০ মিনিটের session ধরে capacity pricing।
  • Embedding: registered-user বা anonymous (capacity pricing, session tag); URL ৫ মিনিট বৈধ, একবারই ব্যবহার; domain allow list।