Построить отношения один ко многим в PowerBI, когда внешние ключи находятся внутри массива JSON? - PullRequest
1 голос
/ 04 февраля 2020

Я очень новичок в Power BI, и моя первая задача - подключиться к источнику данных JSON, у меня проблема с массивами, содержащими ключи. Некоторый контекст, скажем, у нас есть пользователи и фабрики:

пользователи

[
    {
    "email": "user1@foo-bar.com",
    "user_id": "user1-id",
    "factory": ['factoryId1']
  },
  {
    "email": "user2@foo-bar.com",
    "user_id": "user2-id",
    "factory": ['factoryId2', 'factoryId1']
  }
]

фабрики

[
  {
    "factoryId": 'factoryId1',
    "factoryName": "London"
  },
  {
    "factoryId": 'factoryId2',
    "factoryName": "Moscow"
  }
]

Сейчас отношение, которое я хотел бы построить:

+----------+------------+
| user_id  | factory_Id |
+----------+------------+
| user1-id | factoryId1 |
| user2-id | factoryId1 |
| user2-id | facotryId2 |
+----------+------------+

Я пытался использовать опцию «Добавить как новый запрос»:

enter image description here

После преобразования в таблицу и расширения строк я почти получаю желаемый результат:

+------------+
| factory_Id |
+------------+
| factoryId1 |
| factoryId1 |
| facotryId2 |
+------------+

Единственное, чего здесь не хватает, - это userIds. Как мне добавить эти идентификаторы? (или, может быть, есть более простой способ сделать это?)

1 Ответ

2 голосов
/ 04 февраля 2020

Используйте «Развернуть до новых строк» ​​(щелкните значок с двойной стрелкой)

enter image description here enter image description here

The M запрос будет выглядеть так:

let
    Source = Json.Document(File.Contents("C:\Users\gluisotto\Desktop\json.json")),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"email", "user_id", "factory"}, {"Column1.email", "Column1.user_id", "Column1.factory"}),
    #"Expanded Column1.factory1" = Table.ExpandListColumn(#"Expanded Column1", "Column1.factory")
in
    #"Expanded Column1.factory1"
...