Bỏ qua để đến nội dung

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àmSố hàmĐại diện đáng nhớ
Conversion14CAST, TO_DATE(text, format), TO_CURRENCY, BUILD_CURRENCY, EXTRACT_AMOUNT/CODE
Date10DATE_ADD, DAYS_BETWEEN, TRUNC, TODAY
Logical2CASE WHEN … THEN … ELSE … END, COALESCE
Math8ROUND, FLOOR, MOD, DIV, HASH (chia bucket)
Text25CONCAT, SUBSTRING, TRIM, REGEX, REGEX_REPLACE, nhóm JSON_*, XPATH_STRING
URL8URL_HOST, URL_QUERY, URLDECODE
Instance5CREATE_MULTI_INSTANCE, INSTANCE_CONTAINS_ANY, INSTANCE_COUNT
Informational1IS_VALID (NULL check dạng 0/1)
Window11SUM/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:

  1. 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.
  2. TO_INT/TO_LONG/DIV cắt thập phân chứ không làm tròn — muốn tròn dùng ROUND.
  3. 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ò.
  4. INSTR/SUBSTRING đánh index từ 0 (khác Excel); LIKE không phân biệt hoa thường.
  5. Regex là flavor Java, REGEX match 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.

Chia sẻ: