| 기능 | 적용 대상 |
|---|---|
| AsType |
|
| IsType |
|
레코드 참조가 특정 테이블 형식(IsType)인지 확인하고 참조를 해당 형식(AsType)으로 처리합니다.
참고
PAC CLI pac power-fx 명령은 지원하지 IsType않습니다.
Description
AsType 및 IsType 함수를 사용하여 레코드 참조(예: 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'
)
레코드 참조의 필드에 액세스하는 경우에만 이러한 함수가 필요합니다. 예를 들어 다음을 사용하지 않거나 AsType사용하지 않고 IsType 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 반환합니다. 공백 레코드의 모든 필드는 공백이기도 합니다.
동적 값
중요
- 동적 값 사용 AsType 및 IsType 사용은 실험적 기능입니다.
- 실험적 기능은 프로덕션 사용을 위한 것이 아니며 완료되지 않을 수 있습니다. 이러한 기능은 공식 릴리스 이전에 제공되므로 사용자가 조기에 액세스하고 피드백을 제공할 수 있습니다. 추가 정보: 캔버스 앱의 실험적 기능, 프리뷰 및 사용 중지된 기능 이해
- 이 문서에서 설명하는 동작은 의 > 실험적 기능이 켜져 있는 경우에만 사용할 수 있습니다(기본적으로 꺼져 있음).
- 여러분의 피드백은 우리에게 소중합니다. Power Apps 실험적 기능 커뮤니티 포럼에서 여러분의 의견을 들려주세요.
Power Fx에서 사용하려면 웹 API 또는 [ParseJSON 함수]의 동적 값을 특정 형식화된 값으로 변환해야 합니다. 몇 가지 옵션은 다음과 같습니다.
- 필드를 사용하는 시점에 필드를 암시적으로 입력합니다. 예를 들어 개체를 숫자로 변환할 수 있는 경우 연산자에서
+사용하는 경우 숫자로 변환됩니다. 이 옵션을 사용하면 예기치 않은 변환이 발생할 수 있으며 레코드 및 테이블 전체를 변환할 수 없습니다. - Decimal, Text, DateTime, GUID, 및 기타 형식 생성자 함수를 사용하여 각 필드를 개별적으로 명시적으로 입력합니다. 이 옵션은 각 필드를 개별적으로 수행해야 하므로 수식에 가장 침투합니다.
- ParseJSON 함수의 두 번째 인수에 JSON을 명시적으로 입력합니다. 이 옵션은 쉽고 동적 값이 필요하지 않습니다.
- 함수를 사용하여 동적 값을 명시적으로 입력합니다 AsType . 함수를 사용하여 변환 IsType 을 시도하기 전에 형식을 확인할 수도 있습니다.
구문
AsType( RecordReference, TableType )
- RecordReference - 필수입니다. 레코드 참조로, 여러 테이블의 레코드를 참조하는 조회 필드인 경우가 많습니다.
- TableType - 필수. 레코드를 캐스팅할 특정 테이블입니다.
AsType( DynamicValue, TypeSpecification )
- DynamicValue - 필수입니다. ParseJSON 함수 또는 API 호출의 동적 값입니다.
- TypeSpecification - 필수입니다. Type 함수를 사용하여 정의하는 형식 이름 또는 형식 사양입니다.
IsType( RecordReference, TableType )
- RecordReference - 필수입니다. 레코드 참조로, 종종 여러 테이블의 레코드를 참조 할 수 있는 조회 필드입니다.
- TableType - 필수. 테스트할 특정 테이블입니다.
IsType( DynamicValue, TypeSpecification )
- DynamicValue - 필수입니다. ParseJSON 함수 또는 API 호출의 동적 값입니다.
- TypeSpecification - 필수입니다. Type 함수로 정의된 형식 이름 또는 형식 사양입니다.
예
레코드 참조
레코드 참조 및 다형성 조회의 이해에 광범위한 예제가 포함되어 있습니다.
태블릿용 빈 캔버스 앱을 만듭니다.
왼쪽 창에서 데이터>추가 데이터를 선택한 다음 , 계정 및 연락처 테이블을 추가 합니다 .
왼쪽 창에서 빈+>을 선택합니다 > (삽입).
데이터에 연결을 선택한 다음 연락처를 데이터 원본으로 선택합니다.
갤러리 레이아웃을 제목 및 부제목으로 설정합니다.
데이터 참에서 Title1 목록을 열고 이름을 선택합니다.
Subtitle1 레이블 컨트롤을 선택합니다.
Subtitle1의 Text 속성을 다음 수식으로 설정합니다.
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' )
갤러리의 부제목에는 다음 값이 표시됩니다.
- '회사 이름'이 공백인 경우, "--".
- "계정: 회사 이름 필드가 계정을 참조하는 경우 계정 테이블의 계정 이름 필드입니다.
- "연락처: 회사 이름 필드가 연락처를 참조하는 경우 연락처 테이블의 전체 이름 필드입니다.
더 많은 유형의 결과를 표시하도록 샘플 데이터를 수정할 수 있으므로 결과가 다를 수 있습니다.
동적 값
다음 예제에서는 ParseJSON 및 IsTypePac CLI Power Fx REPL에서 다양한 방법으로 해석된 간단한 JSON AsType레코드를 보여 줍니다.
이 첫 번째 예제에서는 ParseJSON에 형식 정보가 제공되지 않으므로 동적 값을 반환합니다.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: 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