Làm cách nào để bạn cuộn các giá trị cấp tiêu đề trên một bảng thực tế với độ chi tiết của chi tiết đơn hàng?


7

Từ những gì tôi đã đọc, mức độ chi tiết được đề xuất cho bảng thực tế dựa trên cấu trúc mục hàng / tiêu đề đơn hàng ở cấp mục hàng. Trong quy trình, mọi giá trị phụ gia chỉ áp dụng cho tiêu đề đơn hàng được lặp lại cho từng mục hàng:

Thiết kế mô hình kích thước cho các ứng dụng cha mẹ và con

Khái niệm cơ bản về mô hình hóa

Dưới đây (từ liên kết thứ hai) là một ví dụ về thiết kế như vậy:

nhập mô tả hình ảnh ở đây

Trong ví dụ này, số tiền vận chuyển, áp dụng cho toàn bộ đơn hàng, lặp lại cho từng mục hàng.

Nhưng nếu bạn cuộn tất cả số tiền vận chuyển dưới một khách hàng cụ thể, bạn sẽ có gấp đôi giá trị thực tế. Làm thế nào để bạn tránh việc nhân đôi giá trị này?

  1. Là số tiền vận chuyển được coi là một thực tế không phụ gia cho bảng này?
  2. Là một số loại xử lý đặc biệt cần thiết?
  3. Có lý do nào để không chỉ đơn giản là có hai bảng thực tế (gần giống nhau) không? Một cho đơn hàng và một cho đơn hàng đơn hàng?

Câu trả lời:


4

Tôi sẽ giới thiệu một sản phẩm Vận chuyển kỳ diệu và chỉ đặt giá trị vận chuyển đối với điều này (để ngỏ khả năng có nhiều sản phẩm vận chuyển nữa - Nặng / Qua đêm / v.v.). Mặc dù vậy, tôi vẫn có thể tách riêng ShippingAmount khỏi cột ProductAmount, vì vậy bạn chỉ có thể dễ dàng tăng doanh số bán sản phẩm.


Sản phẩm vận chuyển "ma thuật" có phải là một trình giữ chỗ để một mục hàng có số lượng 0 và số lượng đặt hàng 0 có thể tồn tại với số tiền vận chuyển không? Điều này có nghĩa là sau đó bạn sẽ bỏ ra số tiền Giao hàng trên các chi tiết đơn hàng khác phải không?
8kb

Có - số không theo số lượng và số lượng đặt hàng (vì vậy chúng có thể được thêm như trước) và không tính số tiền vận chuyển trên các chi tiết đơn hàng khác (trừ khi chúng có phí vận chuyển đặc biệt dành riêng cho chi tiết đơn hàng).
Jamie

+1 Điều này sẽ hoạt động. Bạn thậm chí có thể thoát khỏi cột Số tiền vận chuyển.
brian

@Jamie: Nhưng nếu tôi muốn thực hiện truy vấn duyệt theo kích thước Sản phẩm (giả sử, tất cả các Sản phẩm thuộc một thương hiệu nhất định), thiết kế này có nghĩa là tôi sẽ cần phải lọc ra tất cả các sản phẩm "ma thuật" của mình. Điều đó cũng đúng à? Có vẻ như vấn đề có thể được giải quyết bằng cách có hai bảng thực tế: một cho cấp tiêu đề và một cho cấp mục hàng. Nhưng dường như không ai đề nghị điều này.
8kb

Tôi đoán nếu bạn đang tạo danh sách Sản phẩm. Thương hiệu bạn có thể muốn lọc ra các sản phẩm Giao hàng, nhưng việc thêm cờ vào kích thước sản phẩm dường như không phải là một sự áp đặt lớn.
Jamie

2

Làm thế nào để bạn tránh việc nhân đôi giá trị này?

Bạn có thể thực hiện việc này bằng cách nhóm theo OrderNumber trước và sau đó nhóm theo CustomerKey. Đây là một ví dụ:

--Setup.
DROP TABLE OrderLineItems;
CREATE TABLE OrderLineItems AS (
   SELECT 27 CustomerKey, 7867 OrderNumber, 49.98 OrderAmount
      , 3 ShippingAmount FROM dual);
INSERT INTO OrderLineItems VALUES (27,7867,12.99,3);
INSERT INTO OrderLineItems VALUES (39,7868,1321.99,132);
INSERT INTO OrderLineItems VALUES (19,7869,39.99,6);
INSERT INTO OrderLineItems VALUES (19,7870,1321.99,132);
COMMIT;

--Query.
SELECT CustomerKey, sum(OrderAmount), sum(ShippingAmount) FROM (
   SELECT CustomerKey, OrderNumber, sum(OrderAmount) OrderAmount
      , MIN(ShippingAmount) ShippingAmount 
   FROM OrderLineItems 
   GROUP BY CustomerKey, OrderNumber
)
GROUP BY CustomerKey;

CUSTOMERKEY SUM(ORDERAMOUNT) SUM(SHIPPINGAMOUNT)
----------- ---------------- -------------------
         27            62.97                   3 
         39          1321.99                 132 
         19          1361.98                 138 

Các truy vấn có ý nghĩa. Nhưng điều này có nghĩa là việc cuộn lên chỉ có thể xảy ra trong một cái nhìn nào đó? Nếu bạn lấy bảng thực tế và xây dựng một khối lập phương từ nó, có vẻ như khách hàng sẽ không thể thực hiện các cuộn này trong một bảng trụ.
8kb

Tôi nghĩ rằng bạn chỉ cần bước ra ngoài lĩnh vực kiến ​​thức hiện tại của tôi. Có lẽ người khác có thể giúp đỡ. Tôi đã có một suy nghĩ khác mặc dù. Bạn có thể chỉ định giao hàng cho chi tiết đơn hàng đầu tiên và để các chi tiết đơn hàng khác theo thứ tự là 0 không?
Leigh Riffel

2

Bạn có thể chia chi phí Vận chuyển bằng nhau giữa các dòng đặt hàng. Điều này sẽ cho phép bạn cuộn lên bởi khách hàng.


2

Nếu có thể, tôi sẽ phân bổ chi phí vận chuyển cho các chi tiết đơn hàng. Điều này sẽ cho phép bạn đánh giá chi phí và lợi nhuận thực tế cho từng sản phẩm một cách chính xác nhất có thể.

Nếu điều này là không thể, tôi thứ hai ý tưởng của @ Jamie về việc tạo ra Shippingmột loại "sản phẩm" đặc biệt.

Điều này được Kimball thảo luận trong Bộ công cụ kho dữ liệu (ấn bản thứ ba), trang 185, mặc dù ông đưa ra một khuyến nghị hơi khác:

Nếu chi phí vận chuyển và các sự kiện cấp tiêu đề khác không thể được phân bổ thành công, chúng phải được trình bày trong bảng tổng hợp cho toàn bộ đơn hàng. Chúng tôi rõ ràng thích cách tiếp cận phân bổ, nếu có thể, bởi vì bảng thực tế cấp cao hơn riêng biệt có một số vấn đề về khả năng sử dụng vốn có. Nếu không phân bổ, bạn không thể khám phá các sự kiện tiêu đề theo sản phẩm vì sản phẩm không được xác định trong bảng thực tế hạt tiêu đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.