Кестелер

Ескертпе

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

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

  • Жазбада адам, орын немесе зат туралы ақпараттың бір немесе бірнеше санаттары бар. Мысалы, жазбада бір тұтынушының аты, электрондық пошта мекенжайы және телефон нөмірі болуы мүмкін. Басқа құралдар жазбаны «жол» немесе «элемент» деп атайды.
  • Кестеде ақпараттың бірдей санаттарын қамтитын бір немесе бірнеше жазба бар. Мысалы, кестеде 50 клиенттің аттары, электрондық пошта мекенжайлары және телефон нөмірлері болуы мүмкін.

Excel бағдарламасында формула аргументтер ретінде бір немесе бірнеше ұяшықты пайдаланатындай кестенің атауын аргумент ретінде қабылдайтын көптеген формулалар жасауға болады. Power Fx платформасында кейбір формулалар сіз көрсеткен басқа аргументтерді көрсететін кестені қайтарыңыз. Мысалы, сіз формула жасай аласыз:

  • кестені Түзету функциясының көптеген аргументтерінің бірі ретінде көрсету арқылы сол кестедегі жазбаны жаңарту үшін
  • кестені AddColumns, DropColumns немесе RenameColumns функциясының аргументі ретінде көрсету арқылы сол кестеге бағандарды қосу, жою және атауын өзгерту үшін. Бұл функциялардың ешқайсысы бастапқы кестені өзгертпейді. Оның орнына, функция сіз көрсеткен басқа аргументтердің негізінде басқа кестені қайтарады.

Кесте элементтері

Кесте элементтері.

Жазбалар

Әрбір жазбада адам, орын немесе зат ақпаратының кемінде бір санаты бар. Жоғарыдағы мысал әр өнімнің (Шоколад, Нан және Су) жазбасын және әр ақпарат санатының (Бағасы, Қолдағы саны және Тапсырыс саны) бағанын көрсетеді.

Формуланың ішінде жазбаға өзі арқылы, кесте мәтінмәнінен тыс ирек жақшалар арқылы сілтеме жасауға болады. Мысалы, { Аты: «Құлпынайлар», Бағасы: 7,99 } жазбасы кестемен байланыстырылмаған. Аты және Бағасы сияқты өріс атаулары бұл мысалда қос тырнақшаға алынбағанын ескеріңіз.

Өрістер

Өріс - бұл жазбадағы жеке ақпарат. Бұл өрісті белгілі бір жазба үшін бағандағы мән ретінде көрнекілендіруге болады.

Басқару элементі сияқты, жазбадағы .операторды пайдаланып жазу өрісіне сілтеме жасайсыз. Мысалы, First(Products).Name операторы Өнімдер кестесіндегі бірінші жазбаның Аты өрісін қайтарады.

GroupBy функциясының мысалы көрсеткендей өріс басқа мысалды немесе кестені қамтуы мүмкін. Жазбалар мен кестелер деңгейлерінің кез келген санын қосуға болады.

Бағандар

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

  • Атауы
  • Баға
  • Қолда бар саны
  • Тапсырыс берілген саны

Бағанның атауы сол бағандағы өрістерді көрсетеді.

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

Басқа құралдарда бағандарға «өрістер» деп сілтеме жасаған болуыңыз мүмкін.

Кесте

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

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

Төмендегі мысалдағыдай, кестені формулада Кесте функциясын ирек жақшаларда көрсетілетін жазбалар жиынымен пайдалану арқылы көрсетуге болады:

Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Сондай-ақ тік жақшалармен бір бағанды кестені белгілеуге болады. Жоғарыдағыны жазудың балама әдісі:

[ "Strawberry", "Vanilla" ]

Кесте формулалары

Excel және Power Fx бағдарламаларында формулаларды сандар мен мәтін жолдарын ұқсас жолдармен басқару үшін пайдаланасыз:

  • Excel бағдарламасында 42 сияқты мәнді A1 ұяшығына енгізіп, A1 + 2 сияқты формуланы басқа ұяшыққа енгізіңіз де, 44 мәнін алыңыз.
  • Power Apps платформасында Slider1Әдепкі сипатын 42 мәніне орнатып, белгінің Мәтін сипатын Slider1.Value + 2 етіп орнатыңыз да, 44 мәнін алыңыз.

Екі жағдайда да, егер аргументтердің мәндерін өзгертсеңіз, есептелген мән автоматты түрде өзгереді (мысалы, A1 ұяшығындағы нөмір немесе Слайд1 мәні).

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

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

Кесте функциялары және басқару элементтерінің сипаттары

Төменгі функциясын қарастырайық. Егер қош келдіңіз айнымалысы «Сәлем Әлем» мәтін жолын қамтыса, Төменгі (қош келдіңіз) формуласы «сәлем әлем» жазбасын қайтарады. Бұл функция ешқандай жолмен сол айнымалының мәнін өзгертпейді. Төменгі тек енгізілген мәнді өңдеп, нәтиже беретін таза функция болып табылады. Бар болғаны осы; оның жанама әсерлері жоқ. Excel бағдарламасының барлық функциялары мен Power Fx платформасының көптеген функциялары жұмыс кітабына немесе қолданбаға автоматты түрде қайта есептеуге мүмкіндік беретін таза функциялар болып табылады.

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

Көптеген функциялар енгізу үшін бір бағандық кестені алады. Егер бүкіл кестеде тек бір баған болса, оны атау арқылы көрсетуге болады. Егер кестеде бірнеше бағандар болса, Table.Column синтаксисін пайдалану арқылы сол бағандардың біреуін көрсетуге болады. Мысалы, Products.Name синтаксисі тек Өнімдер кестесіндегі Аты мәндерің бір бағандық кестесін қайтарады.

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

Мінез-құлық формулалары

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

Жазба ауқымы

Кейбір функциялар кестенің барлық жазбаларында формуланы жеке бағалау арқылы жұмыс істейді. Формуланың нәтижесі әртүрлі тәсілдермен қолданылады:

  • AddColumns - Формула қосылған өрістің мәнін береді.
  • Орташа, Макс, Мин, Қор, StdevP, VarP - формула біріктіру мәні қамтамасыз етеді.
  • Сүзу, Іздеу - формула жазбаның шығарылымға енгізілу керектігін не керек еместігін анықтайды.
  • Контакт - формула бір-біріне байланыстыратын жолдарды анықтайды.
  • Нақты - формула қайталанатын жазбаларды анықтау үшін пайдаланылатын мәнді қайтарады.
  • Барлығына - формула кез келген мәнді қайтара алады, кері әсерлері барын қайтаруы мүмкін.
  • Сұрыптау - формула жазбаларды сұрыптау мәнін қайтарады.
  • Мынаны қамтиды - формула кез келген мәнді қайтара алады, кері әсерлері барын қайтаруы мүмкін.

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

Мысалы, глобалдық айнымалыға орналастырылған Өнімдер кестесін алайық:

Сұралған кестелер.

Set( Products,
    Table(
        { Product: "Widget",    'Quantity Requested': 6,  'Quantity Available': 3 },
        { Product: "Gadget",    'Quantity Requested': 10, 'Quantity Available': 20 },
        { Product: "Gizmo",     'Quantity Requested': 4,  'Quantity Available': 11 },
        { Product: "Apparatus", 'Quantity Requested': 7,  'Quantity Available': 6 }
    )
)

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

Filter( Products, 'Quantity Requested' > 'Quantity Available' )

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

Керек кестелер.

Осы мысалға қоса, біз әр өнімнің қаншасына тапсырыс беру керектігін есептей аламыз:

