Страницы: 1
RSS
Ошибка в запросе PQ, Не работает запрос
 
Доброго времени суток, знатоки!

В примере два одинаковых запроса один работает другой нет....
Помогите победить эту ужасную ошибку, она мне все нервы вытрепала...

Цитата
Expression.Error: Не удается применить доступ к полям в типе Null.
Сведения:
   Value=
   Key=edge_owner_to_timeline_media
Впитываю знания, как борщ после тренировки ^^)
 
Когда уже Вы впитаете, как борщ, правила форума? Название темы общее. Какой запрос. какая ошибка?
 
Доброго времени суток Виктор!

1.Ошибка в запросе данных с сайта Инстаграмм, через power query
2. ошибка приведена в цитате


вопрос общий по ошибке, какая именно это ошибка я не знаю, знал бы сам решил эту проблему  
Изменено: Молодое_Поколение - 06.08.2020 02:18:46
Впитываю знания, как борщ после тренировки ^^)
 
Молодое_Поколение, смысл выдавать файлы, которые не будут работать без вашей авторизации?..
суть ошибки в том, что в строках 14-20 вашего кода
Код
json     = Function.InvokeAfter(
    ()=> Json.Document(Web.Contents(
        "https://www.instagram.com/graphql/query/?query_hash=472f257a40c653c64c666ce877d59d2b&variables={""id"":"""&[Column1]&""",""first"":50,""after"":"""&[Column2]&"""}"
        )), #duration(0,0,0,5)), 
tbl       = Table.Combine(
    List.Transform(json[data][user][edge_owner_to_timeline_media][edges], each Table.FromRecords({[node]?}))
    ),
сначала идет получение json из API, потом на шаге tbl в этом Json последовательно проваливаемся в поле [data], затем в поле [user]. В каких-то строках ответа поле user пустое (очевидно, когда вы даете пустого юзера на вход в Таблица1[Столбец1]). Соответственно json[data][user] = null, и в нем невозможно найти следующее поле [edge_owner_to_timeline_media], о чем вам программа любезно сообщает.
Обратитесь к автору запроса, пусть поправит. Или удаляйте пустые id из исходников.
Изменено: Максим Зеленский - 06.08.2020 11:42:39
F1 творит чудеса
 
Максим Зеленский, да убрал пустые все хорошо стало, уже понятней стало , спасибо!
С исходников пустые нельзя убрать - нарушается вся таблица. Можно сделать игнорирование этих пустых пользователей? Функционал PQ позволяет это сделать?

Там нет авторизации, функционал PQ не позволяет
Изменено: Молодое_Поколение - 06.08.2020 13:34:43
Впитываю знания, как борщ после тренировки ^^)
 
Цитата
Молодое_Поколение написал:
. ошибка приведена в цитате
А должна быть в названии. Когда уже научитесь нормально формулировать названия тем?
 
Цитата
Молодое_Поколение написал:
С исходников пустые нельзя убрать - нарушается вся таблица
Наверное, можно со столбцом индекса отфильтровать пустые, а после получения данных приджойнить
 
Михаил Л, в теории я могу фильтрами убирать пустые, делать запрос, загружать его на отдельный лист, а потом в главной таблице по ID с помощью впр подтягивать в нужные строки... это будет ужасный костыль  :)

Помогите мне реализовать это в запросе, просто чтобы  строка с ошибкой была пустой, это решит мою проблему.  
Впитываю знания, как борщ после тренировки ^^)
 
Молодое_Поколение, не знаю правильно сделал или нет, но больше не полезу
Код
let
    Source =  let
                 a = (a) => 
                     List.Transform(
                         Excel.CurrentWorkbook(){[Name = a]}[Content][Столбец1], 
                         Text.From
                     )
              in
                 Table.FromColumns({a("Таблица1"), a("Таблица2")}),
    Index = Table.AddIndexColumn(Source, "Индекс", 0, 1),
    Filter = Table.SelectRows(Index, each [Column2] <> null and [Column2] <> ""),
    Custom1 = Table.AddColumn(
                  Filter, 
                  "a", 
                  each let
                          json     = Function.InvokeAfter(
                                         ()=> Json.Document(Web.Contents(
                                          "https://www.instagram.com/graphql/query/?query_hash=472f257a40c653c64c666ce877d59d2b&variables={""id"":"""&[Column1]&""",""first"":50,""after"":"""&[Column2]&"""}"
                                      )), #duration(0,0,0,5)), 
                     tbl       = Table.Combine(
                                      List.Transform(json[data][user][edge_owner_to_timeline_media][edges], each Table.FromRecords({[node]?}))
                                  ),
                      transform = Table.ReplaceValue(tbl, null, null, 
                                      (a, b, c) => let
                                          a = if a is record 
                                                  then Record.ToList(a){0} 
                                                  else a,
                                          b = if a is list
                                              then if a{0}[node]? <> null
                                                  then a{0}[node][text]
                                                  else Table.FromRecords(a)
                                              else a
                                      in
                                          b, 
                                      {"edge_media_to_caption", "edge_media_to_comment", "edge_media_preview_like", "owner", "thumbnail_resources"}
                                  ),
                      expand    = Table.ExpandRecordColumn(transform, "dimensions", {"height", "width"}, {"dimensions.height", "dimensions.width"}),
                      columns   = List.Buffer(Table.ColumnNames(expand)),
                      indexed   = Table.ToRecords(Table.AddIndexColumn(expand,"i")),
                      records   = List.Transform(indexed,(r)=>Record.RenameFields(Record.RemoveFields(r,"i"),List.Zip({columns,List.Transform(columns, each Text.From(r[i])&"|"&_)})))
                  in 
                      if Table.RowCount(tbl) > 0 then Table.FromRecords({Record.Combine(records)}) else #table({"dummy"},{{null}})
              ),
    Merge = Table.NestedJoin(Index,{"Индекс"},Custom1,{"Индекс"},"Custom1",JoinKind.LeftOuter),
    Expand = Table.ExpandTableColumn(Merge, "Custom1", {"a"}, {"a"}),
    #"Changed Type" = Table.TransformColumns(Expand,{{"a", each if _=null then #table({"dummy"},{{null}}) else _}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type",{{"Индекс", Order.Ascending}}),
    #"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Индекс"}),
    Custom2 = Table.Combine(
                  Table.ReplaceValue( #"Removed Columns", each [Column1], each [Column2], 
                      (a, b, c) => Table.AddColumn(Table.AddColumn(a, "ID владельца", each b), "after", each c), 
                      {"a"}
                  )[a]
              ),
    Demote  = Table.DemoteHeaders(Table.RemoveColumns(Custom2,{"dummy"},2)),
    Transp  = Table.Transpose(Demote),
    Split   = Table.SplitColumn(Transp, "Column1", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), 2),
    Replace = Table.ReplaceValue(Split,"id","ID публикации",Replacer.ReplaceValue,{"Column1.2"}),
    Result  = Table.Transpose(Replace)
in
    Result
 
Михаил Л, Спасибо за помощь Михаил! :)  
Впитываю знания, как борщ после тренировки ^^)
 
Робятки... Тему удалить со всей помощью или кто-то все-таки соизволит предложить адекватное название темы? А ведь удалю. Ни рука не дрогет, ни сердце не сожмется :) Потому как...
Цитата
Ошибка в запросе PQ, Не работает запрос
По любой ошибке либого запроса можно разместить здесь вопрос...
А автор получит бан за то, что после неоднократного замечания ... плевать хотел на замечания!
 
Название темы: Power Query - при пустых значениях для подстановки избежать ошибок в работе запроса
 
Михаил предложил тему, на эту поменяйте  
Впитываю знания, как борщ после тренировки ^^)
Страницы: 1
Наверх