Forum Discussion
Generar datos para cada día
- 6 years ago
Echa un vistazo a lo que he hecho en este archivo PBIX.
Básicamente, hice esto:
- Divida en dos tablas, una para cada región. Estoy seguro de que hay una manera de hacer esto sin este paso, pero seguí obteniendo 1 récord para feb 4 para trabajar con, no dos, y después de media hora, tomé en batea e hice esto.
- Cada tabla secundaria sigue los siguientes pasos:
- Busque la primera y la última fecha y, a continuación, cree una lista de fechas de ese intervalo de fechas. Ahora tengo una tabla de todas las citas.
- fusionó esa tabla de nuevo en la tabla principal de esa región mediante la unión externa derecha: todos los registros de la 2a tabla (mi tabla de fechas) y los que coinciden desde la primera. Ahora conseguiré un registro en blanco que tiene el 4 de febrero.
- Reorganizó las columnas y ordenado por mi fecha.
- Lleno en el Territorio y Consultor.
- Se ha creado una nueva tabla final que es ambas tablas secundarias de territorio.
Se ve así en Power Query:
Sólo lo hace desde la primera hasta la última fecha. Su ejemplo pasa por una fecha fizcana en el futuro. Puede lograr esto en mi consulta cambiando el paso "Latest calculado" de:
- • List.Max("Filas filtradas"[Fecha])
- Para
- • Date.AddDays(List.Max("Filtered Rows"[Date]),1)
O podría poner hoy allí con DateTime.Date(Date.TimeLocalNow()) y omitir la búsqueda de la última fecha.
Echa un vistazo a lo que he hecho en este archivo PBIX.
Básicamente, hice esto:
- Divida en dos tablas, una para cada región. Estoy seguro de que hay una manera de hacer esto sin este paso, pero seguí obteniendo 1 récord para feb 4 para trabajar con, no dos, y después de media hora, tomé en batea e hice esto.
- Cada tabla secundaria sigue los siguientes pasos:
- Busque la primera y la última fecha y, a continuación, cree una lista de fechas de ese intervalo de fechas. Ahora tengo una tabla de todas las citas.
- fusionó esa tabla de nuevo en la tabla principal de esa región mediante la unión externa derecha: todos los registros de la 2a tabla (mi tabla de fechas) y los que coinciden desde la primera. Ahora conseguiré un registro en blanco que tiene el 4 de febrero.
- Reorganizó las columnas y ordenado por mi fecha.
- Lleno en el Territorio y Consultor.
- Se ha creado una nueva tabla final que es ambas tablas secundarias de territorio.
Se ve así en Power Query:
Sólo lo hace desde la primera hasta la última fecha. Su ejemplo pasa por una fecha fizcana en el futuro. Puede lograr esto en mi consulta cambiando el paso "Latest calculado" de:
- • List.Max("Filas filtradas"[Fecha])
- Para
- • Date.AddDays(List.Max("Filtered Rows"[Date]),1)
O podría poner hoy allí con DateTime.Date(Date.TimeLocalNow()) y omitir la búsqueda de la última fecha.
- edhans6 years ago
Community Champion
Tuve otra idea. Esto no se prueba al 100%. Me siento mejor con mi solución anterior, pero esto hará todo en una consulta, pero debe probar para diferentes escenarios (algunas regiones no existen, por ejemplo.)
No puedo cargar un nuevo archivo PBIX en este momento. Sin embargo, simplemente cree una nueva consulta en blanco, vaya al Editor avanzado, elimine todo y pegue esto en:let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtI31jcyMDJQ0lFyDFbQVfBLLVdwzUvPScxLAQoFJJbmKMXqYCpzTs0rKUrMUQjISczMKwaK+mUmZytAlZriMTGoMjEPqzJcJsYCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Date = _t, Territory = _t, Consultant = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Territory", type text}, {"Consultant", type text}}), #"Calculated Earliest" = List.Min(#"Changed Type"[Date]), #"Calculated Latest" = List.Max(#"Changed Type"[Date]), #"Full list of dates" = {Number.From(#"Calculated Earliest")..Number.From(#"Calculated Latest")}, #"Table of Dates" = Table.FromList(#"Full list of dates", Splitter.SplitByNothing(), {"Date"}, null), #"Changed Type1" = Table.TransformColumnTypes(#"Table of Dates",{{"Date", type date}}), #"Cartesian Join to original table" = Table.AddColumn(#"Changed Type1", "Cartesian Join of full table", each #"Changed Type"), #"Expanded Cartesian Join of full table" = Table.ExpandTableColumn(#"Cartesian Join to original table", "Cartesian Join of full table", {"Date", "Territory", "Consultant"}, {"Date.1", "Territory", "Consultant"}), #"Added Is Match" = Table.AddColumn(#"Expanded Cartesian Join of full table", "Is Match", each [Date] = [Date.1]), #"Date 1" = #"Added Is Match"[Date.1], #"Unique Original Dates" = List.Distinct(#"Date 1"), #"Added In Original List" = Table.AddColumn(#"Added Is Match", "In Original List", each List.PositionOf(#"Unique Original Dates", [Date])), #"Added filter to remove unneeded items" = Table.AddColumn(#"Added In Original List", "Custom", each [Is Match] = true or [In Original List] = -1), #"Filtered out unneeded items" = Table.SelectRows(#"Added filter to remove unneeded items", each ([Custom] = true)), #"Added New Consultant" = Table.AddColumn(#"Filtered out unneeded items", "New Consultant", each if [In Original List] = -1 then null else [Consultant], type text), #"Removed Other Columns" = Table.SelectColumns(#"Added New Consultant",{"Date", "Territory", "New Consultant"}), #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"), #"Sorted Rows" = Table.Sort(#"Removed Duplicates",{{"Territory", Order.Ascending}, {"Date", Order.Ascending}}), #"Filled Down" = Table.FillDown(#"Sorted Rows",{"New Consultant"}), #"Renamed Columns" = Table.RenameColumns(#"Filled Down",{{"New Consultant", "Consultant"}}) in #"Renamed Columns"
No conseguimos encontrar tu ubicación exacta. Me golpeó esta mañana en mi auto en cómo hacer que eso suceda.- Anonymous6 years agoNot applicable
@edhans gracias por esto! Traté de replicarlo, pero algo explotó. Tendrá una mirada más profunda.
Tendré que crear datos para ver si este modelo puede abordar desafíos como agregar nuevos territorios en el futuro
¡Gracias por tu ayuda!