AddColumns( 
    Filter( Products, 'Quantity Requested' > 'Quantity Available' ), 
    "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)

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

Бағандарды қосыңыз.

Қорытындылай келе, нәтижелер кестесін тек өзіміз қалаған бағандар санына дейін азайта аламыз:

ShowColumns(
    AddColumns(
        Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
        "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
    ),
    "Product",
    "Quantity To Order"
)

Тек тапсырыс беру үшін.

Жоғарыда кейбір жерлерде қос тырнақшаларды ("") және басқа жерлерде жалғыз тырнақшаларды (") пайдаланғанымызды ескеріңіз. Нысанның атауында бос орын бар өріс немесе кесте сияқты нысанның мәніне сілтеме жасау кезінде жалғыз тырнақшаларды пайдалану қажет. Қос тырнақшалар нысанның мәніне емес, өзіне сілтеме жасағанда, әсіресе AddColumns сияқты нысанның өзі әл жасалмаған жағдайларда пайдаланылады.

Айырмашылықты жою

Жазба ауқымымен қосылған өріс атаулары қолданбаның басқа жерлеріндегі дәл сондай атауларды ауыстырады. Бұл жағдайда мәндерге @ айырмашылықтарды жою операторымен жазба аумағынан тыс қол жеткізуге болады:

  • Кірістірілген жазбалар ауқымындағы мәндерге қол жеткізу үшін @ операторын осы үлгіні пайдалану кезінде жұмыс істейтін кестенің атымен бірге пайдаланыңыз:
    Кесте[@FieldName]
  • Деректер көздері, жинақтар және мәтінмәндік айнымалылар сияқты ғаламдық мәндерге қол жеткізу үшін [@ObjectName] үлгісін пайдаланыңыз (кесте тағайындаусыз).

Егер жұмыс істейтін кесте өрнек болса, мысалы, Сүзгі(Кесте, ... ), онда айырмашылықты жою операторын пайдалану мүмкін емес. Бұл кесте өрнегінен өрістерге тек ішкі жазба ауқымы ғана айырмашылықтарды жою операторын пайдаланбай қол жеткізе алады.

Мысалы, Х жинағы деп бар ойлайық:

X мәні.

Осы жинақты ClearCollect(X, [1, 2] ) арқылы жасауға болады.

Және басқа Y жинағы:

Y мәні.

Осы жинақты ClearCollect( Y, ["A", "B"] ) арқылы жасауға болады.

Бұған қоса Мән деп аталатын мәтінмән айнымалысын мына формуламен анықтаңыз: UpdateContext( {Value: "!"} )

Бәрін бірге қояйық. Бұл тұрғыда келесі формула:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

мына кестені шығарады:

XY мәні.

Мұнда не болып жатыр? Сыртқы Барлығына функциясы Х жазбасы ауқымын анықтап, өңделу кезінде әр жазбаның Мән өрісіне қол жеткізуге мүмкіндік береді. Оған жай Мән сөзін немесе X[@Value] мәнін пайдаланып қол жеткізуге болады.

Ішкі ForAll функциясы Y үшін басқа жазба ауқымын анықтайды. Бұл кестеде де Мән өрісі анықталғандықтан, осы жерде Мән өрісінің пайдаланылуы Y жазбасының өрісін білдіреді және бұдан былай Х жазбасындағылардың бірі болмайды. Осында Х жазбасының Мән өрісіне қол жеткізу үшін айырмашылықтарды жою операторымен ұзағырақ нұсқаны қолдануымыз керек.

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

Ungroup(
    ForAll( X,
        ForAll( Y,
            Value & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

Барлығына жазбасы ауқымдарының бәрі ғаламдық ауқымды ауыстырады. Біз анықтаған Мән мәтінмәндік айнымалысы айырмашылықтарды жою операторысыз атауы бойынша қол жетімді емес. Бұл мәнге қол жеткізу үшін [@Value] функциясын пайдаланыңыз.

Топтан шығару нәтижені теңестіреді, себебі кірістірілген Барлығына функциялары кірістірілген нәтижелер кестесін береді.

Бір бағанды кестелер

Кестенің бір бағанында жұмыс істеу үшін, келесі мысалдағыдай ShowColumns функциясын пайдаланыңыз:

ShowColumns( Products, "Product" )

Бұл формула мына бір бағандық кестені шығарады:

Жалғыз баған.

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

Products.Product

Кірістірілген жазбалар

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

{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Сондай-ақ мына мысалда көрсетілгендей формулаларды басқа формулалармен ендіруге болады:

{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Жазбаларды мына мысалда көрсетілгендей ирек жақшалармен кірістіруге болады:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

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

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

Кірістірілген кестелер

Кестені Кесте функциясын және жазбалар жиынын пайдаланып жасауға болады. Осы тақырыптың басындағы кестені формула арқылы көрсетуге болады:

Table( 
	{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
	{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
	{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } 
)

Сондай-ақ кестелерді кірістіруге болады:

Table( 
	{ Name: "Chocolate", 
	  'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
	                             { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) 
	}
)

Кірістірілген мән кестелері

Тік жақшаларда мәндерді көрсету арқылы бір бағандық кестелер жасауға болады. Нәтижедегі кестеде Мән атаулы жалғыз баған бар.

Мысалы, [ 1, 2, 3, 4 ] мәні Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) мәніне тең және мына кестені қайтарады:

Кірістірілген кесте.