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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
Syndicate_Admin
Administrator
Administrator

¿Cómo calculo valores proporcionales en función de múltiples variables? - Datos de precipitaciones

Estoy intentando crear datos de lluvia virtuales para múltiples "sitios" utilizando combinaciones proporcionales variables de tres pluviómetros.

Mis datos se guardan en algunas tablas / listas en los siguientes formatos:

Lista de sitios:

OllieSvT_1-1661270197764.png

Tabla de distribución de estaciones (aún no procesada, sin tipos de datos seleccionados, etc.):

OllieSvT_3-1661270402729.png

Datos diarios de lluvia y otoño (tabla resumida a partir de datos por hora):

OllieSvT_0-1661270069609.png


Me gustaría definir los valores de lluvia en el formato:

Precipitaciones en el sitio z = (precipitaciones en el sitio z calibre 1 * proporción del medidor 1 para el sitio z) + (precipitaciones en el sitio z calibre 2 * proporción del medidor 2 para el sitio z) + (precipitaciones en el sitio z calibre 3 * proporción del medidor 3 para el sitio z)

Me gustaría tener valores diarios para trazar de modo que, dependiendo de una segmentación de sitios (de selección única), se grafiquen los "datos de lluvia virtual" apropiados.

El modelo de datos actual es pequeño 1 año de datos diarios, ~ 40 sitios y 16 pluviómetros. Si puedo encontrar una solución limpia, buscaré expandir esto a más de 150 sitios y más de 10 años de datos de lluvia (potencialmente a una resolución por hora).

Preferiría crear esto usando DAX, pero potencialmente podría usar una solución de Power Query que cree un nuevo conjunto de datos de lluvia que pueda vincular directamente a la lista de 'sitios'. Para una solución DAX, no puedo averiguar cómo relacionar la lista de sitios con las asignaciones de indicadores (¿necesito despivotar la segunda tabla a 3 columnas, ID de sitio, ID de medidor, proporción? ¿Entonces se te ocurre algún cálculo que haga la ecuación anterior?

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

@OllieSvT,

Comenzaría transformando la tabla de distribución de la estación para que esté en un formato utilizable. Copie los pasos que comienzan con UnpivotColumns en la consulta.

let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "Xc+9CsIwFAXgV5FMCqU0/2ZUR8GlgkPpENs7SK9tqRbx7U1uqxSXe0JIvpwUBduNNcKbJYxLbrOQRwCEkDmPQ4XhXOYkJbcupJQyHkyNFpRS0XaqtTGsTAq2h7r1iDManRO8+m54rta5x67fRFmEMaFaLx4hSNEyVTozcYtM9FWDvoFZFf9VF8ZckDoKYamjpRtEHfy9v3Xt6gzD4KsJzEz86QUQ4XHtxqElV/46bt3k2y+sjebUUaotweUH",
          BinaryEncoding.Base64
        ),
        Compression.Deflate
      )
    ),
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [
        Source_Name = _t,
        SAP_SITE_ID = _t,
        First_Station_Name = _t,
        Second_Station_Name = _t,
        Third_Station_Name = _t,
        First_Station_Number = _t,
        Second_Station_Number = _t,
        Third_Station_Number = _t,
        First_State_Proportion = _t,
        Second_State_Proportion = _t,
        Third_State_Proportion = _t
      ]
  ),
  ChangeType = Table.TransformColumnTypes(
    Source,
    {
      {"Source_Name", type text},
      {"SAP_SITE_ID", Int64.Type},
      {"First_Station_Number", Int64.Type},
      {"Second_Station_Number", Int64.Type},
      {"Third_Station_Number", Int64.Type},
      {"First_State_Proportion", type number},
      {"Second_State_Proportion", type number},
      {"Third_State_Proportion", type number}
    }
  ),
  UnpivotColumns = Table.UnpivotOtherColumns(
    ChangeType,
    {"Source_Name", "SAP_SITE_ID"},
    "Attribute",
    "Value"
  ),
  SplitColumn = Table.SplitColumn(
    UnpivotColumns,
    "Attribute",
    Splitter.SplitTextByEachDelimiter({"_"}, QuoteStyle.Csv, false),
    {"Attribute.1", "Attribute.2"}
  ),
  PivotColumns = Table.Pivot(
    SplitColumn,
    List.Distinct(SplitColumn[Attribute.2]),
    "Attribute.2",
    "Value"
  ),
  RemoveColumn = Table.RemoveColumns(PivotColumns, {"Attribute.1"}),
  FilterNull = Table.SelectRows(RemoveColumn, each ([Station_Number] <> null)),
  ChangeType2 = Table.TransformColumnTypes(
    FilterNull,
    {{"Station_Name", type text}, {"Station_Number", type text}, {"State_Proportion", type number}}
  )
in
  ChangeType2

DataInsights_0-1662408134345.png

Deberá proporcionar datos de muestra para la tabla Lluvia diaria (no una captura de pantalla).

Syndicate_Admin
Administrator
Administrator

Hi, @OllieSvT

No está completamente seguro de cuál es su pregunta, ¿puede elaborar un poco más lo que está tratando de hacer?

Los datos de muestra y los resultados esperados ayudarían enormemente.

Saludos
Equipo de soporte de la comunidad _ Eason

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors
Top Kudoed Authors