Текущее время: Чт, сен 11 2025, 00:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Длина ключевого поля больше 60 символов
СообщениеДобавлено: Пт, июн 22 2007, 12:48 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 22 2007, 12:42
Сообщения: 4
Господа.
На проекте BW возникла глобальная проблема: в исходной системе (не SAP) есть КЛЮЧЕВЫЕ поля длиной более 60 символов. Что делать?
Соединение признаков не подходит, т.к. длина соединения тоже не более 60 символов.
Применение атрибута подходит, но если первые 60 символов ключа одинаковые, то это не выход.

ЗЫ. Речь идет именно о КЛЮЧЕ, а не о длине текста.

Помогите! Или просто посочувствуйте :)
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 12:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Выход 1: Бейте на 2 (3, 4, ...) части. На каждую часть свой отдельный признак длиной 60. В отчетах склеивайте.
Выход 2: перекодировка. Каждый длинный ключ при загрузке перекодируется в поле длиной 60. Если нужно, то длинный ключ - в атрибуты этого поля длиной 60 (2, 3, ... атрибута).

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 13:44 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 22 2007, 12:42
Сообщения: 4
EVK написал(а):
Выход 1: Бейте на 2 (3, 4, ...) части. На каждую часть свой отдельный признак длиной 60. В отчетах склеивайте.
Выход 2: перекодировка. Каждый длинный ключ при загрузке перекодируется в поле длиной 60. Если нужно, то длинный ключ - в атрибуты этого поля длиной 60 (2, 3, ... атрибута).


Мы склоняемся ко второму варианту, хотелось бы спросить - Вы им пользовались? Или просто решили поразмышлять на заданную тему? :)
Если пользовались, то раскройте тайну алгоритма перекодировки, хотя бы принцып...
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 14:14 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Гм... Такую злобную перекодировку делать (тьфу 3 раза через плечо) не приходилось :) Ну алгоритм то можно придумать... Самый тупой вариант - на стороне исходной системы пронумеровать (1, 2, 3 и т.п.) все длинные коды, номер внести в справочник, тоже на стороне исходной системы. При возникновении нового значения длинного кода в исходной системе обязательно давать новый номер, наименьший свободный.

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 14:58 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 22 2007, 12:42
Сообщения: 4
EVK написал(а):
Гм... Такую злобную перекодировку делать (тьфу 3 раза через плечо) не приходилось :) Ну алгоритм то можно придумать... Самый тупой вариант - на стороне исходной системы пронумеровать (1, 2, 3 и т.п.) все длинные коды, номер внести в справочник, тоже на стороне исходной системы. При возникновении нового значения длинного кода в исходной системе обязательно давать новый номер, наименьший свободный.


Манипуляции с исходной системой полностью исключены.
Я предположил, что под перекодировкой вы подразумевали сжатие кода ">60" в код "<=60"....
Ваш в"самый тупой вариант" не подходит, т.к. потребует огромных доработок исходной системы, которые ВООБЩЕ исключены. :(

Необходим нерандомный алгоритм сжатия небольшой строки (до 256) к длине не более 60, с гарантированным неповторяющимся результатом при сжатии различающихся строк.

Господа, есть гениальные идеи? Типа, арифметическое сжатие, двоичные деревья и т.д. и т.п....? :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 15:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, дек 27 2004, 13:48
Сообщения: 772
Откуда: от верблюда
Алгоритм то можно придумать :-) Только вот не пойму, а смысл какой?
Ну, хорошо, сожмете вы в 60. Дальше что? В отчетах у вас везде будут вылазить непонятные "сжатые" коды... Почему бы не пойти по варианту 1? Ведь все равно итог то будет одинаковый, чтобы в отчете вывести длинный код из исходной системы, нужно будет "склеивать" части по 60 символов...

_________________
Бросай курить, вставай на лыжи -
И вместо рака будет грыжа!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 16:10 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 22 2007, 12:42
Сообщения: 4
EVK написал(а):
Алгоритм то можно придумать :-) Только вот не пойму, а смысл какой?
Ну, хорошо, сожмете вы в 60. Дальше что? В отчетах у вас везде будут вылазить непонятные "сжатые" коды... Почему бы не пойти по варианту 1? Ведь все равно итог то будет одинаковый, чтобы в отчете вывести длинный код из исходной системы, нужно будет "склеивать" части по 60 символов...


Мне кажется, что по 2-му варианту будет меньше гемороя с отчетами...
В отчете по 2-му варианту выводим атрибуты (Вы же сами говорили, что если нужен исходный код полностью, то кладем его части в атрибуты :) ). с атрибутами ОДНОГО признака, ИМХО, проще работать чем с набором признаков.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 22 2007, 16:18 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
можно воспользоваться например таблицами перекодировки аля
часть ключа
0000 = A
0001 = B
...
принцип думаю понятен
тогда ключ BA развернется в 00010000
ну а поиск эффективных алгоритмов перекодировки для вашего случая это уже совсем другая тема.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 10:48 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
1. Таблица перекодировки. Типа псевдо-SID. Это самый надёжный путь.
2. Использовать сжатие в короткую форму получение хеш-функции.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ROWID
СообщениеДобавлено: Пн, июн 25 2007, 12:52 
Ассистент
Ассистент

Зарегистрирован:
Вс, янв 14 2007, 02:51
Сообщения: 47
Откуда: Москва
Можно использовать уникальный идентификатор записи в исходной системе, например, для Oracle это RowID. А ключи грузить как атрибут.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 25 2007, 12:53 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
max написал(а):
EVK написал(а):
Гм... Такую злобную перекодировку делать (тьфу 3 раза через плечо) не приходилось :) Ну алгоритм то можно придумать... Самый тупой вариант - на стороне исходной системы пронумеровать (1, 2, 3 и т.п.) все длинные коды, номер внести в справочник, тоже на стороне исходной системы. При возникновении нового значения длинного кода в исходной системе обязательно давать новый номер, наименьший свободный.


Манипуляции с исходной системой полностью исключены.


можно ведь таблицу перекодировки сделать и на стороне BW...

а по поводу алгоритмов сжатия - их уже напридумывали множество... но, имхо, лучше все таки использовать таблицу перекодировки.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB