Преобразовать список JSON в таблицу, в которой одна запись является списком - PullRequest
0 голосов
/ 28 июня 2019

У меня есть список JSON с 253 записями и 7 записями, где 7-я запись является списком с обычно 2 записями.

Я пытаюсь преобразовать это в Power Query, чтобы получить вывод таблицы.Я действительно когда-либо использовал базовое соединение в Excel, чтобы сделать это автоматически без проблем.

Моя текущая ошибка:

Expression.Error: Мы не можем преобразовать значение типаЗапись для ввода текста.Подробности: Значение = Тип записи = Тип

enter image description here

Я не уверен, куда идти, и я не вижу примеров для моего конкретногоситуация, хотя я уверен, что есть много примеров - просто я не достаточно хорош для этого, чтобы понять,

[
  {
    "Id": "lorum-ipsum1",
    "Description": "sitename 1",
    "Latitude": 1.0,
    "Longitude": -1.0,
    "Postcode": "AB1 2CD",
    "CountryCode": "GB",
    "Connectors": [
      {
        "Id": "lorum-ipsum1-a",
        "Number": 1,
        "Status": 1,
        "ErrorCode": "NoError",
        "ChargepointName": "GP00000",
        "Shape": 0,
        "Mode": 0,
        "Volts": 240,
        "Amps": 0,
        "Phase": 2,
        "PricingInformationUrl": "hrefhere",
        "UsageRestrictions": []
      },
      {
        "Id": "lorum-ipsum1-b",
        "Number": 2,
        "Status": 1,
        "ErrorCode": "NoError",
        "ChargepointName": "GP0000",
        "Shape": 0,
        "Mode": 0,
        "Volts": 240,
        "Amps": 0,
        "Phase": 2,
        "PricingInformationUrl": "hrefhere",
        "UsageRestrictions": []
      }
    ]
  },
   {
    "Id": "lorum-ipsum2",
    "Description": "sitename 2",
    "Latitude": 1.0,
    "Longitude": -1.0,
    "Postcode": "AB1 2CD",
    "CountryCode": "GB",
    "Connectors": [
      {
        "Id": "lorum-ipsum2-a",
        "Number": 1,
        "Status": 1,
        "ErrorCode": "NoError",
        "ChargepointName": "GP00000",
        "Shape": 0,
        "Mode": 0,
        "Volts": 240,
        "Amps": 0,
        "Phase": 2,
        "PricingInformationUrl": "hrefhere",
        "UsageRestrictions": []
      },
      {
        "Id": "lorum-ipsum2-b",
        "Number": 2,
        "Status": 1,
        "ErrorCode": "NoError",
        "ChargepointName": "GP0000",
        "Shape": 0,
        "Mode": 0,
        "Volts": 240,
        "Amps": 0,
        "Phase": 2,
        "PricingInformationUrl": "hrefhere",
        "UsageRestrictions": []
      }
    ]
  },

1 Ответ

0 голосов
/ 04 июля 2019

Я думаю, что вы хотите использовать функцию Table.FromRecords для преобразования JSON в таблицу. Однако, поскольку поле Connectors каждой записи представляет собой список записей, я думаю, вам нужно будет вызвать его во второй раз.

Чтобы дать вам пример:

let
    serialised = "[{""Id"":""lorum-ipsum1"",""Description"":""sitename 1"",""Latitude"":1,""Longitude"":-1,""Postcode"":""AB1 2CD"",""CountryCode"":""GB"",""Connectors"":[{""Id"":""lorum-ipsum1-a"",""Number"":1,""Status"":1,""ErrorCode"":""NoError"",""ChargepointName"":""GP00000"",""Shape"":0,""Mode"":0,""Volts"":240,""Amps"":0,""Phase"":2,""PricingInformationUrl"":""hrefhere"",""UsageRestrictions"":[]},{""Id"":""lorum-ipsum1-b"",""Number"":2,""Status"":1,""ErrorCode"":""NoError"",""ChargepointName"":""GP0000"",""Shape"":0,""Mode"":0,""Volts"":240,""Amps"":0,""Phase"":2,""PricingInformationUrl"":""hrefhere"",""UsageRestrictions"":[]}]},{""Id"":""lorum-ipsum2"",""Description"":""sitename 2"",""Latitude"":1,""Longitude"":-1,""Postcode"":""AB1 2CD"",""CountryCode"":""GB"",""Connectors"":[{""Id"":""lorum-ipsum2-a"",""Number"":1,""Status"":1,""ErrorCode"":""NoError"",""ChargepointName"":""GP00000"",""Shape"":0,""Mode"":0,""Volts"":240,""Amps"":0,""Phase"":2,""PricingInformationUrl"":""hrefhere"",""UsageRestrictions"":[]},{""Id"":""lorum-ipsum2-b"",""Number"":2,""Status"":1,""ErrorCode"":""NoError"",""ChargepointName"":""GP0000"",""Shape"":0,""Mode"":0,""Volts"":240,""Amps"":0,""Phase"":2,""PricingInformationUrl"":""hrefhere"",""UsageRestrictions"":[]}]}]",
    deserialised = Json.Document(serialised),
    toTable = Table.FromRecords(deserialised),
    transformConnectors = Table.TransformColumns(toTable, {{"Connectors", Table.FromRecords}})
in
    transformConnectors

, что дает мне:

Output table

Оттуда вы можете самостоятельно исследовать / продолжить оставшуюся часть преобразования (поскольку вы не указали, что хотите).

Вы можете развернуть некоторые / все вложенные столбцы внутри столбца Connectors, щелкнув значок, выделенный на изображении выше, или написав необходимый код M.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...