Бөлісу құралы:


For All функциясы

Қолданылады: Canvas қолданбалары Жұмыс үстелі ағындары Үлгіге негізделген қолданбалар Power Platform CLI

Кесте ішіндегі барлық жазбалар үшін мәндерді есептейді және әрекеттерді орындайды.

Сипаттама

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

Санау негізіндегі итерация үшін Sequence функциясынForAll функциясымен бірге пайдаланыңыз.

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

Қайтарылатын мән

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

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

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

Әрекет орындау

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

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

Рет тәуелділіктерін болдырмауға тырысыңыз. Осы себепті, UpdateContext, Clear және ClearCollect функцияларын ForAll функциясының ішінде пайдалану мүмкін емес, өйткені олар осы әсерге ұшырауға бейім айнымалыларды сақтау үшін оңай пайдаланылуы мүмкін. Collect функциясын пайдалануға болады, бірақ жазбаларды қосу реті анықталмаған.

Деректер көздерін өзгертетін бірнеше функция, оның ішінде Collect, Remove, және Update қайтарылатын мәні ретінде өзгертілген деректер көзін қайтарады. ForAll кестесінің әрбір жазбасы үшін қайтарылса, бұл қайтарылатын мәндер үлкен болуы және айтарлықтай ресурстарды тұтынуы мүмкін. Сондай-ақ бұл қайтарылатын мәндер күткендей емес екенін анықтауыңыз мүмкін, өйткені ForAll параллель әрекет ете алады және осы функциялардың жанама әсерлерін нәтижесін алудан бөлуі мүмкін. Егер ForAll қайтару мәнінің пішіні қолданылмаса (бұл көбінесе деректерді өзгерту функцияларында орын алады), онда қайтару мәні жасалмайды және ешқандай ресурстар мен тапсырысқа қатысты мәселелер болмайды. Бірақ ForAll нәтижесін және деректер көзін қайтаратын функциялардың біреуін пайдаланып жатсаңыз, нәтижені құрылымдау жолы туралы мұқият ойланыңыз және алдымен шағын деректер жиынында қолданып көріңіз.

Баламалар

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

Тағы бір ескеретін нәрсе — ForAll функциясын өкілеттеу мүмкін емес, ал Filter сияқты басқа функциялар сондай бола алады.

Өкіл

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

Синтаксис

ForAll( Table, Formula )

  • Кесте - Міндетті. Әрекет орындалатын кесте.
  • Formula - Міндетті. Кестенің барлық жазбалары үшін есептейтін формула.

Мысалдар

Есептеулер

Келесі мысалдарда Squaresдеректер көзі пайдаланылады:

Шаршылардың мысалы.

Осы деректер көзін жиынтық ретінде жасау үшін Түйме басқару элементінің OnSelect сипатын осы формулаға орнатып, алдын ала қарау режимін ашыңыз, содан кейін түймесін басыңыз:

ClearCollect( Squares, [ "1", "4", "9" ] )

Формула Сипаттама Нәтиже
ForAll( Squares, Sqrt( Value ) )

Sqrt( Squares )
Енгізу кестесінің барлық жазбасы үшін Мән бағанының шаршы түбірін есептейді. Sqrt функциясын бір бағанды ​​кестемен де пайдалануға болады, бұл мысалды ForAll қолданбай орындауға мүмкіндік береді. Sqrt мысалы.
ForAll( Squares, Power( Value, 3 ) ) Енгізу кестесінің барлық жазбасы үшін Мән бағанын үшінші дәрежеге шығарады. Power функциясы бір бағандық кестелерді қолдамайды. Сондықтан, бұл жағдайда ForAll функциясын пайдалану керек. Қуат мысалы.

Байланысты пайдалану

Келесі мысалдарда Expressionsдеректер көзі пайдаланылады:

Өрнектердің мысалы.

Осы деректер көзін жиынтық ретінде жасау үшін Түйме басқару элементінің OnSelect сипатын осы формулаға орнатып, алдын ала қарау режимін ашыңыз, содан кейін түймесін басыңыз:

ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )

Сондай-ақ бұл мысалда Microsoft Translator байланысы пайдаланылады. Бұл қосылымды бағдарламаңызға қосу үшін, нұсқаулар берілген байланыстарды басқару мақаласын қараңыз.

Формула Сипаттама Нәтиже
ForAll( Expressions, MicrosoftTranslator.Translate( Value, "es" ) ) «Өрнектер» кестесіндегі барлық жазба үшін Мән бағанының мазмұнын испан тіліне (қысқартылған түрі "es") аударады.
ForAll( Expressions, MicrosoftTranslator.Translate( Value, "fr" ) ) «Өрнектер» кестесіндегі барлық жазба үшін Мән бағанының мазмұнын француз тіліне (қысқартылған түрі "fr") аударады.

Кестені көшіру

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

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

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

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

Келесі мысалдарда Productsдеректер көзі пайдаланылады:

Өнімдер деректер көзінің мысалы.

Осы деректер көзін жиынтық ретінде жасау үшін Түйме басқару элементінің OnSelect сипатын осы формулаға орнатып, алдын ала қарау режимін ашыңыз, содан кейін түймесін басыңыз:

ClearCollect( 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 }
    )
)

Біздің мақсатымыз — қолжетімдіден көбірек сұралған және біз тапсырыс беруіміз керек элементтерді ғана қамтитын туынды кестемен жұмыс жасау:

Туынды кестенің мысалы.

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

Талап бойынша кестені пішіндеу

Бұл көшірмені жасамаңыз! Біз келесі формуланы қажет кез келген жерде пайдалана аламыз:

// Table shaping on demand, no need for a copy of the result
ShowColumns(
    AddColumns(
        Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
        "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
    ),
    "Product",
    "Quantity To Order"
)

Сәйкесінше, әрбір жазбаның 'Quantity Requested' және 'Quantity Available' өрістерінде салыстыру және шегеру әрекеттерін орындау үшін Filter and AddColumns функциялары жазба ауқымын жасайды.

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

Біз көшірме жасамағандықтан, басқаратын немесе ескірген қосымша көшірме жоқ.

Талап бойынша ForAll

Тағы бір тәсіл — кестені пішіндеу функцияларын ауыстыру үшін ForAll функциясын пайдалану:

ForAll( Products,
    If( 'Quantity Requested' > 'Quantity Available',
        {
            Product: Product,
            'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
        }
    )
)

Бұл формула кейбір адамдарға оқуға және жазуға оңайырақ болуы мүмкін.

ForAll функциясының ешбір бөлігі өкілеттелмейді. Өнімдер кестесінің бірінші бөлігі ғана бағаланатын болады, бұл кесте үлкен болған жағдайда мәселе тудыруы мүмкін. Алдыңғы мысалда Filter өкілеттеу мүмкін болғандықтан, ол үлкен деректер жиындарымен жақсырақ жұмыс істей алатын.

Нәтижені жинау

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

Біз алдыңғы екі мысалдағымен бірдей кестені пішіндеуді пайдаланамыз, бірақ нәтижені жинаққа жинақтаймыз:

ClearCollect( NewOrder,
    ShowColumns(
        AddColumns(
            Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
            "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
        ),
        "Product",
        "Quantity To Order"
    )
)
ClearCollect( NewOrder,
    ForAll( Products,
        If( 'Quantity Requested' > 'Quantity Available',
            {
                Product: Product,
                'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
            }
        )
    )
)

ClearCollect және Collect функцияларын өкілеттеу мүмкін емес. Нәтижесінде, осылайша жылжытуға болатын деректердің мөлшері шектеулі болады.

ForAll ішінде жинау

Соңғысы, Collect функциясын тікелей ForAll ішінде орындауға болады:

Clear( NewOrder );
ForAll( Products,
    If( 'Quantity Requested' > 'Quantity Available',
        Collect( NewOrder,
            {
                Product: Product,
                'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
            }
        )
    )
)

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

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

Құрамдастағы кестелерді салыстыру

Кестелерді салыстыру бөлімін қараңыз.