let // Connect to the data source Source = PowerPlatform.Dataflows(null), Workspaces = Source{[Id="Workspaces"]}[Data], WorkspaceData = Workspaces{[workspaceId="622df091-902f-473c-a68d-229ac01d4f89"]}[Data], DataflowData = WorkspaceData{[dataflowId="a1a83712-a25c-4f89-9666-5a15f74a10ba"]}[Data], CampaignData = DataflowData{[entity="Campaigns - Test Lifecycle",version=""]}[Data], // Filter rows where PPD Lifecycle Stage is MQL FilteredRows = Table.SelectRows(CampaignData, each ([PPD Lifecycle Stage] = "MQL")), // Select relevant columns SelectedColumns = Table.SelectColumns(FilteredRows, {"Campaign Id", "Company Id", "Email", "PPD Lifecycle Stage", "Became an MQL Date", "New vs. Recurring MQL", "Recurring MQL Date", "Unique Campaign Interaction Id", "Interaction Date"}), // Add a column for the date difference AddedDateDifference = Table.AddColumn(SelectedColumns, "Date_Difference", each [Became an MQL Date] - [Interaction Date]), // Group by Email and create a nested table for each group GroupedByEmail = Table.Group(AddedDateDifference, {"Email"}, {{"AllRows", each _, type table [Email=nullable text, Interaction Date=date, Became an MQL Date=date, Campaign Id=text, Date_Difference=duration]}}), // Add a column for the minimum positive date difference in each group AddedMinPositiveDifference = Table.AddColumn(GroupedByEmail, "MinPositiveDifference", each let CurrentGroup = [AllRows], SortedTable = Table.Sort(Table.SelectRows(CurrentGroup, (inner) => inner[Date_Difference] >= #duration(0, 0, 0, 0)),{"Date_Difference", Order.Ascending}) in if Table.RowCount(SortedTable) = 0 then null else SortedTable{0}[Date_Difference]), // Expand the nested tables ExpandedAllRows = Table.ExpandTableColumn(AddedMinPositiveDifference, "AllRows", {"Interaction Date", "Became an MQL Date", "Date_Difference", "Campaign Id"}, {"Interaction Date", "Became an MQL Date", "Date_Difference", "Campaign Id"}), // Add a column to mark rows where the date difference is the minimum positive date difference MarkedRows = Table.AddColumn(ExpandedAllRows, "Unique MQL per Contact per Campaign", each if [Interaction Date] = null or [Became an MQL Date] = null then "N" else if [Date_Difference] = [MinPositiveDifference] then "Y" else "N"), // Sort rows by Email and Campaign Id SortedRows = Table.Sort(MarkedRows,{{"Email", Order.Ascending}, {"Campaign Id", Order.Ascending}}), // Change column types FinalTable = Table.TransformColumnTypes(SortedRows,{{"MinPositiveDifference", type number}, {"Unique MQL per Contact per Campaign", type text}}) in FinalTable