выборкой. На ней всë работает, но глохнет на полном датасете в 33к строк.
Проблемные шаги обозначены приставкой PROBLEM.
Вопрос #1 в том, можно ли оптимизировать регулярку в пользовательской функции? Например, чтобы она не запускалась на каждой строке с данными, а каким-то образом один раз обрабатывала полный столбец?
Проблема #2 может и не проблема вовсе, но если чей-то цепкий взгляд сможет предложить, как второй PROBLEM шаг оптимизировать, буду крайне благодарен.
регулярку оптимизировать нельзя - оптимизация состоит в отказе от регулярок (x as text)=> let lst = Text.SplitAny(x," :,"), nums ={"0","1","2","3","4","5","6","7","8","9"}, starts=List.Buffer(List.Skip(nums,5)), tr=List.Transform(lst,(i)=>Text.Select(i,nums)), rem = Text.Combine(List.Distinct(List.Select(tr,(i)=>Text.Length(i)=10)),", ") in rem
Огромное спасибо! В отличие от стандартной регулярки - я так и не смог понять, как это работает, видимо всë-таки постичь М мне не дано 🥲
Миша, а starts ты не забыл применить?
А куда его воткнуть? Я так понял в последний шаг, но поскольку не понимаю, что происходит в этой функции примерно с середины, не уверен что смогу поправить самостоятельно.
я показал принцип - там вообще не по одному документу по строке может быть
То что там несколько находит это не проблема, главное чтобы лишнее не принималось за документ, то что начинается на 0-4 это мусор
(x as text)=> let lst = Text.SplitAny(x," :,"), nums ={"0","1","2","3","4","5","6","7","8","9"}, starts=List.Buffer(List.Skip(nums,5)), tr=List.Transform(lst,(i)=>Text.Select(i,nums)), rem = Text.Combine(List.Distinct(List.Select(tr,(i)=>Text.Length(i)=10 and List.Contains(starts,Text.Start(i,1)))),", ") in rem
Ещë раз благодарю, на тестовом значении 2.... теперь корректно отработало! 😮💨😮💨😮💨
Обсуждают сегодня