March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hello all
I am trying to write a function to replace in all the table null with "-".
I started with a single column,
(Input_Table as table, ColumnToChange as text) =>
let
NewTable = Table.ReplaceValue(
Input_Table,
each ColumnToChange,
each if ColumnToChange = null then "-"
else ColumnToChange,
Replacer.ReplaceValue,
{ColumnToChange}
)
in NewTable
but also in this case I have no errors but it is not doing what I want.
Additionally, how to do this with all the columns?
Sorry if this is a silly question for you, but I am on the learning curve.
Thanks.
Solved! Go to Solution.
(Input_Table as table, ColumnToChange as text) =>
let
NewTable = Table.ReplaceValue(
Input_Table,
null,
each if _ = null then "-"
else _,
Replacer.ReplaceValue,
Table.Columns(Input_Table)
)
in NewTable
From the top of my head... I don't have my laptop here now...
pls thy this code
(Input_Table as table) =>
let
NewTable = Table.ReplaceValue(
Input_Table, null,(x)=>x, (x,y,z)=> if x = null then "-" else x, Table.ColumnNames(Input_Table))
in NewTable
---------or------------
(Input_Table as table) =>
let
NewTable = Table.ReplaceValue(
Input_Table, (x)=>x,(x)=>x, (x,y,z)=> if x = null then "-" else x, Table.ColumnNames(Input_Table))
in NewTable
1The second and third parts are the values to search for and replace. Here, both are defined as (x) => x, meaning it doesn’t search for a specific value but operates on all values.
yes, "if" defines what we are looking for and what we are replacing it with
2) In your code the second is null, not (x) => x.
and here I just rigidly fixed what we are looking for
that is, we are looking for null
For this task, you do not need to write a custom function, sleect all the columns, and use the simple replace task to apply this change
If you want to replace all the nulls in the table, there is no need for a column argument in your function:
(tbl as table)=>
Table.ReplaceValue(
tbl,
null,
"-",
Replacer.ReplaceValue,
Table.ColumnNames(tbl))
pls thy this code
(Input_Table as table) =>
let
NewTable = Table.ReplaceValue(
Input_Table, null,(x)=>x, (x,y,z)=> if x = null then "-" else x, Table.ColumnNames(Input_Table))
in NewTable
---------or------------
(Input_Table as table) =>
let
NewTable = Table.ReplaceValue(
Input_Table, (x)=>x,(x)=>x, (x,y,z)=> if x = null then "-" else x, Table.ColumnNames(Input_Table))
in NewTable
Thanks a lot for this code.
In the online helper I found
Table.ReplaceValue(table as table, oldValue as any, newValue as any, replacer as function, columnsToSearch as list) as table
I would need some explanation:
Thanks.
Table.ReplaceValue
— this function replaces values in a table according to a specified rule. It takes several arguments:
Input_Table
.(x) => x
, meaning it doesn’t search for a specific value but operates on all values.(x, y, z) => if x = null then "-" else x
, where:
x
is the current value in the table cell.null
, it is replaced with the string "-"
. Otherwise, the value remains unchanged.Table.ColumnNames(Input_Table)
is used, meaning the replacement is applied to all columns of the table.Conclusion: This code checks all cells in the Input_Table
. If a cell’s value is null
, it replaces it with the string "-"
. All other values remain unchanged, and this replacement happens across all columns of the table.
Ok many thanks.
one last question:
The second and third parts are the values to search for and replace. Here, both are defined as (x) => x, meaning it doesn’t search for a specific value but operates on all values.
In your code the second is null, not (x) => x.
Did I miss something?
Thanks again.
1The second and third parts are the values to search for and replace. Here, both are defined as (x) => x, meaning it doesn’t search for a specific value but operates on all values.
yes, "if" defines what we are looking for and what we are replacing it with
2) In your code the second is null, not (x) => x.
and here I just rigidly fixed what we are looking for
that is, we are looking for null
Thanks a lot
(tbl as table, optional columns as list) =>
Table.TransformColumns(
tbl,
if columns is null then {} else List.Transform(columns, (x) => {x, (w) => w ?? "-"}),
if columns is null then (w) => w ?? "-" else null
)
From the top of my head... I don't have my laptop here now...
(Input_Table as table, ColumnToChange as text) =>
let
NewTable = Table.ReplaceValue(
Input_Table,
null,
each if _ = null then "-"
else _,
Replacer.ReplaceValue,
Table.Columns(Input_Table)
)
in NewTable
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.