Mam Office Data Connection (ODC) wskazane na kostce OLAP przechowywane na serwerze naszej firmy. Ciąg połączenia jest dość prosty:
Provider=MSOLAP.6;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Reporting Model;Data Source=SQL03;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error
Korzystając z tej kostki, utworzyłem plik Excelz wieloma tabelami przestawnymi, po jednym na arkusz roboczy. Wszystko działa poprawnie, ale po odświeżeniu tabel przestawnych w celu pobrania najnowszych danych każda z tabel przestawnych jest odświeżana osobno, co oznacza, że dla każdej tabeli przestawnej są wyświetlane następujące połączenia za pomocą połączenia z kostką:
- Odświeżanie kostki OLAP
- Uruchamianie zapytania OLAP
Czy istnieje rozwiązanie, które wymaga tylko jednego odświeżenia, a wszystkie pivotables je udostępniają? Spróbowałem, aby wszystkie tabele przestawne używały tej samej pamięci podręcznej, ale próbowały ustawić pamięć podręczną PIVOT, używając:
Sheets("Pivot").PivotTables(1).CacheIndex = 1
kończy się w Błąd wykonania "1004": Błąd zdefiniowany w aplikacji lub obiekt
Czy istnieje sposób na to, aby wszystkie tabele przestawne w jakiś sposób udostępniały źródło danych?
Być może po utworzeniu lokalnej kopii modułu OLAP podczas otwierania pliku lub buforowaniu tabeli przestawnej w inny sposób?
Grałem z VBA znalezionym na http://www.contextures.com/xlPivot11.html ale wydaje się, że wszystkie dane pochodzą z lokalnego źródła.
Odpowiedzi:
0 dla odpowiedzi № 1Pojęcie "pamięci podręcznej" dla węzłów opartych na OLAP jest zupełnie inne niż dla osi bazujących bez OLAP. Zgodnie z https://support.microsoft.com/en-us/kb/234700
Pivots na podstawie danych OLAP, tylkopodsumowane dane są zwracane do programu Excel, w zależności od potrzeb. Z zewnętrznymi bazami danych innymi niż OLAP, wszystko poszczególne rekordy źródłowe są zwracane, a następnie program Excel robi zreasumowanie.
W związku z tym bazy danych OLAP mogą zapewnić programowi Excel taką możliwość analizować znacznie większe ilości danych zewnętrznych.
Ale w związku z tym prawdopodobnie nie jest to możliwe lubpożądane "buforowanie" podstawowych danych w Excelu bez wykonywania na nim istotnych agregacji. Ale może to jest rozwiązanie: skompiluj tabelę przestawną potwora w każdym polu, które chcesz zgłosić, a następnie zbuduj interfejs raportowania, który po prostu odwołuje się do tej tabeli przestawnej potwora za pomocą funkcji GETPIVOTDATA.