Gegevenstype van niet-getypeerd object

Niet-getypeerd object is een gegevenstype in Power Fx die elke gegevensstructuur kan bevatten, complex of eenvoudig. Het kan niet rechtstreeks worden gebruikt en vereist expliciete conversie naar een gegevenstype. Velden in records in een niet-getypeerd object kunnen worden geopend met behulp van de puntnotatie en het bestaan van velden wordt alleen tijdens runtime geverifieerd.

Niet-getypeerd object is het retourtype van specifieke niet-getypeerde providers. Momenteel retourneert alleen de functie ParseJSON() een niet-getypeerd object.

Eenvoudige typen

De waarde van een variabele van het type niet-getypeerd object kan niet direct worden gebruikt. U moet het altijd correct typen met behulp van de bijbehorende typeconstructor.

In de volgende voorbeelden wordt de waarde geconverteerd van een variabele van een niet-getypeerd object genaamd UOValue.

Text(UOValue)
Value(UOValue)

De volgende tabel bevat de gegevenstypen en bijbehorende functies het niet-getypeerde object naar dat gegevenstype te converteren.

Gegevenstype Functie Omschrijving
Booleaans Boolean() Bij het converteren van niet-getypeerd object naar booleaans moet de onderliggende waarde een booleaanse waarde vertegenwoordigen of een type dat automatisch kan worden geconverteerd (zoals een tekenreeks waar).
Color ColorValue() of RGBA() Kleuren kunnen worden weergegeven in de CSS-kleurdefinitienotatie (Cascading Style Sheet) als een tekenreeks of als individuele RGBA-componenten. Het niet-getypeerde object kan direct vanuit een CSS-kleurdefinitiereeks worden geconverteerd met de functie ColorValue() of vanuit afzonderlijke RGBA-getallen naar kleur met behulp van de functie RGBA().
Currency, Number Value() Bij het converteren van niet-getypeerd object naar getal moet de onderliggende waarde een getal vertegenwoordigen of een type dat automatisch kan worden geconverteerd (zoals een tekenreeks 123,456).
Date, DateTime, Time DateValue(), TimeValue() of DateTimeValue() De datum, tijd en datum/tijd kunnen direct worden geconverteerd van niet-getypeerd object naar hun respectievelijke type, indien weergegeven in ISO 8601-notatie. Andere notaties moeten eerst naar tekst worden geconverteerd met de functie Text() en vervolgens worden doorgegeven aan de functie DateValue(), TimeValue() of DateTimeValue() die standaard de taal van de huidige gebruikersinstellingen gebruikt om de datum en tijd te interpreteren.
GUID GUID() Een niet-getypeerd object kan direct worden geconverteerd naar GUID als het onderliggende object een GUID of een tekenreeks vertegenwoordigt.
HyperLink, Image, Media Text() Deze gegevenstypen zijn tekstgegevenstypen en kunnen worden geconverteerd naar tekst en vervolgens worden gebruikt in Power Fx.
Choice, Two Option Switch() of If() Keuzes en twee opties worden gepresenteerd als gelokaliseerde tekenreeksen in Power Fx. Keuzes worden ondersteund door een getal en twee opties door booleaanse waarden. Er is geen directe conversie van booleaanse, getal of tekenreeks naar een keuze of twee opties, maar de functies Switch() en If() kunnen worden gebruikt voor de booleaanse, tekst- of getalwaarde om de waarde voor keuze of twee opties: correct toe te wijzen.
Opnemen n.v.t. Er is geen directe conversie van een niet-getypeerd object naar een recordstructuur, maar afzonderlijke velden kunnen worden opgehaald uit het niet-getypeerde object om een nieuwe record te maken.
Record Reference n.v.t. Recordverwijzingen zijn uniek voor gegevensbronnen en hebben geen betekenisvolle representatie in niet-getypeerde objecten.
Table Table() en ForAll() Een niet-getypeerd object kan staan voor een matrix, die kan worden geconverteerd naar een tabel. Deze objecten kunnen matrices van records zijn of matrices van waarden die in feite tabellen met één kolom zijn. ForAll() kan worden gebruikt om een tabel te maken met volledig getypeerde records. Bekijk de voorbeelden verderop in dit artikel voor meer informatie.
Text Text() Tekst kan direct worden geconverteerd. Als een niet-getypeerd object een getal vertegenwoordigt, moet u het niet-getypeerde object eerst converteren naar een getal met Value() voordat u naar tekst converteert.

