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.
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).
También para el Case2, quiero crear un registro para q3 con el valor de q2 (210). ¿Puedo lograr esto con columnas personalizadas?
Solved! Go to Solution.
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:
Aquí está mi archivo pbix de prueba:
Espero que esto ayude.
Saludos
Giotto Zhi
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:
Aquí está mi archivo pbix de prueba:
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?
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.
@Greg_Deckler Gracias por la respuesta. No me importaría si podemos obtener la salida superior mediante Power Query.
¿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/
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |