The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event: Join us in Stockholm, September 24-27, 2024.
Save €200 with code MSCUST on top of early bird pricing!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
I'm deep into writing some functions to automate processing some fairly deep and complex JSON files. Since it is JSON coming from user generated data the number and names of the key:value pairs is indeterminate and can vary. In order to write a series of generic functions to expand and flatten the data I need to be able to create Lists of Record Names in order to expand tables and columns.
Where I'm stuck; I have:
I'm trying to use Record.FieldName to extract the data, so far I have this:
(Tbl as table, ColumnName as text) =>
let
#"KeepColumns" = Table.SelectColumns(Tbl, ColumnName), //reduce table to only column of interest
#"GetRecordFields" = Table.AddColumn(#"KeepColumns", "RecordFields", each Record.FieldNames(ColumnName)) //get Record Field names as list
in
#"GetRecordFields"
My understanding is that Record.FieldNames should return a list of the Field Names in each row. However, the function fails with "Can't Covert <ColumnName> to type Record. I'm assuming that means that it is not liking the result coming from Record.FieldNames. I assume I need a list function here, but not sure what. I do know that I eventually want to use Table.ExpandListColumn to generate a row for each Field name.
Solved! Go to Solution.
Hi @Anonymous ,
The syntax for look like > Record.FieldNames([ColumnNames]). To have your syntax work, you need to update your syntax to Record.FieldNames(Record.Field(_,ColumnNames)).
Regards
KT
Hi @Anonymous ,
The syntax for look like > Record.FieldNames([ColumnNames]). To have your syntax work, you need to update your syntax to Record.FieldNames(Record.Field(_,ColumnNames)).
Regards
KT
Brilliant! At first pass that seems to do what I need it to!
So basically, I need to get the record, to then extract the fields? Can you explain the underscore syntax, is that a shortcut for basically saying use the current record?
Cheers and thanks!!
Hi @Anonymous ,
When you deal with dynamic column names, it either comes as "ColumnName" or [ColumnName].
when you declare the variable as a text, it works for syntax "ColumnName" but not within the square bracket. So, you need Record.Field(_, "ColumnNames"). The underscore means each of the fields within a record.
I hope above explainable is clear for you 🙂
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the August 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
180 | |
54 | |
42 | |
28 | |
26 |