Я хочу написать функцию для очистки номеров. Оставляя их как текст.
Итак, в своих запросах я хочу использовать, например:
= CleanRN(PrevQueryTable, {"NumericTextColumn"})
Функция должна удалить все нечисловые c символы и начальные нули в не уже цифры 1047 * текстов. (Но функция не в этом вопросе.)
Так что в самих запросах я могу go с
= Table.ReplaceValue(Benutzerdefiniert2,"_","",Replacer.ReplaceText,{"ONKZ/RufNr"})
или
= Table.ReplaceValue(#"Ersetzter Wert1", each try Number.From([RUFNUMMER]) otherwise true, each Text.TrimStart(Text.Select([ZMM_onkz], {"0".."9"}),"0")) ,Replacer.ReplaceValue,{"RUFNUMMER"})
или что-то похожее.
Но я хочу обернуть в функцию для повторного использования и лучшего чтения. (И лучшее понимание M)
Мой первый go:
(Tbl_InputTable as table, Txt_Column as text) as table => let
Result = Table.ReplaceValue(
Tbl_InputTable,
each try Number.From(Table.Column(Tbl_InputTable, Txt_Column)) otherwise true,
each Text.TrimStart(Text.Select(Table.Column(Tbl_InputTable, Txt_Column), {"0".."9"}),"0"),
Replacer.ReplaceValue,
{Txt_Column}
)
in
Result
Это не сработало по известной теперь причине, что [col] и Table.Column () не равны.
Итак, я go снова:
= (Tbl_InputTable as table, Lst_Column as list) as table => let
Result = Table.TransformColumns(
Tbl_InputTable,
List.Transform(
Lst_Column,
each {_, Text.TrimStart(Text.Select(_, {"0".."9"}), "0")}
)
)
in
Result
, что не удается с
Fehler in der Abfrage ''. Expression.Error: Der Wert """" kann nicht in den Typ "Function" konvertiert werden.
Что довольно хорошо и не совсем удивительно - я предполагаю - поскольку _ ссылается на элементы Lst_Column.
ОБНОВЛЕНИЕ: 3-я попытка
(Tbl_InputTable as table, Lst_Column as list) as table => let
Result = Table.TransformColumns(
Tbl_InputTable,
List.Transform(
Lst_Column,
each {
_,
Table.TransformColumns(
Tbl_InputTable,
{
_,
each Text.TrimStart(Text.Select(_, {"0".."9"}),"0")
}
)
}
)
)
in
Result
Итак, я надеялся оборачивая его во второй Table.TransformColumns в go на один уровень глубже, чтобы _ ссылался на элементы столбца. Но нет.
Неописательная ошибка:
Fehler in der Abfrage ''. Expression.Error: Ein Wert vom Typ "Table" kann nicht in den Typ "Function" konvertiert werden.
Итак. Как использовать функции внутри функций? Как я могу ссылаться на столбец как [column], если у меня есть только «column»?