PowerApps에서 캔버스 앱 테이블 및 레코드 이해Understand canvas-app tables and records in PowerApps

PowerApps에서 Microsoft Excel, SharePoint, SQL Server 및 레코드와 테이블에 데이터를 저장하는 다른 여러 원본의 정보에 액세스하는 캔버스 앱을 만들 수 있습니다.In PowerApps, you can create a canvas app that accesses information in Microsoft Excel, SharePoint, SQL Server, and several other sources that store data in records and tables. 이러한 종류의 데이터로 가장 효과적으로 작업하려면 이러한 구조의 기반이 되는 개념을 검토합니다.To work most effectively with this kind of data, review the concepts that underlie these structures.

  • 레코드는 사람, 장소 또는 사물에 대한 하나 이상의 정보 범주를 포함합니다.A record contains one or more categories of information about a person, a place, or a thing. 예를 들어 레코드에는 단일 고객의 이름, 이메일 주소 및 전화 번호가 포함될 수 있습니다.For example, a record might contain the name, the email address, and the phone number of a single customer. 다른 도구에서는 레코드를 "행" 또는 "항목"이라고 합니다.Other tools refer to a record as a "row" or an "item."
  • 테이블은 동일한 범주의 정보가 포함된 하나 이상의 레코드를 포함합니다.A table holds one or more records that contain the same categories of information. 예를 들어 테이블에는 50명 고객의 이름, 이메일 주소 및 전화 번호가 포함될 수 있습니다.For example, a table might contain the names, the email addresses, and the phone numbers of 50 customers.

앱에서 수식을 사용하여 레코드와 테이블을 생성, 업데이트 및 조작합니다.In your app, you'll use formulas to create, update, and manipulate records and tables. 아마 확장된 테이블인 외부 데이터 원본에서도 데이터를 읽고 쓸 것입니다.You'll probably read and write data to an external data source, which is an extended table. 또한 컬렉션라고 하는 하나 이상의 내부 테이블을 만들 수도 있습니다.In addition, you might create one or more internal tables, which are called collections.

Excel 수식에서 하나 이상의 셀 참조를 인수로 사용하는 것처럼 테이블 이름을 인수로 사용하여 다양한 수식을 작성할 수 있습니다.You can build a variety of formulas that take the name of a table as an argument, just as a formula in Excel takes one or more cell references as arguments. PowerApps 수식 중 일부는 지정한 다른 인수를 반영하는 테이블을 반환합니다.Some formulas in PowerApps return a table that reflects the other arguments that you specify. 예를 들어 다음을 수행하는 수식을 만들 수 있습니다.For example, you might create a formula:

  • Patch 함수에 대한 여러 인수 중 하나로 테이블을 지정하여 테이블의 레코드를 업데이트합니다.to update a record in a table by specifying that table as one of multiple arguments for the Patch function
  • AddColumns, DropColumns 또는 RenameColumns 함수에 대한 인수로 테이블을 지정하여 해당 테이블의 열을 추가, 제거 및 이름 변경합니다.to add, remove, and rename columns in a table by specifying that table as an argument for the AddColumns, DropColumns, or RenameColumns function. 이러한 함수 중 어느 것도 원래 테이블을 수정하지는 않지만,None of those functions modifies the original table. 지정한 다른 인수에 따라 다른 테이블을 반환합니다.Instead, the function returns another table based on the other arguments that you specify.

테이블 요소Elements of a table

레코드Records

각 레코드에는 사람, 장소 또는 사물에 대한 정보 범주가 하나 이상 포함됩니다.Each record contains at least one category of information for a person, a place, or a thing. 위의 예제에서는 각 제품(초콜릿, 음료수)에 대한 레코드와 각 정보 범주에 대한 열(Price, Quantity on HandQuantity on Order)을 표시합니다.The example above shows a record for each product (Chocolate, Bread, and Water) and a column for each category of information (Price, Quantity on Hand, and Quantity on Order).

수식에서는 테이블의 컨텍스트 외부에 중괄호를 사용하여 레코드를 단독으로 참조할 수 있습니다.In a formula, you can refer to a record by itself, outside of a table's context, by using curly braces. 예를 들어,이 레코드 {이름: "딸기", 가격: 7.99} 테이블과 연관 되지 않습니다.For example, this record { Name: "Strawberries", Price: 7.99 } isn't associated with a table. 이 예제에서 NamePrice와 같은 필드 이름은 큰따옴표로 묶지 않습니다.Note that field names, such as Name and Price in that example, aren't enclosed in double quotation marks.

필드Fields

필드는 레코드의 개별 정보 요소입니다.A field is an individual piece of information in a record. 이러한 종류의 필드를 특정 레코드에 대한 열의 값으로 시각화할 수 있습니다.You can visualize this sort of field as a value in a column for a particular record.

컨트롤과 마찬가지로 레코드에 .Just as with a control, you refer to a field of a record by using the . 연산자를 사용하여 레코드의 필드를 참조합니다.operator on the record. 예를 들어 First(Products).NameProducts 테이블의 첫 번째 레코드에 대한 Name 필드를 반환합니다.For example, First(Products).Name returns the Name field for the first record in the Products table.

필드는 GroupBy 함수의 예제와 같이 다른 레코드 또는 테이블을 포함할 수 있습니다.A field can contain another record or table, as the example for the GroupBy function shows. 많은 수준의 레코드와 테이블을 원하는 만큼 중첩할 수 있습니다.You can nest as many levels of records and tables as you want.

Columns

열은 테이블에 있는 하나 이상의 레코드에 대해 동일한 필드를 참조합니다.A column refers to the same field for one or more records in a table. 위의 예제에서 각 제품에는 가격 필드가 있으며, 해당 가격은 모든 제품에 대해 동일한 열에 있습니다.In the above example, each product has a price field, and that price is in the same column for all products. 위의 테이블에는 4개의 열이 있으며, 위쪽에서 가로로 표시됩니다.The above table has four columns, shown horizontally across the top:

  • NameName
  • PricePrice
  • Quantity on HandQuantity on Hand
  • Quantity on OrderQuantity on Order

열의 이름은 해당 열의 필드를 반영합니다.The column's name reflects the fields in that column.

열 내의 모든 값은 동일한 데이터 형식입니다.All values within a column are of the same data type. 위의 예제에서 "Quantity on Hand"는 항상 숫자를 포함하며, 한 레코드에서 "12 단위"와 같은 문자열은 포함할 수 없습니다.In the above example, the "Quantity on Hand" column always contains a number and can't contain a string, such as "12 units," for one record. 모든 필드의 값이 '공백'일 수도 있습니다.The value of any field may also be blank.

다른 도구에서 열을 "필드"로 참조했을 수도 있습니다.You may have referred to columns as "fields" in other tools.

참고

공백이 있는 열 이름이 포함된 SharePoint 및 Excel 데이터 원본의 경우 PowerApps는 공백을 "_x0020_" 으로 바꿉니다.For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". 예를 들어 SharePoint 또는 Excel의 "Column Name" 은 데이터 레이아웃에 표시되거나 수식에 사용될 때 PowerApps에 "Column_x0020_Name" 으로 나타납니다.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in PowerApps when displayed in the data layout or used in a formula.

TableTable

테이블은 하나 이상의 레코드로 구성되며, 각 레코드에는 레코드 간에 일관된 이름을 갖는 여러 필드가 있습니다.A table comprises one or more records, each with multiple fields that have consistent names across the records.

데이터 원본 또는 컬렉션에 저장된 모든 테이블에는 테이블을 참조하고 테이블을 인수로 사용하는 함수로 전달하는 데 사용되는 이름이 있습니다.Any table that's stored in a data source or a collection has a name, which you use to refer to the table and pass it to functions that take tables as arguments. 또한 테이블은 함수 또는 수식의 결과일 수도 있습니다.Tables can also be the result of a function or a formula.

다음 예제와 같이 중괄호로 표현된 레코드 집합이 포함된 Table 함수를 사용하여 수식에서 테이블을 표현할 수 있습니다.As in the following example, you can express a table in a formula by using the Table function with a set of records, which you express in curly braces:

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

대괄호가 있는 단일 열 테이블도 정의할 수 있습니다.You can also define a single-column table with square brackets. 위에서 작성한 방법과 동일합니다.An equivalent way to write the above:

[ "Strawberry", "Vanilla" ]

테이블 수식Table formulas

Excel 및 PowerApps에서는 수식을 사용하여 숫자와 텍스트 문자열을 비슷한 방식으로 조작합니다.In Excel and PowerApps, you use formulas to manipulate numbers and strings of text in similar ways:

  • Excel의 경우 A1 셀에 42와 같은 값을 입력한 다음, 다른 셀에 A1+2와 같은 수식을 입력하여 44라는 값을 표시합니다.In Excel, type a value, such as 42, in cell A1, and then type a formula, such as A1+2, in another cell to show the value of 44.
  • PowerApps의 경우 Slider1Default 속성을 42로 설정하고, 레이블의 Text 속성을 Slider1.Value + 2로 설정하여 44라는 값을 표시합니다.In PowerApps, set the Default property of Slider1 to 42, and set the Text property of a label to Slider1.Value + 2 to show the value of 44.

두 경우 모두 인수 값(예: A1 셀의 숫자 또는 Slider1의 값)을 변경하면 계산된 값이 자동으로 변경됩니다.In both cases, the calculated value changes automatically if you change the values of the arguments (for example, the number in cell A1 or the value of Slider1).

마찬가지로 수식을 사용하여 테이블과 레코드의 데이터에 액세스하고 조작할 수 있습니다.Similarly, you can use formulas to access and manipulate data in tables and records. Min(Catalog, Price) 와 같은 일부 수식에서는 Catalog 테이블의 Price 열에 있는 가장 낮은 값을 표시하기 위해 테이블 이름을 인수로 사용할 수 있습니다.You can use names of tables as arguments in some formulas, such as Min(Catalog, Price) to show the lowest value in the Price column of the Catalog table. RenameColumns(Catalog, "Price", "Cost") 와 같은 다른 수식은 전체 테이블을 반환 값으로 사용하여 Catalog 테이블의 모든 레코드를 반환하지만 Price 열의 이름을 Cost로 변경합니다.Other formulas provide whole tables as return values, such as RenameColumns(Catalog, "Price", "Cost"), which returns all the records from the Catalog table but changes the name of the Price column to Cost.

숫자와 마찬가지로 테이블과 레코드를 포함한 수식은 기본 테이블 또는 레코드가 변경되면 자동으로 다시 계산됩니다.Just as with numbers, formulas that involve tables and records are automatically recalculated as the underlying table or record changes. Catalog 테이블의 제품 원가가 이전 최소값 아래로 낮아지면 Min 수식의 반환 값이 이러한 변경과 일치하도록 자동으로 변경됩니다.If the cost of a product in the Catalog table is lowered below the previous minimum, the return value of the Min formula will automatically change to match it.

몇 가지 간단한 예제를 살펴보겠습니다.Let's walk through some simple examples.

  1. 휴대폰에 비어 있는 앱을 만들고 다른 컨트롤을 포함하는 세로 갤러리 컨트롤을 추가합니다.Create a blank app for a phone, and add a vertical Gallery control that contains other controls.

    기본적으로 화면에는 CustomGallerySample이라는 테이블의 자리 표시자 텍스트가 표시됩니다.By default, the screen shows placeholder text from a table named CustomGallerySample. 화면 Gallery 컨트롤의 Items 속성이 자동으로 해당 테이블로 설정됩니다.The Items property of the screen's Gallery control is automatically set to that table.

    참고

    일부 컨트롤은 이해를 돕기 위해 다시 정렬되고 확대되었습니다.Some controls have been rearranged and enlarged for illustration purposes.

  2. Items 속성을 테이블 이름으로 설정하는 대신 다음 예제와 같이 테이블 이름을 인수로 포함하는 수식으로 설정합니다.Instead of setting the Items property to the name of a table, set it to a formula that includes the name of the table as an argument, as in this example:

    Sort(CustomGallerySample, SampleHeading, Descending)

    이 수식은 테이블 이름을 첫 번째 인수로 사용하고, 테이블의 열 이름을 두 번째 인수로 사용하는 Sort 함수를 통합합니다.This formula incorporates the Sort function, which takes the name of a table as its first argument and the name of a column in that table as its second argument. 또한 이 함수는 데이터를 내림차순으로 정렬하도록 규정하는 선택적인 세 번째 인수를 지원합니다.The function also supports an optional third argument, which stipulates that you want to sort the data in descending order.

  3. Items 속성을 다음 예제와 같이 이전 단계의 수식을 인수로 사용하고 테이블을 반환하는 수식으로 설정합니다.Set the Items property to a formula that takes the formula from the previous step as an argument and returns a table, as in this example:

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

    이 수식에서는 FirstN 함수를 사용하여 테이블에 있는 특정 수의 레코드를 표시합니다.In this formula, you use the FirstN function to show a particular number of records in a table. Sort 함수를 FirstN 의 첫 번째 인수로, 숫자(이 경우 2)를 두 번째 인수로 사용하여 표시할 레코드 수를 지정합니다.You use the Sort function as the first argument to FirstN and a number (in this case, 2) as the second argument, which specifies how many records to show.

    전체 수식은 SampleHeading 열 기준 내림차순으로 정렬된 CustomGallerySample 테이블의 처음 두 레코드가 포함된 테이블을 반환합니다.The entire formula returns a table that contains the first two records of the CustomGallerySample table, sorted by the SampleHeading column in descending order.

Table 함수 및 컨트롤 속성Table functions and control properties

고려해 야 합니다 낮은 함수입니다.Consider the Lower function. 경우 변수의 오신 것을 환영 텍스트 문자열이 포함 "Hello, World" , 수식 (시작)를 절감 반환 "hello, world" .If the variable welcome contains the text string "Hello, World", the formula Lower( welcome ) returns "hello, world". 이 함수를 어떤 방식으로든에서 바뀌지 해당 변수의 값입니다.This function doesn't, in any way, change the value in that variable. 낮은 는 순수 함수 입력 및 생성 출력만 처리 합니다.Lower is a pure function in that it only processes input and produces output. 모든; 그 부작용이 없습니다.That's all; it has no side effects. Excel에서 모든 함수 및 PowerApps에서 대부분의 함수는 통합 문서 또는 응용 프로그램에서 자동으로 계산할 수 있도록 하는 순수 함수는입니다.All functions in Excel and most functions in PowerApps are pure functions, which allow the workbook or the app to be recalculated automatically.

PowerApps는 동일한 방식으로 테이블에서 작동 하는 함수의 집합을 제공 합니다.PowerApps offers a set of functions that operate on tables in the same manner. 이러한 함수는 입력 및 필터, 정렬, 변환, reduce 및 전체 테이블의 데이터를 요약 하는 대로 테이블을 사용 합니다.These functions take tables as input and filter, sort, transform, reduce, and summarize entire tables of data. 사실 낮은 및 일반적으로 단일 값을 사용 하는 다른 많은 함수는 단일 열 테이블을 입력으로 사용할 수도 있습니다.In fact, Lower and many other functions that typically take a single value can also take a single-column table as input.

  • Sort, Filter - 레코드를 정렬하고 필터링합니다.Sort, Filter - Sorts and filters records.
  • FirstN, LastN - 테이블의 처음 N 또는 마지막 N 레코드를 반환합니다.FirstN, LastN - Returns the first N or last N records of the table.
  • Abs, Sqrt, Round, RoundUp, RoundDown - 단일 열 테이블의 각 레코드에 대한 산술 연산을 수행하여 결과의 단일 열 테이블을 만듭니다.Abs, Sqrt, Round, RoundUp, RoundDown - Arithmetic operations on each record of a single-column table, resulting in a single-column table of results.
  • Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - 단일 열 테이블의 각 레코드에 대한 문자열 조작을 수행하여 문자열의 단일 열 테이블을 만듭니다.Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper - String manipulations on each record of a single-column table, resulting in a single-column table of strings.
  • Len - 문자열 열의 경우 각 문자열의 길이가 포함된 단일 열 테이블을 반환합니다.Len - For a column of strings, returns a single-column table that contains the length of each string.
  • Concatenate - 문자열의 여러 열을 연결하여 문자열의 단일 열 테이블을 만듭니다.Concatenate - Concatenates multiple columns of strings, resulting in a single-column table of strings.
  • AddColumns, DropColumns, RenameColumns, ShowColumns - 테이블에 대한 열 조작을 수행하여 다른 열이 포함된 새 테이블을 만듭니다.AddColumns, DropColumns, RenameColumns, ShowColumns - Column manipulation of the table, resulting in a new table with different columns.
  • Distinct - 중복 레코드를 제거합니다.Distinct - Removes duplicates records.
  • Shuffle - 임의의 순서로 레코드를 섞습니다.Shuffle - Shuffles records into a random order.
  • HashTags - 문자열의 해시 태그를 검색합니다.HashTags - Searches for hashtags in a string.
  • Errors - 데이터 원본으로 작업할 때 오류 정보를 제공합니다.Errors - Provides error information when you work with a data source.

이러한 함수는 대부분 단일 열 테이블을 입력 변수로 사용 합니다.Many of these functions take a single-column table as their input. 전체 테이블에 하나의 열이 있는 경우에 이름으로 지정할 수 있습니다.If an entire table has only one column, you can specify it by name. 테이블에 있는 경우 여러 열을 지정할 수 있습니다 이러한 열 중 하나를 사용 하 여 테이블. 열 구문입니다.If a table has multiple columns, you can specify one of those columns by using Table.Column syntax. 예를 들어 Products.Name 만의 단일 열 테이블을 반환 이름 에서 값을 제품 테이블입니다.For example, Products.Name returns the single-column table of only Name values from the Products table.

사용 하 여 원하는 테이블을 완전히 변형할 수 있습니다 합니다 AddColumns 하십시오 RenameColumns, ShowColumns, 또는 DropColumns 함수입니다.You can completely reshape a table however you want by using the AddColumns, RenameColumns, ShowColumns, or DropColumns function. 마찬가지로 이러한 함수 변경만 해당 출력을 해당 원본에 없습니다.Again, these functions change only their output, not their source.

컨트롤의 속성 테이블을 수도 있습니다.Properties of controls can also be tables:

  • 항목 -갤러리, 목록 상자 및 콤보 상자에 적용 됩니다.Items - Applies to galleries, list boxes, and combo boxes. 이 속성은 갤러리 또는 목록을 보여 주는 표를 정의 합니다.This property defines the table that the gallery or the list shows.
  • SelectedItems -목록 상자 및 콤보 상자에 적용 됩니다.SelectedItems - Applies to list boxes and combo boxes. 이 속성 정의 하는 경우 사용자가 선택한 항목의 테이블 SelectMultiple 사용 가능 합니다.This property defines the table of items that the user has selected if SelectMultiple is enabled.

동작 수식Behavioral formulas

다른 함수는 데이터를 수정 하 고 의도 하지 않은 특별히 설계 되었습니다.Other functions are specifically designed to modify data and have side effects. 이러한 함수는 순수 하지 않으면 때문에 신중 하 게 작성 해야 하 고 앱에서 값을 자동으로 다시 계산 참여할 수 없습니다.Because these functions aren't pure, you must build them carefully, and they can't participate in automatically recalculating values in the app. 내 에서만 이러한 함수를 사용할 수 있습니다 동작 수식합니다.You can use these functions only within behavioral formulas.

  • 수집지우기 하십시오 ClearCollect -컬렉션을 만듭니다, 하 지우고 데이터를 추가 해당 합니다.Collect, Clear, ClearCollect - Creates collections, clears them, and adds data to them.
  • 패치 -레코드에서 하나 이상의 필드를 수정 합니다.Patch - Modifies one or more fields in a record.
  • Update, UpdateIf - 지정한 하나 이상의 기준과 일치하는 레코드를 업데이트합니다.Update, UpdateIf - Updates records that match one or more criteria that you specify.
  • Remove, RemoveIf - 지정한 하나 이상의 기준과 일치하는 레코드를 삭제합니다.Remove, RemoveIf - Deletes records that match one or more criteria that you specify.

레코드 수식Record formulas

개별 레코드에 대한 데이터를 계산하고, 개별 레코드를 인수로 사용하고, 개별 레코드를 반환 값으로 제공하는 수식을 작성할 수도 있습니다.You can also build a formula that calculates data for an individual record, takes an individual record as an argument, and provides an individual record as a return value. 위의 갤러리 예제로 돌아가서 Gallery1.Selected 속성을 사용하여 사용자가 갤러리에서 선택한 레코드의 정보를 표시해 보겠습니다.Returning to our gallery example above, let's use the Gallery1.Selected property to display information from whatever record the user selects in that gallery.

  1. 추가 된 단추, 설정 및 해당 OnSelect 속성을 다음이 수식:Add a Button, and set its OnSelect property to this formula:
    Collect( SelectedRecord, Gallery1.Selected )Collect( SelectedRecord, Gallery1.Selected )

  2. Alt 키를 누른 상태에서 단추를 선택합니다.While holding down the Alt key, select the button.

  3. 파일 메뉴에서 컬렉션을 선택합니다.In the File menu, select Collections.

이 수식은 갤러리에서 현재 선택한 레코드의 데이터뿐만 아니라 해당 갤러리의 각 컨트롤도 포함한 레코드를 반환합니다.This formula returns a record that includes not only the data from the record that's currently selected in the gallery but also each control in that gallery. 예를 들어 원래 테이블의 SampleText 열과 일치하는 SampleText 열 및 해당 열의 데이터가 표시되는 레이블을 나타내는 Subtitle1 열이 레코드에 모두 포함됩니다.For example, the record contains both a SampleText column, which matches the SampleText column in the original table, and a Subtitle1 column, which represents the label that shows the data from that column. Subtitle1 열에서 테이블 아이콘을 선택하여 해당 데이터를 드릴합니다.Select the table icon in the Subtitle1 column to drill into that data.

참고

Subtitle1 열의 이름은 Subtitle2이거나 이 항목에서 지정한 것과 다른 요소를 추가한 경우 유사할 수 있습니다.The Subtitle1 column might be named Subtitle2 or similar if you've added elements other than those that this topic specifies.

이제 선택한 레코드가 있으므로 . 연산자를 사용하여 해당 레코드에서 개별 필드를 추출할 수Now that you have the selected record, you can extract individual fields from it with the . 설정합니다.operator.

  1. Label 컨트롤을 추가한 다음, 갤러리 및 단추 아래로 이동합니다.Add a Label control, and then move it under the gallery and the button.

  2. 레이블의 Text 속성을 다음 식으로 설정합니다.Set the label's Text property to this expression:
    "Selected: " & Gallery1.Selected.SampleHeading"Selected: " & Gallery1.Selected.SampleHeading

레코드인 Selected 속성을 가져와서 SampleHeading 속성을 추출했습니다.You've taken the Selected property, which is a record, and extracted the SampleHeading property from it.

또한 레코드를 명명된 관련 값에 대한 범용 컨테이너로 사용할 수도 있습니다.You can also use a record as a general-purpose container for related named values.

  • UpdateContextNavigate 함수 주위에 수식을 작성하면 레코드를 사용하여 업데이트하려는 컨텍스트 변수를 수집합니다.If you build a formula around the UpdateContext and Navigate functions, use a record to gather the context variables that you want to update.
  • 편집 양식 컨트롤에 Updates 속성을 사용하여 양식에서 사용자가 변경한 내용을 수집합니다.Use the Updates property on an Edit form control to gather the changes that have been made by the user in a form.
  • Patch 함수를 사용하여 데이터 원본을 업데이트하고 레코드도 병합합니다.Use the Patch function to update a data source but also to merge records.

이 경우 레코드는 테이블의 일부가 되지 않습니다.In these cases, the record was never a part of a table.

레코드 함수 및 컨트롤 속성Record functions and control properties

레코드를 반환하는 함수는 다음과 같습니다.Functions that return records:

  • FirstN, LastN - 테이블의 첫 번째 또는 마지막 레코드 또는 레코드를 반환합니다.FirstN, LastN - Returns the first or last record or records of the table.
  • Lookup - 테이블에서 하나 이상의 기준과 일치하는 첫 번째 레코드를 반환합니다.Lookup - Returns the first record from a table that matches one or more criteria.
  • Patch - 데이터 원본을 업데이트하거나 레코드를 병합합니다.Patch - Updates a data source or merges records.
  • Defaults - 데이터 원본에 대한 기본값을 반환합니다.Defaults - Returns the default values for a data source.

레코드를 반환하는 속성은 다음과 같습니다.Properties that return records:

  • Selected - 갤러리 및 목록 상자에 적용됩니다.Selected - Applies to galleries and list boxes. 현재 선택한 레코드를 반환합니다.Returns the currently selected record.
  • Updates - 갤러리에 적용됩니다.Updates - Applies to galleries. 사용자가 데이터 입력 양식에서 수행한 모든 변경 내용을 함께 가져옵니다.Pulls together all the changes that a user makes in a data-entry form.
  • Update - 텍스트 입력 컨트롤 및 슬라이더와 같은 입력 컨트롤에 적용됩니다.Update - Applies to input controls such as text-input controls and sliders. 갤러리에서 함께 가져올 수 있도록 개별 속성을 설정합니다.Sets up individual properties for the gallery to pull together.

레코드 범위Record scope

일부 함수는 테이블의 모든 레코드에서 수식을 개별적으로 평가하여 작동합니다.Some functions operate by evaluating a formula across all the records of a table individually. 수식 결과는 다음과 같이 다양한 방법으로 사용됩니다.The formula's result is used in various ways:

  • Filter, Lookup - 수식에서 레코드가 출력에 포함되어야 하는지 여부를 결정합니다.Filter, Lookup - Formula determines if the record should be included in the output.
  • Sort - 수식에서 레코드를 정렬할 값을 제공합니다.Sort - Formula provides the value to sort the records on.
  • Concat - 수식에서 함께 연결할 문자열을 결정합니다.Concat - Formula determines the strings to concatenate together.
  • ForAll - 수식에서 잠재적으로 부작용이 있는 모든 값을 반환할 수 있습니다.ForAll - Formula can return any value, potentially with a side effect.
  • Distinct - 수식에서 중복된 레코드를 식별하는 데 사용되는 값을 반환합니다.Distinct - Formula returns a value, used to identify duplicate records.
  • AddColumns - 수식에서 추가된 필드의 값을 제공합니다.AddColumns - Formula provides the value of the added field.
  • Average, Max, Min, Sum, StdevP, VarP - 수식에서 집계할 값을 제공합니다.Average, Max, Min, Sum, StdevP, VarP - Formula provides the value to aggregate.

이러한 수식 내에서는 처리되는 레코드의 필드를 참조할 수 있습니다.Inside these formulas, you can reference the fields of the record being processed. 이러한 각 함수는 수식이 평가되는 "레코드 범위"를 만들어 레코드의 필드를 최상위 식별자로 사용할 수 있습니다.Each of these functions creates a "record scope" in which the formula is evaluated, where the fields of the record are available as top-level identifiers. 또한 앱 전체에서 컨트롤 속성과 다른 값을 참조할 수도 있습니다.You can also reference control properties and other values from throughout your app.

예를 들어 다음 Products 테이블을 가져옵니다.For example, take a table of Products:

앱에서이 예제에서는 테이블을 만들려면 단추를 삽입, 설정 해당 OnSelect 속성을이 수식 (PowerApps Studio Alt 키를 보유 하는 동안이 클릭) 단추를 선택 합니다.To create this example table in your app, insert a button, set its OnSelect property to this formula, and then select the button (click it while you hold down the Alt key in PowerApps 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 }
    )
)

이러한 제품 중 하나 보다 요청 더 있는지 여부를 결정 하는 수 있습니다.To determine whether any of any of these products had more requested than is available:

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

Filter의 첫 번째 인수는 작업할 레코드의 테이블이고, 두 번째 인수는 수식입니다.The first argument to Filter is the table of records to operate on, and the second argument is a formula. Filter는 각 레코드의 필드를 사용할 수 있는 이 수식을 평가할 레코드 범위를 만듭니다. 이 경우에는 Product, Quantity RequestedQuantity Available입니다.Filter creates a record scope for evaluating this formula in which the fields of each record are available, in this case Product, Quantity Requested, and Quantity Available. 비교 결과는 각 레코드가 함수의 결과에 포함되어야 하는지 여부를 결정합니다.The result of the comparison determines if each record should be included in the result of the function:

이 예제에 추가하여 주문할 각 제품의 양을 계산할 수 있습니다.Adding to this example, we can calculate how much of each product to order:

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

여기서는 계산 열을 결과에 추가합니다.Here we are adding a calculated column to the result. AddColumns에는 요청된 항목과 사용 가능한 항목 간의 차이를 계산하는 데 사용하는 자체의 레코드 범위가 있습니다.AddColumns has its own record scope that it uses to calculate the difference between what has been requested and what is available.

마지막으로, 결과 테이블에 우리가 원하는 열만 줄일 수 있습니다.Finally, we can reduce the result table to just the columns that we want:

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

위의 예제에서 일부 항목에는 큰따옴표(")를 사용하고 다른 항목에는 작은따옴표(')를 사용했습니다.Note that in the above, we used double quotes (") in some places and single quotes (') in other places. 개체 이름에 공백이 포함된 개체(예: 필드 또는 테이블)의 값을 참조할 때는 작은따옴표가 필요합니다.Single quotes are required when referencing the value of an object, such as a field or table, in which the name of the object contains a space. 큰따옴표는 AddColumns의 경우와 같이 개체의 값을 참조하지 않고 해당 개체에 대해 언급하는 경우, 특히 개체가 아직 없는 상황에서 사용됩니다.Double quotes are used when we are not referencing the value of an object but instead talking about it, especially in situations in which the object does not yet exist, as in the case of AddColumns.

명확성Disambiguation

레코드 범위에 추가된 필드 이름은 앱의 다른 위치에서 동일한 이름을 재정의합니다.Field names added with the record scope override the same names from elsewhere in the app. 이 경우 @ 명확성 연산자를 사용하여 레코드 범위 외부의 값에 계속 액세스할 수 있습니다.When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • 중첩된 레코드 범위의 값에 액세스하려면 다음 패턴을 사용하여 작업 중인 테이블의 이름에 @ 연산자를 사용합니다.To access values from nested record scopes, use the @ operator with the name of the table being operated upon using this pattern:
    Table [@ FieldName ]Table[@FieldName]
  • 데이터 원본, 컬렉션 및 컨텍스트 변수와 같은 전역 값에 액세스하려면 테이블 지정 없이 [@ ObjectName ] 패턴을 사용합니다.To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

작업 중인 테이블이 Filter( Table , ... ) 과 같은 식이면 명확성 연산자를 사용할 수 없습니다.If the table being operated upon is an expression, such as Filter( Table, ... ), then the disambiguation operator cannot be used. 가장 안쪽의 레코드 범위만 명확성 연산자를 사용하지 않고 이 테이블 식의 필드에 액세스할 수 있습니다.Only the innermost record scope can access fields from this table expression, by not using the disambiguation operator.

예를 들어 X 컬렉션이 있다고 가정해 보겠습니다.For example, imagine having a collection X:

ClearCollect( X, [1, 2] ) 를 사용하여 이 컬렉션을 만들 수 있습니다.You can create this collection with ClearCollect( X, [1, 2] ).

그리고 또 다른 Y 컬렉션이 있습니다.And another collection Y:

ClearCollect( Y, ["A", "B"] ) 를 사용하여 이 컬렉션을 만들 수 있습니다.You can create this collection with ClearCollect( Y, ["A", "B"] ).

또한 라는 컨텍스트 변수를 정의할 이 수식을 사용 하 여: UpdateContext( {Value: "!"} )In addition, define a context variable named Value with this formula: UpdateContext( {Value: "!"} )

이제 모두 정리해 보겠습니다.Let's put it all together. 이 컨텍스트에서 수식은 다음과 같습니다.In this context, the following formula:

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

다음 테이블이 생성됩니다.produces this table:

여기서는 무슨 일이 있나요?What is going on here? 가장 바깥쪽의 ForAll 함수는 X에 대한 레코드 범위를 정의하므로 처리되는 각 레코드의 Value 필드에 대한 액세스를 허용합니다.The outermost ForAll function defines a record scope for X, allowing access to the Value field of each record as it is processed. 단순히 Value 단어를 사용하거나 X[@Value] 를 사용하여 액세스할 수 있습니다.It can be accessed by simply using the word Value or by using X[@Value].

가장 안쪽의 ForAll 함수는 Y에 대한 다른 레코드 범위를 정의합니다. 이 테이블에는 Value 필드가 정의되어 있으므로 여기서 Value를 사용하면, Y 레코드의 필드를 참조하고 더 이상 X의 필드는 참조하지 않습니다. 여기서 XValue 필드에 액세스하려면 명확성 연산자와 함께 더 긴 버전을 사용해야 합니다.The innermost ForAll function defines another record scope for Y. Since this table also has a Value field defined, using Value here refers to the field in Y's record and no longer the one from X. Here, to access X's Value field, we must use the longer version with the disambiguation operator.

Y가 가장 안쪽의 레코드 범위이므로 이 테이블의 필드에 액세스하는 데 명확성이 필요하지 않습니다. 따라서 다음 수식을 사용하여 동일한 결과를 얻을 수 있습니다.Since Y is the innermost record scope, accessing fields of this table do not require disambiguation, allowing us to use this formula with the same result:

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

모든 ForAll 레코드 범위는 전역 범위를 재정의합니다.All the ForAll record scopes override the global scope. 합니다 정의한 컨텍스트 변수는 명확성 연산자 없이 이름으로 사용할 수 없습니다.The Value context variable we defined isn't available by name without the disambiguation operator. 이 값에 액세스 하려면 사용 하 여 [@Value] 합니다.To access this value, use [@Value].

그룹 해제 중첩 결과 평면화 ForAll 함수 중첩 된 결과 테이블이 됩니다.Ungroup flattens the result because nested ForAll functions result in a nested result table.

단일 열 테이블Single-column tables

테이블의 단일 열에서 작동 하려면 사용 합니다 ShowColumns 이 예제와 같이 함수:To operate on a single column from a table, use the ShowColumns function as in this example:

ShowColumns( Products, "Product" )

이 수식은이 단일 열 테이블을 생성합니다.This formula produces this single-column table:

짧은 대신 지정할 테이블. 열만의 단일 열 테이블을 추출 하는 에서 테이블합니다.For a shorter alternative, specify Table.Column, which extracts the single-column table of just Column from Table. 이 수식을 사용 하 여 정확 하 게 동일한 결과 생성 하는 예를 들어 ShowColumns합니다.For example, this formula produces exactly the same result as using ShowColumns.

Products.Product

인라인 레코드Inline records

레코드는 명명된 필드 값이 포함된 중괄호를 사용하여 표현합니다.You express records by using curly braces that contain named field values. 예를 들어 다음 수식을 사용하여 이 항목의 시작 부분에 테이블의 첫 번째 레코드를 표현할 수 있습니다.For example, you can express the first record in the table at the start of this topic by using this formula:

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

다음 예제와 같이 다른 수식 내에 수식을 포함할 수도 있습니다.You can also embed formulas within other formulas, as this example shows:

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

다음 예제와 같이 중괄호를 중첩하여 레코드를 중첩할 수 있습니다.You can nest records by nesting curly braces, as this example shows:

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

공백이나 콜론과 같은 특수 문자가 포함된 각각의 열 이름은 작은따옴표로 묶습니다.Enclose each column name that contains a special character, such as a space or a colon, in single quotes. 열 이름 내에서 작은따옴표를 사용하려면 작은따옴표를 두 번 지정합니다.To use a single quote within a column name, double it.

Price 열의 값에는 $ 기호와 같은 통화 기호가 포함되지 않습니다.Note that the value in the Price column doesn't include a currency symbol, such as a dollar sign. 값이 표시될 때 해당 형식이 적용됩니다.That formatting will be applied when the value is displayed.

인라인 테이블Inline tables

Table 함수와 레코드 집합을 사용하여 테이블을 만들 수 있습니다.You can create a table by using the Table function and a set of records. 다음 수식을 사용하여 이 항목의 시작 부분에 테이블을 표현할 수 있습니다.You can express the table at the start of this topic by using this formula:

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

테이블을 중첩할 수도 있습니다.You can also nest tables:

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

인라인 값 테이블Inline value tables

대괄호 안에 값을 지정하여 단일 열 테이블을 만들 수 있습니다.You can create single-column tables by specifying values in square brackets. 결과 테이블에는 Value라는 단일 열이 있습니다.The resulting table has a single column, named Value.

예를 들어 [ 1, 2, 3, 4 ] 같습니다 Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) 이 테이블을 반환 합니다.For example, [ 1, 2, 3, 4 ] is equivalent to Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) and returns this table: