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 আর analytics | RDS, Aurora, Redshift, Athena, OpenSearch, Timestream | একই account আর Region-এ নিজে থেকেই খুঁজে পায়। Big data-র জন্য সবচেয়ে বেশি ব্যবহৃত source হলো Redshift আর Athena। |
| S3 | Bucket-এ 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 application | Salesforce, Jira, GitHub, Adobe Analytics… | OAuth দিয়ে sign in করা built-in connector; data SPICE-এ import হয়। |
| File upload | Excel (.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 পড়ে।
একজন 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-এ import | Direct 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-এর শেষ মাথা থেকে
CreateIngestionAPI 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 পাঠায়।
Dataset-টা direct query-তে রাখা: QuickSight কোনো copy রাখে না। প্রতিবার কোনো visual আঁকা, filter বা refresh হলে সে source-কে আবার জিজ্ঞেস করে।
#Analysis, dashboard, user আর group
#Dataset থেকে dashboard
QuickSight বানানো আর পড়াকে আলাদা রাখে:
- Dataset data তৈরি করে রাখে (source, column, join, calculated field, SPICE নাকি direct query)।
- Analysis হলো author-এর কাজের টেবিল: visual, filter, parameter, control, theme। Analysis বানাতে বা বদলাতে পারে শুধু author।
- Analysis publish করলে তৈরি হয় একটা dashboard: analysis-এর শুধু-পড়ার একটা snapshot, যেটা তার configuration রেখে দেয়, অর্থাৎ author যেভাবে বসিয়েছে সেভাবেই filter, parameter, control আর sort order। Author যে control রেখে গেছে, reader সেগুলো ব্যবহার করতে পারে (মাস বাছা, drill down, অনুমতি থাকলে visual export), কিন্তু visual বদলাতে পারে না।
- 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 করা, শুধু-পড়ার ফল।
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 একটা ছোট table: একটা group-name (বা user-name) column, আর যে field ধরে filter হবে তার প্রতিটার জন্য একটা column। একটা row: Dhaka-Managers → Region = Dhaka। এটা branch dataset-এর সাথে তার permissions dataset হিসেবে জোড়া।
QuickSight-এর RLS আর CLS data রক্ষা করে QuickSight-এর ভেতরে। একই data যারা Athena, Redshift Spectrum বা EMR দিয়ে query করে তাদের জন্যও যদি আটকাতে হয়, তাহলে row আর column-এর অনুমতি একবারই Lake Formation-এ লিখে দাও, আর Athena দিয়ে query করা QuickSight user-রাও একই বাধা পাবে (লেসন ১৭.৬)।
#Edition আর দাম
#Standard আর Enterprise edition
| Standard | Enterprise | |
|---|---|---|
| কাদের জন্য | একা মানুষ আর ছোট 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
GenerateEmbedUrlForRegisteredUsercall করে; session চলে ওই user হিসেবেই, তাঁর sharing আর RLS নিয়ে। - Anonymous embedding: QuickSight account নেই এমন অনেক বাইরের user-এর জন্য (portal-এর customer, public site-এর নাগরিক)। তোমার backend
GenerateEmbedUrlForAnonymousUsercall করে 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 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।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
Amazon QuickSight কী?
নিজেকে যাচাই করোপ্রশ্ন
SPICE-এর পুরো নাম কী, আর QuickSight এটা কখন ব্যবহার করে?
নিজেকে যাচাই করোপ্রশ্ন
QuickSight dashboard সম্পর্কে কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
AdministratorAccess থাকা একজন IAM administrator প্রথমবার QuickSight খুলে কোনো dashboard দেখতে পাচ্ছেন না; share-এর তালিকাতেও IAM group finance-team নেই। কেন?
নিজেকে যাচাই করোপ্রশ্ন
কোন feature-এর জন্য QuickSight Enterprise edition লাগে?
নিজেকে যাচাই করোপ্রশ্ন
প্রতি মাসের পয়লা তারিখ সকাল ৯টায় ২০০ জন manager একই QuickSight dashboard খোলেন। Dataset Athena-র ওপর direct query-তে, chart আসতে ২০ সেকেন্ড লাগে আর Athena-র bill লাফিয়ে বাড়ে। সবচেয়ে ভালো সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
পরীক্ষার প্রশ্নে জানতে চাওয়া হলো, Redshift-এর এমন data-র ওপর QuickSight dashboard কীভাবে super-fast করবে, যেটা দিনে একবার বদলায়। প্রত্যাশিত উত্তর কী?
নিজেকে যাচাই করোপ্রশ্ন
এক সহকর্মী বললেন SPICE query হাজার গুণ দ্রুত করে। ঠিক কথাটা কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা e-commerce কোম্পানির orders database একটা private subnet-এর RDS instance। Database internet-এ না খুলেই QuickSight-কে এর ওপর dashboard বানাতে হবে। Architect কী করবেন?
নিজেকে যাচাই করোপ্রশ্ন
নতুন একটা S3 dataset-এর query Athena console-এ চলে, কিন্তু QuickSight-এ একই dataset access denied দিয়ে ব্যর্থ হয়। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা bank একটা branch dashboard publish করে। ঢাকার branch manager দেখবেন শুধু ঢাকার row, আর চট্টগ্রামের manager শুধু চট্টগ্রামের row, দুটো dashboard না বানিয়েই। কী ব্যবহার করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা dataset-এ row-level security চালু। একজন নতুন কর্মীকে সেই group-এ যোগ করা হলো, যার সাথে dashboard share করা, কিন্তু তাঁর বা তাঁর group-এর জন্য কোনো rule নেই। তিনি কী দেখবেন?
নিজেকে যাচাই করোপ্রশ্ন
QuickSight-এর rules dataset-এ Head-Office group-এর একটা row আছে, যার Region মান ফাঁকা। এর মানে কী?
নিজেকে যাচাই করোপ্রশ্ন
QuickSight-এর user আর group নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
S3 data lake-এ Glue Data Catalog-এ তালিকাভুক্ত ৪ TB partition করা Parquet file-এর ওপর QuickSight dashboard বানাতে হবে। Author কোন data source ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
QuickSight সরাসরি কোন দুটো data source-এর সাথে যুক্ত হতে পারে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
গতকাল একজন analyst তাঁর analysis-এ return-এর একটা chart যোগ করে save করেছেন। Branch manager-রা এখনও dashboard-এ chart-টা দেখছেন না। তাঁকে কী করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
কোনো row-level security ছাড়াই একটা dashboard সব branch manager-এর সাথে share করা হয়েছে, তবে তাতে দর্শকের region-এ বসানো একটা filter control আছে। Data কি সুরক্ষিত?
নিজেকে যাচাই করোপ্রশ্ন
SPICE refresh নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা data pipeline অনিশ্চিত সময়ে S3-এ নতুন sales file নামায়। ব্যবসা চায় প্রতিটা batch process হওয়ার সাথে সাথেই QuickSight dashboard refresh হোক, ঘড়ি ধরে না। Architect কী করবেন?
নিজেকে যাচাই করোপ্রশ্ন
SPICE-এ ৮ GB-এর একটা import ব্যর্থ হলো। Account-এ SPICE আছে ৩০ GB, ব্যবহার হয়েছে ২৭ GB। কোনটা সমস্যা মেটাবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি নিজের marketplace website-এর ভেতরে ৩০,০০০ বাইরের seller-কে sales dashboard দেখাতে চায়। বেশিরভাগ seller মাসে এক-দুবার দেখেন, আর কারোরই QuickSight account নেই। সবচেয়ে সাশ্রয়ী উপায় কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
Embed করা একটা dashboard portal.example.com-এ চলে, কিন্তু নতুন site buyers.example.com-এ error দেখায়। Backend বৈধ embed URL-ই দিচ্ছে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একজন developer সকাল ৯টায় একটা QuickSight embed URL cache করে প্রতিটা page view-এ সেটাই ব্যবহার করেন। প্রথমটার পরের সব page view ব্যর্থ হয়। কেন?
নিজেকে যাচাই করোপ্রশ্ন
QuickSight-এর বর্তমান Enterprise দামের মধ্যে কোন দুটো আছে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা payroll dashboard সব manager-কে বিভাগ ধরে কর্মীসংখ্যা দেখাবে, কিন্তু salary column দেখবে শুধু payroll team-এর group। কী configure করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুটো ক্ষেত্রে SPICE-এর বদলে direct query মানায়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
পরীক্ষার প্রশ্নে এমন একটা application-এর কথা, যার লাগবে ML insight-সহ দ্রুত BI dashboard, serverless auto-scaling আর per-session pricing। কোন service-এর বর্ণনা?
নিজেকে যাচাই করোপ্রশ্ন
এগুলোর মধ্যে কোনটা QuickSight import করতে বা যুক্ত হতে পারে না?
নিজেকে যাচাই করোপ্রশ্ন
একটা team-এর on-call engineer-দের জন্য EC2 fleet-এর CPU ব্যবহার আর error alarm-এর একটা dashboard লাগবে, প্রতি মিনিটে হালনাগাদ। এক সহকর্মী QuickSight-এর পরামর্শ দিলেন। ভালো বাছাই কোনটা?