Z TM1 będziesz miał więcej czasu na analizę i inne wartościowe działania bez konieczności rezygnacji z Excela. Cubewise will show you how.
Update on Cubewise testing of TM1 release 2.0.9.1
Od tego czasu IBM wydał notatkę na ten temat, którą można przeczytać tutaj.
Zabezpieczenie podzestawu MDX
Zachowanie Przed 2.0.9.1
Istnieją dwa główne zastosowania MDX, gdy mówimy o podzbiorach wymiarów TM1. Pierwszym jest "podzbiór dynamiczny", w którym zapytanie MDX jest zapisywane wraz z podzbiorem, aby zapewnić, że zwrócone elementy automatycznie odzwierciedlają zmiany w strukturze wymiarowej (np. nowy element dodany do wymiaru) lub zmiany w danych sześcianu (np. konta wykonujące Top 5).
Przykładem może być poniższy MDX przedstawiający wszystkie elementy w ramach konsolidacji "World".
{TM1DRILLDOWNMEMBER( {[Region].[Świat]}, ALL, RECURSIVE )}
Dla użytkownika mającego dostęp do wszystkich elementów wyglądałoby to jak na poniższym przykładzie:

W przypadku przypisania bezpieczeństwa elementów do danego wymiaru, użytkownik końcowy widzi tylko te elementy, które spełniają kryteria wyboru MDX i do których ma minimalny dostęp READ. W tym przykładzie mamy grupę bezpieczeństwa z ograniczonym dostępem do Ameryki Południowej (zgodnie z definicją w kostce bezpieczeństwa elementów jak poniżej)

Dla użytkownika z tej grupy bezpieczeństwa - posiadającego dostęp tylko do Ameryki Południowej - oznaczałoby to, że tylko te elementy, do których użytkownik ma dostęp:

Nowe zachowanie
W wydaniu 2.0.9.1 TM1 zmieniono interpretację zabezpieczeń elementów i zapytań MDX. Tam gdzie wcześniej wyglądało to na stosowanie warstwy bezpieczeństwa po wygenerowaniu MDX-a, teraz jest ono stosowane wcześniej.
Zauważ, że nie jest prawdą, że bezpieczeństwo zostało zastosowane po MDX-ie w poprzednich wydaniach, ale efektywnym rezultatem była lista elementów, do których użytkownik miał dostęp spełniając kryteria MDX-owe. Po prostu łatwiej jest wyjaśnić, że bezpieczeństwo zostało zastosowane jako filtr po wygenerowaniu zestawu.
Jeśli weźmiemy powyższy przykład, musimy zrozumieć, co się dzieje z MDX-em trochę więcej. Stwierdzenie MDX najpierw zwraca element "World", a następnie wszystkie elementy pod nim - aż do elementów na poziomie liści.
{TM1DRILLDOWNMEMBER( {[Region].[Świat]}, ALL, RECURSIVE )}
Nowa interpretacja polegałaby na tym, że ponieważ użytkownik nie ma dostępu do elementu "Świat", MDX nie zwraca żadnych elementów. Dotyczy to zarówno dynamicznych podzbiorów, jak i wyrażeń podzbiorów MDX używanych w aplikacjach klienckich (np. definicja wiersza w postaci aktywnej lub dynamicznego raportu).

Dodatkowe wyniki badań
Przypadek opisany powyżej jest prawdziwy, jeśli używamy konsolidacji "World", ale jeśli mielibyśmy użyć bezpośredniego rodzica elementów, użytkownik końcowy ma dostęp do zmiany zachowania po raz kolejny
{TM1DRILLDOWNMEMBER( {[Region].[Ameryka]}, ALL, RECURSIVE )}

Posługując się tą interpretacją spodziewalibyśmy się, że ponieważ użytkownik nie ma dostępu do elementu "Ameryk", MDX nie zwróci żadnych elementów, jednak, jak widzimy, tak nie jest. Jest to najprawdopodobniej spowodowane różnicą pomiędzy "członkami" w MDX-ie a "elementami" w wymiarach TM1. Jeśli chcesz wiedzieć więcej na ten temat, sprawdź blog na Cubewise CODE https://code.cubewise.com/blog/the-future-of-tm1-time-dimensions-in-the-world-of-hierarchies.
Wniosek
Przy aktualizacji do wersji 2.0.9.1 TM1 administratorzy powinni zadbać o to, aby w pełni przetestować zarówno zapisane podzbiory dynamiczne, jak i aplikacje użytkowników końcowych na deklaracjach MDX dotyczących wymiarów z zabezpieczeniem elementów. Deklaracje podzestawów MDX-a mogą być dość skomplikowane przy użyciu bardziej zaawansowanych funkcji i filtrów danych sześcianu, dlatego też zmiana kolejności wykonywania instrukcji MDX-a i warstwy bezpieczeństwa może skutkować pozostawieniem pustych podzestawów i raportów dla użytkowników, jeśli nie zostaną one zaznaczone.