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
Syndicate_Admin
Administrator
Administrator

Suma continua con un gran número de datos

Hola

Estoy tratando de visualizar el uso de licencias de software en nuestra empresa.

La tabla a continuación muestra una pequeña muestra de información, que puedo obtener del servidor de licencias.

El objetivo es obtener un gráfico que muestre cuántos tokens en cualquier momento han estado en uso.

Creé una suma continua para los tokens como una medida de acuerdo con las soluciones, que encontré en algunas otras publicaciones (ver código a continuación).

Todo funciona bien para un pequeño número de datos. Sin embargo, si cargo datos durante unos meses, el rendimiento cae muy rápidamente y en el año completo (alrededor de 40000 filas) me quedo sin memoria.

Encontré pocos mensajes con problemas similares, pero o bien no había solución, o las soluciones con propósito no funcionan en mi caso.

¿Hay alguna manera de hacer que la suma rodante sea más eficiente? ¿O tal vez hay un enfoque diferente para crear la visualización que necesito?

Gracias de antemano por su ayuda.

BP

datos:

licHorauesrpaísInOutFichas
lic_112020-08-31 16:01uesr_111Krfuera:1
lic_112020-08-31 16:01uesr_111Kren:-1
lic_112020-08-31 16:02uesr_111Krfuera:1
lic_222020-08-31 16:02uesr_111Krfuera:3
lic_222020-09-01 15:02uesr_111Kren:-3
lic_112020-09-01 15:02uesr_111Kren:-1
lic_332020-09-01 17:06uesr_222Cnfuera:5
lic_442020-09-01 17:06uesr_222Cnfuera:2
lic_552020-09-01 17:06uesr_222Cnfuera:1
lic_332020-09-01 20:33uesr_222Cnen:-5
lic_442020-09-01 20:33uesr_222Cnen:-2
lic_552020-09-01 20:33uesr_222Cnen:-1
lic_112020-09-02 18:29uesr_333Jpfuera:1
lic_222020-09-02 18:29uesr_333Jpfuera:3
lic_112020-09-03 00:27uesr_333Jpen:-1
lic_222020-09-03 00:27uesr_333Jpen:-3
lic_112020-09-03 08:00uesr_333Jpfuera:1
lic_222020-09-03 08:00uesr_333Jpfuera:3
lic_112020-09-03 16:09uesr_333Jpen:-1
lic_222020-09-03 16:09uesr_333Jpen:-3
lic_332020-09-04 02:25uesr_222Cnfuera:5
lic_442020-09-04 02:25uesr_222Cnfuera:2
lic_552020-09-04 02:25uesr_222Cnfuera:1
lic_332020-09-04 13:45uesr_222Cnen:-5
lic_442020-09-04 13:45uesr_222Cnen:-2
lic_552020-09-04 13:45uesr_222Cnen:-1

medir:

Tokens_Sum = CALCULATE(SUM(licenses_example[Tokens]),FILTER(ALL(licenses_example[time]),licenses_example[time] <=MAX(licenses_example[time])))

Resultado previsto:

BP_at_PBI_0-1624438089742.png

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

@BP_at_PBI,

Puede intentar agregar los datos en Power Query para que el nivel de contenido de la tabla corresponda al elemento visual (día, lic, país).

En Power Query, vaya a Transformar --> Agrupar por:

DataInsights_0-1624554957544.png

Aquí está la M completa (la parte relevante comienza con el paso AddDateColumn):

let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "ldOxDoJADAbgV7kwS9Jr7wC7OqkJGqOTMQ7GwcRJ4/t7EIWIV8otQI589C9pj8fsfrucrc1mGQJCDlVO1tiCoTl6XZ+P8LJ5XO/CZXPYc7jZ7DRLg8u6cfk4xCkVEZMgxeA8hwB9HH6iUizqFNhHJRrAkqH4QmzzLOo+qu+gc0kQO+h9EpSjInB7NISfHuWoCpSjKjA6OQGisRXj/Aup/cZqq0zOFCgNABkAxjIC/6L+VlThSMWKAdJ7VKFcsVmr2M9Re1QgCSPnDCCjT98OFUojp0JpO5yxxC4Gle1QoRxVgSHq6Q0=",
          BinaryEncoding.Base64
        ),
        Compression.Deflate
      )
    ),
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [lic = _t, time = _t, uesr = _t, country = _t, InOut = _t, Tokens = _t]
  ),
  ChangeType = Table.TransformColumnTypes(
    Source,
    {
      {"lic", type text},
      {"time", type datetime},
      {"uesr", type text},
      {"country", type text},
      {"InOut", type text},
      {"Tokens", Int64.Type}
    }
  ),
  AddDateColumn = Table.AddColumn(ChangeType, "Date", each DateTime.Date([time])),
  ChangeType2 = Table.TransformColumnTypes(AddDateColumn, {{"Date", type date}}),
  GroupRows = Table.Group(
    ChangeType2,
    {"lic", "country", "Date"},
    {{"Sum Tokens", each List.Sum([Tokens]), type nullable number}}
  )
in
  GroupRows

Gracias por su respuesta. Desafortunadamente, esto no proporciona los resultados que necesito.
Como puede ver en los datos, cada vez que un usuario abre un software, los tokens se comprueban y hay un número positivo en la columna "Tokens". Cuando el usuario cierra el software, los tokens se vuelven a registrar y hay el mismo número pero negativo en la columna "Tokens". Ahora, suponiendo que los usuarios cierren sus programas al final del día (como deberían), todos los tokens se comprobarán de nuevo EN y la suma durante todo el día devolverá 0.
Por lo tanto, desafortunadamente, esta solución solo proporcionaría información sobre cuántos tokens están en uso a medianoche (si algunos usuarios no cierran el software).
Crear una suma solo de los tokens positivos desafortunadamente tampoco es una solución. Por ejemplo, si el usuario abriera un software usando por ejemplo 10 tokens, después de 1h accidentalmente cerrarlo e inmediatamente abrirlo de nuevo y pasar otra 1h para terminar su trabajo, significaría que durante estas 2h comprobó OUT 10 tokens dos veces, por lo que la suma sería de 20. Pero de hecho, solo estaba usando 10 tokens en un momento dado durante estas 2h. Me interesa lo segundo.
Por lo tanto, permítanme explicar con mayor precisión lo que estoy buscando.
El propósito es ver cuántos de los tokens que compramos, realmente se están utilizando, con qué frecuencia hay vistazos y bajas, etc. También es importante la distribución entre los países y los diferentes tipos de licencias. En última instancia, queremos utilizar estos resultados para optimizar los costos de licencia.
Así que necesito que cada cambio en el uso se represente en el gráfico.
A continuación se muestra un ejemplo:

BP_at_PBI_1-1624971276315.png

En Excel podría hacer una adición fila por fila, para obtener este resultado, pero por supuesto no tengo la posibilidad de filtrar los resultados por licencia, país, etc.

BP_at_PBI_0-1624971260728.png

¿Hay alguna manera de "engañar" a PowerBI para hacer este tipo de adición fila por fila?

@BP_at_PBI,

Puede intentar crear una columna calculada para lograr additon fila por fila. Esto tendría la ventaja de calcular previamente la suma móvil, pero no tendría la flexibilidad de filtrar por país, etc.

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