Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Table.NestedJoin по разной длине текста в ячейке
 
Добрый вечер, уважаемые Гуру, у меня стоит задача объединить две таблицы по одной из колонок. Вроде все просто, применяем Table.NestedJoin и радуемся. в исходной таблице данные всегда одной ширины (7 цифр), а в справочнике 6 и 5 цифр. Можно, конечно обрезать столбец и объединить по отдельности, но получается очень тяжелый запрос.
Как в Table.NestedJoin(Таблица1, {"Номер"}, Таблица2, {"Номер"}, "Таблица2", JoinKind.LeftOuter)
вместо столбца указать его же, но обрезанным до 5 или 6 цифр
Файл пример во вложении
 
Цитата
Денис написал:
Можно, конечно обрезать столбец и объединить по отдельности, но получается очень тяжелый запрос
То есть решение у вас есть.
Цитата
Денис написал:
Как в Table.NestedJoin(Таблица1, {"Номер"}, Таблица2, {"Номер"}, "Таблица2", JoinKind.LeftOuter)
вместо столбца указать его же, но обрезанным до 5 или 6 цифр
Я бы сделал так: объединил бы справочники, перемножил бы таблицы функцией Table.Join, отфильтровал бы строки содержащие значения справочников в исходнике, затем уже ваше - Table.NestedJoin(Таблица1, {"Но..
 
Михаил. Просто объединение со справочником ничего не даст, так как в исходнике 7 цифр, а в справочнике 5 или 6.
Как я уже писал можно обрезать исходные данные до 6 цифр - перемножить, потом обрезать до 5 - перемножить. Это работает.
Но при больших объемах данных, и большом количестве таких процедур, у меня возникает перегрузка. Причем на достаточно мощном компьютере, пока не понимаю почему.
Подозреваю что мне нужно что-то типа Table.NestedJoin(Таблица1, Text.Start(Text.From("Номер"),6), Таблица2, {"Номер"}, "Таблица2", JoinKind.LeftOuter)
т.е. вместо просто столбца "номер" исходника, только первые шесть цифр. Но как сделать так чтобы оно заработало, я не могу понять
 
Доброе время суток.
Вариант.
 
Андрей, у меня примерно так и реализовано. Но, так как сравниваемых столбцов несколько и данных много почему-то выполнение этого запроса приводит к перегрузке Mashup контейнеров. Причем если запускать запрос вручную, он через какое-то время оживает, а если через vba, то наглухо зависает вся система.
 
Цитата
Денис написал:
а если через vba, то наглухо зависает вся система.
Странно, что я делаю не так (файл уже не влазит)? Но, порядка 1000000 таблица на 7 знаков, 500000 на 6 знаков, почти 40000 на 5 знаков. Обновляется минуту полторы.
 
Даа, вы правы, перебрал запрос на два раза. Систему загружает не этот запрос, а предыдущий в файле. Причем он обновляется довольно быстро (пару минут), но оставляет после себя открытые непустые mashup. Первый раз с таким сталкиваюсь....
Как вообще такое может быть, запросы все выполнены, а контейнеры не пустые???
 
Цитата
Денис написал:
Как вообще такое может быть, запросы все выполнены, а контейнеры не пустые???
Вы прям на столько уверены в программистах MS, что не даете им шанса на криворукий код?  ;)
Вот эта галка в вашей книге с запросом включена? Если да, то выключьте.
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо за подсказку, у меня office 2016, таких настроек не нашел. Да и я уже пересобрал весь файл, так как в прошлом, я видимо чего-то перемудрил.
Давно хотел оптимизировать... Уменьшил код на 30%, отбросил пару лишних запросов. Файл летает - всего три минуты на обновление, против 20 в прошлом.
Страницы: 1
Читают тему (гостей: 3)
Наверх