Страницы: 1
RSS
Power Query: как в Value.Metadata передать название источника текстовой переменной
 
Есть таблицы созданые запросом  EOD_Выбор и TimberLog_Выбор
Код
let
    tablename="Настройка_TimberLog",
    Steep="TimberLog",
    ВыборПараметр= Steep & "_Выбор",


    Объединение = fnBeautiful_Join(tablename,Steep),
    NewColumnName = Value.Metadata(Объединение)[NewColumnName],
  ОбъединениеВыбор = Table.NestedJoin(Объединение,{"Продукция_Порода"},Выбор(ВыборПараметр),{NewColumnName},"Выбор.1",JoinKind.LeftOuter),
   РазвернутьТолькоВыбор= Table.ExpandTableColumn(ОбъединениеВыбор, "Выбор.1", {"Выбор"}, {"Выбор"}),
   resultat=РазвернутьТолькоВыбор meta [NewColumnName=NewColumnName]
in
 //Объединение
resultat
Как правильно получить NewColumnName передавши Steep & "_Выбор"

let
Steep="EOD",
//Steep="TimberLog",
   z=EOD_Выбор,
   Источник = Выбор(Steep & "_Выбор"),//=EOD_Выбор=z
   #"Строки с примененным фильтром" = Table.SelectRows(Источник, each ([Выбор] = "a")),
   z=EOD_Выбор,
//Работает
NewColumnName=Value.Metadata(EOD_Выбор)[NewColumnName],
NewColumnName=Value.Metadata(z)[NewColumnName],
// НЕ Работает
NewColumnName=Value.Metadata(Steep & "_Выбор")[NewColumnName],
NewColumnName=Value.Metadata(Источник)[NewColumnName],

  // Источник
   #"Другие удаленные столбцы" = Table.SelectColumns(#"Строки с примененным фильтром",{NewColumnName})
in
   #"Другие удаленные столбцы"
"Правильно заданный вопрос,половина ответа!"
 
Доброе время суток
Цитата
volond75 написал:
Как правильно получить NewColumnName передавши Steep & "_Выбор"
Честно говоря, ничего не понятно. Не могли бы вы описать что вы хотите сделать, вместо того как вы это пытаетесь сделать?
 
Ну, в справке написано:
Цитата
Metadata records are not preserved when a value is used with an operator or function that constructs a new value. For example, if two text values are concatenated using the & operator, the metadata of the resulting text value is an empty record [].
 
Код
Источник = Выбор(Steep & "_Выбор")

вот там что за функция? она должна возвращать результат с метой. Иначе мета запроса на входе в нее теряется, не наследуется.
F1 творит чудеса
 
вот так передается:
Код
// Query1
let
    Source = #table(type table [Name=text, Value = number],{{"a",1},{"b",2}}) meta [X=99]
in
    Source

// SelectQuery
(name as text)=> let
    Source = Expression.Evaluate(name, #shared)
in
    Source

// Query2
let
    Source = Value.Metadata(SelectQuery("Query1"))[X]
in
    Source

Если у вас мета теряется, возможно, в функции Выбор у вас какие-то преобразования, которые мету того, фьють
Изменено: Максим Зеленский - 07.05.2018 13:37:28
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
в функции Выбор у вас какие-то преобразования
Я тут еще раз повторил
Код
/*Выбор   
Получаем ссылку на умную таблицу Ехсel и приводим тип столбцов по первой строке
Используются функции
Excel_CurrentWorkbookName
Table_TableColumnTypesToFirstRowsTypes
*/
   (tablename as text)=>
let
   // tablename="Продукция_Порода_TimberLog_Выбор",
    fnName="Excel.CurrentWorkbookName",
    fn= Load(fnName),
//---------------------------------------------
table=Function.Invoke(fn,{tablename}),
 NewColumnName=Value.Metadata(table)[NewColumnName],
ТипПоПервойСтроке =Table_TableColumnTypesToFirstRowsTypes(table),
resultat=ТипПоПервойСтроке meta [NewColumnName=NewColumnName]
in
   resultat
Изменено: volond75 - 07.05.2018 15:47:04
"Правильно заданный вопрос,половина ответа!"
 
Цитата
Максим Зеленский написал:
// SelectQuery(name as text)=> let    Source = Expression.Evaluate(name, #shared)in    Source
Помогло !!!!!!
"Правильно заданный вопрос,половина ответа!"
 
копаем дальше
Цитата
volond75 написал:
Код
fnName="Excel.CurrentWorkbookName"

table=Function.Invoke(fn,{tablename})
вот эта функция возвращает правильную мету? преобразуйте функцию в обычный запрос без аргумента и проверьте.
F1 творит чудеса
 
volond75, на всякий случай, имейте ввиду, что #shared не будет работать с автоматическим обновлением (по расписанию) в Power BI
F1 творит чудеса
 
Power BI Не использую , пока !!!!!

Задача следущая:
есть две таблици ,
Продукция_TimberLogПорода_TimberLog
Продукция
Порода
Фансировинадуб
Пиловникясен
Балансиклен
Техсировина липа
Техсировина для   ВТПграб
вільха
из столбцов Продукция_TimberLog[Продукция] и  Порода_TimberLog[Порода]
необходимо  декартово произведение
как здесь
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=89478&am...

Для описания создана таблица Настройка_TimberLog
где в шаге будет описываться параметры декартового произведения
Настройка_TimberLog
NameNameTableLNameColumnLNameTableRNameColumnR
TimberLogПродукция_TimberLogПродукцияПорода_TimberLogПорода
EODПродукціяНайменуванняПородаПорода_Lower
также обьеденим значения полученых столбцов и получим что то типа такое
NameColumnLNameColumnRПродукция_Порода
ФансировинадубФансировина   дуб
ФансировинаясенФансировина ясен
ФансировинакленФансировина   клен
ФансировиналипаФансировина липа
ФансировинаграбФансировина   граб
ФансировинавільхаФансировина вільха
ПиловникдубПиловник   дуб
ПиловникясенПиловник ясен
ПиловниккленПиловник   клен
используя этот способ
http://excelvba.ru/code/checkboxes

  • без использования Checkbox - галочки (отметки) ставятся макросом
    (с использованием шрифта Marlett) отобрать только нужные значения
и эту статью

http://exceleratorbi.com.au/self-referencing-tables-power-query/

получаем
Декартово произведение TimberLog_Выбор и Выбор в ячейке
NameColumnLNameColumnRПродукция_ПородаВыбор
ФансировинадубФансировина дуб
ФансировинаясенФансировина ясенa
ФансировинакленФансировина   кленa
ФансировиналипаФансировина липаa
ФансировинаграбФансировина   грабa
ФансировинавільхаФансировина вільхаa
ПиловникдубПиловник дубa
ПиловникясенПиловник ясенa
получить через запрос список постановки для столбца таблицы
Продукция_Порода
Фансировина ясен
Фансировина клен
Фансировина липа
Фансировина граб
Фансировина вільха
Пиловник дуб
Пиловник ясен
Пиловник клен
Изменено: volond75 - 07.05.2018 19:35:24
"Правильно заданный вопрос,половина ответа!"
Страницы: 1
Наверх