Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
chinthada
Helper I
Helper I

Crear un nuevo registro trimestral con datos del trimestre anterior con condiciones

Hola chicos,

Tengo una tabla de datos como la siguiente. Cuando aplico un filtro (Grado1) para "Clase", para el año 2019, sólo tiene 3 cuartos (q1, q2, q3). Quiero crear un registro para q4 con el valor de q3 (4041).

Capture.PNG


También para el Case2, quiero crear un registro para q3 con el valor de q2 (210). ¿Puedo lograr esto con columnas personalizadas?

1 ACCEPTED SOLUTION
v-gizhi-msft
Community Support
Community Support

Hola

Por favor, pruebe esto en el Editor de consultas:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wci9KTEk1VNJRMjIwtARSgaWJRSWpRQrGQLaJgYmhUqwObkVGYEXGlngVGUIUWYAVOScWpxphN8jI0ACfEojJpviUmICEjICmxAIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Class = _t, Fiscal_Year = _t, Fiscal_Quarter = _t, Q_RunTot_Conn = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Class", type text}, {"Fiscal_Year", Int64.Type}, {"Fiscal_Quarter", type text}, {"Q_RunTot_Conn", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Class", "Fiscal_Year"}, {{"Data", each _, type table [Class=text, Fiscal_Year=number, Fiscal_Quarter=text, Q_RunTot_Conn=number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let t = Table.AddColumn([Data],"Quarter",each Text.Replace([Fiscal_Quarter],"Quarter ",""))
in 
Table.AddColumn(Table.ExpandListColumn(
Table.AddColumn(t,"LastQ",each 

if [Quarter]<>"4" then 
List.Select({
    Int64.From([Quarter]),
    let temp  = Int64.From([Quarter])+1
    in 
    if Table.RowCount(Table.SelectRows(t,each Int64.From([Quarter]) = temp))=0
    then Int64.From([Quarter])+1
    else null
},each _<>null) else {Int64.From([Quarter])}
), "LastQ"),"New Quarter",each "Quarter "&Text.From([LastQ]))),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Data"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns", "Custom", {"Q_RunTot_Conn", "New Quarter"}, {"Q_RunTot_Conn", "Fiscal_Quarter"})
in
    #"Expanded Custom"

El resultado muestra:

10.PNG

Aquí está mi archivo pbix de prueba:

pbix

Espero que esto ayude.

Saludos

Giotto Zhi

View solution in original post

6 REPLIES 6
v-gizhi-msft
Community Support
Community Support

Hola

Por favor, pruebe esto en el Editor de consultas:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wci9KTEk1VNJRMjIwtARSgaWJRSWpRQrGQLaJgYmhUqwObkVGYEXGlngVGUIUWYAVOScWpxphN8jI0ACfEojJpviUmICEjICmxAIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Class = _t, Fiscal_Year = _t, Fiscal_Quarter = _t, Q_RunTot_Conn = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Class", type text}, {"Fiscal_Year", Int64.Type}, {"Fiscal_Quarter", type text}, {"Q_RunTot_Conn", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Class", "Fiscal_Year"}, {{"Data", each _, type table [Class=text, Fiscal_Year=number, Fiscal_Quarter=text, Q_RunTot_Conn=number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let t = Table.AddColumn([Data],"Quarter",each Text.Replace([Fiscal_Quarter],"Quarter ",""))
in 
Table.AddColumn(Table.ExpandListColumn(
Table.AddColumn(t,"LastQ",each 

if [Quarter]<>"4" then 
List.Select({
    Int64.From([Quarter]),
    let temp  = Int64.From([Quarter])+1
    in 
    if Table.RowCount(Table.SelectRows(t,each Int64.From([Quarter]) = temp))=0
    then Int64.From([Quarter])+1
    else null
},each _<>null) else {Int64.From([Quarter])}
), "LastQ"),"New Quarter",each "Quarter "&Text.From([LastQ]))),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Data"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns", "Custom", {"Q_RunTot_Conn", "New Quarter"}, {"Q_RunTot_Conn", "Fiscal_Quarter"})
in
    #"Expanded Custom"

El resultado muestra:

10.PNG

Aquí está mi archivo pbix de prueba:

pbix

Espero que esto ayude.

Saludos

Giotto Zhi

Gracias @v-gizhi-msft está trabajando. Una preocupación que noté que generará sólo un cuarto. Por ejemplo, si solo tenemos datos del "cuarto 1", ¿cómo generar los cuatro trimestres en función del primer trimestre?

Greg_Deckler
Super User
Super User

En general, no se pueden "inventar" columnas mediante DAX. La excepción es cuando se crea una tabla completamente nueva mediante DAX. Primera pregunta, ¿está intentando hacer esto en Power Query o DAX? En segundo lugar, datos como texto. Por favor, consulte este post sobre cómo obtener su pregunta respondida rápidamente: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490. Casi con seguridad podría hacer esto creando una nueva tabla, pero no puede inventar una fila con solo columnas personalizadas.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler Gracias por la respuesta. No me importaría si podemos obtener la salida superior mediante Power Query.

amitchandak
Super User
Super User

¿Tienes cita en esta mesa? Entonces podrías haberlo hecho fácilmente, con inteligencia de tiempo y calendario de fechas

YTD y YTD hasta el último qtr y no diff puede darle esto

YTD = CALCULATE(SUM(Table[Q run tot Count]),DATESYTD(('Date'[Date]),"12/31"))

Last QTD YTD = CALCULATE(SUM(Table[Q run tot Count]),DATESYTD(dateadd('Date'[Date],-1,Quarter),"12/31"))

This Qtr = [YTD] -[Last QTD YTD ]

Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/

@amitchandak , Gracias por la respuesta. Me gustaría crear una columna personalizada como abajo,

Capture2.PNG

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Kudoed Authors