Chương 9: Dashboard - Trung tâm Chỉ huy & Chiến lược Tối ưu
"Dashboard không phải là bảng tin treo tường. Nó là một buồng lái (Cockpit) để bạn ra quyết định tức thì."
Nhiều người lầm tưởng Dashboard chỉ là việc kéo thả 3-4 cái biểu đồ vào một màn hình cho đẹp. Thực tế, một Dashboard tồi sẽ làm App chậm đi 50% và khiến người dùng rối mắt. Với tư cách là một Citizen Developer chuyên nghiệp, bạn cần hiểu sâu về cơ chế hiển thị và tối ưu hiệu năng cho Dashboard.
9.1 Interactive Mode: Sức mạnh của sự Tương tác
Tính năng đáng giá nhất của AppSheet Dashboard là Interactive Mode (Chế độ tương tác). Khi bật tính năng này, các View thành phần sẽ "nói chuyện" được với nhau.
- Logic hoạt động: Khi bạn bấm chọn một dòng trong View cha (VD: Danh sách Nhân viên), lập tức các View con (VD: Biểu đồ doanh số, Danh sách đơn hàng) sẽ tự động lọc dữ liệu theo nhân viên đó.
- Lợi ích: Thay vì phải tạo 10 View riêng lẻ cho 10 nhân viên, bạn chỉ cần 1 Dashboard duy nhất.
- Cách bật: Trong phần cấu hình Dashboard View, tích chọn Use interactive mode.
9.2 Cơ chế Dữ liệu & Bẫy "Shared Filter" (Quan trọng)
Một sai lầm "chết người" mà 90% người mới gặp phải khi làm Dashboard lọc động:
- Vấn đề: AppSheet đồng bộ dữ liệu về Server. Nếu bạn tạo một bảng
Filterchỉ có 1 dòng duy nhất để làm bộ lọc chung (VD: Chọn Năm, Chọn Tháng), thì khi User A chọn "Năm 2024", User B đang mở App cũng sẽ bị nhảy Dashboard sang "Năm 2024". Đây là xung đột dữ liệu (Concurrency Conflict). - Giải pháp Chuyên gia:
- Cách 1 (Nên dùng): Sử dụng bảng UserSettings. Đây là tính năng đặc biệt lưu giá trị cục bộ trên từng thiết bị, không ảnh hưởng đến người khác.
- Cách 2: Tạo bảng
UserFilterscó cộtUserEmail. Mỗi nhân viên sẽ có một dòng cấu hình riêng. DùngSecurity Filterđể đảm bảo:[UserEmail] = USEREMAIL(). Người này lọc không ảnh hưởng người kia.
Mẹo Nâng cao (Visual Tricks): Bạn có thể tận dụng cột kiểu Show để gom các chỉ số tổng hợp (KPI) và hiển thị dưới dạng Text lớn, Image hoặc thậm chí là HTML/SVG đơn giản ngay trong Form lọc, giúp Dashboard trông chuyên nghiệp như một Website.
9.3 Chiến lược Tối ưu hóa (Expert Optimization)
9.3.1 Mobile Tab vs. Split View
- Split View (Mặc định): AppSheet chia màn hình thành các ô chữ nhật. Rất tuyệt vời trên Desktop/Tablet rộng rãi.
- Mobile Tab (Nên dùng cho Phone): Trên điện thoại màn hình dọc, việc chia nhỏ màn hình làm mọi thứ bé tí hin.
- Mẹo: Hãy bật Use tabs in mobile view. Lúc này, trên điện thoại, các View sẽ biến thành các Tab dẹp ở phía trên/dưới, người dùng vuốt qua lại để xem chi tiết từng biểu đồ. Trải nghiệm UX tốt hơn rất nhiều.
9.3.2 Hiệu năng: Slice vs. Virtual Column Filter
Nhiều người có thói quen tạo Virtual Column để lọc hoặc tính toán Dashboard.
- Vấn đề: Cột ảo tính toán lại mỗi khi Row thay đổi. App cực kỳ lag và tốn pin.
- Giải pháp: Hãy dùng Slices.
- Thay vì lọc tại UI, hãy tạo một Slice với công thức
[Date] = USERSETTINGS("FilterDate"). - Dựng Dashboard dựa trên Slice này. AppSheet xử lý Slice ở tầng Data nhanh hơn nhiều so với tính toán Virtual Column ở tầng View.
- Thay vì lọc tại UI, hãy tạo một Slice với công thức
9.3.3 Giới hạn hiển thị & Giải pháp Looker Studio
AppSheet render biểu đồ ngay trên thiết bị (Client-side). Nếu bạn cố vẽ biểu đồ từ 50.000 dòng dữ liệu, trình duyệt sẽ treo.
- Quy tắc ngón tay cái: Dashboard trong App chỉ nên dùng cho dữ liệu "nóng" (Hot Data) - ví dụ: Doanh số tháng này, Công việc hôm nay.
- Giải pháp cho Big Data: Nếu Sếp cần xem báo cáo xu hướng 5 năm? Hãy kết nối Google Sheets (Backend của AppSheet) với Looker Studio. Looker Studio chuyên trị báo cáo hạng nặng mà không làm chậm App.
9.4 Thực hành: Xây dựng Interactive Dashboard
Bài toán: Xây dựng "Sales Command Center" cho Trưởng phòng.
9.4.1 Chuẩn bị Data Slice
Tạo Slice Open_Opportunities để chỉ lấy các Deal đang mở (tránh rác Dashboard).
- Formula:
[Stage] <> "Closed Won" AND [Stage] <> "Closed Lost"
9.4.2 Tạo các View thành phần
Hãy tạo các View dựa trên Slice (không dùng bảng gốc):
- View 1 (Master):
List_Employees(Kiểu Table/Deck) - Danh sách nhân viên Sales. - View 2 (Detail):
Chart_Revenue(Kiểu Chart) - Tổng doanh số theo Giai đoạn (Stage). - View 3 (Detail):
List_Deals(Kiểu Table) - Chi tiết các Deal.
9.4.3 Ghép Dashboard
- Tạo View mới kiểu Dashboard.
- View Entries: Chọn 3 View trên.
- Quan trọng: Bật Interactive Mode.
9.4.4 Kiểm thử
Mở Dashboard. Bấm vào nhân viên "Nguyễn Văn A" ở View 1. -> Quan sát View 2 và View 3 tự động thay đổi dữ liệu chỉ hiện của A.
9.5 Lời kết: Dashboard - Trái tim của doanh nghiệp
Dashboard không chỉ là những biểu đồ vô tri, nó là "trái tim" của việc ra quyết định.
- Bạn đã biết cách dùng Interactive Mode để tạo chiều sâu.
- Bạn đã biết tránh bẫy Shared Filter bằng UserSettings.
- Bạn đã biết khi nào nên rời bỏ AppSheet để sang Looker Studio.
Nhưng một Dashboard dù đẹp đến đâu cũng chỉ là "nhìn". Một ứng dụng hiện đại phải biết "hành động". Nó phải biết tự gửi email chúc mừng khi doanh số đạt đỉnh, tự cảnh báo khi hàng tồn kho chạm đáy, hay tự động tạo file PDF báo cáo gửi cho khách hàng.
Chương 10: "Action & Behaviors" sẽ là chìa khóa để bạn mở cánh cửa quyền năng này, biến App từ trạng thái "Tĩnh" sang "Động". Hãy sẵn sàng!
9.6 Tài liệu tham khảo (Google Docs)
- Dashboard Views: Create dashboard views
- Interactive Dashboard: Enable interactive dashboards