Recordtypen

U kunt velden van een variabele voor record met niet-getypeerde objecten openen met behulp van de reguliere puntnotatie die wordt gebruikt voor records. Het bestaan van de velden wordt echter pas tijdens runtime geverifieerd. Als gevolg hiervan is er ook geen IntelliSense beschikbaar. Als een veld niet bestaat of een onderliggende null-waarde heeft, resulteert het openen ervan in een waarde van Blank().

Elk veld in de record is ook van het type niet-getypeerd object en moet correct worden getypeerd. Het veld kan een niet-getypeerd record van een eenvoudig type zijn. Als het een record is, kunt u de puntnotatie koppelen. Als geen van de velden in de keten bestaat, wordt Blank() geretourneerd.

In de volgende voorbeelden worden velden van een niet-getypeerd object genaamd UORecord gebruikt.

Text(UORecord.StringField)
Value(UORecord.Field.ChildField)

Als een veldnaam uit een ongeldige identificatienaam bestaat, bijvoorbeeld wanneer de veldnamen beginnen met een cijfer of ongeldige tekens bevatten, zoals een koppelteken, kunt u de veldnamen tussen enkele aanhalingstekens plaatsen:

untyped.'01'
untyped.'my-field'

Matrices

Een variabele van het type niet-getypeerd object kan een matrix bevatten. Ook al kan de matrix een matrix van records of een matrix van eenvoudige typen zijn, het converteren van het matrix van niet-getypeerde objecten naar een tabel met de functie Table() resulteert altijd in een tabel met één kolom van niet-getypeerde objecten. Functies zoals ForAll() en Index() vereisen niet dat u eerst een Table() maakt, zodat u geen gebruik hoeft te maken van het veld Value met enkele kolom.

Als u bijvoorbeeld het tweede getal in een matrix van niet-getypeerde objecten met getalwaarden ( [1, 2, 3] ) wilt ophalen, kan de volgende formule worden gebruikt om de tweede rij in de tabel op te halen en de kolom naar een getal te converteren:

Value( Index( UOArray, 2 ) )

Als het niet-getypeerde object eerst is geconverteerd naar een Table(), is de tweede rij in de resultaattabel met één kolom een kolom Value die het niet-getypeerde object bevat:

Value( Index( Table( UOArray ), 2 ).Value )

Voor een reeks records met een tekstkolom met de naam Field geldt dezelfde logica. Het niet-getypeerde object kan rechtstreeks toegankelijk zijn, terwijl het gebruik van de functie Table() resulteert in een tabel met één kolom van niet-getypeerd object.

De kolom Field is rechtstreeks toegankelijk vanuit het niet-getypeerde object dat is geretourneerd door de functie Index().

Text( Index( UORecordArray, 2 ).Field )

Haal, bij gebruik van de functie Table() eerst de kolom Value met enkele kolom op om het niet-getypeerde object te verkrijgen. Open vervolgens de kolom Field:

Text( Index( Table( UORecordArray ), 2 ).Value.Field )

Als u een matrix van records naar een getypeerde tabel wilt converteren, kunt u de functie ForAll() gebruiken en elk afzonderlijk veld converteren.

ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )

Als het niet-getypeerde object eerst wordt geconverteerd naar een tabel, vereist de resulterende tabel met één kolom van niet-getypeerd object opnieuw dat u de kolom Value gebruikt om de velden te verkrijgen.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )