Forum Discussion

comish4lif2's avatar
comish4lif2
Icon for Advocate II rankAdvocate II
3 years ago
Solved

Extract Text from Name of File being Imported

Is there an straightforward way in PQ or via a formula, new column, or measure to get the text from the name of the file being imported?

Or do I have to redo a few things and reimport this as a folder import??

  • Hi,

    I understand your Source step equals to "Csv.Document(File.Contents(..."
    Copy paste the function below and invoke it in your Source instead.

     

    (Path as text) => 
    let
    FileName =  Text.BetweenDelimiters(Path, "_", ".txt", {0, RelativePosition.FromEnd}, 0),
    Txt = Csv.Document(File.Contents(Path),[Delimiter=";", Encoding=1252, QuoteStyle=QuoteStyle.None]),
    PromoteHeaders = Table.PromoteHeaders(Txt, [PromoteAllScalars=true]),
    FileNameColumn = Table.AddColumn(PromoteHeaders, "FileName", each FileName)
    in
    FileNameColumn

     

    Hope it helps.

     

3 Replies

  • Hi comish4lif2 ,

    Assuming the file name is part of your Source step you could add a column extracting it using any of the functions you have available.

    For instance: 

    Text.BetweenDelimiters(Source,"\",".")

     

    • comish4lif2's avatar
      comish4lif2
      Icon for Advocate II rankAdvocate II

      Is the file name part of my source step? 

      If I import a txt file, how do I get from "FIlename_06162023.txt" - to "06162023" in its own column.

  • Hi,

    I understand your Source step equals to "Csv.Document(File.Contents(..."
    Copy paste the function below and invoke it in your Source instead.

     

    (Path as text) => 
    let
    FileName =  Text.BetweenDelimiters(Path, "_", ".txt", {0, RelativePosition.FromEnd}, 0),
    Txt = Csv.Document(File.Contents(Path),[Delimiter=";", Encoding=1252, QuoteStyle=QuoteStyle.None]),
    PromoteHeaders = Table.PromoteHeaders(Txt, [PromoteAllScalars=true]),
    FileNameColumn = Table.AddColumn(PromoteHeaders, "FileName", each FileName)
    in
    FileNameColumn

     

    Hope it helps.