Analytic dimensions, analytic data sources và Prism Expression Language
Bài cuối của series gom ba mảnh “nâng cao” của Prism: biến dữ liệu ngoài thành dimension chuẩn Workday, dùng data source Workday đóng gói sẵn, và ngôn ngữ biểu thức đứng sau mọi calculated field.
1. Analytic Dimension — cho text ngoài “quyền công dân” Workday
Phần tiêu đề “1. Analytic Dimension — cho text ngoài “quyền công dân” Workday”Dữ liệu ngoài đưa vào Prism ở dạng Text field — lọc/nhóm/prompt trong công cụ báo cáo Workday đều hạn chế. Analytic dimension giải quyết: định nghĩa business object riêng chứa các giá trị dimension, rồi map text → Instance field — từ đó dùng như dimension chuẩn (ví dụ kinh điển: “loại yêu cầu bồi thường” của công ty bảo hiểm mà Workday không có sẵn).
flowchart LR T["Text field ngoài<br/>(vd: adult-large, child-small)"] --> BO["Analytic Dimension<br/>Business Object<br/>(Value ID = khớp text, case-sensitive)"] BO --> H["Hierarchy ≤6 cấp<br/>(mỗi value thuộc đúng 1 hierarchy)"] T --> IM["Instance Mapping Stage<br/>trong derived dataset"] BO --> IM IM --> I["Instance field mới<br/>(không khớp → NULL)"] I --> P(["Publish → lọc/nhóm/prompt<br/>như dimension chuẩn"]) style P fill:#e7f5ea,stroke:#2e7d32
Luồng (task gốc): Create Analytic Dimension Business Object → Maintain Analytic Dimension Values → Create Analytic Dimension Hierarchy → thêm
Instance Mapping Stage vào dataset → publish. Các quy tắc phải nhớ:
- Value ID phải khớp chính xác text nguồn — case-sensitive; không khớp là NULL âm thầm. Value Name (hiển thị) được phép trùng nhau, ID thì không.
- Giới hạn: 10.000 giá trị/business object, 6 cấp hierarchy, mỗi stage map tối đa 10 field. Gotcha đắt: màn nhập giá trị không chặn khi vượt 10.000 — lỗi chỉ nổ ra lúc publish hoặc data change task.
- Business object bật hierarchy thì giá trị chưa gán hierarchy sẽ không hiển thị với người dùng báo cáo.
- Text field gốc vẫn còn trong dataset — muốn ẩn thì thêm Manage Fields stage.
2. Analytic Data Source — Workday dựng sẵn pipeline cho bạn
Phần tiêu đề “2. Analytic Data Source — Workday dựng sẵn pipeline cho bạn”Khác Prism data source tự publish, analytic data source do Workday đóng
gói trọn (trích → blend bằng Prism → nạp): chỉ việc install và đặt lịch
(Tenant Setup for Analytic Data Source, tần suất daily/weekly/monthly — dữ
liệu không realtime, độ tươi = lịch + thời gian xử lý).
Ví dụ quan trọng nhất: Peakon Employee Voice — trích câu trả lời khảo sát
không tổng hợp (điểm + bình luận, mọi bộ câu hỏi), kèm một Prism dataset
thô trong Data Catalog để join với dữ liệu khác. Cảnh báo nhạy cảm mà dự án
nào cũng phải đọc to: mọi câu trả lời gắn employee ID — định danh được cá
nhân. Workday khuyến nghị chỉ cấp cho nhóm đặc quyền hẹp (domain riêng
Peakon Responses Analytic Data Source + 3 vai dataset sharing), chia sẻ rộng
chỉ bản đã ẩn danh. Uninstall sẽ xóa toàn bộ dữ liệu của data source —
report đang dùng trả rỗng.
3. Prism Expression Language — bản đồ ~80 hàm
Phần tiêu đề “3. Prism Expression Language — bản đồ ~80 hàm”Ngôn ngữ biểu thức dùng trong calculated field và Filter stage: tham
chiếu field bằng [Tên Field], text trong nháy kép (escape bằng nhân đôi),
hàm lồng nhau được, có expression builder validate cú pháp.
| Nhóm hàm | Số hàm | Đại diện đáng nhớ |
|---|---|---|
| Conversion | 14 | CAST, TO_DATE(text, format), TO_CURRENCY, BUILD_CURRENCY, EXTRACT_AMOUNT/CODE |
| Date | 10 | DATE_ADD, DAYS_BETWEEN, TRUNC, TODAY |
| Logical | 2 | CASE WHEN … THEN … ELSE … END, COALESCE |
| Math | 8 | ROUND, FLOOR, MOD, DIV, HASH (chia bucket) |
| Text | 25 | CONCAT, SUBSTRING, TRIM, REGEX, REGEX_REPLACE, nhóm JSON_*, XPATH_STRING |
| URL | 8 | URL_HOST, URL_QUERY, URLDECODE |
| Instance | 5 | CREATE_MULTI_INSTANCE, INSTANCE_CONTAINS_ANY, INSTANCE_COUNT |
| Informational | 1 | IS_VALID (NULL check dạng 0/1) |
| Window | 11 | SUM/AVG/COUNT/MIN/MAX, RANK, ROW_NUMBER, LAG/LEAD, FIRST/LAST |
Window functions — sức mạnh SQL analytics ngay trong dataset:
SUM([Amount]) OVER(PARTITION BY [Cost Center] ORDER BY [Month] ROWS UNBOUNDED PRECEDING)Ba pattern đắt giá: running total (ROWS UNBOUNDED PRECEDING), rolling
12 tháng (RANGE 11 PRECEDING — field ORDER BY phải numeric), và lấy bản
ghi mới nhất mỗi ID (ROW_NUMBER() … ORDER BY [Effective Date] DESC rồi
filter = 1 — chuẩn xử lý slowly changing dimension). Giới hạn cứng: boundary
≤100 dòng; window RANGE ≤1.000 dòng khi publish — vượt là publish job
fail.
Các bẫy hay gặp nhất:
TODAY()chỉ tính lúc publish dataset, không tính lại mỗi lần xem báo cáo — tính tuổi/thâm niên bằng nó mà quên lịch publish là số đứng im.TO_INT/TO_LONG/DIVcắt thập phân chứ không làm tròn — muốn tròn dùngROUND.CAST(… AS decimal(i,d))trả NULL nếu phần nguyên nhiều chữ số hơn khai báo — lỗi im lặng khó dò.INSTR/SUBSTRINGđánh index từ 0 (khác Excel);LIKEkhông phân biệt hoa thường.- Regex là flavor Java,
REGEXmatch toàn chuỗi và chỉ trả capturing group 1; nháy kép trong pattern phải nhân đôi; chưa hỗ trợ multi-line^/$.
Chắt lọc từ Workday Prism Analytics User Guide (mục Managing Analytic Dimensions, Managing Analytic Data Sources, Reference: Prism Expression Language) — doc.workday.com.