Forum Discussion

hood2media's avatar
hood2media
Resolver II
1 year ago
Solved

power query - loading files from different file paths

hi, i am doing analysis on airport-flight operations. i have monthly records (.xlsx format) for different years (from 2015-2025). i have created following parameters-    'YearFrom'    'YearTo...
  • hood2media's avatar
    hood2media
    1 year ago

    thanks again PwerQueryKees.

     

    i also noticed that the table names are auto-generated for different years when i created them individually separately for each year. each file only has 1 table.

     

    i'll try your solution as soon as i get on my computer later & revert as necessary.

    krgds, -nik

     

     

  • v-sshirivolu's avatar
    1 year ago

    Hi hood2media
    Thank you for reaching out to Microsoft fabric community.
    Try these steps

    Create Parameters

    Navigate to Home > Manage Parameters > New Parameter and set up the following:

    YearFrom – type: Number (e.g., 2016)

    YearTo – type: Number (e.g., 2018)

    Station – type: Text (e.g., JFK)
    You can later link these to slicers or keep the default values.

    Use this M code 

    let
    // PARAMETERS
    StartYear = YearFrom,
    EndYear = YearTo,
    Station = Station,
    BasePath = "C:\Users\nik\H2M\H2M - us.data\data\",
    // Create list of years (2016, 2017, 2018)
    YearList = List.Numbers(StartYear, EndYear - StartYear + 1),

    // Build folder paths
    FolderPaths = List.Transform(YearList, each BasePath & Text.From(_) & "\" & Station),
    // Function to get .xlsx files from a folder
    GetFilesFromFolder = (folderPath as text) =>
    let
    Files = Folder.Files(folderPath),
    ExcelFiles = Table.SelectRows(Files, each Text.EndsWith([Extension], ".xlsx"))
    in
    ExcelFiles,
    // Loop through folders and collect Excel file metadata
    AllFilesTables = List.Transform(FolderPaths, each try GetFilesFromFolder(_) otherwise null),
    NonNullTables = List.RemoveNulls(AllFilesTables),
    AllFiles = Table.Combine(NonNullTables),
    // Load actual Excel content from each file
    AddContent = Table.AddColumn(AllFiles, "Data", each Excel.Workbook(File.Contents([Folder Path] & [Name]), true)),
    // Expand the first table in the Excel file
    Expanded = Table.ExpandTableColumn(AddContent, "Data", {"Data"}, {"Data"}),
    // Combine all data into one table
    FinalCombined = Table.Combine(Expanded[Data])
    in
    FinalCombined

    Apply and Load

    Select Close & Apply (top left corner) to load the query to the Power BI Data Model.

    Create Table Visual

    In the Fields pane, expand CombinedData and drag in the following fields:

    FlightID

    Departure

    Arrival

    Status

    This will show the combined flight data based on your selected parameters.

    Please find the below attached .pbix file for your reference.

    Regards,
    Sreeteja