#powerquery
Вопрос:
Прежде всего, большое вам спасибо за ваш интерес к моему вопросу и за то, что пришли прочитать его содержание.
Я студент колледжа, и теперь у меня есть некоторые проблемы.
Я хочу импортировать данные из API, связанные со зданиями. (Я работаю над проектом об симуляторе солнечного света.)
Однако в запросе мощности есть некоторые значения, тип которых-MultiPolygon, и у меня возникают проблемы, когда я извлекаю их значения.
В списке есть списки, и в нем присутствуют значения координат MutiPolygon, поэтому нет способа загрузить несколько значений в одну строку.
Я искал информацию об этом около двух недель, но не могу ее найти из-за ограниченности моих знаний.
(И я также нашел информацию о «комбайне». Моя проблема заключается в списке в списке, а не в представлении нескольких значений в одной строке.)
Поэтому я был бы признателен, если бы вы могли дать мне несколько советов. Все в порядке.
Ниже приведен пример имеющихся у меня данных.
Это данные мультиполигона.
В списке есть список.
А также, в списке, есть список.
И в списке есть списки. В этих списках есть значения широты и долготы.
Спасибо, что прочитали, и хорошего вам дня.
Комментарии:
1. Кроме того, я кореец, и сейчас уже слишком поздно, поэтому я думаю, что смогу встать завтра утром и дать вам дополнительные комментарии.
Ответ №1:
Я не уверен, что это то, о чем вы просите, но какого черта. В любом случае, поехали.
Если вы просите способ отобразить информацию, вложенную в ваши списки третьего уровня, и вывести ее на верхний уровень в виде отдельных связанных текстовых записей для каждой строки, вот один из способов.
Чтобы получить доступ к информации в списке первого уровня, вам просто нужно #"Previous Step"[ListColumnName]{index}
Предполагая, что в каждом из списков первого уровня существует только один список, и только один список существует в каждом из списков второго уровня, вы можете использовать #"Previous Step"[ListColumnName]{index}{0}{0}
для детализации второго и третьего. (Нули также являются ссылками на индексы.)
Зная это, вы могли бы использовать что-то вроде Text.Combine(List.Transform(#"Previous Step"[Coordinates]{[Index]}{0}{0}, each Text.From(_ amp; "; ")))
получения координат из списка третьего уровня и объединения их в виде одной текстовой записи с точкой с запятой между ними.
Вам придется создать столбец индекса, прежде чем вы сможете это сделать, потому что вам нужно использовать его для ссылки на индекс.
Вот пример кода M, который вы можете вставить в качестве запроса, чтобы увидеть, как это работает:
let
Source = Table.FromRecords({
[Coordinates = {{{"28.09, 0.62", "28.82, -1.63", "30, 2.01", "31.91, 0.62", "31.18, -1.63"}}}],
[Coordinates = {{{"28.09, 0.52", "28.82, -1.64", "30, 2.00", "31.91, 0.52", "31.18, -1.64"}}}],
[Coordinates = {{{"28.09, 0.42", "28.82, -1.65", "30, 1.99", "31.91, 0.42", "31.18, -1.65"}}}],
[Coordinates = {{{"28.09, 0.32", "28.82, -1.66", "30, 1.98", "31.91, 0.32", "31.18, -1.66"}}}],
[Coordinates = {{{"28.09, 0.22", "28.82, -1.67", "30, 1.97", "31.91, 0.22", "31.18, -1.67"}}}],
[Coordinates = {{{"28.09, 0.12", "28.82, -1.68", "30, 1.96", "31.91, 0.12", "31.18, -1.68"}}}],
[Coordinates = {{{"28.09, 0.02", "28.82, -1.69", "30, 1.95", "31.91, 0.02", "31.18, -1.69"}}}],
[Coordinates = {{{"28.09, 0.72", "28.82, -1.62", "30, 2.02", "31.91, 0.72", "31.18, -1.62"}}}]
}),
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
#"Added Custom1" = Table.AddColumn(#"Added Index", "Custom.1", each Text.Combine(List.Transform(#"Added Index"[Coordinates]{[Index]}{0}{0}, each Text.From(_ amp; "; "))))
in
#"Added Custom1"
Этот код создает таблицу со списками координат, подобными приведенному ниже списку, для каждой из семи строк таблицы верхнего уровня; но он помещает этот список на три уровня ниже, как вы описали, в случае с вашей настройкой. Затем он в конечном итоге извлекает информацию о списках каждой строки в новый столбец, как показано во второй таблице ниже.
Если мое предположение о наличии только одного списка в каждом из списков первого уровня и только одного списка в каждом из списков второго уровня неверно, то этот подход не сработает, и ваша задача будет намного сложнее.
Комментарии:
1. Я думаю, что мой вопрос трудно понять… (Я плохо говорю по-английски.. извините за это) Однако ваш ответ-это все, что мне нужно. Я глубоко признателен вам за ваши усилия ответить на мой вопрос.