Anónimo
Necesito crear un gráfico de tendencias usando datos de una lista de SharePoint.
Los datos de SharePoint son para tickets que están ‘Generados’, ‘En curso’ y ‘Cerrados’. Por lo tanto, el «estado» es un campo que evoluciona con el tiempo. Quiero mostrar cómo está progresando el conteo de artículos abiertos. El problema es que si creo un ‘gráfico de áreas apiladas’ y agrego ‘estado’ como ‘Valor’, solo cuenta cuántos hay y se muestra como un solo punto:
Como solución, exporté manualmente la lista a Excel y creé una nueva tabla con el desglose de datos requerido.
¿Cómo desgloso los datos de ‘estado’ en la lista original de SharePoint para obtener ‘Σ EN CURSO’ Y ‘Σ AUMENTADO’, en lugar de solo ‘Recuento de estado’?
ThomasKwakman
En respuesta a Anónimo
Hola
Empiezo a comprender mejor sus escenarios: es el patrón Event in Progress. Puede hacer esto con el conjunto de datos original (no el que modificó en Excel), sin tener que recuperar el historial semanal.
He trabajado en una solución con su conjunto de datos original y puedo encontrar aquí el archivo .pbix.
He usado algunos datos ficticios:
6 entradas en total, 3 meses en total, se recogen 2 entradas cada mes.
Al final 2 están cerrados y 4 siguen abiertos
Y obtengo la siguiente visual (podrías usa uno diferente si quieres)
Consideración de la historia
¿Necesitas todos los archivos para el historial? No creo que lo necesites, ya que tiene el alto Fecha y Cerrado Columnas de fecha en el conjunto de datos que nos proporcionan el historial.
Aquí podemos:
- calcular para un período específico (un día, un mes o un año) el número de boletos recolectados, abiertos o cerrados durante el periodo.
Estas medidas nos ayudarán a verificar si nuestra próxima medida arroja valores correctos.
- calcular el numero de boletos actualmente recolectados o en progreso (es decir, todas las entradas que aún no están cerradas)
Tenga en cuenta que debido a que no tener un ticket de fecha en curso, es posible que con el tiempo calculemos el número de boletos actualmente recogidos o en curso, pero no podemos calcular en el tiempo el número de tickets actualmente en curso solo
Los pasos principales son:
1. Agregue una tabla de fechas y conéctela con su tabla principal
2. Cree la medida que devuelva el número de tickets levantados/cerrados durante el período
3. Crea la final medida Recaudada actualmente o actual entradas para ver la evolución en el tiempo
Paso 1: Crea una tabla de fecha/calendario
Usé un código DAX estándar:
Calendar =
ADDCOLUMNS(
CALENDAR(
MIN(
MIN( DataTickets[Date closed] ),
MIN( DataTickets[Date raised] )
),
MAX(
MAX( DataTickets[Date closed] ),
MAX( DataTickets[Date raised] )
)
),
"Month Number", MONTH([Date]),
"Month", FORMAT([Date], "mmm"),
"Year", YEAR([Date])
)
A continuación, debe conectar el Calendario tabla a la tabla principal:
- Calendario[Date] a la tabla principal[Date raised] como activo relación
- Calendario[Date] a la tabla principal[Closed Date] como un relación inactiva
Deberías obtener lo siguiente:
Paso 2: Cree la medida para calcular lo que sucedió durante un período específico:
Asientos elevados en el período:podemos aprovechar la relación activa y simplemente escribir esto
Raised tickets in period = COUNTROWS( DataTickets )
Asientos cerrados en periodo: aquí tenemos que usar la relación inactiva
Closed tickets in period =
CALCULATE(
COUNTROWS( DataTickets ),
USERELATIONSHIP( 'Calendar'[Date] , DataTickets[Date closed] ),
DataTickets[Date closed] <> BLANK()
)
Estas medidas no se utilizarán directamente para la medida final, pero nos ayudarán a comprender si obtenemos el resultado correcto.
Paso 3: Cree la medida de Entradas actualmente levantada o actual
Use el siguiente código:
Currently raised or in progress tickets =
VAR LastDateOfPeriod = LASTDATE( 'Calendar'[Date] )
VAR Result =
CALCULATE(
COUNTROWS( DataTickets ),
// as we will manipulate the filter on calendar, first we remove any filter on this table
REMOVEFILTERS( 'Calendar' ),
// we keep only tickets that have been raised during or before the last date displayed in the original filter context
DataTickets[Date raised] <= LastDateOfPeriod,
// and that are closed after this same date (or not closed at all, i.e. blank)
IF( -- if Date closed column is empty, we use a date in the future
ISBLANK(DataTickets[Date closed]),
DATEVALUE("9999-12-31"),
DataTickets[Date closed]
) > LastDateOfPeriod
)
RETURN Result
Tenga en cuenta que para que esta medida funcione, deberá cortar y cortar las imágenes con las columnas presentes en el Tabla de calendario.
Explicación completa del patrón de eventos actual:
Lo que describí anteriormente está muy inspirado en lo que describen los maestros DAX de sqlbi en su patrón «Evento en curso». Puedes encontrar tu gran artículo aquí.
¡Espero que ayude!
Mejor
Tomás
ThomasKwakman
Hola @Anónimo,
Opción 1:
En su primer ejemplo, ¿podría intentar agregar Estado en el Leyenda así como en Valores?
Opcion 2:
Otra opción podría ser crear una medida DAX:
Number of open projects =
CALCULATE(
COUNTROWS( Projects ),
Projects[Status] = "Open"
)
A continuación, podría crear medidas similares para los otros estados del proyecto.
Luego sumas las diferentes medidas en el Valor campo de tu visual.
Espero que funcione y ayude. ¿Lo hace?
Que tenga un lindo día,
Tomás
Anónimo
En respuesta a ThomasKwakman
Gracias por la rápida respuesta @ThomasKwakman
agregando Estado en el Leyenda así como en Valores obras. Los datos se desglosan en las categorías individuales de Estado. Sin embargo, solo hace esto por un momento, es decir, ahora. Para mostrar la evolución a lo largo del tiempo, PowerBI tendría que recuperar datos históricos. es posible?
En mi segunda captura de pantalla, esto fue posible porque he estado descargando manualmente los datos semanalmente (exportación de Excel).
ThomasKwakman
En respuesta a Anónimo
Hola
Empiezo a comprender mejor sus escenarios: es el patrón Event in Progress. Puede hacer esto con el conjunto de datos original (no el que modificó en Excel), sin tener que recuperar el historial semanal.
He trabajado en una solución con su conjunto de datos original y puedo encontrar aquí el archivo .pbix.
He usado algunos datos ficticios:
6 entradas en total, 3 meses en total, se recogen 2 entradas cada mes.
Al final 2 están cerrados y 4 siguen abiertos
Y obtengo la siguiente visual (podrías usa uno diferente si quieres)
Consideración de la historia
¿Necesitas todos los archivos para el historial? No creo que lo necesites, ya que tiene el alto Fecha y Cerrado Columnas de fecha en el conjunto de datos que nos proporcionan el historial.
Aquí podemos:
- calcular para un período específico (un día, un mes o un año) el número de boletos recolectados, abiertos o cerrados durante el periodo.
Estas medidas nos ayudarán a verificar si nuestra próxima medida arroja valores correctos.
- calcular el numero de boletos actualmente recolectados o en progreso (es decir, todas las entradas que aún no están cerradas)
Tenga en cuenta que debido a que no tener un ticket de fecha en curso, es posible que con el tiempo calculemos el número de boletos actualmente recogidos o en curso, pero no podemos calcular en el tiempo el número de tickets actualmente en curso solo
Los pasos principales son:
1. Agregue una tabla de fechas y conéctela con su tabla principal
2. Crear la medida que devuelva el número de tickets levantados/cerrados durante el periodo
3. Crea la final medida Recaudada actualmente o actual entradas para ver la evolución en el tiempo
Paso 1: Crea una tabla de fecha/calendario
Usé un código DAX estándar:
Calendar =
ADDCOLUMNS(
CALENDAR(
MIN(
MIN( DataTickets[Date closed] ),
MIN( DataTickets[Date raised] )
),
MAX(
MAX( DataTickets[Date closed] ),
MAX( DataTickets[Date raised] )
)
),
"Month Number", MONTH([Date]),
"Month", FORMAT([Date], "mmm"),
"Year", YEAR([Date])
)
A continuación, debe conectar el Calendario tabla a la tabla principal:
- Calendario[Date] a la tabla principal[Date raised] como activo relación
- Calendario[Date] a la tabla principal[Closed Date] como un relación inactiva
Deberías obtener lo siguiente:
Paso 2: Cree la medida para calcular lo que sucedió durante un período específico:
Asientos elevados en el período:podemos aprovechar la relación activa y simplemente escribir esto
Raised tickets in period = COUNTROWS( DataTickets )
Asientos cerrados en periodo: aquí tenemos que usar la relación inactiva
Closed tickets in period =
CALCULATE(
COUNTROWS( DataTickets ),
USERELATIONSHIP( 'Calendar'[Date] , DataTickets[Date closed] ),
DataTickets[Date closed] <> BLANK()
)
Estas medidas no se usarán directamente para la medida final, pero nos ayudarán a entender si obtenemos la resultado correcto
Paso 3: Cree la medida de Entradas actualmente levantada o actual
Use el siguiente código:
Currently raised or in progress tickets =
VAR LastDateOfPeriod = LASTDATE( 'Calendar'[Date] )
VAR Result =
CALCULATE(
COUNTROWS( DataTickets ),
// as we will manipulate the filter on calendar, first we remove any filter on this table
REMOVEFILTERS( 'Calendar' ),
// we keep only tickets that have been raised during or before the last date displayed in the original filter context
DataTickets[Date raised] <= LastDateOfPeriod,
// and that are closed after this same date (or not closed at all, i.e. blank)
IF( -- if Date closed column is empty, we use a date in the future
ISBLANK(DataTickets[Date closed]),
DATEVALUE("9999-12-31"),
DataTickets[Date closed]
) > LastDateOfPeriod
)
RETURN Result
Tenga en cuenta que para que esta medida funcione, deberá cortar y cortar las imágenes con las columnas presentes en el Tabla de calendario.
Explicación completa del patrón de eventos actual:
Lo que describí anteriormente está muy inspirado en lo que describen los maestros DAX de sqlbi en su patrón «Evento en progreso». Puedes encontrar tu gran artículo aquí.
¡Espero que ayude!
Mejor
Tomás
amichandak
@Anónimo,
¿Puede compartir datos de muestra y resultados de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.