DAX формулаларындағы контекст

Контекст динамикалық талдауды орындауға мүмкіндік береді. Бұл талдауда формуланың нәтижелері ағымдағы жол немесе ұяшық бөлектеуін, сонымен бірге барлық қатысты деректерді көрсету үшін өзгере алады. Контекстіні түсіну және оны тиімді пайдалану өнімділігі жоғары формулаларды жасау, динамикалық талдаулар және формулалардағы мәселелерді шешу үшін өте маңызды.

Бұл бөлімде контекстінің түрлері анықталады: жол контексті, сұрау контексті және сүзгі контексті. Онда есептелетін бағандарда және жиынтық кестелерде формулалар үшін контекст қалай есептелетіні түсіндіріледі.

Бұл мақаланың соңғы бөлігінде формулалардың нәтижелері контекстіге сай қалай өзгеретінін көрсететін егжей-тегжейлі мысалдарға сілтемелер берілген.

Контекстіні түсіну

Power Pivot қондырмасындағы формулаларда жиынтық кестеде қолданылған сүзгілер, кестелер арасындағы қатынастар және формулаларда пайдаланылған сүзгілер әсер етуі мүмкін. Контекст динамикалық талдауды мүмкін ететін нәрсе. Контекстіні түсіну формулаларды жасау және мәселелерін шешу үшін маңызды.

Контекстінің бірнеше түрі бар: жол контексті, сұрау контексті және сүзгі контексті.

Жол контекстін «ағымдағы жол» етіп елестетуге болады. Егер есептелетін бағанды жасасаңыз, жол контексті әр жеке жолдағы мәндерден және ағымдағы жолға қатысты бағандардағы мәндерден тұрады. Сондай-ақ, ағымдағы жолдан мәнді алатын, содан кейін сол мәнді бүкіл кестеге қатысты әрекетті орындап жатқанда пайдаланатын кейбір функциялар (EARLIER функциясы және EARLIEST функциясы) бар.

Сұрау контексті жол және баған тақырыптарына байланысты жиынтық кестедегі әр ұяшық үшін анық емес түрде жасалатын деректердің ішкі жиынын білдіреді.

Сүзгі контексті — жолға қолданылған немесе формула ішіндегі сүзгі өрнектері арқылы анықталған сүзгі шектеулеріне негізделген әр бағандағы мәндер жиыны.

Беттің жоғары бөлігі

Жол контексті

Егер есептелетін бағанда формуланы жасасаңыз, бұл формуланың жол контексті ағымдағы жолдағы барлық бағандардан алынған мәндерді қамтиды. Егер кесте басқа кестеге қатысты болса, мазмұн, сонымен бірге, ағымдағы жолға қатысты басқа кестедегі барлық мәндерді қамтиды.

Мысалы, бір кестедегі екі бағанды қосатын =[Freight] + [Tax]

есептелетін бағанды жасадыңыз делік. Бұл формула бір жолдағы мәндерге автоматты түрде сілтеме жасайтын Excel кестесі сияқты әрекет етеді. Кестелер ауқымдардан өзгеше екенін ескеріңіз: ауқым нұсқауын пайдалана отырып ағымдағы жол алдындағы жол мәніне сілтеме жасау мүмкін емес, әрі кестедегі немесе ұяшықтағы кез келген кездейсоқ жалғыз мәнге сілтеме жасау мүмкін емес. Әрқашан кестелермен және бағандармен жұмыс істеу керек.

Жол контексті қатысты кестелердегі қай жолдар ағымдағы жолмен байланысты екенін анықтау үшін кестелер арасындағы қатынастарды автоматты түрде бақылайды.

Мысалы, келесі формула RELATED функциясын пайдаланып тапсырыс жіберілген аймаққа негізделіп, қатысты кестеден салық мәнін алады. Салық мәні ағымдағы кестедегі аймақ мәнін пайдалана отырып, аймақты қатысты кестеде іздеу, содан кейін қатысты кестеден сол аймақ үшін салық мөлшерін алу арқылы анықталады.

= [Freight] + RELATED('Region'[TaxRate])

Бұл формула жай «Аймақ» кестесінен ағымдағы аймақ үшін салық мөлшерін алады. Кестелерді қосатын кілтті білудің немесе көрсетудің қажеті жоқ.

Бірнеше жол контексті

