Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
I have a source table from which I have retrievd schema. How can I apply the same schema programatically from a source table to a target table.
For example,
//src
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUXIEYiMDIxNdQyNdQ0Ol2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [colA = _t, colB = _t, colC = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"colA", Int64.Type}, {"colB", type text}, {"colC", type date}}),
Custom1 = Table.Schema(#"Changed Type"),
#"Removed Columns" = Table.RemoveColumns(Custom1,{"Kind", "IsNullable", "NumericPrecisionBase", "NumericPrecision", "NumericScale", "DateTimePrecision", "MaxLength", "IsVariableLength", "NativeTypeName", "NativeDefaultExpression", "NativeExpression", "Description", "IsWritable", "FieldCaption"})
in
#"Removed Columns"
//target
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUXIEYiMDIxNdQyNdQ0Ol2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [colA = _t, colB = _t, colC = _t]),
Custom1 = Table.ColumnNames(Source),
#"Converted to Table" = Table.FromList(Custom1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Merged Queries" = Table.NestedJoin(#"Converted to Table", {"Column1"}, src, {"Name"}, "src", JoinKind.LeftOuter),
#"Expanded src" = Table.ExpandTableColumn(#"Merged Queries", "src", {"TypeName"}, {"TypeName"}),
#"Added Custom" = Table.AddColumn(#"Expanded src", "Custom", each {[Column1],[TypeName]}),
Custom = #"Added Custom"[Custom],
Custom2 = Table.TransformColumnTypes(Source,Custom)
in
Custom2
//desired
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUXIEYiMDIxNdQyNdQ0Ol2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [colA = _t, colB = _t, colC = _t]),
Custom1 = Table.TransformColumnTypes(Source,{{"colA", Int64.Type}, {"colB", Text.Type}, {"colC", Date.Type}})
in
Custom1
Thank you in advance.
Solved! Go to Solution.
Hi @smpa01
You can use Expression evaluate and specify an environment, to illustrate:
#"Added Custom" = Table.AddColumn(#"Expanded src", "Custom", each
{ [Column1], Expression.Evaluate([TypeName],
[ #"Any.Type" = Any.Type,
#"Date.Type" = Date.Type,
#"DateTime.Type" = DateTime.Type,
#"DateTimeZone.Type" = DateTimeZone.Type,
#"Day.Type" = Day.Type,
#"Duration.Type" = Duration.Type,
#"Logical.Type" = Logical.Type,
#"Currency.Type" = Currency.Type,
#"Decimal.Type" = Decimal.Type,
#"Double.Type" = Double.Type,
#"Int16.Type" = Int16.Type,
#"Int32.Type" = Int32.Type,
#"Int64.Type" = Int64.Type,
#"Int8.Type" = Int8.Type,
#"Number.Type" = Number.Type,
#"Percentage.Type" = Percentage.Type,
#"Single.Type" = Single.Type,
#"Text.Type" = Text.Type,
#"Time.Type" = Time.Type
] )}
),
I hope this is helpful
Hi @smpa01
You can use Expression evaluate and specify an environment, to illustrate:
#"Added Custom" = Table.AddColumn(#"Expanded src", "Custom", each
{ [Column1], Expression.Evaluate([TypeName],
[ #"Any.Type" = Any.Type,
#"Date.Type" = Date.Type,
#"DateTime.Type" = DateTime.Type,
#"DateTimeZone.Type" = DateTimeZone.Type,
#"Day.Type" = Day.Type,
#"Duration.Type" = Duration.Type,
#"Logical.Type" = Logical.Type,
#"Currency.Type" = Currency.Type,
#"Decimal.Type" = Decimal.Type,
#"Double.Type" = Double.Type,
#"Int16.Type" = Int16.Type,
#"Int32.Type" = Int32.Type,
#"Int64.Type" = Int64.Type,
#"Int8.Type" = Int8.Type,
#"Number.Type" = Number.Type,
#"Percentage.Type" = Percentage.Type,
#"Single.Type" = Single.Type,
#"Text.Type" = Text.Type,
#"Time.Type" = Time.Type
] )}
),
I hope this is helpful
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.