다음을 통해 공유


AsType 및 IsType 함수

적용 대상: 캔버스 앱 모델 기반 앱 Power Pages Power Platform CLI

레코드 참조가 특정 테이블 형식(IsType)인지 확인하고 참조를 해당 형식(AsType)으로 처리합니다.

참고

PAC CLI pac power-fx 명령IsType을 지원하지 않습니다.

Description

AsTypeIsType 함수는 레코드 참조(예: Dataverse의 다형성 조회)와 형식화되지 않은 개체를 직접 사용할 수 있는 형식화된 개체로 변환하는 데 사용할 수 있습니다.

레코드 참조

더 포괄적인 소개와 자세한 내용은 레코드 참조 및 다형성 조회의 이해를 참조하십시오.

조회 필드는 일반적으로 특정 테이블의 레코드를 참조합니다. 테이블 형식이 잘 설정되어 있으므로 간단한 점 표기법을 사용하여 조회 필드에 액세스합니다. 예를 들어 First( Accounts ).'Primary Contact'.'Full Name'계정 테이블부터 연락처 테이블의 기본 연락처 레코드까지 이동하여 전체 이름 필드를 추출합니다.

Microsoft Dataverse는 또한 이러한 예와 같이 테이블 집합의 레코드를 참조 할 수있는 다형 조회 필드를 지원합니다.

조회 필드 참조
담당자 사용자 또는
고객 계정 또는 연락처
관련 항목 계정, 연락처, 지식 문서, 등

캔버스 앱 수식에서 레코드 참조를 사용하여 다형적 조회를 할 수 있습니다. 레코드 참조는 다른 테이블을 참조할 수 있기 때문에 수식을 작성할 때 런타임에 사용할 수 있는 필드가 명확하지 않습니다. Record.Field 표기법은 사용할 수 없습니다. 이러한 수식은 앱이 실행될 때 발생하는 레코드에 맞게 조정되어야 합니다.

IsType 함수는 레코드 참조가 특정 테이블 형식을 참조하는지 여부를 테스트합니다. 이 함수는 부울 TRUE 또는 FALSE를 반환합니다.

AsType 함수는 레코드 참조를 캐스팅이라고도 하는 특정 테이블 유형으로 처리합니다. 결과를 테이블의 레코드처럼 사용할 수 있고, 또 Record.Field 표기법을 사용하여 해당 레코드의 모든 필드에 액세스하는 데 사용할 수 있습니다. 참조가 특정 유형이 아닌 경우 오류가 발생합니다.

이러한 함수를 함께 사용하여 먼저 레코드의 테이블 유형을 테스트한 다음, 필드를 사용할 수 있도록 해당 유형의 레코드로 처리합니다.

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

이러한 함수는 레코드 참조의 필드에 액세스하는 경우에만 필요합니다. 예를 들어, IsType 또는 AsType이 없이 Filter 함수에서 레코드 참조를 사용할 수 있습니다.

Filter( Accounts, Owner = First( Users ) )

마찬가지로 레코드 참조를 Patch 함수와 함께 사용할 수 있습니다.

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

갤러리 또는 양식 편집 컨트롤과 같이 레코드 컨텍스트에서 사용하는 경우 전역 명확성 연산자가 테이블 유형을 참조하는 데 필요할 수 있습니다. 예를 들어, 이 수식은 회사 이름고객인 연락처 목록을 표시하는 갤러리에 효과적입니다.

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

두 함수 모두 테이블에 연결된 데이터 원본의 이름을 통해 유형을 지정합니다. 수식이 작동하려면 테스트하거나 캐스팅하려는 모든 유형의 앱에 데이터 원본를 추가해야 합니다. 예를 들어, 해당 테이블에서 IsTypeAsType담당자 조회 및 레코드와 함꼐 사용하려면 사용자 테이블을 데이터 원본으로 추가해야 합니다. 앱에서 실제로 사용하는 데이터 원본만 추가할 수 있으며, 조회 시 참조할 수있는 모든 테이블을 추가할 필요는 없습니다.

레코드 참조가 공백인 경우 IsType은 FALSE를 반환하고 AsType공백을 반환합니다. 공백 레코드의 모든 필드는 공백이기도 합니다.

형식화되지 않은 개체

중요

웹 API 또는 [ParseJSON 함수]의 형식화되지 않은 개체는 Power Fx에서 사용하기 전에 형식화된 개체로 변환해야 합니다. 이를 위한 옵션은 다음과 같습니다.

  1. 사용되는 지점에 필드를 암시적으로 유형을 지정합니다. 예를 들어, 개체는 + 연산자와 함께 사용되는 경우, 숫자로 변환할 수 있다면 숫자로 변환됩니다. 이 옵션은 예기치 않은 변환이 있을 수 있으며 레코드와 테이블 전체를 변환할 수 없습니다.
  2. Decimal, Text, DateTime, GUID, 및 기타 형식 생성자 함수를 사용하여 각 필드를 개별적으로 명시적으로 입력합니다. 이는 각 필드를 별도로 수행해야 하므로 수식에 가장 큰 변화를 가져옵니다.
  3. ParseJSON 함수의 두 번째 인수에 JSON을 명시적으로 입력합니다. 이 옵션은 형식화되지 않은 개체가 필요하지 않도록 하는 쉬운 옵션입니다.
  4. AsType 함수를 사용하여 형식화되지 않은 개체를 명시적으로 입력합니다. IsType 함수를 사용하여 변환을 시도하기 전에 유형을 테스트할 수도 있습니다.

구문

AsType( RecordReference, TableType )

  • RecordReference - 필수입니다. 레코드 참조로, 종종 여러 테이블의 레코드를 참조 할 수 있는 조회 필드입니다.
  • TableType - 필수. 레코드를 캐스트해야 하는 특정 테이블입니다.

AsType( UntypedObject, TypeSpecification )

  • UntypedObject - 필수입니다. 레코드 참조로, 종종 여러 테이블의 레코드를 참조 할 수 있는 조회 필드입니다.
  • TypeSpecification - 필수입니다. Type 함수로 정의된 형식 이름 또는 형식 사양입니다.

IsType( RecordReference, TableType )

  • RecordReference - 필수입니다. 레코드 참조로, 종종 여러 테이블의 레코드를 참조 할 수 있는 조회 필드입니다.
  • TableType - 필수. 테스트할 특정 테이블입니다.

IsType( UntypedObject, TypeSpecification )

  • UntypedObject - 필수입니다. 레코드 참조로, 종종 여러 테이블의 레코드를 참조 할 수 있는 조회 필드입니다.
  • TypeSpecification - 필수입니다. Type 함수로 정의된 형식 이름 또는 형식 사양입니다.

레코드 참조

레코드 참조 및 다형성 조회의 이해에 광범위한 예제가 포함되어 있습니다.

  1. 태블릿용 빈 캔버스 앱을 만듭니다.

  2. 왼쪽 창에서 데이터>데이터 추가를 선택합니다. 그런 다음 계정연락처 테이블을 추가합니다.

    두 개의 데이터 원본이 있는 빈 앱: 계정 및 연락처.

  3. 왼쪽 창에서 +(삽입) >레이아웃>빈 세로 갤러리를 선택합니다.

    빈 세로 레이아웃의 갤러리 컨트롤 삽입.

  4. 데이터에 연결을 선택한 다음 연락처를 데이터 원본으로 선택합니다.

  5. 갤러리의 레이아웃을 제목과 부제목으로 설정합니다.

    속성 창에서 레이아웃 선택기 열기.

    레이아웃을 제목 및 부제목으로 설정.

  6. 데이터 참에서 Title1 목록을 열고 이름을 선택합니다.

    제목 값 설정.

  7. Subtitle1 레이블 컨트롤을 선택합니다.

    부제목 값 설정.

  8. Subtitle1Text 속성을 다음 수식으로 설정합니다.

    If( IsBlank( ThisItem.'Company Name' ), "--",
        IsType( ThisItem.'Company Name', Accounts ),
            "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
        "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
    )
    

    갤러리에서 계정과 연락처가 혼합되어 표시되는 화면이 완성됨.

    갤러리의 부제목에는 다음 값이 표시됩니다.

    • '회사 이름'공백인 경우, "--".
    • "계정: " 회사 이름 필드가 계정을 참조하는 경우 계정 테이블의 계정 이름 필드입니다.
    • "연락처: " 회사 이름 필드가 연락처를 참조하는 경우 연락처 테이블의 전체 이름 필드입니다.

    더 많은 유형의 결과를 표시하도록 샘플 데이터가 수정되었을 수 있으므로 결과가 다를 수 있습니다.

형식화되지 않은 개체

다음 예제는 Pac CLI Power Fx REPL에서 ParseJSON, AsType, IsType을 사용하여 다양한 방식으로 해석된 간단한 JSON 레코드를 보여줍니다.

이 첫 번째 예제에서는 ParseJSON에 형식 정보가 제공되지 않으므로 형식화되지 않은 개체를 반환합니다.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>

필드는 숫자 컨텍스트에서 사용될 때 암시적으로 숫자로 변환됩니다.

>> 1 + rec.a
2

또는 이 예제에서는 두 번째 인수로 ParseJSON을 사용하여 레코드를 형식화된 Power Fx 레코드로 명시적으로 변환합니다.

>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}

또 다른 대안으로, 이 예제에서는 AsType을 사용하여 레코드를 형식화된 Power Fx 레코드로 명시적으로 변환합니다.

>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

마지막으로, 확실하지 않은 경우 이 예제에서는 IsType 함수로 변환하기 전에 형식을 테스트합니다.

>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true