Бұған қоса, DAX тілінде кестеде есептеулерді итерациялайтын функциялар бар. Бұл функцияларда бірнеше ағымдағы жол және ағымдағы жол контекстілері болуы мүмкін. Бағдарламалау терминдерімен айтқанда, ішкі және сыртқы циклде рекурсияны орындайтын формулаларды жасауға болады.

Мысалы, жұмыс кітабында Өнімдер кестесі және Сату кестесі бар делік. Бірнеше өнімге қатысты транзакцияларға толы бүкіл сату кестесін қарап шығып, кез келген транзакциядағы әр өнім үшін ең көп тапсырыс берілген мөлшерді табу керек болуы мүмкін.

Excel бағдарламасында бұл есептеу деректер өзгерсе, қайта жасау қажет болуы мүмкін аралық жиынтықтар қатарын қажет етеді. Егер Excel бағдарламасының тәжірибелі пайдаланушысы болсаңыз, тапсырманы орындайтын массив формулаларын жасауыңызға болады. Я болмаса, қатысты дерекқорда кірістірілген ішкі сұрауларды жазуға болады.

Бірақ, DAX көмегімен дұрыс мәнді қайтаратын бір формуланы жасауға болады, сонда нәтижелер кестелерге деректерді қосқан сайын автоматты түрде жаңартылады.

=MAXX(FILTER(Sales,[ProdKey]=EARLIER([ProdKey])),Sales[OrderQty])

Бұл формула туралы егжей-тегжейлі мәліметтерді EARLIER функциясы бөлімінен қараңыз.

Қысқаша айтқанда, EARLIER функциясы ағымдағы амалдың алдындағы амалдың жол контекстін сақтайды. Барлық уақытта, функция жадта контекстінің екі жиынын сақтайды: бір контекст жиыны формуланың ішкі циклы үшін ағымдағы жолды білдіреді, екінші контекст жиыны формуланың сыртқы циклы үшін ағымдағы жолды білдіреді. DAX екі цикл арасында мәндерді автоматты түрде береді, осылайша күрделі біріктірулерді жасауға болады.

Беттің жоғары бөлігі

Сұрау контексті

Сұрау контексті формула үшін анық емес түрде шығарып алынатын деректердің ішкі жиынын білдіреді. Жиынтық кестедегі ұяшыққа есептелетін өріс немесе басқа мән өрісін қойғанда, Power Pivot механизмі контексті анықтау үшін жол және баған тақырыптарын, шектегіштерді және есеп сүзгілерін тексереді. Кейін  Power Pivot қондырмасы жиынтық кестедегі әр ұяшықты толтыру үшін қажет есептеулерді жасайды. Шығарып алынатын деректер жиыны — әр ұяшықтың сұрау контексті.

Формуланы орналастырған орынға байланысты контекст өзгеруі мүмкін болғандықтан, формуланы көп топтаулары мен сүзгілері бар жиынтық кестеде немесе сүзгілер жоқ және контекст барынша аз есептелетін бағанда пайдалануға байланысты формула нәтижелері де өзгереді.

Мысалы, Сату кестесінің Табыс бағанындағы мәндерді қосатын мына қарапайым формуланы жасайсыз делік:

Егер осы формуланы Сату кестесінің ішіндегі есептелетін бағанда пайдалансаңыз, формуланың нәтижелері бүкіл кесте үшін бірдей болады, өйткені формуланың сұрау контексті әрқашан Сату кестесінің бүкіл деректер жиыны болады. Нәтижелерде барлық аймақтар, барлық өнімдер, барлық жылдар және т.с.с. үшін табыс болады.

Бірақ, әдетте бірдей нәтижені жүздеген рет көргіңіз келмейді, оның орнына нақты жыл, нақты ел немесе аймақ, нақты өнім немесе осылардың тіркесімі үшін табысты алғыңыз келеді, содан кейін, жалпы қорытындыны алғыңыз келеді.

Жиынтық кестеде баған және жол тақырыптарын қосу немесе жою және шектегіштерді қосу немесе жою арқылы контекстіні өзгерту оңай. Есептелетін өрісте жоғарыдағы сияқты формуланы жасап, содан кейін жиынтық кестеге қоюға болады. Жиынтық кестеге баған немесе жол тақырыптарын қосқанда, есептелетін өріс есептелетін сұрау контекстін өзгертесіз. Шектеу және сүзу әрекеттері де контекстіге әсер етеді. Сондықтан жиынтық кестеде пайдаланылған бір формула әр ұяшық үшін әр түрлі сұрау контекстінде есептеледі.

