Forum Discussion

nancyvangrrr's avatar
nancyvangrrr
Frequent Visitor
4 years ago
Solved

Replace Blank or Nulls based on Column Type

I need to replace blank or null values in a table based on the column data type. For example, if a column is type text, replace the value with "N/A" and if the column is an integer, replace the value...
  • ronrsnfld's avatar
    4 years ago

    Create a list of Transforms depending on the column types, then apply that.

     

    For example, if you wanted to apply your above transformations to every column in a table of those data types, you could use:

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Ncw7EoAgFEPRvaSmUfGzlzevEBEsGDr2b8yM1T1pYoYTARM8GIhZSNQiXZTQR2u08u3MEaWbWqVCbf+TWoldeqgD7i8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
        #"Replaced Value" = Table.ReplaceValue(Source,"null",null,Replacer.ReplaceValue,{"Column1"}),
        #"Previous Step" = Table.TransformColumnTypes(#"Replaced Value",{{"Column1", type text}, {"Column2", Int64.Type}}),
    
    //Use this part below in your code
    //  changing #"Previous Step" to whatever your previous step is
    xFormList = 
        List.Transform(
            Table.SelectRows(Table.Schema(#"Previous Step"), 
                each [TypeName]="Text.Type")[Name], (L)=>{L, each if _ = "" or _ = null then "NA" else _, type text}) & 
        List.Transform(
            Table.SelectRows(Table.Schema(#"Previous Step"), 
                each [TypeName]="Int64.Type")[Name],(L)=>{L, each if _ = "" or _ = null then 0 else _, Int64.Type}),
    
        replaceM = Table.TransformColumns(#"Previous Step", xFormList)
    in
        replaceM