Поділитися через


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

У 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 полі встановіть властивість За замовчуванням для параметра Slider1 значення 42, а для властивості Текст мітки встановіть значення Slider1.Value + 2 , щоб відобразити значення 44.

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

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

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

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

  1. Створіть пусту програму для телефону та додайте вертикальний елемент керування «Галерея » з іншими елементами керування.

    За замовчуванням на екрані відображається текст заповнювача з таблиці з іменем CustomGallerySample. Властивість «Елементи » елемента керування «Галерея » екрана автоматично встановлюється на цю таблицю.

    Галерея.

    Нотатка

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

  2. Замість того, щоб встановлювати для властивості Елементи ім’я таблиці, встановіть для неї формулу, яка містить ім’я таблиці як аргумент, як у цьому прикладі:

    Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)

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

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

  3. Встановіть для властивості Елементи формулу, яка бере формулу з попереднього кроку як аргумент і повертає таблицю, як у цьому прикладі:

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

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

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

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

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

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

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

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

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

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

  • Елементи - застосовується до галерей, списків і полів зі списком. Ця властивість визначає таблицю, яка відображатиметься у колекції або у списку.
  • Вибрані елементи - застосовується до полів зі списком і полів зі списком. Ця властивість визначає таблицю елементів, які вибрав користувач, якщо включений параметр SelectMulti .

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

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

  • Collect,ClearCollect...... - створює колекції, очищає їх і додає до них дані.
  • Патч - змінює одне або кілька полів у записі.
  • UpdateIf- оновлює записи, які відповідають одному або декільком критеріям, які ви вказали.
  • Видалити, ВидалитиЯкщо - видаляє записи, які відповідають одному або декільком критеріям, які ви вказали.

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

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

  1. Додайте кнопку та встановіть для неї властивість OnSelect цю формулу:
    Збирати( ВибранийЗапис, Галерея1.Вибране )

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

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

    Колекція SelectedRecord.

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

Нотатка

Стовпець Підзаголовок1 може мати назву Підзаголовок2 або подібний, якщо ви додали елементи, відмінні від тих, що вказані в цій темі.

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

  1. Додайте елемент керування «Мітка », а потім перемістіть його під галереєю та кнопку.

  2. Встановіть властивість Текст підпису на цей вираз:
    "Вибране: " & Галерея1.Вибране.ЗразокЗаголовок

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

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

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

  • Якщо формулу побудовано на основі функцій UpdateContext і Navigate , використовуйте запис для збору контекстних змінних , які потрібно оновити.
  • Використовуйте властивість Оновлення в елементі керування Редагувати форму , щоб збирати зміни, внесені користувачем у форму.
  • Використовуйте функцію «Виправлення » для оновлення джерела даних, а також для об’єднання записів.

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

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

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

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

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

  • Вибрані – застосовується до галерей і полів зі списком. Повертає запис, який наразі вибрано.
  • Оновлення - Стосується галерей. Об'єднує всі зміни, які користувач вносить у формі для введення даних.
  • Оновлення – застосовується до елементів керування вводу, таких як елементи керування текстовим введенням і повзунки. Налаштовує окремі властивості колекції, які слід обробляти разом.

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

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

  • AddColumns - формула надає значення доданого поля.
  • Формула середнього, Max, Min, Sum , StdevP, VarP- надає значення для агрегування.
  • Фільтр, Підстановка - Формула визначає, чи слід включати запис у вихідні дані.
  • Concat - Формула визначає рядки, які потрібно об’єднати разом.
  • Distinct - формула повертає значення, яке використовується для виявлення повторюваних записів.
  • ForAll - Formula може повертати будь-яке значення, потенційно з побічними ефектами.
  • Сортування - Формула надає значення для сортування записів.
  • 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 — це таблиця записів, що оброблятимуться, а другий аргумент — це формула. Фільтр створює область запису для оцінки цієї формули, в якій доступні поля кожного запису, в даному випадку «Товар», «Кількість запитана» та «Доступна кількість». Результат порівняння визначає, чи слід включати кожен запис в результат функції.

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

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

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].

Розгрупування зводить результат, оскільки вкладені функції 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( 
	{ 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 } ) і повертає зазначену нижче таблицю.

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