Беттің жоғары бөлігі

Сүзгі контексті

Сүзгі контексті формула аргументтерін пайдалана отырып, бағанда немесе кестеде рұқсат етілген мәндер жиынындағы сүзгі шектеулерін көрсеткенде қосылады. Сүзгі контексті жол контексті немесе сұрау контексті сияқты басқа контекстілердің үстінен қолданылады.

Мысалы, жиынтық кесте әр ұяшық үшін мәндерін сұрау контексті туралы алдыңғы бөлімде сипатталғандай жол және баған тақырыптарына негізделіп есептейді. Бірақ, жиынтық кестеге қосатын есептелетін өрістер немесе есептелетін бағандар ішінде формула пайдаланатын мәндерді басқару үшін сүзгі өрнектерін көрсетуге болады. Сондай-ақ, таңдау бойынша нақты бағандардағы сүзгілерді жоюға болады.

Формулалар ішінде сүзгілерді жасау жолы туралы қосымша ақпарат алу үшін Сүзгі функциялар (DAX) бөлімін қараңыз.

Жалпы қорытындыларды жасау үшін сүзгілерді жою жолының мысалын ALL функциясы бөлімінен қараңыз.

Формулалар ішінде сүзгілерді таңдау бойынша жою және қолдану жолының мысалдарын ALLEXCEPT функциясы бөлімінен қараңыз.

Сондықтан, формулалардың нәтижелерін талдағанда сүзгі контекстін білу үшін жиынтық кестеде пайдаланылатын есептелетін өрістердің немесе формулалардың анықтамасын қарап шығу керек.

Беттің жоғары бөлігі

Формулаларда контекстіні анықтау

Формуланы жасағанда, Excel бағдарламасына арналған Power Pivot қондырмасы алдымен жалпы синтаксисті тексереді, содан кейін көрсетілген бағандардың және кестелердің атауларын ағымдағы контекске ықтимал бағандарға және кестелерге қатысты тексереді. Егер Power Pivot формулада көрсетілген бағандарды және кестелерді таба алмаса, қате пайда болады.

Контекст алдыңғы бөлімде сипатталғандай, жұмыс кітабындағы қолжетімді кестелерді, кестелер арасындағы барлық қатынастарды және қолданылған барлық сүзгілерді пайдалана отырып анықталады.

Мысалы, жаңа кестеге біраз деректерді жаңадан импорттап, ешбір сүзгілерді қолданбаған болсаңыз, кестедегі бүкіл бағандар жиыны ағымдағы контекстінің бөлігі болып табылады. Егер қатынастар арқылы байланыстырылған бірнеше кесте бар болса және баған тақырыптарын қосу және шектегіштерді пайдалану арқылы сүзілген жиынтық кестеде жұмыс істеп жатсаңыз, контекст қатысты кестелерді және деректердегі барлық сүзгілерді қамтиды.

Контекст — формулалардың мәселелерін шешуді қиын етуі мүмкін қуатты түсінік. Контекстінің қалай жұмыс істейтінін көру үшін қарапайым формулалардан және қатынастардан бастау, содан кейін жиынтық кестелерде қарапайым формулалармен тәжірибелер жасауды бастауды ұсынамыз. Келесі бөлімде де формулалар нәтижелерді динамикалық түрде қайтару үшін контекст түрлерін қалай пайдаланатынының біраз мысалы берілген.

Формулалардағы контекстінің мысалдары

  • RELATED функциясы ағымдағы жолдың контекстін қатысты бағандағы мәндерді қамтитындай кеңейтеді. Бұл іздеулерді орындауға мүмкіндік береді. Бұл бөлімдегі мысал сүзу мен жол контекстінің өзара әрекеттесуін көрсетеді.

  • FILTER функциясы ағымдағы контекстіге қосатын жолдарды көрсетуге мүмкіндік береді. Сондай-ақ, бұл бөлімдегі мысалдар біріктірулерді орындайтын басқа функциялар ішінде сүзгілерді ендіру жолын көрсетеді.

  • ALL функциясы формула ішінде контекстіні орнатады. Оны сұрау контекстінің нәтижесі ретінде қолданылған сүзгілерді қайта анықтау үшін пайдалануға болады.

  • ALLEXCEPT функциясы көрсеткеннен басқа барлық сүзгілерді жоюға мүмкіндік береді. Бөлімдердің екеуі де формулаларды жасау және күрделі контекстілерді түсінуден өткізетін мысалдарды қамтиды.

  • EARLIER және EARLIEST функциялары ішкі циклдан мәнді ала отырып, есептеулерді орындау арқылы кестелерде циклды орындауға мүмкіндік береді. Егер рекурсия түсінігімен және ішкі және сыртқы циклдармен таныс болсаңыз, EARLIER және EARLIEST функциялары қамтамасыз ететін қуатты бағалайсыз. Егер осы түсініктермен енді танысып отырсаңыз, есептеулерде ішкі және сыртқы контекстілер қалай пайдаланылатынын көру үшін мысалдағы қадамдарды мұқият орындау керек.

Беттің жоғары бөлігі

Сілтемелік тұтастық

Бұл бөлімде байланыстар арқылы қосылған Power Pivot кестелеріндегі жоқ мәндерге қатысты кейбір күрделі түсініктер талқыланады. Бұл бөлім сізге бірнеше кестелері және күрделі формулалары бар жұмыс кітаптарыңыз болса және нәтижелерді түсінуде анықтама керек болғанда пайдалы болады.

Егер қатысты деректер түсініктерімен енді таныссаңыз, алдымен Қатынастарға шолу кіріспе бөлімін оқу ұсынылады.

Сілтемелік тұтастық және Power Pivot байланыстары

Power Pivot қондырмасы жарамды байланысты анықтау үшін екі кесте арасында сілтемелік тұтастықты күшіне енгізуді қажет етпейді. Оның орнына, әр бір-көпке байланысының «бір» соңында бос жол жасалады және қатысты кестедегі барлық сәйкес емес жолдарды өңдеу үшін пайдаланылады. Ол SQL сыртқы біріктіруі ретінде тиімді әрекет етеді.

Жиынтық кестелерде деректерді қатынастың бір жағы бойынша топтасаңыз, қатынастың көп жағындағы барлық сәйкес емес деректер топталады және бос жол тақырыбы бар қорытындыларға қосылады. Бос тақырып «белгісіз элементтің» баламасы деп те айтуға болады.

Белгісіз элементті түсіну

SQL Server Analysis Services сияқты көп өлшемді дерекқор жүйелерімен жұмыс істеген болсаңыз, белгісіз элемент түсінігі сізге таныс шығар. Егер бұл термин сіз үшін жаңа болса, келесі мысалда белгісіз элементтің не екені және оның есептеулерге қалай әсер ететіні түсіндіріледі.

Әр дүкен үшін ай сайынғы сатылымды қосатын есептеуді жасап жатырсыз, бірақ Сату кестесіндегі бағанда дүкен атауының мәні жоқ делік. Дүкен және Сату кестелері дүкен атауы арқылы қосылған десек, формулада не орын алады деп күтетін едіңіз? Жиынтық кесте бар дүкенге қатысты емес сату сандарын қалай топтауы немесе көрсетуі керек?

Бұл мәселе нақты деректердің үлкен кестелерін фактілерді санаттау және есептеу үшін пайдаланылатын дүкендер, аймақтар және басқа аргументтер туралы ақпаратты қамтитын өлшем кестелеріне логикалық түрде қатысты болуы керек деректер қоймасында жиі болады. Мәселені шешу үшін бар нысанға қатысты емес барлық жаңа фактілер белгісіз элементке уақытша тағайындалады. Осы себепті қатысты емес фактілер жиынтық кестеде бос тақырып астында топталады.

Бос мәндерді және бос жолды салыстыру

Бос мәндер белгісіз элементті қабылдау үшін қосылатын бос жолдардан өзгеше. Бос мән — нөл мәндерін, бос жолдарды және басқа жоқ мәндерді білдіру үшін пайдаланылады. Бос мән, сонымен бірге, басқа DAX деректер түрлері туралы қосымша ақпаратты Деректер үлгілеріндегі деректер түрлері бөлімінен қараңыз.

Беттің жоғары бөлігі

Дағдыларды жетілдіру
Оқыту курсымен танысыңыз
Жаңа мүмкіндіктерге бірінші болып қол жеткізу
Office Insider бағдарламасына қосылу

Осы ақпарат пайдалы болды ма?

Пікіріңіз үшін рақмет!

Пікіріңізге рақмет! Сізді Office қолдау көрсету қызметіндегі агенттердің бірімен байланыстырған жөн болуы мүмкін.

×