Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

indefinido

Hola a todos

im tratando de crear una nueva columna en mi tabla donde sólo las filas de índice que tienen [Istradingday] = 1.
Im tratando de archieve esto escribiendo un bucle de fucntion personalizado invocado se muestra a continuación:

Bokchoy_0-1629785081522.png

El resultado actual de la columna personalizada tiene este aspecto:

Bokchoy_1-1629785140204.png

Nunca he usado M lanuage antes y necesito ayuda con los siguientes problemas:

1. Cuando [istradingday] = 0, quiero mostrar en blanco. (actualmente mostrando "X")
2. Valor + 1 sólo cuando [istradingday] = 1. (actualmente será + 1 para cada bucle independientemente]

pregunta lateral: ¿hay una manera de escribir bucles for /while en M lanuage simuliar a python

  • Syndicate_Admin's avatar
    Syndicate_Admin
    5 years ago
    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtQ3sNA3MjAyVNJRMgDi4NK8lMRKIAMkoKAUqxOtZGCEpAaEffPzgKQRmAdWYIymIKQ0tRhIGYNVgVWYoKkIT00BkiZgRWAFpuhGZJQWASlTsCqwCjM0FW5FmUDSDKwIrMAc3SuJJUDSHOKPWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Istradingday = _t, Day = _t, Index = _t, #"Istradingindex (Desired outcome)" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Istradingday", Int64.Type}, {"Index", Int64.Type}}),
        #"Added Custom" = Table.AddColumn(#"Changed Type", "IsTradeIndex", each if [Istradingday]=0 then "" else List.Sum(Table.FirstN(#"Changed Type",[Index])[Istradingday]))
    in
        #"Added Custom"

4 Replies

  • M ha incorporado funciones de iteración ("cada" ) y también admite bucles a través de List.Generate().

    Por favor, proporcione datos de muestra en formato utilizable (no como una imagen - tal vez insertar en una tabla?) y mostrar el resultado esperado.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola, gracias por responder a mi pregunta, por favor vea los datos adjuntos por ejemplo para 1 semana.

      Tabla actual

      FechaIstradingdayDíaÍndiceIstradingindex (resultado deseado)
      1/08/20210Domingo1
      02/08/20211Mi21
      03/08/20211Martes32
      04/08/20211Miércoles43
      05/08/20211Thur54
      06/08/20211Vie65
      07/08/20210Sábado7
      ...............

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator
        let
            Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtQ3sNA3MjAyVNJRMgDi4NK8lMRKIAMkoKAUqxOtZGCEpAaEffPzgKQRmAdWYIymIKQ0tRhIGYNVgVWYoKkIT00BkiZgRWAFpuhGZJQWASlTsCqwCjM0FW5FmUDSDKwIrMAc3SuJJUDSHOKPWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Istradingday = _t, Day = _t, Index = _t, #"Istradingindex (Desired outcome)" = _t]),
            #"Changed Type" = Table.TransformColumnTypes(Source,{{"Istradingday", Int64.Type}, {"Index", Int64.Type}}),
            #"Added Custom" = Table.AddColumn(#"Changed Type", "IsTradeIndex", each if [Istradingday]=0 then "" else List.Sum(Table.FirstN(#"Changed Type",[Index])[Istradingday]))
        in
            #"Added Custom"