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

Quan hệ & cardinality

Quan hệ (relationships) liên kết các bảng trong star schema và quyết định bộ lọc lan truyền thế nào — nền tảng để DAX tính đúng.

LoạiÝ nghĩaKhi nào
One-to-many (1:*)Một dimension ↔ nhiều factMặc định, phổ biến nhất
Many-to-one (*:1)Như trên, ngược chiềuTùy hướng tạo
One-to-one (1:1)HiếmTách bảng đặc biệt
Many-to-many (:)Phức tạp, cẩn trọngKhi không có khóa duy nhất

→ Trong star schema, gần như luôn là 1 (dimension) : nhiều (fact).

  • Single (một chiều): bộ lọc chảy từ dimension → fact (khuyến nghị).
  • Both (hai chiều): lọc chảy cả hai chiều — mạnh nhưng dễ gây mơ hồ/sai; dùng có chủ đích.

Khi bạn lọc Product[Nhóm] = "A", bộ lọc lan từ dimension xuống bảng Sales, nên measure SUM(Sales[Amount]) chỉ tính các dòng thuộc nhóm A. Đây là cơ chế bộ lọc lan truyền cốt lõi.

  • Giữa hai bảng chỉ một quan hệ active tại một thời điểm.
  • Quan hệ thừa là inactive (nét đứt) — kích hoạt tạm bằng USERELATIONSHIP trong CALCULATE.
  • Ví dụ điển hình: bảng SalesOrderDateShipDate cùng trỏ tới Date → một active, một inactive.
  • Quan hệ mơ hồ (nhiều đường nối) → engine từ chối hoặc tính sai.
  • Both-direction lạm dụng → vòng lặp lọc, kết quả khó đoán.
  • Khóa không duy nhất ở phía “one” → quan hệ không tạo được.
Chia sẻ: