다음을 통해 공유


캔버스 앱에 대한 데이터 원본 이해

Power Apps에서 대부분의 캔버스 앱은 데이터 원본이라는 클라우드 서비스에 저장된 외부 정보를 사용합니다. OneDrive에 저장된 Excel 파일의 테이블이 일반적인 예입니다. 앱에서 연결을 사용하여 이러한 데이터 원본에 액세스합니다.

이 문서에서는 다양한 종류의 데이터 원본 및 테이블 데이터 원본을 사용하는 방법에 대해 설명합니다.

데이터 원본에 대한 기본 읽기 및 쓰기를 수행하는 앱을 만드는 것은 쉽습니다. 하지만 때로는 데이터가 앱 내/외부로 흐르는 방식을 더 자세히 제어하려는 경우가 있습니다. 이 문서에서는 Patch, DataSourceInfo, ValidateErrors 함수에서 더 많은 컨트롤을 제공하는 방법에 대해 설명합니다.

데이터 원본의 종류

데이터 원본은 클라우드 서비스에 연결되거나 앱에 로컬로 연결될 수 있습니다.

연결된 데이터 원본

가장 일반적인 데이터 원본은 정보를 검색하고 저장하는 데 사용할 수 있는 테이블입니다. 데이터 원본에 연결을 사용하여 Microsoft Excel 통합 문서, Microsoft Lists를 사용하여 만든 목록, SharePoint 라이브러리, SQL 테이블 및 OneDrive, DropBox 및 SQL Server와 같은 클라우드 서비스에 저장할 수 있는 기타 여러 형식의 데이터를 읽고 쓸 수 있습니다.

테이블 이외의 데이터 원본으로 전자 메일, 캘린더, Twitter 및 알림이 포함되지만, 이 문서에서는 이러한 다른 종류의 데이터 원본은 설명하지 않습니다.

로컬 데이터 원본

갤러리, 양식 표시양식 편집 컨트롤을 사용하면 데이터 원본의 데이터를 읽고 쓸 수 있는 앱을 만들 수 있습니다. 시작하려면 데이터 양식 이해를 참조하세요.

데이터에서 앱을 만들도록 Power Apps에 요청할 때 이러한 컨트롤이 사용됩니다. 내부적으로 앱은 내부 테이블을 사용하여 데이터 원본에서 제공되는 데이터를 저장하고 조작합니다.

컬렉션은 앱에 로컬로 존재하며 클라우드의 서비스에 대한 연결을 통해 지원되지 않는 특수 유형의 데이터 원본입니다. 따라서 동일한 사용자에 대해 또는 사용자 간에 디바이스 간에 정보를 공유할 수 없습니다. 컬렉션은 로컬에 로드하고 저장할 수 있습니다.

테이블의 종류

앱의 내부에 있는 테이블은 숫자 또는 문자열이 값일 때와 마찬가지로 고정된 값입니다. 내부 테이블은 어디에도 저장되지 않고 앱의 메모리에만 존재합니다. 테이블의 구조와 데이터는 직접 수정할 수 없습니다. 대신 수식을 통해 새 테이블을 만들 수 있습니다. 이 수식을 사용하여 원본 테이블의 수정된 복사본을 만듭니다.

외부 테이블은 나중의 검색 및 공유를 위해 데이터 원본에 저장됩니다. Power Apps는 저장된 데이터를 읽고 쓰는 "연결"을 제공합니다. 연결 내에서 여러 정보 테이블에 액세스할 수 있습니다. 앱에서 사용할 테이블을 선택할 수 있으며, 각 테이블은 별도의 데이터 원본이 됩니다.

자세한 내용은 내부 테이블은 물론, 클라우드 서비스에 있는 외부 테이블에 대한 테이블 작업을 참조하세요.

테이블 작업

내부 Power Apps 테이블을 사용하는 것과 동일한 방식으로 테이블 데이터 원본을 사용할 수 있습니다. 내부 테이블과 마찬가지로 각 데이터 원본에는 레코드, 및 수식에 사용할 수 있는 속성이 있습니다. 추가:

  • 데이터 원본은 연결의 기본 테이블과 동일한 열 이름 및 데이터 형식을 갖습니다.

    참고

    공백이 있는 열 이름이 포함된 SharePoint 및 Excel 데이터 원본의 경우 Power Apps에서는 공백을 "_x0020_"으로 바꿉니다. 예를 들어 SharePoint 또는 Excel의 "열 이름"은 데이터 레이아웃에 표시되거나 수식에 사용될 때 Power Apps에 "Column_x0020_Name"으로 나타납니다.

  • 데이터 원본은 앱이 로드될 때 서비스에서 자동으로 로드됩니다. Refresh 함수를 사용하여 강제로 데이터를 새로 고칠 수 있습니다.

  • 사용자가 앱을 실행하면 레코드를 생성, 수정 및 삭제하고, 변경 내용을 서비스의 기본 테이블로 다시 푸시할 수 있습니다.

    • 레코드는 PatchCollect 함수로 만들 수 있습니다.
    • 레코드는 Patch, UpdateUpdateIf 함수로 수정할 수 있습니다.
    • 레코드는 RemoveRemoveIf 함수로 제거할 수 있습니다.
    • Errors 함수를 통해 데이터 원본으로 작업할 때 발생하는 오류를 사용할 수 있습니다.
  • DataSourceInfo, DefaultsValidate 함수는 사용자 환경을 최적화하는 데 사용할 수 있는 데이터 원본에 대한 정보를 제공합니다.

데이터 원본 만들기

Power Apps는 연결된 데이터 원본을 만들거나 구조를 수정하는 데 사용할 수 없습니다. 이는 데이터 원본이 이미 어딘가의 서비스에 존재해야 하기 때문입니다. 예를 들어 OneDrive에 저장된 Excel 통합 문서에 테이블을 만들려면 먼저 OneDrive에서 Excel Online을 사용하여 통합 문서를 만듭니다. 다음으로 앱에서 이 문서에 대한 연결을 만듭니다.

그러나 컬렉션 데이터 원본은 앱 내에서 만들고 수정할 수 있지만 일시적인 것입니다.

하나 이상의 레코드 표시

앱이 데이터 원본에서 정보를 읽을 때 정보의 흐름

이 다이어그램에서는 앱에서 데이터 원본의 정보를 읽을 때 수행되는 정보 흐름을 보여 줍니다.

  • 정보는 스토리지 서비스(이 경우 Microsoft Lists 또는 SharePoint Online)를 통해 저장 및 공유됩니다.
  • 연결을 사용하면 앱에서 이 정보를 사용할 수 있습니다. 연결은 사용자의 인증을 통해 정보에 액세스합니다.
  • 앱이 시작되거나 Refresh 함수를 누르면 정보가 로컬에서 사용하기 위해 정보를 연결에서 앱의 데이터 원본으로 가져옵니다.
  • 수식은 정보를 읽고 사용자에게 표시될 수 있는 컨트롤에 정보를 공개하는 데 사용됩니다. 화면의 갤러리를 사용하고 Items 속성을 데이터 원본에 연결하여(갤러리.Items = DataSource) 데이터 원본의 레코드를 표시할 수 있습니다. 컨트롤의 Default 속성을 사용하여 갤러리 내의 컨트롤을 갤러리에 연결합니다.
  • 데이터 원본도 테이블입니다. 따라서 데이터 원본 전체를 사용하기 전에 Filter, Sort, AddColumns 및 기타 함수를 사용하여 데이터 원본을 구체화하고 보강합니다. 또한 Lookup, First, Last 및 기타 함수를 사용하여 개별 레코드로 작업할 수 있습니다.

레코드 수정

이전 다이어그램의 화살표는 단방향입니다. 데이터 원본에 대한 변경 내용은 데이터가 검색된 동일한 수식을 통해 다시 푸시되지 않습니다. 대신 새 수식이 사용됩니다. 특히 모바일 디바이스에서 레코드 검색보다는 레코드 편집에 종종 다른 화면이 사용됩니다.

데이터 원본의 기존 레코드를 수정하려면 원래의 데이터 원본에서 레코드를 가져와야 합니다. 레코드는 갤러리, 컨텍스트 변수 및 여러 수식에 표시될 수 있지만 해당 출처는 데이터 원본까지 추적 가능해야 합니다. 추가 정보는 고유하게 식별되는 레코드와 함께 이동하여 올바른 레코드를 수정하도록 보장합니다.

데이터 원본을 업데이트하기 위한 정보의 흐름 이 다이어그램에서는 데이터 원본을 업데이트하는 정보의 흐름을 보여 줍니다.

  • 편집 양식 컨트롤은 텍스트 입력 컨트롤 또는 슬라이더와 같은 사용자 입력 컨트롤로 구성된 입력 카드에 대한 컨테이너를 제공합니다. DataSourceItem 속성은 편집할 레코드를 식별하는 데 사용됩니다.
  • 각 입력 카드에는 일반적으로 Default 속성이 있으며, 이 속성은 대개 양식의 ThisItem 레코드 필드로 설정됩니다. 입력 카드 내의 컨트롤이 기본값에서 입력 값을 가져옵니다. 일반적으로 이 기본값은 수정할 필요가 없습니다.
  • 각 입력 카드는 Update 속성을 노출합니다. 이 속성은 사용자 입력을 레코드의 특정 필드에 매핑하여 데이터 원본에 다시 씁니다. 일반적으로 이 속성은 수정할 필요가 없습니다.
  • 화면의 단추 또는 이미지 컨트롤을 사용하여 레코드 변경 내용을 저장할 수 있습니다. 컨트롤의 OnSelect 수식은 SubmitForm 함수를 호출하여 이 작업을 수행합니다. SubmitForm은 카드의 Update 속성을 모두 읽고 데이터 원본에 다시 씁니다.
  • 때로는 문제가 있을 수 있습니다. 네트워크 연결이 중단되거나 앱에서 인식하지 못하는 서비스에서 유효성 검사가 수행될 수 있습니다. 양식 컨트롤의 ErrorErrorKind 속성을 통해 이 정보를 사용할 수 있으므로 해당 정보가 사용자에게 표시될 수 있습니다.

프로세스에 대해 더 자세히 제어하려면 PatchErrors 함수를 사용할 수도 있습니다. 편집 양식 컨트롤은 Updates 속성을 노출하므로 양식의 필드 값을 읽을 수 있습니다. 또한 이 속성을 사용하여 PatchSubmitForm 함수를 완전히 무시하고 연결에서 사용자 지정 커넥터를 호출할 수도 있습니다.

유효성 검사

레코드를 변경하기 전에 앱에서 변경 내용을 적용할 수 있는지 확인해야 합니다. 확인에는 두 가지 이유가 있습니다.

  • 사용자에 대한 즉각적인 피드백. 문제를 해결하기 위한 가장 적합한 시기는 문제가 발생할 때, 즉 사용자의 마음 속에 선명하게 있을 때입니다. 실제로 각 터치 또는 키 입력을 사용하면 해당 항목에 있는 문제를 식별하는 빨간색 텍스트가 표시될 수 있습니다.
  • 네트워크 트래픽 감소 및 사용자 대기 시간 감소. 앱에서 발견된 문제가 많을수록 네트워크를 통한 대화 수가 줄어들어 문제를 검색하고 해결할 수 있습니다. 각 대화에는 사용자가 계속 이동하기 전에 기다려야 하는 시간이 필요합니다.

Power Apps는 유효성 검사를 위한 두 가지 도구를 제공합니다.

  • 데이터 원본은 유효하거나 유효하지 않은 항목에 대한 정보를 제공할 수 있습니다. 예를 들어 숫자에 최소값과 최대값이 있을 수 있으며, 하나 이상의 항목이 필요할 수 있습니다. DataSourceInfo 함수를 사용하여 이 정보에 액세스할 수 있습니다.
  • Validate 함수는 이 동일한 정보를 사용하여 단일 열 또는 전체 레코드의 값을 확인합니다.

오류 처리

이제 레코드의 유효성을 검사했으므로 해당 레코드를 패치로 업데이트합니다.

그러나 아직 문제가 있을 수 있습니다. 네트워크가 중단되었거나, 서비스에서 유효성 검사가 실패했거나, 사용자에게 앱에 발생할 수 있는 몇 가지 오류의 이름을 지정하는 데 적절한 권한이 없습니다. 앱은 오류 상황에 적절하게 대응하여 사용자에게 피드백을 제공하고 올바르게 만들 수 있는 수단을 제공해야 합니다.

데이터 원본에 오류가 발생하면 앱에서 자동으로 오류 정보를 기록하고 Errors 함수를 통해 이 오류 정보를 사용할 수 있도록 합니다. 오류는 문제가 있는 레코드와 관련이 있습니다. 사용자가 해결할 수 있는 문제(예: 유효성 검사 문제)이면 레코드를 다시 제출할 수 있으며 오류가 지워집니다.

패치 또는 수집을 사용하여 레코드를 생성할 때 오류가 발생하는 경우 오류와 연결할 레코드가 없습니다. 이 경우 공백Patch에서 반환되고 Errors에 대한 레코드 인수로 사용될 수 있습니다. 만들기 오류는 다음 작업을 수행하면 지워집니다.

Errors 함수는 오류 정보 테이블을 반환합니다. 특정 열로 인해 오류가 발생하면 이 정보에 열 정보가 포함될 수 있습니다. 편집 화면에서 열이 있는 위치에 가까운 레이블 컨트롤에서 열 수준 오류 메시지를 사용합니다. 오류 테이블의 공백이고 전체 레코드에 대한 저장 단추에 가까운 위치에서 레코드 수준 오류 메시지를 사용합니다.

큰 데이터 원본 작업

큰 데이터 원본(수백만 개의 레코드)에서 보고서를 만들 때는 네트워크 트래픽을 최소화해야 합니다. 뉴욕 시에 StatusCodePlatinum인 모든 고객에 대해 보고하려는 경우를 가정해 보겠습니다. 고객 테이블에는 수백만 개의 레코드가 포함되어 있습니다.

이러한 수백만 명의 고객을 앱에 가져와서 원하는 고객을 선택하고 싶지는 않습니다. 선택은 테이블이 저장된 클라우드 서비스 내에서 이루어져야 하며, 선택한 레코드는 네트워크를 통해 전송되어야 합니다.

레코드를 선택하는 데 사용할 수 있는 함수는 전부는 아니지만 많은 함수를 위임할 수 있습니다. 이는 클라우드 서비스 내에서 실행된다는 것입니다. 위임에서 자세히 알아보세요.

컬렉션

컬렉션은 특별한 종류의 데이터 원본입니다. 앱에 로컬이며 클라우드의 서비스에 연결되어 있지 않습니다. 따라서 동일한 사용자에 대해 또는 사용자 간에 디바이스 간에 정보를 공유할 수 없습니다.

컬렉션은 몇 가지 예외를 제외하고 다른 데이터 원본과 마찬가지로 작동합니다.

  • 컬렉션은 Collect 함수를 사용하여 동적으로 만들 수 있습니다. 연결 기반 데이터 원본에서 수행하는 것처럼 미리 설정할 필요가 없습니다.
  • 컬렉션의 열은 Collect 함수를 사용하여 언제든지 수정할 수 있습니다.
  • 컬렉션에서는 중복 레코드가 허용됩니다. 컬렉션에 동일한 레코드의 복사본이 둘 이상 있을 수 있습니다. Remove와 같은 함수는 모든 인수가 제공되지 않으면 찾은 첫 번째 일치 항목에서 작동합니다.
  • SaveDataLoadData 함수를 사용하여 컬렉션의 복사본을 저장하고 다시 로드할 수 있습니다. 정보는 다른 사용자, 앱 또는 디바이스에서 액세스할 수 없는 개인 위치에 저장됩니다.
  • 내보내기가져오기 컨트롤을 사용하여 컬렉션의 복사본을 사용자가 상호 작용할 수 있는 파일로 저장하고 다시 로드할 수 있습니다.

컬렉션을 데이터 원본으로 사용하는 방법에 대한 자세한 내용은 컬렉션 만들기 및 업데이트를 참조하세요.

컬렉션은 일반적으로 앱에 대한 전역 상태를 유지하는 데 사용됩니다. 상태 관리에 사용할 수 있는 옵션은 변수 작업을 참조하세요.