Forum Discussion

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

Convertir una tabla en una matriz de objetos javascript

Estoy intentando convertir una tabla

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Jc65DQAxCETRXog34PTgWiz338ZiCJ8YpH8OCX0kni50v0NaUveFlpWQrtby0mKVUZQSGrNc70/C54aWYZS9tDXapWBDtoTfdEN8+GqUBVMjLwfMseneHw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Month = _t, Value = _t])
in 
Source
| Month | Value |
|-------|-------|
| 1     | 14841 |
| 2     | 24467 |
| 3     | 78423 |
| 4     | 60213 |
| 5     | 87257 |
| 6     | 21543 |
| 7     | 21373 |
| 8     | 87363 |
| 9     | 50378 |
| 10    | 29714 |
| 11    | 20171 |
| 12    | 70059 |

en una matriz de objetos Javascript

const tbl = [{
    "Month": 1,
    "Value": 14841
}, {
    "Month": 2,
    "Value": 24467
}, {
    "Month": 3,
    "Value": 78423
}, {
    "Month": 4,
    "Value": 60213
}, {
    "Month": 5,
    "Value": 87257
}, {
    "Month": 6,
    "Value": 21543
}, {
    "Month": 7,
    "Value": 21373
}, {
    "Month": 8,
    "Value": 87363
}, {
    "Month": 9,
    "Value": 50378
}, {
    "Month": 10,
    "Value": 29714
}, {
    "Month": 11,
    "Value": 20171
}, {
    "Month": 12,
    "Value": 70059
}]

Me encontré con este código brillante que hace lo que necesito, pero una vez cargado, los datos salen como los siguientes, lo cual no me sirve de nada.

"[{""Month"":1,""Value"":14841},{""Month"":2,""Value"":24467},{""Month"":3,""Value"":78423},{""Month"":4,""Value"":60213},{""Month"":5,""Value"":87257},{""Month"":6,""Value"":21543},{""Month"":7,""Value"":21373},{""Month"":8,""Value"":87363},{""Month"":9,""Value"":50378},{""Month"":10,""Value"":29714},{""Month"":11,""Value"":20171},{""Month"":12,""Value"":70059}]"

Sin embargo, cuando lo tomo de la consola PQ, sale correcto.

¿Cómo puedo cargar la tabla resultante en cuanto a la salida deseada? Estaría ejecutando esto en big data y no puedo volver a la consola PQ después de cada ejecución para copiar desde la consola. Quiero evitar hacer eso.

Gracias de antemano.

@AlexisOlson @ImkeF

El código completo

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Jc65DQAxCETRXog34PTgWiz338ZiCJ8YpH8OCX0kni50v0NaUveFlpWQrtby0mKVUZQSGrNc70/C54aWYZS9tDXapWBDtoTfdEN8+GqUBVMjLwfMseneHw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Month = _t, Value = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Month", Int64.Type}, {"Value", Int64.Type}}),
    Custom1 = Json.FromValue(#"Changed Type"),
    Custom2 = Text.FromBinary(Custom1)
in
    Custom2

y se adjunta el pbix

  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    Intente poner el valor en un visual de tabla y luego copiarlo desde allí.

    Watsky_0-1651082179194.png

    Watsky_1-1651082189746.png

5 Replies

  • La tabla contiene el valor correcto y no debe ser motivo de preocupación, ya que los valores correctos están contenidos en la consola de PQ.

    Parece que está haciendo CTRL + C en la tabla PQ directamente y luego copiando en algún editor de texto que introduce comillas adicionales porque la cadena contiene comillas. Si copia lo mismo en Word o Excel, verá que la cadena se copia de la manera que debería ser.

  • Gracias. No estoy haciendo CTRL+C en la consola de PQ.

    Estoy haciendo esto

    smpa01_0-1651080037460.png

    y pegar en chrome DEV tools, que sale así y no es lo que quiero.

    smpa01_1-1651080101403.png

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Intente poner el valor en un visual de tabla y luego copiarlo desde allí.

      Watsky_0-1651082179194.png

      Watsky_1-1651082189746.png

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Cualquiera que regrese a este hilo en el futuro, solo para que lo sepa, @Watsky método funciona, pero solo para un pequeño conjunto de datos. Para tablas grandes, solo los valores parciales se cargan en tablas DAX, ya que DAX tiene limitaciones para el tipo de datos 'string'. La única forma segura de hacer que funcione es tomar los valores de PQ Console una vez que se transfiere a JSON.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Si pega esto en un editor basado en texto, esto está destinado a suceder para las cadenas que contienen comillas.

      Para evitar esto, primero tendrá que pegar en un editor no basado en texto como Word y luego copiar desde Word y luego pegar en un editor de Chrome. Si hace clic derecho en Word / Wordpad y pega como texto, aparecerán nuevamente comillas adicionales.

      Pero la solución anterior es un paso adicional que no desea. Intenté experimentar con la herramienta chrome dev para ver si alguna configuración o cualquier otro truco puede evitar esto. Pero no tuve éxito ya que el núcleo de la herramienta de desarrollo de Chrome parece ser solo texto.

      Veamos si alguien puede encontrar una manera de evitar esto en la herramienta de desarrollo de Chrome.