2011-09-08 34 views
6

Tôi đang gặp phải một thời gian cực kỳ khó khăn với Excel rất chậm bất cứ khi nào tương tác với bảng tổng hợp. Thêm/xóa một trường, thay đổi bộ lọc hoặc slicer, tất cả phải mất vài phút Excel bị đóng băng trước khi trả lời.Bàn xoay Excel Excel MDX?

Dường như MDX được tạo ra vô cùng không hiệu quả. Tôi có thể đánh giá cao rằng họ phải tạo MDX động và phải hỗ trợ nhiều tính năng của bảng tổng hợp, nhưng chậm hơn 100 lần là vô lý.

Khi họ tạo MDX cho một lĩnh vực trên một hàng hoặc cột, họ sử dụng DrilldownLevel (... [tài sản Dimension]. [County])

Tôi không chắc chắn những gì mục đích của phương pháp phức tạp hơn của Excel là, nhưng tôi hy vọng có một số tùy chọn ở đâu đó mà tôi có thể bỏ chọn để Excel không cần sử dụng hàm DrilldownLevel.

Thay vào đó, tôi thường bỏ qua chức năng Drilldownlevel và chỉ cần làm [Kích thước thuộc tính]. [Hạt] . [County] để truy cập thuộc tính.

Truy vấn cho cùng một tập kết quả mất 5 phút với MDX của Excel và mất ít hơn 5 giây với MDX của tôi.

Tôi đã xác minh rằng sự chậm chạp không phải là vấn đề với Excel hiển thị/định dạng kết quả, khi tôi lấy MDX được Excel sử dụng và chạy trực tiếp trong SSMS để xác minh thời gian. Tôi có thể xem trình quản lý tác vụ trên máy chủ và xem CPU bị loại bỏ trong khi nó xử lý các kết quả.

Lưu ý, tôi không đổ lỗi cho máy chủ vì tôi có thể tạo truy vấn MDX chạy cực nhanh và cung cấp kết quả tương tự.

Tôi làm cách nào để Excel tạo ra MDX hiệu quả hơn? Tôi đang sử dụng Excel 2010.

Tôi đã nghe nói rằng powerpivot tạo MDX hiệu quả hơn, tuy nhiên Powerpivot không thể sử dụng được trên đầu trang của SSAS, vì nó không tận dụng khối SSAS. Vì vậy, một lý do ngắn gọn về lý do tại sao Powerpivot trên đầu trang của SSAS không hoạt động. Nếu bạn nhập dữ liệu từ SSAS vào powerpivot, tất cả những gì bạn đang làm là thực hiện một crossjoin khổng lồ để di chuyển dữ liệu từ SSAS vào bảng Powerpivot. Nếu bạn đã thử điều này, bạn thấy nó tạo ra tên trường/nhãn như "Property DimensionCountyCounty Name" ... wow thực sự? Sau đó bạn chỉ làm việc với dữ liệu bằng cách sử dụng công cụ OLAP của Powerpivot cục bộ, và do đó phụ thuộc vào máy khách có hệ điều hành 64 bit để làm việc với một tập hợp dữ liệu có kích thước hợp lý. Nó giống như bạn chỉ cắt SSAS, ném ra tất cả công việc khó khăn của bạn để xây dựng một cơ sở dữ liệu OLAP tinh vi và tất cả dữ liệu meta, tính toán, tập hợp, v.v. Một nửa lý do để sử dụng SSAS là để nó có thể tóm tắt dữ liệu chi tiết trước khi nó được trả lại cho máy khách, sao cho máy khách không cần một hệ điều hành 64 bit và không cần một lượng lớn tài nguyên trên máy khách. Tôi đã cố gắng hết sức để làm cho powerpivot chống lại SSAS có thể sử dụng được, nhưng sau khi thử một số cách tiếp cận và trở lại và ra với người dùng, nó thực sự không có nơi nào có thể sử dụng được. Không gõ Powerpivot, vì tôi thấy tính hữu ích của nó trong nhiều trường hợp khác, nhưng nếu khối SSAS của bạn là một phần quan trọng trong hệ thống của bạn (nghĩa là tính toán, tổng hợp số lượng lớn bản ghi ở phía máy chủ, v.v.) thì powerpivot có vẻ sai .

Dưới đây là một ví dụ về truy vấn của tôi:

SELECT 
NON EMPTY CrossJoin(
{[Department Dimension].[Name].[Name]}, 
{[Finance Month].[Report Year].[Report Year]} 
) 
    ON COLUMNS , 
CrossJoin(
    {[Department Finance Line Type Dimension].[Display Order].[Display Order] }, 
    {[Department Finance Line Type Dimension].[Line Number].[Line Number]}, 
    {[Department Finance Line Type Dimension].[Display Name].[Display Name]} 
    ) 
    ON ROWS 
    FROM 
    (
    SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [HYP Data View] 
    ) 
    WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet], 
    [Measures].[Amount] 
    ) CELL PROPERTIES VALUE 

Và dưới đây là những gì Excel được tạo ra. Tôi thực sự đã loại bỏ một số khía cạnh khác của truy vấn Excel khi tôi cố gắng đơn giản hóa nó để xác định thủ phạm là gì. Đây là những gì các truy vấn trông giống như khi nó vẫn chạy chậm, và sau đó bước tiếp theo tôi đã là khi tôi gỡ bỏ DrilldownLevel và thay thế. [Tất cả] với.[Tên thuộc tính] mà nó bắt đầu chạy nhanh hơn rất nhiều.

Rất rất chậm truy vấn:

SELECT 
NON EMPTY CrossJoin(
{DrilldownLevel({[Department Dimension].[Name].[All]})}, 
{DrilldownLevel({[Finance Month].[Report Year].[All]})} 
) 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , 
CrossJoin(
    {DrilldownLevel({[Department Finance Line Type Dimension].[Display Order].[All] })}, 
    {DrilldownLevel({[Department Finance Line Type Dimension].[Line Number].[All]})}, 
    {DrilldownLevel({[Department Finance Line Type Dimension].[Display Name].[All]})} 
    ) 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS 
    FROM (
    SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [Afr Data View] 
    ) 
    WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet], 
    [Measures].[Amount] 
    ) CELL PROPERTIES VALUE 

Tại sao nó cần DrilldownLevel (... [Tất cả])? Có một tùy chọn ở đâu đó tôi có thể lật để có được Excel để không tạo ra một phần của truy vấn để nó sẽ chạy nhanh hơn?

+0

Có thể là crossjoin & drilldownlevel, vì hàm drilldownlevel không chậm. Các phân cấp khác nhau của cùng một tham số có thể tốn thời gian (bạn cần phải thực hiện tự động trên tất cả các kết hợp) ... không giải quyết được vấn đề của bạn nhưng có thể giúp bạn hiểu được – ic3

+0

Có chậm cho cả phân cấp thuộc tính và cấu trúc phân cấp không? –

Trả lời

0

Thật không may mặc dù tôi đã làm việc với Excel và Pivottables trên khối SSAS MOLAP khá rộng rãi nhưng tôi chưa tìm thấy cơ chế trong Excel thuần túy để thay đổi truy vấn mà nó tạo ra.

Tuy nhiên, tôi đã sử dụng công cụ của bên thứ 3 có tên là XLCubed khá mạnh khi làm việc với truy vấn Excel và MDX từ khối OLAS OLAP, tôi có thể đề xuất bạn thử dùng cho mục đích của mình không? Bạn thậm chí có thể thay thế MDX nó sẽ sử dụng cho một "Grid" với MDX hoàn toàn tùy chỉnh như bạn có ở trên. Mặc dù tôi thấy điều này là không thường xuyên cần thiết thay thế của họ cho các bảng pivot "Grid" dường như tạo ra MDX hiệu quả hơn nói chung.

Mong các vị thần SSAS ở bên bạn.