cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
dujhe
Regular Visitor

Crear una tabla con bucles

Hola

Tengo un conjunto de datos de respuestas completadas a un formulario web que es completado por nuestros proveedores. Dentro del conjunto de datos está el identificador único de los proveedores, la fecha en que se completó el formulario y el valor sobre el que debo informar. El proveedor puede completar el formulario tantas veces como quiera en la fecha que desee.
Capture1.PNG

Se me ha pedido que informe sobre la tendencia de este valor. Lo que estoy tratando de hacer es producir una tabla que dará una columna de fecha a partir de la fecha más temprana en la tabla anterior y luego enumerar todos los días hasta hoy y luego repetir esto para cada identificador único.

Me gustaría tomar el valor más reciente para cada ID de Unqiue cuando no hay una respuesta para ese proveedor en el día dado. Para tratar de explicar esto un poco claro por favor vea la tabla antes, que es lo que idealmente me gustaría llegar a. Puede ver unique ID 1, tiene un valor de 1 hasta el 26/05/2020 cuando enviaron un nuevo valor de 2 y que ahora se notifica hasta 30/05/2020 una vez que enviaron otra declaración.
Capture2.PNG

He creado una tabla de fechas independiente y he unido mi conjunto de datos a eso y luego he creado la siguiente medida
Capture.PNG

Luego creé una matriz con la fecha de la tabla de fechas y usé esta medida como valor, pero me estaba dando un total y no un valor para cada fecha.

Cualquier ayuda que cualquier proveedor puede sería muy apreciado.


3 REPLIES 3
mahoneypat
Microsoft
Microsoft

Hacer tablas como esta es más fácil en M/Query Editor IMO, así es como me acerqué a ella. Usé datos similares, y creo que esto obtiene el resultado deseado. Pegue esto en una consulta en blanco para ver un enfoque al hacer esto.

Dejar
Source : Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTLVN9Q3MjAyADINl1YIImMEEJJEEzVJVGYEEjbIKmSNpjAQ", BinaryEncoding.Base64), Compression.Deflate)), let _t -(tipo de texto que acepta valores NULL) meta [Serialized.Text ? true]) en la tabla de tipos ['ID único' ''_t'''''''''''''''_t'''''''''''''''''''''''''_t'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"Tipo de cambio" - Table.TransformColumnTypes(Source,'ID único", Int64.Type', ''Fecha", tipo fecha', ''Valor', Int64.Type'),
Custom1 á List.Dates(List.Min(-"Changed Type"[Date]), Duration.Days(List.Max(-"Changed Type"[Date])-List.Min(-"Changed Type"[Date]))+1, #duration(1,0,0,0)),
"Convertido a la tabla" - Table.FromList(Custom1, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
"Columnas renombradas" - Table.RenameColumns('Converted to Table",'Column1', 'Date2' ?),
"Changed Type1" á Table.TransformColumnTypes('"Columnas renombradas",'Fecha2', tipo fecha'),
"Añadido Personalizado" - Table.AddColumn(-"Changed Type1", "Custom", each List.Distinct(-"Changed Type"[Unique ID])),
"Expanded Custom" - Table.ExpandListColumn(-"Added Custom", "Custom"),
"Columnas renombradas1" - Table.RenameColumns('Expanded Custom",'Custom", "Unique ID" ?),
"Changed Type2" á Table.TransformColumnTypes('"Renombrado Columns1",'UNIQUE ID', Int64.Type'),
"Consultas combinadas" - Table.NestedJoin('Changed Type2", ''Date2', 'Unique ID'', ''Changed Type", ''''Date"'
"Expanded Merged" - Table.ExpandTableColumn(''Consultas combinadas', 'Merged', ''Value'', ''Valor''),
"Filas agrupadas" - Tabla.grupo ('Expanded Merged','ID único'', 'AllRows'", cada _, tabla de tipos [Fecha2'fecha, ID único'número, Valor'número]'),
"Added Custom1" á Table.AddColumn(-"Filas agrupadas", "Custom", cada Table.FillDown([AllRows],-"Valor"-)),
"Columnas eliminadas" - Table.RemoveColumns(-"Added Custom1","AllRows"-),
"Expanded Custom1" á Table.ExpandTableColumn(-"Removed Columns", "Custom", "Date2", "Value", "Date2", "Value", "Value"),
"Changed Type3" á Table.TransformColumnTypes('Expanded Custom1'",'Value', Int64.Type'),
"Columnas renombradas2" - Table.RenameColumns(-"Changed Type3","Date2", "Date" ? )
"Changed Type4" á Table.TransformColumnTypes('"Columnas renombradas2",'Fecha", tipo fecha')
En
"Tipo cambiado4"

Si esto funciona para usted, márquelo como solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Hola @dujhe

Está de acuerdo en recurrir a M es una opción que vale la pena considerar. En este caso, sin embargo, el código DAX necesario no es excesivamente complejo. Crear una tabla calculada; El cuadro1 es la tabla inicial que usted muestra:

NewTable = 
VAR startDate_ = MIN(Table1[Date])
VAR endDate_ = TODAY()
VAR tab0_ = CROSSJOIN(DISTINCT(Table1[ID]),CALENDAR(startDate_,endDate_))
RETURN 
ADDCOLUMNS(tab0_, "Value", 
            VAR latestDate_ = CALCULATE(MAX(Table1[Date]),Table1[Date] <=EARLIER([Date]), Table1[ID] = EARLIER([ID]))
            RETURN CALCULATE(MAX(Table1[Value]),Table1[Date] = latestDate_, Table1[ID] = EARLIER([ID])))

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

AlB
Super User
Super User

@dujhe

otra versión en M. Creo que es probable que la versión en DAX sea más rápida (si las tablas son grandes). BaseTable1 es la primera tabla que mostró

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIy0Dcw1TcyMDIAcgyVYnUgwsaYwkYg1cZIwkZgYWMQywhJ2BgsbAISNsVqtpEZqiGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Date = _t, Value = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Date", type date}, {"Value", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"AvailableDates", each Table.FromColumns({[Date],[Value]}, {"Date", "Value"}) }}),
    allDates_ = List.Dates(List.Min(BaseTable1[Date]), Number.From(Date.From(DateTime.LocalNow()) - List.Min(BaseTable1[Date])) +1,#duration(1,0,0,0)),
    #"Added Column" = Table.AddColumn(#"Grouped Rows", "Missingdates", each let missingdatesL_= List.Difference(allDates_,[AvailableDates][Date]) in Table.FromColumns({missingdatesL_,List.Repeat({null},List.Count(missingdatesL_))}, {"Date", "Value"}) ),
    #"Added Custom" = Table.AddColumn(#"Added Column", "AllDates", each Table.Sort(Table.Combine({[AvailableDates],[Missingdates]}),{{"Date", Order.Ascending}})),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Filldown", each Table.FillDown([AllDates],{"Value"})),
    #"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"AvailableDates", "Missingdates", "AllDates"}),
    #"Expanded Filldown" = Table.ExpandTableColumn(#"Removed Columns1", "Filldown", {"Date", "Value"}, {"Date", "Value"})
in
    #"Expanded Filldown"

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.

Póngase en contacto conmigo en privado para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc.

salud

SU18_powerbi_badge

Helpful resources

Announcements
August 2022 update 768x460.jpg

Check it Out!

Click here to learn more about the August 2022 updates!

August 1 episode 9_no_dates 768x460.jpg

The Power BI Community Show

Watch the playback when Priya Sathy and Charles Webb discuss Datamarts! Kelly also shares Power BI Community updates.

Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

Top Solution Authors
Top Kudoed Authors