modelowanie wielowymiarowych wyra¿eń w języku mdx
TRANSCRIPT
������������ ���� �������
� �������������������������� ������� �!"�� #��$%��� #��&�����& �
'(
)�����������
���������������� ���������������
������������
�������������
*+��� ��, -Multidimensional Expressions) .��� .+��� �� specjalnie utworzonymw celu definiowania danych wielowymiarowych, .�� ��/ operowania na nich. Jest ���/�na��+�� ���0�/1#��������23�� ��4���5�4�������#. danych���/�.�0�/���2# struktu-ralnej. N� ��� �.1#�������3 �������� �6������#���.���.��.�� +��������&���0o opra-#�&�7��8��� �7 ����#�1#�#9korzystania z .+������,:;��������w artykule tematykamodelowania jest bardzo istotna podczas wykonywania skomplikowanej analizy ��/�. 3�$2# �anych, &2����& ���#94����&����� ����3 ��#���8�:Z tego &�83+��, autor stwo���0�4�acowanie wybranych konstrukcji modelowych,&����4����0���&�� schematami ich�������&�7:�4��#�&�� �to zawiera zbiorcze zestawienie szeregu funkcji podzielonych naposzczególne kategorie,&��"��#9�����0���4��4���&���4���4��� #9�/�# �:�������$&���01#����4�����23�� �������&����&�� ��.1#�� �� #9&� ����� . Przed���& ������/� 4����0���&�����3� ��������#. ���3 ��#���#9&���������&���#9& 2�odowiskachprodukcyjnych firm czy 4����� +5 ����&. Opisywana �����������3 �80"&� ���� ����&�$�� .�������4����#95��/���&�#9� 3�#��4�&����� ����/�5�<&���������&��� ���/�& ���#9�6���#9���3 ��3�4��� ���8ospodarczego.
B����� �����1�4��&1�która za��8��3 ��&�0�4�&���� ���8���&�8�.+�����.������ ��$�o&�� ���4����&����� �& �3�&�� ���&�������� ����&�� ���������#���2<�anych. Jestto ��� ���1#�#91����4�&�8�.+������4���75�������&�#9=>?�&��"�����&���e� �4���5��#9 ��������#. .��� 5����� �0�4��3 &�, a & & �3� 4���4����#9 &�+#� � ���/3iwe.�5�#� ���,���.�� +���+5����������������& .�.1#��� +� ���3�/� ���.+����SQL.
������������� � ��!�"��
�����#��� ��
��4���� � & ��,� 4���5� � .�� & =>?� ��& ��� 6���+ =@?@A� -��6 � �.1#1 ����&��ikowe), fr��+BC��-��6 � �.1#1�����+&�.2# �&1D���� 6���+E%@C@ -����23�.1#1
'� )����������
6 3���&�� � ����#9D:����+4��#9 .��� ���/�& �3� 6���#. �0�/1#�#9 ��&����� &�� � �a-nych i do operowania danymi. S�#��8"0�&� �����0� ��� �4 ���� & ��3���. #�+2# 4��#�.Mo/3 &�.������/�rozszerzanie funkcjonalno2# .+����4������6 � �&anie &0����#96���$
#. : Podstawowe w���/�� � &�5 ���.1#� ���� ��, �� ��0��� + przedsta& �.1#1 � + ��$
��+4u.1#�:
Definicja 1
������������������ ����
���������������� �����
������������������ ��������
B����=@?@A�����23�&�� ��&� �5 "� ���"��� ���� �4��"5 .�8� 4�������#. : ;�e-�����#.� �5 ��� ����23��� .��� 4�4���� 4���4���1���&�� � elementom osi(axis) punktówprzestrzeni wielowymiarowej. Istnieje maksymalnie do 128 osi, którym ��815�<przypisa-ne numery, a po�����4 +<4 ��&���#9�� ��4���4 ����dodatkowo nazwy [7]:
�������������������
������������ ���
!������"����#����
$������������
%����&������'
E��/���4���4�����2��/�5�< �����6 ��&�����4���#1&���/�� �AXIS(IN-DEKS), gdzie INDEKS .��� 3 #�51#�0��& �1�4����� �0�F�� �GH:�5 ���4��k�"&��81
5�<4���&��� .�&� � 3�5�4�#�6 ��&����&���������� �������8�6���#. :=4�#�6 ��#.�
�� ������+4�.1#1��0�d� +I
Definicja 2
����������� �����(()��"*�+� ����+ ��������" � ����
���" � ����(()��� ���,�����,�������,���������,����������,���������-����
�������$���� ��������! �
��4���#1.+������,��/na ���"&����6 � �&�<��������+����� �&�4�0� �<�a��$
� ����&�����&�<����23����53 #��� �:
��6 � #.� 4����0��owej struktury kostki analitycznej o nazwie [KOSTKA ANALI-
TYCZNA] ma po���< [7]:
����3�&�� �& �3�&�� ���&�#9&���/�7&.+������, 'J
Listing 1
�������� ���.�������������"��/ 00123�456786�9�:298'
�-��������� �� �"������������� 0023�456786�;�:5<56=>?7@<A�3@B8C4>3'
���&������&��.������/� 0023�456786�A864C4<A88�3�3@B8C456'
���������D���.���������/����������� 0023�456786�;�58�B>3�A864C4<A88'
���������D���.������� �����/������E�������
���������D���.��������������/����������&�
���&������&��.����-��"� �/�
���������D���.����-��"� ����/�����������
���������D���.����-��"� ���������/����������&�
�'
�'
�'
���������.F����"�-�"/ 0023�456786�B8C4
���������������
����������G��������G
���������.���"*����"�-����&/
����������������
Jedn�����4���5"&&�4�0� �� ������ ����3����3 ��#���8������ .������3 ��#.�
4�� /���8� ����4�� -4��#�����D: Z5 "� &�� ��&� � ��4���� � &�5 ���.1#�8� dla kostkio nazwie[KOSTKA ANALITYCZNA] przypis�&���.��� ������#.1INSERT INTO kost-ce o nazwie [KOSTKA SPRZEDAZOWA]:
Listing 2
�����������.��������"�-�"� �/ ����003:2C38C786�HC7@<A
� �� �"��'���
�� �"��' ����I�
�� �"��'��������
�� ���-��'.��" �/�
��������'�� ������
������
.����� ��������"��/'. �� �"��(��/�
���������.�������������"��/'. �� �"��( ����I/�
���������.�������������"��/'. �� �"��'�������/�
���������.�������������"��/'. �� ���-��(��" �/�
���������.�������������"��/'.��������(�� �����/
��������.�������������"��/
C���3��� �53 #��7 &���/�� � ��, & ����#� ���3 ��#���. .��� ��3�/�� �� 5 �/1#�8�
�������������� , czyli tak zwanej perspektywy, z której widzimy model: *�23 ��4���#1
6 3���&�� �&��� ��� 6��8���� ����� -np. &����2< �4�����/y ����8� 4�������& �����
���.��3�����8��4�����&#�D�&���/�� ���,&�3 #��&����2# �3�&�5����.#�+2# mo-delu analitycznego kostki.
'' )����������
E 4��#� 4���.+�� �����0� ��4roponowana przez autora konwencja nazewnicza, ��"��5+�� �&���2# ���3�.�/�&���dla miar, wymiarów, zbiorów nazwanych oraz elementówwyliczanych. Konwencja ta z����0��4��#�&���&�4o�"5����+4�.1#�I
MR_nazwa – ����23�� ����&��3�tzw. miary fizycznej.MK_nazwa – ����23�� �nazwy dla miary kalkulowanej(obliczeniowej).WYM_nazwa – ����23�� �nazwy dla wymiaru.NZ_nazwa – ����23�� �nazwy dla nazwanego zbioru.EO_nazwa – ����23�� �nazwy dla elementów wyliczonych.
E4�����#9��3�.4����0���#9���&�5+�1��0���0�� +�&���#��8"3� ���#94���d����$�"&�������&�&0�2# &�.:;��������� ��4�������.1&0�2# &16���#.+w modelu analitycznym.
��%��&'��������(����������'�
Instrukcja =@?@A� ����23� &�� ��&� �5 "� ���"��� ���� �4��"5 .�8� 4�������#. :C��������� �� ��0��� .��� �������&�� � frazy WHERE, w której ����23��� .��� &�$��/enie b+�1#��&�8������.�6 3�����8��� #��.1#���&��#����5 "����"�����4�&��$8o plastra (slicerD: ����23� � 4���.��.� � +� /� ��/�� &�� ��� ��"�� � � �����0 4���4�$��1��o&��� �� /����. �� � ��4�������&��� .��� &� 6��� � E%@C@ 4�4���� �&". #�0��80"&������& � [ALL]. A�0�� �����& ���&szystkie elementy potomne dla danego wy-miaru. Jaw������23�� � ���8�#�0���4�&���.��/���3�����"�� 5���&��� z wyko���$���� ����8�#�0�����3�/1��&�� ��&�8��5 ������"���:=�0��� � 6����E%@C@.�������+4u.1#� [7]:
Definicja 3
.������ .����������� ��������//����������� ���������(()�������
P����0�� zastosowania filtrowania dla roku 2008 i miary MR_KOSZT:
Listing 3
�������. �� �"��/'.��/'J.!��K/��.�� ��"�/�
Ograniczy to �5 "����"�������#9���"������#��0������� w roku 2008. Umieszcze-nie miary MR_KOSZT&�6��� �E%@C@����#���/���3����� ���.����3���� �������.1$#a. Na��+4�.1#� &���/�� � �&��#� �5 "� ���"��� � ��4�& ��� � ��8��8�&���� &����$2# �� miara [LICZBAKLIENTOW]������1#�� � +�o roku 2007:
Listing 4
������ L.���������&�-/����������'�&��-�������-M������������. �� ��#���/'.��" �/'���*��������� �
�� .�������������"��/����� �. �� �"��/'.��/'J.!��N/�.���"*������� /�
����3�&�� �& �3�&�� ���&�#9&���/�7&.+������, 'G
��)��&���� ���
��������#.� &���/�7 & ��, ��& ���.1 �"/��8� ��4� �4�������� ��"�� 4���8�.1& �&����� � ��������#. . Poza typowymi operatorami matematycznymi istnieje kilka in-nych, ��"�� &���� ��4�������&�< � &�83+�� �� ich odmienny charakter. Ze &�83+�� ���&� ������#��� �4��#�����4 ��&���/�74�������& �nych zosta� �4 +<operatorów:
NON EMPTY, „{}”, „,”, „:”, „&”.
W celu wyeliminowa� � � �4�& 1����#9 ������"& �������&�< ��/��� �4������NON EMPTY.
Listing 5
������
��������.��������/'���*�����������������������L. �� ���#�������-���/'.��" �����#����/'���*����
. �� ���#�������-���/'.��" ���� ���/'���*���M������ ���� .�������������"��/
�5���/��5�0�5���&�<�5 ���������� 4�3�&�<� � ,�/�&����1�������&��4�$������� „{ }” – nawiasy,4���#9�&�.1#��3������ w tak zwanej krotce jako zbiór (Listing 6).
Listing 6
L. �� ������/'.��" �/'J.��+ /�. �� ������/'.��" �/'J.��"��O/�. �� ������/'.��" �/'J.#-�O�/�. �� ������/'.��" �/'J.��� ���/�. �� ������/'.��" �/'J. ���I� /
M
Gdzie „ , „ – przecinki ���� �3�.1#��3��������� �5 �� a dwukropki „ : „ – ����#��.1zakres elementów, czyli podzbiór elementów 4�� +���&����2# �� 5���8�&�� ���aczo-nymi elementami przed i po dwukropku.
Listing 7
L. �� ������/'.��" �/'J.��+ /�.������/'.��" �/'J. ���I� /
M
Symbol „ & KL����#��&���#��8"3� �� ����������8��3������#�0����&�� �8�:
Listing 8
. �� ������/'.��" �/'�.��+ /
'M )����������
%��*��!���������! ����������� ��
��,.��� .+��� ����4���7&���������#95���?�; (online analytical processing)����/3 & �.1#ym ����&�� � ��4���7 ��$3 �� & ������#9 ���3 ��#���#9: ;�� 4�.+# �� ��$4y��7� 4���5� � .�� & 4���4���� =>?� ����� ��� �"&� �/ ��/3 &�2< ����6 ��&�niadanych, � & +# & 4���4���� ������ ���3 ��#���#9 ��/3 &�2< ���3 ��#. �4�#�6 #���#9�53i#��7 wykonywanych przed odpytaniem modelu. Obliczenia zrealizowane &��+4$� �,�� ���#�����1.����3�������0���&���4���� � (np. miara kalkulowana) o ����23���.���& �: ;� 4���� �� �� �0�� �, &01#���� �1 �� �5 ��� &�� ��&�8� & ���4 � ����+4����czyli odpytania modelu:�5�#� � .+�����,���.�� +����������4������0�&���#�0��$& # �� ���3�/�����.+����=>?�4�� ������/��&� ���#�#9����"/� �.1#�8�����#���.� erze od poprzednika.
%����+���������,-.�������� � /�
E� 6��� � EN�% ��/�� ��6 � �&�< � ��� �53 #���� ���� 4���4 ��&�< ���&� �5 o-rom. @3�������53 #������815�<������&���.���6���#.��&��������#�����&�� ��a-pytania. Rozszerzenie oraz uogólnienie przedstawionego szkieletu zapytania w #�+2# &��+4nej ������0�5+�� �&�831��0�.��4�������& ���4�� /�.I
Definicja 4
.���� ����������� ����I��� .������������ ����I��'''//������� ������������ ����� .������������ ����'''//��� .����������� �����/.����� .����������� ��������//
Zdefiniowany �� 4�#�1��� przedstawionego zapytania element obliczony po frazieWITH, ��/�5�<&���������&���&��3���.#�+2# jego definicji, poprzez wyszczególnie-nie ������1#�.� +��� �8����&�:�� ��� +&����4��"5& �3�������#9�53 #��7 �& +k-���4���.������2<��4���� �. =�0��� ���.6����.�������+4u.1#�I
Definicja 5
���� ����������� ����I��.������������ ����I��� '''/����������� ����I���(()������������ �"I����,����������� "*���������������� �"I�����(()����*�����-"�� �"I����'���" � �"I��������P� ���Q�����R����������� "*������(()�������" � "*���������P�"*�+��R
*���4�������#.+��������#. , p�� /���&���/�� ���6 � �.�� ��+�53 #���1[MK_ZY-SKPROCENTOWO] &01#�� 8� �� �5 ��� &�� ��&�8�, kt"�� 4�����.� .�8� ����0�� ��4���#�ególne regiony:
����3�&�� �& �3�&�� ���&�#9&���/�7&.+������, 'O
Listing 9
����
���� ����������'.� "���������� �/�����00�B8C4C�9C?91?�3C7CG�.��������/'.�� ��"��&�-/�S�.��������/'.�� ��"�/�0.��������/'.�� ��"�/�T����G
������ L.��������/'.�� ��"��&�-/�.��������/'.�� ��"�/�.� "���������� �/M����� �����00�6?6B672@�9�?1B7@. �� �����"����/'.���/'.��#���/'���*����������00�6?'�3864:5@
�� .�������������"��/ 00�7C53C�9�:298
Spró5�.����&����<teraz zapytanie, ��"��5+�� �podsumowaniem przychodu i kosz-tów w Krakowie i w Tarnowie. Efekt taki uzyskujemy two��1#4����<modelu ����+4�.1#�:
Listing 10
��&���� .��������/'.� ��� � ����� /� ��
G����L.��� /��.����� /M�U������ L.��"��&�-/��.��"�/M����� ���
L �� ��#���'���*�����.� ��� � ����� /M�������� .�������������"��/
W ����+4��� schemacie �/�jemy funkcji AGGREGATE, aby agregowanie poszcze-gólnych � �� 5�0� ���3 ��&��� �8��� � � #9 6���#.�� �8��8�.1#�� ����& ���� &�&0a2# &�2# �#9 &�� ���:
Listing 11
��&���� .��#���/'.� ��� � ����� /���
G����������L.��� /�.����� /M�G������ L.��"��&�-/�.-���������"/�.���"*������/M����� ���
L��#���'���*����.� ��� � ����� /M�������� .�������������"��/
��/3 &�.��� ���/�utworzenie w���/�� a pozwala.1#�8��5���&�<, ��4���#1� 3��4� ��5 � ����+4�.1#�#9 &���/�7, wiele miar wyliczanych, do których póP� �. ��/���&�3����3 =@?@A���&�0�<� +4�4���� �.�.���&�. ��� 4����0���&y model miar wyli-czanych .���2��d� ���"/��#9okresów�����0��5����&��� na ����+4�.1#��3 �� �8�I
Listing 12
��&�����.��������/'.� ���!/�����D#�
. �� �"��/'.�������/'����������*��'��#����(. �� �"��/'.�������/�
G� )����������
.��������/'.�� ��������"�-�"�/�
�����.��������/'.� ��V/�����D#�. �� �"��/'.�������/'����������*��'��#�W�(. �� �"��/'.�������/�.��������/'.�� ��������"�-�"�/� '
'00�B�X?836�H6Y878<Z6�H�HC29�3@<A�B8C4�9C?91?�3C7@<A'
�����.��������/'.� ��$/�����D#�. �� �"��/'.�������/'����������*��'��#�!�(. �� �"��/'.�������/�.��������/'.�� ��������"�-�"�/��'�'�'��00�HC?:5C�<5[�\�5C;@2C78C
�5�&���� < .awnie ��3�.��2<, trzeba w trakcie obliczania takich miar wykorzy���<�0�&o kluczowe: SOLVE_ORDER = ����]^��gdzie WARTOSC .���3 #�51#�0��& �1����23�.1#1��3�.��2<: Pr���0���&�, u/�&�.1# w zapytaniu oblicza��#9#�0onów, ��/���0��&� ���6 � �&�< ��&� &�� �� czasu, �0�/1#� �� przedstawienia roku z rozbiciem napo0�&�I
Listing 13
��&���*�� ��������'.� "���������� �/���
G�.��������/'.�� "��/�� 0.��������/'.�� ������"����/U������ �����#�)�_`'``aP��������������
���*�� .-���������/'.�������/'���� �"����� �����00�6?6B672�3@?8<5�7@�G .�������/'J.�/b.�������/'J.!/b.�������/'J.$/b
.�������/'J.%/b.�������/'J.W/b.�������/'J.V/R��������������
���*�� .-���������/'.�������/'-��#����� ������00�6?6B672�3@?8<5�7@�G .�������/'J.N/b.�������/'J.K/b.�������/'J.c/b
.�������/'J.��/b.�������/'J.��/b.�������/'J.�!/R�������������
�������L .���� �"����� �/�
.-��#����� �/�
.-���������/'�������'���*���M������������
.���#������ ���#/'.��" �����#����/'���*��������� ���� .�������������"��/ &��� ���������'.� "���������� �/�
%����+���������,-.������(��/�
�3����3� EN�% ��/� 5�< �"&� �/ wykorzystana �3� ����23�� � 4�&��. ����+4#��jna�&� �3� � 3�� &�5����#9 4���� ��� �3�����"&: ��������#.+ ���1 5+�� ��� ����� �<.����azwany zbiór, który mo/�by< traktowany jako podzapytanie. Nazwany zbiór tworzo-
����3�&�� �& �3�&�� ���&�#9&���/�7&.+������, G
ny jest na czas trwania ��4���� �80"&��8�:Zbiór taki posiada nazw+, przez kt"�1 mo/e onby<&�&�0ywany ���4���� �80"&��8�:
Definicja 6
��&�����.��" � "*�����/����P'''R�����.��" � "*����!/����P'''R��'��'��'
Zastosowanie frazy WITH do nadawania nazwy zbiorom ilu����.�4�� /���4����0��,gdzie nazwany zbiór [NZ_SZYBKIESAMOCHODY] sk0���� +��3�����"&5+�1#�#9mo-delami samochodów: porsche, lotus, corvette oraz audi:
Listing 14
��&���� .�" �"�*�������&�-�/���
PL . �� �����&�-/'.��" �/'J.�����&�/�. �� �����&�-/'.��" �/'J.�����/�. �� �����&�-/'.��" �/'J.���D����/�. �� �����&�-/'.��" �/'J.��-�/MR
�������L .��������/'.�� �����/M�������������L .�" �"�*�������&�-�/�. �� �����&�-/'.��" �/M������ �
��� .�������������"��/
%�%��������������0������ ��
�4�&��"&&���.��2# �&�#95����� �����1#�����2# 1dla programisty oraz projek-tanta jest analiza kodu ��4���7��,. E5 �/1#��4����P�� �3��utor zaprezentowa05��$���4���#������+�� �MDX Script Performance Analyser, �0�/1#������3 ����������4$�"&: Q���� � &���.��2# �� 4���#1 ������&���8� �� ��8� #�3� ����+�� a jest istotnepo to, aby umo/3 & < tworzenie ich w optymalnej postaci. Dzia0�� � ��� � ma.1 �8�����&40�&��#���&������ ���4���7-���: D��4�����/�. 3�2# �/ytkowników bazy OLAP –na pop��&��.�.�� �0�� � [3].
*�!����;���5 �8#����&������ �&����# ����3 ��#. 4���#��8"3��#9����"&��4���� �
�� ��������
�� ����� ������ MDX Studio, ���������������������������������������ak-tualnie wykonywanego zapytania. P������ ���� �� ����� ������ ������� ������!
konstrukcyjnie � ���", w których dopuszczalne jest ����� ������� �#���������� �$
�zapy��" [4] %���&�'.
�������(��� ������������������� ������)*� �����������
���1���2 �����������������2����������
+���� ���������� ���������������� �,���#� �� �����������������������! ����
� ��������������������!&-���������. ���������� �����specjalnie utworzonegoaparatu matematycznego. Szerokie spektrum wykorzystania analiz �����!zbiorów danych,������ ��#������ �������������/������,� ���������takich zbiorach, jak rów����
rzet��������warto��� liczbowe. -�� ������ ��#� �� � ������",� ��yku MDX,zaimplementowano wiele rodzajów potrzebnych funkcji, � ��������� od przeznaczenia.-��������������� ���������������#/������,��� ��� ����ich zastosowania.Wybrane ��� ����� ���������������������������, podczas wykonywania, ����$
#������! z punktu widzenia analizy danych, za ���"&
���������� ����!�2 ��
Funkcja ORDER%�+0R1.-213S4T04U506�+37.+386U+)4869'– porz�dkujeelementy zbioru ZBIÓR, zgodnie ��#� �������������� �����������& -������ /��#�
���� BASC �������� �������� rosn�co. ��������� ������� /��#� ���� BDESC malej�$
co. T���� ����� � ������ ����� ��,� ���,��� � ���������� ��� �# �������� �y-�!���&: �������������������������������������������������#�� �������a-
�������������������������!������"� �����)* �;
ru MARKA. 8��������������/������ORDER, ����������������#�������������o-�,������ ����.�������/������������ �������T<T4(=2 [2]:
Listing 15
��������L .�� ��"��&�-/M�����������������������������������
�L . �� �����&�-/'.���/'�&��-����. �� �����&�-/'.��-/'�&��-���M�. �� �"��/'.��/'���*�����.�� ��"��&�-/������������� �
��� �.�������������"��/
3��� ������������� �#�������.���� tylko ograniczone do poszcze#,����!� o-�,������������.�������/������<�������� ��������+)486������)486&Ta-��� ���������������� �����> �������!���,�������������������������������a-nej [MK_ZYSKPROC]&8��������������/������TOPCOUNT, dla której schemat zastoso-wa������� ������������� ��� ����:
Listing 16
��&����*�����������'.� "������/���G� �.�� ��"��&�-/�.�� ��"�/�0.�� ��"�/T���G
��������L .�� ��"��&�-/�.� "������/M��������������� �������������L. �� �����&�-/'.���/'�&��-�������d��. �� �����&�-/'.��-/'�&��-���M���. �� �"��/'.��/'���*�����W��.� "������/������� �
��� .�������������"��/
�����3�������!�����4�������������� 5
- ����� )* ����� ��� szereg funkcji logicznych, ��,�� ����� ������ �����
tworzenia �����enia warunkowego&-�������� ����� �����������������/���sprawdze-nia czy dany element z naszego zbioru,� � ���(lub nie) ���������/������w hierarchii wy-miaru.
IIF%-31:T4?. (13-)3. @3�8�' A /������ ����/������� ��������� �������
WARUNEK � ��������� ������� PRAWDA. ����� ������� ���� �������. ��� @3�8�
w przeciwnym przypadku. PRAWDA i @3�8���#����������������ntów.
(������zaprezentowano ��,����!�������������kilku tego typu funkcji:
ISANCESTOR(ELEMENT1, ELEMENT2) – funkcja przyjmuj�ca warto�� TRUE,je�li element ELEMENT1 jest przodkiem elementu ELEMENT2.
ISCHILD(ELEMENT1, ELEMENT2) – funkcja przyjmuj�ca warto�� TRUE, je�lielement ELEMENT1 jest potomkiem elementu ELEMENT2.
�� ���������
ISEMPTY(ELEMENT) – funkcja przyjmuj ca warto��TRUE w przypadku, gdy ele-ment jest pusty (#EMPTY).
ISGENERATION(ELEMENT, INDEKS) – funkcja przyjmuj ca warto��TRUE, je�lielement ELEMENT nale�y do pokolenia wskazanego przez indeks.
ISLEAF(ELEMENT) – funkcja przyjmuj ca warto�� TRUE, je�li element ELEMENTznajduje ���na najni�szym poziomie hierarchii wymiarów (jest li�ciem drzewa wymiarów).
ISLEVEL(ELEMENT, POZIOM) – funkcja przyjmuj ca warto�� TRUE, je�li ele-ment ELEMENT znajduje ���w hierarchii wymiarów na poziomie okre�lonym przez PO-ZIOM.
ISSIBLING(ELEMENT1, ELEMENT2) – funkcja przyjmuj ca warto�� TRUE, je�lielement ELEMENT1 znajduje ���na tym samym poziomie w hierarchii wymiarów i ma tensam element nadrz�dny co element ELEMENT2 [5].
������������ ������ ���������������
���������������������� ���������������� ����� �!������" � ���������
�#������!��������� �������!����� ���#����� ����#��!�� ������ !��#���n-kretnego zbio�� !���� �$�%��"�!�����!�!����&
'� (����� ���� ���#��� ���$"�� �$�% ��!� �') �#�������� (������ FILTER.Zwraca ona zbiór, który jest !������(����� ��������#��� �����������$� ������.
FILTER(ZBIÓR, WARUNEK) – funkcja ta zwraca krotki nale� ce do zbioru elemen-tów ZBIÓR, �������� ce kryteria selekcji okre�lone przez WARUNEK&��#����!�����#����� �����(������ ������������ �!*
Listing 17
������������ ����������������� ���������������������� ������������� ����� ������� ���������������������������������������� ������������������������
���� ��������� ����������� ������������������
CROSSJOIN(ZBIÓR1, ZBIÓR2) – zwraca iloczyn �������+��� zbioru ZBIÓR1i zbioru ZBIÓR2. ZBIÓR2 nie mo�e zawiera� �adnych wymiarów wykorzystywanychw zbiorze ZBIÓR1. ,-.//0.12��������!������� ��! ���������� wy������ ��$���$�samego wymiaru. Zastosowanie � �������!�� �$��� !������� ���� !� �e-tlenia hierarchii,��#��������������� � ��#��� ������ [2]:
��#��� ���� ���� !����� !�� !����+ ��!���') �3
Listing 18
������ ������� ���������������������������������������������!��������������
� ����������� ������������ ����� ���������������� ���������������� �"#������ ������������ ����� �������������� !�� �����������������������������������
�������������� ������
GENERATE(ZBIÓR1, ZBIÓR2 [,ALL]) 4(������ ����� ����"��� ����! y-niku wy������� ��������* 5#�� ���#�$� �������� � ����� ZBIÓR1 �"� ZBIÓR2”.Klauzula [ALL]�� ����������� �����#������� �!������������" ����� !�i-kowym. Mo���! ��������� ���(������ !� ������!��#�����#������$���� �� ��� ���#!����� �!�� ������6����wszy potomek hierarchii) dla ���#�$�����*
Listing 19
� ����������$���������������� �� ���� �����������������������
�� ���� ������������������������ ����� � �������� ���$������������������
����������������� ��������������������� ��������� ����������� ��������������$������
.�� ��� � !��� !������� (������%�����!�" ������ ��!� model !� ����a-� �!nam !��#�����#������$������ ���, ���#!� pierwszym kwartale (pierwszy poto-mek hierarchii – numeracja od 0) dla ka�dego roku:
Listing 20
� ����������$�����! ����������������� �� ���� �����������������������
�� ���� �����������������������������������������
���$�����! ������������������������������������ �����������������
���� ��������� ����������� ��������������$������
PARENT(ELEMENT) – funkcja zwracaj ca element nadrz�dny w hierarchii wymia-rów w stosunku do elementu ELEMENT. 78-92: ���� �!� ��! ��� wielokrotnie.W naszym przypadku przeniesie ���������oziom [ALL].
�; ���������
Listing 21
� ��������������������$��������� ���
�� ������ !�� �����������������������������������������������$������
������������������$����!�������������� ������ !�� ��������������������� �������������$������%�� ������ !�� ����������������������������������
�������������$������������$��� ��&�'(�(()*
�������� �������������$��������� ��
�������������$�������������������$����!����������������������������� !�� �������������������������
�������������� ������
EXCEPT(ZBIÓR1, ZBIÓR2 [,ALL]) – funkcja zwracaj ca ró�nice zbiorów ZBIÓR1i ZBIÓR2. Flaga [ALL] pozwala na pozostawienie duplikatów. U�!����� ��!�����<�" � (������ 9),97: 6�#���#��� �"����� �����#! dwoma zbiorami), ������ �� namskon����� ���� !�������% ��"�� ������ �������� ����#�� #�� ���#�� $���! �� ��" �o�" �����#����o��� �����������������#������ [2]:
Listing 22
� ����������$�!�����!������ ����������� !�� ����������� ����� ����������������������� !�� ����������� ����� ����!�����
������������������$!�������!��� ������� ������ !�� ��������������������� �������������$������%
�������$�!�����!�����������������$������������$��� ��&�'+�(()*
�������� �����������������
�������������$!�������!��� �������������������$�!�����!�����������
�������������� ������
����������������������������������� �����������
������� �������" ������ ����� ������ �� ������������ �����#! ����������
hierarchii wymiaru. Funkcja MEMBERS zwraca elementy wskazanego wymiaru lub po-ziomu wymiarów. �������,=1>'-92 �����������!������5#����?#�����������<$��������������� ����$� !�����6�!�&@A& .���(������� ��! �����!(������ �<��� !����+%������ ��� ���� ����� ���� ��zwijania do ni�szych poziomów hierarchii.8�!�!��������!#�� ����" ����#�� �!�� ����� ������$����% ��!�����!��!o to ichdzieci, czyli – CHILDREN:
��#��� ���� ���� !����� !�� !����+ ��!���') ��
Listing 23
���������������������������������������������$����� !�� ����������� ����� ����!�������������
����$����� !�� ���������������� ���� ���������������������� ��������� ������
�������B��������� !������ �� ����������#�� !�����CDE
����!����������� � #�� ����%$#!��������� � ����! !����" & 1��� $��d-nienie mu���!��� �����������%�����!���(������ ADDCALCULATEDMEMBERS&7�!���#�������!���������� !$� #���������� ��*
Listing 24
����������� ����������������������������������������������� !�� ����������� ����� ����,�� ����� ���������� !�� ���������������� ����,�����������������������
�������������� ������
F��!���')����� ����� !�����������" !�����!��ad hoc, przy zastoso-waniu klauzuli WITH i odczytaniu ich przez (������ADDCALCULATEDMEMBERS:
Listing 25
� ���������������������$����!��������������-� �������������$�������%��������������$���������!��-�
�����$��� ��&�'+�(()-������
����� ��������������������������������������������� ����� �����������. ���������������������
�������������� ������
�D ���������
DESCENDANTS(ELEMENT [{ WARSTWA | INDEKS}[, FLAGA]]) – zwraca ele-menty ��#��#�� znajduj ce si� w warstwie WARSTWA% ��� �� $��boko�ci INDEKSw hierarchii wymiarów elementu ELEMENT. FLAGA wskazuje, które elementy ��� by�zwracane / pomijane.
Warto�ci, jakie mo�e przyjmowa� element FLAGA to [2]:
4 ����4 �����!����������! ���� !F8-/:F8����������9>9�92:%�����
�����!��#� ���� !F8-/:F8&
4 �����4 �����������!��� ��������� ���� !F8-/:F8&
4 ���� 4 � ���� ������� 9>9�92: ��� �������! ���#�� �� ��� ����������
!����" �� !��� ���� !F8-/:F8&
4 ������� ������ 4 ���� ������� 9>9�92:��� �!����� �������! ���<
#�� ���������������$� ���������� !����" %����������� ��#� ���� !F8-/:F8&
4 ������� ������ 4 ���� �!����� �������! ��� �� ���� �� F8-/:F8%
��� ���� ������ �!������������� ���������� !����" &
4 ���������������4 �����������9>9�92:��� �!������������!��� <
������������$� ���������� !����" &
4 ������ 4 ���� �������! ��#��#�� �������� 9>9�92:% ���#�� �� �� ������<
�!������������������ !����" 6������#�� � !����" A&
B������ ��!��a (������'9/,92'82:/����� ���������odpytanie kostki o in-formacje na poziomie nazwy towaru dla wybranej jego kategorii:
Listing 26
������������������������������������ ������ !�� ����������� ����� ���������
������������������ !�� ������������ ����� ������������������������������
��������������� ������
CURRENTMEMBER(WYMIAR) – zwraca aktualnie przetwarzany element dlawskazanego wymiaru WYMIAR. Funkcja wykorzystywana m.in. w funkcjach iteracyj-nych. Wyznaczmy ��!���#� � ����#�� #���� ����� ���#���� ���� �#��� �������� ! ����#��! ��$� ����$���� 4 �!�� ���!����% �#��������� #� ��$� ��#���& F!�������� o� ����� ������������ ,����������!�������! ��!��� ����� ����,G--92T-MEMBER oraz PARENT.
Listing 27
� ��������������������$��������� ���
�� ������ !�� ������� ��������������������������������$������
������������������$����!�������������� ������ !�� ������� �������������������������$������%�� ������ !�� ������� ��������������������������������$�������
�����$��� ��&�-(�(()-
��#��� ���� ���� !����� !�� !����+ ��!���') �H
�������� �������������$��������� ��
�������������$�������������������$����!����������������������������� !�� �������������������������
�������������� ������
F���������� ��!��� (������ 78-92: ���� �!� ��� ����� ��� ��������� odpo- ��#�������#�" �����,G--92:�9�I9-��� (������82,9/:.-% ����� � ���#�����#�� ��#����������#����#���$������&J����������� wtedy ��!����a-zwy hierarchii [5]:
Listing 28
� ��������������������$��������� ���
���������������� !�� �������������������������� !�� ����������� ����� ����������������$������
������������������$����!�������������� ������ !�� ���������������������������������$������%
���������������� !�� �������������������������� !�� ���������������� �����������������$������������$��� ��&�'(�(()*
������� �������������$��������� ���������������$�������������������$����!�����������������������
������ !�� ��������������������������������������� ������
PREVMEMBER(ELEMENT [, GENERATION | LEVEL]) – funkcja zwracaj ca po-przedni element (zale�nie od kolejno�ci definiowania) w stosunku do ELEMENT, w ra-mach pokolenia (GENERATION) lub poziomu (LEVEL). 7������� ����� ����������������� ��(������7-9K�9�I9-& 0�����������!��! !� ������!�������#a-�!���!����� ������# �����#���$�������������������������!���������!%��������������� ���������� ��:
Listing 29
� ��������������������$��������������
���������������$�������/�� �������������$������� ������������!�������������$��� ��&�'+++�+++�((��0*
�������� �������������$������
�������������$�������������������������� ����� ����� ���������� ����������� �� ������������
���� ��������� ������
DL ���������
LEAD(ELEMENT, INDEKS) – funkcja zwracaj ca element, który znajduje si� IN-DEKS kroków wprzód od elementu ELEMENT w ramach tej samej warstwy w hierarchiiwymiarów. Funkcji LEA'% ��"�� ���� ���� �##����! !����� � �������� �������!��� �# ������$� �����% ���� �!� ��!ta ����"� ���#��� ���! �� ������!���y���dowym modelu:
Listing 30
� ��������������������$��������������
�� �������������$������/�� �������������$������� �������������"#���
�����$��� ��&�'+++�+++�((��0*������
�� �������������$������������������$��������������������������� ����� ����� ���������� ����������� �� ������������
���� ��������� ������
NEXTMEMBER(ELEMENT [, GENERATION | LEVEL]) – funkcja zwracaj ca ko-lejny element (zale�nie od kolejno��i definiowania) w stosunku do ELEMENT, w ramachpokolenia (GENERATION) lub poziomu (LEVEL). G�!���29):�9�I9- �!� !<�a������o������!����#��#�� ���#�$������ ������ ��� �����#����������#<����������cy [5].
Listing 31
� ��������������������$��������������
�� �������������$�������/�� �������������$������
� �����������1��������������$��� ��&�-+++�+++�((��0-
�������� �������������$������������������$��������������������������� ����� ����� ����������� ����������� �� ������������
���� ��������� ������
PARALLELPERIOD([WARSTWA [, INDEKS [, ELEMENT]]]) – funkcja zwracaelement z wcze�niejszego okresu czasu dla podanych parametrów. 78-8>>9>79-1.'�� �������� ����" ����� ������ ������ ��$�����$����#�������� �o-przednim kwartale:
Listing 32
� ��������������������$��������������
�� �������������$�������2�������������$������!�����!�� � �� ������������������������$��� ��&�-+++�+++�((��0-
��#��� ���� ���� !����� !�� !����+ ��!���') DM
�������� �������������$������
�������������$��������������������������� ����� ����� ���������� ����������� �� ������������
���� ��������� ������
7��� ��� ������#!, gdy nie zdefiniowano „równo��$��$�?����� ��& ����� �� �b��<���� ������� !��! ��� ����������� !�� �������� ������%���$�#��� z kalendarzem.��������� #��%���� ���������#�������� �!������ �������& G�! �� �� ��<�a��#����#��� ����������%���������!��"����� ����#��! ��#������#�����#�$������ ��%���" ��� ������ ����� ����� �!�� �����*
Listing 33
� ��������������������$��������������
�� ������������������2������������������!�� �!�� � �� ���������� �� ��� �����������������������!������������$��� ��&�-+++�+++�((��0-
�������� �������������$������
�������������$�������������������� ������ ����� ����� ���������� ����������� �� ����������$�
���� ��������� ������
����������� �� ��!�
Specjalnym rodzajem (������ !����������') � (������ �$��$�� ��% ��"�� �o- ���� #��!�����$"�� !��#��!� �!������ !�#������ ������� !�"����� � ���
��#��#��!���!������%� #N����������� �� ��� �������$��$�� ���#��������������
!���������i��� ��$� ��&SUM(ZBIÓR [, LICZBA]) – funkcja zwracaj ca sum� elementów wchodz �!��
����# zbioru ZBIÓR. B��!����� �')% ��"�� !� ����� ML ����� �# $"�!% �����������������sakcji sprze#��!% ������#�������#��!� ������������������&:���� !��<����� ������ ����� ���� ������ ���� (������ /G�% �� � �� �� #� �� ��!�� ����" ��������!����onów:
Listing 34
� ����� ���$���� � �� �����
����� �������� ����� ������� �������������3(��������������$ ������
������ ����� ����� ��������$ ���� ���� ��� ����� ����� ����������������������������������2
� �����$���� � �� ����� ���������������������������� �����������������������������
����$���� � �� �������$ ���� ���������������� ��������� ������
DO ���������
TOPCOUNT(ZBIÓR, INDEKS [, LICZBA]) – funkcja zwracaj ca indeks elementówzbioru ZBIÓR uporz dkowanych od najwi�kszego do najmniejszego.
TOPPERCENT6BI1P-% 7-.,92:.F.QR% >1,BI8A – zwraca najmniejszy ist-niej cy podzbiór zbioru ZBIÓR%#����"��$������ ��! !����������+ jest nie mniejszyni� zadeklarowana procentowo��przelicze+����$������ZBIÓR. Procentowo��jest licz-ba z zakresu [0; 100]. LICZBA wskazuje kryteria selekcji. Elementy zwróconego podzbio-ru uporz dkowane s od najwi�kszego do najmniejszego.
TOPSUM(ZBIÓR, SUMA, LICZBA) – zwraca najmniejszy istniej cy podzbiór zbio-ru ZBIÓR, dla ��"��$������ ��! !����������+jest co najmniej równy podanemu wy-ra�eniu SUMA. Elementy zwróconego podzbioru uporz dkowane s od najwi�kszego donajmniejszego.
.�! ����� �������� ����� seria funkcji BOTTOM(odpowiedniki TOPxxx), ��� � �" <���� �"��� (unkcje statystyczne AVG, MEDIAN, MAX, MIN, VAR, STDDEV. 0�#���� $��#����$�������!�������������!�������� ����������������" ����� �!�t-����#������!�� ��!��(������&Format za����#�� !��� !�������!��(������jest jed-nakowy [5]:
Listing 35
� �������� ���$��� � �!��� ����
�!�� ����� ����� ���������������� ����������� �� ����
������ ���$��� � ��������� ��� ����� ����� ���������������
� ����������� �� �����1��� ���!��������� �� ���������������
���$��� � �!��� ������$��� � ������������������������ ����������������� ���������
���� ��������� ����������� ��������������$ ������
��"������ ��� ����� ������
W klauzuli WITH, ��#�(�������������� !������$������ e jest ������#�� ��#�����$� formatowanie. Warunkowe (������ �������� �#�! �� ��� ����� ��!��� funkcjiIIF(), ��"�����������! �����$�������!���#���& Jest to bardzo wygodne konstrukcyj-����������%�#��������� ������� ��� !�"������a !�����"�%��"��� ������!���e-mentem naszego raportu��&��� ��� � !�� ��������(�����!�� &7�!���#� !��#�� !���$"����� �!6(������� �! �������A ���#���! � ������� ������ �# MLL���� ���
������#��� ���*
��#��� ���� ���� !����� !�� !����+ ��!���') D@
Listing 36
� ����� ���$��������
������ !�� ����������� ����� �����������������������������$���!�����������������$��������
�����$��� ��&� ����$���!#4((�5+�((-�5�+�((�5������$������&� ����$���!#3((����677�(�(������677�677�(������$������&� ����$���!#3((����(�677�677������(�377�(�������$����&� ����$���!#3((�� ��$��� ����� ��$�� ��� ����� ��$ �� ����� ��$��� �����������$����&� ����$���!#3((�� ��� ���������$� ���&� ����$���!#3((�38�3(�
���������$����������������������� �����������. ���������������������
���� ��������� ����������� �������������$���!������!��!��� ���,������������ $,���������$�� ��������$��� �������$����������$�����������$���������$��������$� ��
���#�����
Mechanizmy ������+ !���!��! ��� ��������analitycznych ����#�� �����a����$��$���� #�� �����$"��!�� �����" ���������� !����" &F �������� �����o- �+, realizacja tylko mechanizmów sumowania na poziomie hierarchii, jest niewystarcza-� ��& Tu zachodzi potrzeba wzbogacenia analizy o dodatkowe operatory oraz funkcje mate-matyczne. W���������������!��!������ ���������������������+ � ��!����<�" �! ��������#! ��� �������&F������� ����$ �����#��z dwóch równole$�!��okresów (np. lat lub �������!). Pomoc #�� �����$� ��$� �!�� operacji, a nawet operacjibardziej skomplikowanych jest ��!�MDX.
W pracy przedstawione �����!zaproponowane przez autora schematy ��!���#�����<�!�� (������, ��� �" ���� ������ ��� ��#������ #� �������� ���� podobnych modeli.Opisano przypadki ��!�����!��MDX, w który�� !��N�������#������ �!�����#���nad innymi. Zamieszczono ���� ��!���#" �������� �!�� przetwarzanie danych wielo-wymia�� !��% �����$�� ����dedykowanymi do tego celu ����#����&
7�#���� �� � ����!������%����� �� ���#��% �� ��!��'), podobnie jak SQL,������!������!��+ jak i definiowania danych. /S>����������!�����#��� !���!<��! ��!� ���#� isku baz relacyjnych, jednak ������� #����on ���#� ������ wie-lowymiarowych struktur bazodanowych architektury OLAP, ��"��� �� ���� ��#��� ����<�uje MDX.
0�!��')���������������� ��! ����produktach Microsoftu&'������!����poprzez ���� ������#��� � OLE DB lub ADO. M���on ��������� �����$�� ��<�e$�� �� ������#��!��, gromadzonych w bazach i hurtowniach danych.
D� ���������
��� �#�#!���!��� ��$� �!�� ����#� �����������!% ��"�� ��� ���� �����i- ��� � ������ ����������� �����$�� �!�� ��� $������ �mierz���$� ����% �������! ������ !#��!� ���� ����� istotnych informacji z danych&I��#��� �������� �#�����#���,� ����!��� ���������!������#������!. 2����#���$�" �����������������na kosztownych czasowo obliczeniach podczas zwracania wyniku zapytania. Istotnymi��������� � ����� trudne w opracowaniu modele analityczne, które tworzone ������ ����� !#���!�� ������" (np. konstrukcji relacyjnych w SQL), � ��� � ����� ���<�a����$�#� ��$���������#��%��# #�#���� !������ ����������� !�� dla: wy-konania zapytania oraz projektowania modelu.
$���� ���
CME I������ F&% ������������ �� ������������ ������ � �!�� ���"��� �� �#���##� $���%%�&����& ����*TT
&�������&��T4��� �������!��!#��!� �!�$�#���+����� ��#��!��&
COE J�#����7&%>� ��#� ����&%�����'���%��()�'*�����+ ,����-.%�-�����'��/0���$�1�8��!<
������" �� �!%7�����������7���+���&
C@E + ,� ����.�� ���2��-����� ���%�#��* ����*TT &��#����U&���T�#U���������(& 2���#�� �����!
!#���������!��+�')&
C�E � + ,� ������* ����*TT &�����&���T������T�#U���#��&���4 ����#�� ���� ������ ��!��+
�')&
C3E 7���� ��� :&% 3*���� + ,� +�%�� �-��#����%� �4.��##���#1� � &���&�����&��TV����� ��T 4
��������!#!#���!���&
C;E 7������F&9&%+ ,��##�����%#������#&����*TT &#��������������&���4��� �� ��#!��(����<
�!����%��� �����!�$�#���������#��!��&
C�E /������� :&% 3*���� + ,� �� �5%�������� �� ��#������ ���%���������& ����*TT &�������(�&���T��<
���#T�������T�������T���LL;�WLM&���U&
CDE /��((��#X&%=�������/&%F���,�&%=���$'&%,�Y��#��&%+ ,���%�����#������+����#�2���!�
���"������%�#�#����"���#�6778�����/�.�������##5�#�& �������(�,����������7�������#*�����
OLL;&
CHE /����0&%/���������������1��������(�/S>/��Y���&L&7�� �#���:�������!%�������(�7����T
8727-.�1/9%F���� �%OLLL&
CMLE :������-&% $���������������+ ,�����.���&����+����#�2���!�����"���6778& �������(�,������<
����7�������#*�����OLL3&
CMME K�������#��7&%/�����:&%�����"����2���&���%�+���%#�2������� ���5�#�#&8,�/1X�.'-����#
OD6�A%MHHH&
CMOE F������ -&% J�"���� ��� B&%���!�&%+�&������ ������� 9� #���� �5����� �� ��������� �����'�1
7��'����$ML%F!#� ���� �28J.�%7���+%OLLL%�34H@&
CM@E Z������ /&% ���2�##����%� ���� :������#��&� ����� �!�� ���"��� ;17� ���� ���� � ���"���#1�F��U
7����%8�#��=����%OLLL&