Ознайомлення з таблицями та записами у компонованих програмах

У Power Apps можна створити компоновану програму, яка отримує доступ до інформації в Microsoft Excel, SharePoint, SQL Server і деяких інших джерелах, що зберігають дані в записах і таблицях. Щоб ефективніше працювати з такими даними, перегляньте концепції, які лежать в основу цих структур.

  • Запис містить одну або кілька категорій відомостей про особу, місце або річ. Наприклад, у записі може міститись ім’я, адреса електронної пошти та номер телефону одного клієнта. Інші засоби посилаються на запис як на «рядок» або «елемент».
  • Таблиця містить один або кілька записів, які містять однакові категорії інформації. Наприклад, у таблиці можуть міститися імена, адреси електронної пошти та номери телефонів 50 клієнтів.

У програмі можна використовувати формули для створення, оновлення та виконання інших операцій із записами та таблицями. Можливо, ви читатимете та записуватимете дані, використовуючи зовнішнє джерело даних, яке представляє собою розширену таблицю. Крім того, можна створити одну або кілька внутрішніх таблиць, які називаються колекціями.

Можна створювати різноманітні формули, які прийматимуть ім'я таблиці як аргумент, подібно до формул в Excel, що використовують одне або кілька посилань на клітинки як аргументи. Деякі формули у Power Apps повертають таблицю, що відображає інші аргументи, які ви вказали. Наприклад, можна створити таку формулу:

  • щоб оновити запис у таблиці, указавши цю таблицю як один із кількох аргументів для функції Patch
  • щоб додати, вилучити або перейменувати стовпці в таблиці, указавши цю таблицю як аргумент для функції AddColumns, DropColumns або RenameColumns. Жодна з цих функцій не змінює вихідну таблицю. Натомість ця функція повертає іншу таблицю відповідно до інших аргументів, які було задано.

Елементи таблиці

Елементи таблиці.

Записи

Кожен запис містить щонайменше одну категорію відомостей щодо особи, місця або речі. У наведеному вище прикладі показано запис для кожного продукту (Шоколад, Хліб та Вода) та колонки для кожної категорії інформації (Ціна, Кількість на руках і Кількість за замовленням).

У формулах можна посилатися на запис за його ім’ям за межами контексту таблиці, використовуючи фігурні дужки. Наприклад, запис { Назва: "Полуниця", Ціна: 7,99 } не зв'язаний з таблицею. Зверніть увагу на те, що імена полів, як-от Ім'я та Ціна у цьому прикладі, не ставляться у подвійні лапки.

Поля

Поле — це окрема одиниця інформації у записі. Ви можете уявити такий тип поля, як значення у стовпці для певного запису.

Так само, як і у випадку із елементом керування, ви посилаєтеся на поле запису, використовуючи . оператор у записі. Наприклад, First(Продукти).Ім'я повертає поле Ім'я для першого запису в таблиці Продукти.

Поле може містити інший запис або таблицю, як продемонстровано у прикладі для функції GroupBy. Ви можете вкладати записи та таблиці одна до одної до будь-якого рівня.

Стовпці

Стовпець посилається на те ж поле для одного або кількох записів у таблиці. У наведеному вище прикладі кожен продукт має поле із ціною, і ціна зазначена у однаковому стовпці для всіх продуктів. У наведеній вище таблиці є чотири стовпці, які відображаються зверху горизонтально.

  • Ім’я
  • Ціна
  • Кількість на руках
  • Кількість за замовленням

Ім’я стовпця відображає поля у цьому стовпці.

Усі значення в стовпці належать до однакового типу даних. У наведеному вище прикладі стовпець «Кількість на руках» завжди містить число і не може містити рядок, наприклад «12 одиниць», для якогось запису. Значення будь-якого поля також може бути порожнім.

Можливо, ви вже посилалися на стовпці як на «поля», використовуючи інші засоби та програми.

Примітка

Для джерел даних, наприклад SharePoint, Excel або плиток Power BI, які містять імена стовпців із пробілами Power Apps замінить пробіли на "_x0020_". Наприклад, "Ім’я стовпця" в SharePoint, Excel або плитці Power BI відображатиметься як "Column_x0020_Name" в Power Apps у разі відображення в макеті даних або використання у формулі.

Table

Таблиця вміщує у собі один або кілька записів, кожен з яких має кілька полів з іменами, що є незмінними для усіх цих записів.

Будь-яка таблиця, що зберігається у джерелі даних або колекції, має ім’я, яке може використовуватись для посилання на таблицю та передавання її до функцій, які приймають в якості аргументів таблиці. Таблиці також можуть повертатись як результат роботи функції або формули.

У наведеному нижче прикладі показано, як можна описати таблицю у формулі за допомогою функції Table, указавши у фігурних дужках набір записів для таблиці.

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

Також можна задати таблицю із одним стовпцем, використовуючи квадратні дужки. Далі наведено рівнозначний спосіб зробити усе зазначене вище.

[ "Strawberry", "Vanilla" ]

Формули таблиць

Способи, у які формули використовуються для роботи із числами та рядками тексту у програмі Excel та у Power Apps, однакові.

  • У програмі Excel введіть значення, наприклад 42, у клітинку A1, а потім введіть формулу, наприклад, A1+2, в іншій клітинці, і там відобразиться значення 44.
  • У Power Apps, установіть властивість Default елемента керування Slider1 як 42, і установіть властивість Text для текстового підпису як Slider1.Value + 2, і відобразиться значення 44.

У обох випадках обчислюване значення змінюється автоматично, якщо змінюється значення аргументів (наприклад, число у клітинці A1 або значення для Slider1).

Аналогічно, ви можете використовувати формули для доступу до даних у таблицях і записах та роботи із ними. Можна використовувати імена таблиць в якості аргументів у деяких формулах, наприклад, Min(Каталог, Ціна) покаже найменше значення в стовпці Ціна таблиці Каталог. Інші формули можуть повертати цілі таблиці, наприклад, функція RenameColumns(Каталог, "Ціна", "Вартість"), яка повертає усі записи з таблиці Каталог, але змінює ім'я стовпця Ціна на Вартість.

Так само, як і з числами, формули, у яких використовуються таблиці та записи, автоматично переобчислюються, коли ці таблиці або записи змінюються. Якщо вартість продукту в таблиці Каталог впаде нижче за попереднє мінімальне значення, то значення, що повертає формула Min, автоматично зміниться на новий мінімум.

Давайте розглянемо крок за кроком кілька простих прикладів.

  1. Створіть порожню програму для телефону, а потім додайте вертикальний елемент керування Колекція, у якому містяться інші елементи керування.

    За замовчуванням на екрані відображається альтернативний текст з таблиці, ім'я якої CustomGallerySample. В якості значення для властивості Items елемента керування Колекція на екрані автоматично встановлюється ця таблиця.

    Галерея.

    Примітка

    Деякі елементи керування було перегруповано та збільшено, щоб зображення було більш наочним.

  2. Замість того, щоб вказувати ім'я таблиці у властивості Items, укажіть там формулу, для якої ім'я таблиці зазначено, як аргумент, як у прикладі, що наведено нижче.

    Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)

    У цій формулі використовується функція Sort, що приймає в якості першого аргументу ім'я таблиці, а в якості другого аргументу — ім'я стовпця у цій таблиці. Функція також підтримує необов'язковий третій аргумент, який дозволяє зазначити, що сортувати слід у порядку спадання.

    Sort (сортувати) для галереї.

  3. Установіть в якості значення властивості Items формулу, що приймає формулу з попереднього кроку як аргумент та повертає таблицю, як у прикладі нижче.

    FirstN(Sort(CustomGallerySample, SampleHeading, SortOrder.Descending), 2)

    У цій формулі використовується функція FirstN, щоб відобразити лише певну кількість записів таблиці. Функцію Sort використано в якості першого аргументу функції FirstN, а число (у цьому випадку 2) — як другий аргумент, яким визначається кількість записів, що буде відображено.

    Уся формула у цілому повертає таблицю, що містить два перші записи таблиці CustomGallerySample, відсортовані за спаданням за значеннями стовпця SampleHeading.

    FirstN (N перших елементів) для галереї.

Функції таблиць і властивості елементів керування

Розглянемо функцію Lower. Якщо змінна привітання містить текстовий рядок "Вітаю, Світе", формула Lower( привітання ) поверне "Вітаю, Світе". Ця функція у жодному разі не буде змінювати значення цієї змінної. Lower — це чиста функція тому, що вона лише обробляє вхідне значення і створює вихідне. Це все; вона не має побічних ефектів. Усі функції в Excel і більшість функцій у Power Apps — це чисті функції, які дають змогу автоматично повторно обчислювати значення у робочій книзі або програмі.

Power Apps пропонує набір функцій, які працюють із таблицями таким самим чином. Ці функції приймають таблиці як вхідні відомості, а потім фільтрують, сортують, змінюють, скорочують цілі таблиці із даними, або підбивають для них підсумки. Фактично, функція Lower та багато інших функцій, які зазвичай займають одне значення, можуть також приймати в якості вхідних відомостей таблицю із одним стовпцем.

  • Sort, Filter — сортують та фільтрують записи.
  • FirstN, LastN — повертають перші N або останні N записів таблиці.
  • Abs, Sqrt, Round, RoundUp, RoundDown — арифметичні операції для кожного запису таблиці з одним стовпцем, що виводять таблицю з одним стовпцем із результатами.
  • Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper — робота з рядками у кожному записі таблиці з одним стовпцем, що виводять таблицю із одним стовпцем із рядками.
  • Len — для стовпця рядків повертає таблицю з одним стовпцем, який містить довжину кожного рядка.
  • Concatenate — поєднання кількох стовпців із рядками, як результат виводить таблицю з одним стовпцем із рядками.
  • AddColumns, DropColumns, RenameColumns, ShowColumns — робота із стовпцями таблиці, як результат виводять нову таблицю із іншими стовпцями.
  • Distinct — видаляє повтори записів.
  • Shuffle — перемішує записи, виводячи їх у довільному порядку.
  • HashTags — виконує пошук хештегів у рядку.
  • Errors — містить відомості про помилки під час роботи з джерелом даних.

Велика частина з цих функцій приймають у якості вхідних відомостей таблицю з одним стовпцем. Якщо вся таблиця має лише один стовпець, можна вказати його за іменем. Якщо у таблиці кілька стовпців, можна вказати один із цих стовпців, використовуючи синтаксис Таблиця.Стовпець. Наприклад, Продукти.Назва повертає таблицю з одним стовпцем лише для значень Назва з таблиці Продукти.

За допомогою функцій AddColumns, RenameColumns, ShowColumns або DropColumns можна повністю змінити вигляд таблиці. Знову ж таки, ці функції змінюють лише власні вихідні відомості, а не джерело.

Властивості елементів керування також можуть бути таблицями.

  • Items — застосовується до колекцій, списків і полів зі списком. Ця властивість визначає таблицю, яка відображатиметься у колекції або у списку.
  • SelectedItems — застосовується до списків і полів зі списком. Ця властивість визначає таблицю елементів, вибраних користувачем, якщо увімкнуто SelectMultiple.

Формули поведінки

Інші функції спеціально призначені для того, щоб змінювати даних і мають побічні ефекти. Оскільки ці функції не є чистими, слід обережно добирати для них аргументи, а значення цих функцій не переобчислюватимуться автоматично разом із іншими значеннями у програмі. Ці функції можна використовувати лише в межах формул поведінки.

  • Collect, Clear, ClearCollect — створює колекції, очищає їх і додає до них дані.
  • Patch — змінює одне або кілька полів у записі.
  • Update, UpdateIf — оновлює записи, які відповідають одній або кільком визначеним умовам.
  • Remove, RemoveIf — видаляє записи, які відповідають одній або кільком визначеним умовам.

Формули для записів

Ви можете також створити формулу, яка обчислює дані для окремого запису, приймає запис в якості аргументу і виводить запис в якості значення, що повертається. Повернімось до нашого прикладу із колекцією, що розглядали вище, і скористаймося властивістю Gallery1.Selected, щоб відобразити відомості щодо запису, який користувач вибиратиме у колекції.

  1. Додайте Кнопку та налаштуйте її властивість OnSelect, вказавши формулу, яку наведено нижче.
    Collect( SelectedRecord, Gallery1.Selected )

  2. Утримуючи натиснутою клавішу Alt, виберіть кнопку.

  3. У меню Файл виберіть Колекції.

    Колекція SelectedRecord.

Ця формула повертає запис, який містить не лише дані з вибраного запису в колекції, але й кожен елемент керування в цій колекції. Наприклад, у записі міститься і стовпець SampleText, який відповідає стовпцю SampleText у вихідній таблиці, і стовпець Subtitle1, який представляє текстовий підпис, що відображає дані з цього стовпця. Виберіть піктограму таблиці в стовпці Subtitle1, щоб деталізувати ці дані.

Примітка

Стовпець Subtitle1 може називатися Subtitle2 або ще якось подібно до цього, якщо ви додавали інші елементи керування, окрім тих, що згадувалися у цьому розділі.

Тепер, коли запис вибрано, можна витягти з нього окремі поля, використовуючи . оператор.

  1. Додайте елемент керування Текстовий підпис, а потім розташуйте його попід колекцією та кнопкою.

  2. Задайте значення властивості Text для цього підпису, як зазначено нижче.
    "Вибрано: " & Gallery1.Selected.SampleHeading

    Властивість Text із оновленим підписом.

Ми взяли властивість Selected, яка є записом, і витягли з неї властивість SampleHeading.

Ви можете також використовувати записи в якості універсальних контейнерів для пов'язаних іменованих значень.

  • Якщо створюєте формулу із функціями UpdateContext і Navigate, скористайтеся записом, щоб зібрати змінні контексту, який необхідно оновити.
  • Скористайтеся властивістю Update елемента керування Форма редагування, щоб зібрати зміни, внесені користувачем у формі.
  • Використовуйте функцію Patch, щоб оновити джерело даних, а також щоб злити записи разом.

У цих випадках запис ніколи не був частиною таблиці.

Функції записів і властивості елементів керування

Далі перелічено функції, що повертають записи.

  • FirstN, LastN — повертають перший або останній запис таблиці, або ж перші N або останні N записів таблиці.
  • Lookup — повертає перший запис з таблиці, який відповідає одній або кільком умовам.
  • Patch — оновлює джерело даних або зливає записи.
  • Defaults — повертає значення за замовчуванням для джерела даних.

Далі перелічено властивості, що повертають записи.

  • Selected — застосовується для колекцій і списків. Повертає запис, який наразі вибрано.
  • Updates — застосовується до колекцій. Об'єднує всі зміни, які користувач вносить у формі для введення даних.
  • Update — застосовується до елементів керування вводу, наприклад елементів керування введенням тексту і повзунків. Налаштовує окремі властивості колекції, які слід обробляти разом.

Область застосування записів

Деякі функції працюють, обробляючи окремо кожний запис таблиці окремо. Результат такої формули може використовуватись різними способами.

  • AddColumns — результат формули містить значення поля, що додається.
  • Average, Max, Min, Sum, StdevP, VarP — формула містить значення для сукупних операцій.
  • Filter, Lookup — формула визначає, чи запис слід додати до виводу.
  • Concat — формула визначає рядки для поєднання між собою.
  • Distinct — формула повертає значення, яке використовуватиметься для пошуку повторів записів.
  • ForAll — формула може повертати будь-яке значення, яке теоретично може призвести до побічних ефектів.
  • Sort — формула повертає значення, за яким слід сортувати записи.
  • With — формула може повертати будь-яке значення, яке теоретично може призвести до побічних ефектів.

У цих формулах можна посилатися на поля запису, що обробляється. Кожна з цих функцій створює «область застосування запису», в якій обробляється формула, де поля запису доступні, як ідентифікатори верхнього рівня. Ви також можете використовувати властивості елементів керування та інші значення в програмі.

Наприклад, розгляньмо таблицю Продукти.

Приклад продуктів.

Щоб створити цю таблицю-приклад у програмі, вставте кнопку, установіть для неї властивість OnSelect, як зазначено нижче, а потім виберіть кнопку (клацніть її, утримуючи натиснутою клавішу Alt у Power Apps Studio).

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' )

Перший аргумент функції Filter — це таблиця записів, що оброблятимуться, а другий аргумент — це формула. Функція Filter створює область записів для цієї формули, в якій доступні поля кожного запису, в цьому випадку — Продукт, Запитана кількість і Наявна кількість. Результат порівняння визначає, чи слід включати кожен запис в результат функції.

Відфільтрована таблиця.

Доповнюючи приклад, можемо підрахувати, скільки слід замовити кожного продукту.

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.

Усунення неоднозначності

Імена полів, додані в область застосування записів, перевизначають такі ж імена в іншому місці програми. Якщо це станеться, можна все одно отримати доступ до значень, які не належать до області застосування запису, використовуючи оператор усунення неоднозначності @.

  • Щоб отримати доступ до значень з вкладених областей застосування записів, скористайтеся оператором @ з іменем таблиці, до якої оператор застосовується, згідно з цим прикладом:
    Таблиця[@ІмяПоля]
  • Щоб отримати доступ до глобальних значень, наприклад джерел даних, колекцій і контекстних змінних, скористайтеся шаблоном [@НазваОбєкта] (без зазначення таблиці).

Якщо таблиця, із якою ми працюємо, задана у вигляді виразу, наприклад Filter( Таблиця, ... ), то не можна використовувати оператор усунення неоднозначності. Отримати доступ до полів такого виразу таблиці, не використовуючи оператор усунення неоднозначності, можна лише з внутрішньої області застосування запису.

Наприклад, уявіть, що ви маєте колекцію X.

Колекція X.

Цю колекцію можна створити так: ClearCollect( X, [1, 2] ).

А ось інша колекція, Y.

Колекція Y.

Цю колекцію можна створити так: ClearCollect( Y, ["A", "B"] ).

Крім того, визначте змінну контексту із назвою Value, за допомогою формули UpdateContext( {Value: "!"} )

Зберемо усе докупи. У цьому контексті формула, яку наведено нижче

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

створює таблицю

Таблиця XY.

Що тут відбувається? Зовнішня функція ForAll визначає область застосування запису для X, завдяки чому ми отримуємо доступ до поля Value кожного запису під час обробки цього запису. Доступ до нього можна отримати, просто використовуючи слово Value або X [@Value].

Внутрішня функція ForAll визначає іншу область застосування запису для Y. Оскільки в цій таблиці також визначено поле Value, використовуючи Value тут ми посилатимемось на поле, що належить до запису Y, а не на поле з X. Щоб отримати доступ до поля Value запису X, потрібно скористатися довшою версією із оператором усунення неоднозначності.

Оскільки Y — це внутрішня область застосування запису, доступ до полів цієї таблиці не потребуватиме оператора усунення неоднозначності, що дає змогу використовувати цю формулу з однаковим результатом.

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

Усі області застосування запису ForAll замінюють глобальну область застосування. Контекстна змінна Value, яку ми визначили, недоступна за іменем без оператора усунення неоднозначності. Щоб отримати доступ до цього значення, використовуйте [@Value].

Ungroup спрощує результати, оскільки вкладені функції ForAll виводять вкладені таблиці з результатами.

Таблиці з одним стовпцем

Щоб працювати з одним стовпцем з таблиці, скористайтеся функцією ShowColumns, як показано у наведеному прикладі.

ShowColumns( Products, "Product" )

Ця формула створює таблицю з одним стовпцем, яку наведено нижче.

Таблиця з одним стовпцем.

Коротше цього можна досягти, вказавши Таблиця.Стовпець, і таким чином буде отримано таблицю із єдиним стовпцем Стовпець з таблиці Таблиця. Наприклад, ця формула дає точно такий самий результат, як і використання 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 та набору записів. Наприклад, можна означити таблицю на початку цього розділу формулою, наведеною нижче.

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

Таблиці із вбудованими значеннями

Можна створювати таблиці із одним стовпцем, вказуючи значення у квадратних дужках. У результуючій таблиці є один стовпець з іменем Value.

Наприклад, [ 1, 2, 3, 4 ] є рівнозначним до Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) і повертає зазначену нижче таблицю.

Вкладена таблиця.

Примітка

Розкажіть нам про свої уподобання щодо мови документації? Візьміть участь в короткому опитуванні. (зверніть увагу, що це опитування англійською мовою)

Проходження опитування займе близько семи хвилин. Персональні дані не збиратимуться (декларація про конфіденційність).