M Power Query - динамическое расширение столбцов - PullRequest
0 голосов
/ 11 января 2019

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

Я исследовал онлайн, но код, который я добавляю, просто не работает так или иначе. Должно быть, я что-то упускаю, но я не уверен.

Это мой код:

let
Date = DateTime.ToText((DateTime.LocalNow()), "yyyy-MM-dd"),
Date2 = Date.ToText((Date.AddDays(Date.From(DateTime.FixedLocalNow()),-90)), "yyyy-MM-dd"),
Source = Json.Document(Web.Contents("https://www.findmyshift.com/staff-view?r=2rr67u5y9i&apikey=***********&format=json&start=" & Date2 & "&finish=" & Date)),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", List.Accumulate(#"Converted to Table"[Column1], {}, (state, current) => List.Union({state, Table.ColumnNames(current)}))),
#"Replaced Value" = Table.ReplaceValue(#"Expanded Column1","'","'",Replacer.ReplaceText,{"Column1.Name"}),
#"Renamed Columns" = Table.TransformColumnNames(#"Replaced Value", (columnName as text) as text => Text.Replace(columnName, "Column1.", ""))

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Я думаю, что вы должны удалить свой ключ API из своего вопроса, вы, вероятно, не хотите, чтобы люди злоупотребляли этим сервисом или пользовались им, используя ваши учетные данные. (Возможно, стоит попросить поставщика услуг выдать вам новый ключ API в качестве замены, чтобы никто не смог использовать его в вашем ответе.)

Если вы замените "REPLACE ME WITH YOUR API KEY" (в приведенном ниже коде) на свой фактический ключ API (между двойными кавычками), то этот код должен делать то, что вы пытались сделать.

let
    startDate = Date.ToText((Date.AddDays(Date.From(DateTime.FixedLocalNow()),-90)), "yyyy-MM-dd"),
    endDate = DateTime.ToText((DateTime.LocalNow()), "yyyy-MM-dd"),
    jsonResponse =
        let
            response = Web.Contents("https://www.findmyshift.com/staff-view", [Query = [r = "2rr67u5y9i", apikey = "REPLACE ME WITH YOUR API KEY", format = "json", start = startDate, finish = endDate]]),
            json = Json.Document(response)
        in
            json,
    toTable = Table.FromRecords(jsonResponse),
    replaceValue = Table.ReplaceValue(toTable, "'", "'", Replacer.ReplaceText, Table.ColumnNames(toTable)) // Replace in all columns
in
    replaceValue
  • Table.FromRecords может делать то, что вы пытались сделать (без расширения и переименования всех динамических столбцов)
  • Web.Contents может создать для вас строку запроса (и автоматически обработает кодировку URL), если вы передадите аргумент параметру Query.
0 голосов
/ 11 января 2019

Попробуйте заменить шаг # "Расширенный столбец1" следующим кодом:

= Table.ExpandRecordColumn(#"Converted to Table", "Column1",
Record.FieldNames(#"Converted to Table"{0}[Column1]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...