pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Сам бывало на курсах по VFP в Интерфейсе про это рассказывал
Есть у меня в древности разработанный с Андреем Кориковым класс cros2x И в в Фоксе есть среди визардов pivot Однако, в том случае, что сейчас не катит ни то ни другое Есть у меня таблица типа CDT,FR,AML "2005-10-24T02:30:00","00052556","-52.49576939086657" "2005-10-24T02:30:00","00057312","-54.98925696601728" "2005-10-24T02:30:00","000625","-55.73734226570264" "2005-10-24T02:30:00","00068156","-58.18945916765168" "2005-10-24T02:30:00","00074325","-58.932776912763956" "2005-10-24T02:30:00","00081052","-60.660125743791355" "2005-10-24T02:30:00","00088388","-64.5748439857285" "2005-10-24T02:30:00","00096388","-65.30065690005208" "2005-10-24T02:30:00","00105112","-65.36637068470401" "2005-10-24T02:30:00","00114626","-66.68266864582051" "2005-10-24T02:30:00","00125","-67.77751784348831" Но записей в ней 14365745 Нужно, чтобы первая переменная шла по вертикали ( по записям) Вторая дала поля по горизонтали типа с00052556 Третья заполнила эту таблицу в итоге нужен текстовый файл формата csv Мой класс работал часов 12, сорвал его Фоксовый сначала заработал шустро, потом сказал, поставь старый ексел версии 5 Поставил, проконвертировано лимит старого ексел записей, что-то около 64 тысяч записей Хочу попробовать импортировать все в Оракл и там сделать, но не уверен, что это тоже покатит по времени. |
Re: pivot x2tab на большой таблице | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Может лучше в MS-SQL? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Там в обоих можно,
но по второй координате у меня прорва полей, а их нужно что в Оракл что в MS SQL писать явно список полей для pivot. То есть все варианты полей по второй переменной. На работе я все это склеивал динамически, но с удаленки перенести не могу, придется писать с нуля. Не могу, почему я не могу заставить это делать быстро ФОКС. Исправлено 1 раз(а). Последнее : boba, 05.04.21 10:37 |
Re: pivot x2tab на большой таблице | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
По удаленке? Так фокс вроде ж именно в этом проигрывает выполняемому запросу на том же SQL-сервере. Или что имелось в виду? ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Фокс не проигрывает
Я как-то давненько упражнялся на скорости запросов на фоксе и на Оракл и MS SQL Если на фоксе есть верные для запроса индексы, он редко когда от серверов отстает. Дистинк для удаления дублей в упомянутой мной таблице он сделал сделал меньше минуты. Дубли там были. Исходный текстовый файл я качал с инета за 10 проходов Больше года было скачать нельзя, потом клеил в один файл руками в редакторе. Повторы там встречались многократно. Где сейчас это мне нужно, не есть удаленка. На удаленке у меня есть своя собственная нехилая процедура склейки будущего текста запроса именно на Оракл так, что список полей туда готовиться динамически. |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Сразу через aline получить массив, скажем laArray
1. Список полей (первый столбец laArray) положить в курсор A1 с одним полем С помощью Distinct или Group by туда же вложить список. N1 - его длина И проиндексировать. Или положить в Collection 2. Список колонок (второй столбец laArray) положить в курсор A2 с одним полем С помощью Distinct или Group by туда же вложить список. N2 - его длина И проиндексировать. Или положить в Collection 3. Создать массив la(N1,N2) И обнулить его 4. Проход массива laArray по 3-му столбцу - определение № строки - определение № столбца - присваивание значения элементу матрицы 5. Смотрим на N2. Если он больше к-ва полей - ищем решение Иначе засовываем массив в курсор Исправлено 2 раз(а). Последнее : Ydin, 05.04.21 15:05 |
Re: pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Примерно так и делал вчера.
Медленно , учитывая объем файла |
Re: pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
Фокс быстро работает, пока нет кэширования файла на диск,
все держится в оперативной памяти, а как есть кэширование, реальные тормоза. |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Тут фишка! Я Collection редко использую, но тут бы воспользовался. Для этих 2-х (курсор или Colltction) надо для строк помнить предыдущую пару! Типа "2005-10-24T02:30:00" -> 1 И не искать, если "2005-10-24T02:30:00" не изменилась Глянь, там они идут подряд |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Тут, вообще на мой взгляд, все и так нормально при курсорах. Индекс дай по первому (и единственному) полю. И твой Locate for будет летать! Collection даже вне подозрения (как жена Юлия Цезаря) У меня было совсем другое, но общее тут - скорость. Как-то я там на Collection её существенно улучшил! Исправлено 2 раз(а). Последнее : Ydin, 05.04.21 15:35 |
Re: pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
идут подряд, я сам такой индекс поставил
И по времени монотонную сортировку и по второй переменной есть индекс Сейчас пытаюсь новый вариант писать Ясно, что Оракл и ms sql это бы в pivot скушали, не кушают такой массивный импорт |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Володя, они тут и на фиг не нужны - простая задача
Хочешь, кинь мне на личку таблицу типа
Можешь ее исказить для секретности. К-во только дай! Уверен, что легко получится. Причем из 2-х вариантов напишу через курсоры, это быстрее. А с массива в Фоксовский курсор - как легко. Проблема после 254 поля. Это еще если такое будет Исправлено 5 раз(а). Последнее : Ydin, 09.04.21 22:20 |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Кинуть в курсор и отсортировать... Аж руки чешутся. И, конечно, мне ничего не надо, только убрать зуд с рук! А не кинешь, то напишу на том, что ты уже написал... А потом сравним. Единственное - я с Ораклом давно не работаю и у меня его нет. Только с MySQL последние годы Исправлено 5 раз(а). Последнее : Ydin, 05.04.21 16:15 |
Re: pivot x2tab на большой таблице | |
---|---|
boba Автор Сообщений: 6269 Откуда: Медвежьи озера- Дата регистрации: 26.03.2001 |
напиши в личку почту , все пришлю
Это шумы айрис на станции Гарм. Сделаешь, когда дойдет до публикации, тебя туда впишем, если конечно будешь не против это фоксовый файл Импорт в оракл умер так же как и в ms sql Исправлено 1 раз(а). Последнее : boba, 05.04.21 16:24 |
Re: pivot x2tab на большой таблице | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Странно... В том виде, что в первом посте должен был на ура слопать. Поделись файликом, поэкспериментирую. ------------------ Лень - это неосознанная мудрость. |
Re: pivot x2tab на большой таблице | |
---|---|
Равиль Сообщений: 6549 Откуда: Уфа Дата регистрации: 01.08.2003 |
Там на выходе в каком формате нужно ? Если число полей по ширине больше 255 - то текстовик напрашивается (csv) Я бы тоже погонял на VFPA - это зверь Недавно заливал в dbf из csv ~140 млн строк - размер таблицы на выходе ~7 Gb Был приятно удивлен скоростью на своем ноуте - несколько минут (включая индексацию) ps Увидел Цитата: [attachment 35225 123_1.png] ------------------ Тяжело согнать курсором муху с монитора ... Исправлено 1 раз(а). Последнее : Равиль, 05.04.21 21:01 |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Что-то получилось на тех твоих данных.
Я так отвык писать под Фоксом просто, а не на своем Фреймворке. Код кину прям тут, если что скажи, хорошо. Там первое сообщение - время. Оно в нуле на таких данных, понятно. |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Понял так, что первая колонка - код по строке.
Вторая - код для колонки. Третья заполнитель - собственно данные Первые 2 колонки - текстовые, 3-я - числовые, тут через текст Да, сейчас вижу - Pivot чистый. С таблицы (матрицы) слепок. И надо перевернуть. У меня есть электронные таблицы свои. Там у меня встроенный Pivot. Но уже забытое для меня. Обжали нас там. Но там грид переворачивался! С хидерами и левой колонкой грида взамен этому наоборот. Еще в диаграммах переворачивал... Но нашим оно не интересно, типа да, крутая экзотика, но за это не платят. Исправлено 4 раз(а). Последнее : Ydin, 06.04.21 08:30 |
Re: pivot x2tab на большой таблице | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Айрис-шумы! Понятия не имею о чем это тут
|
Re: pivot x2tab на большой таблице | |
---|---|
Равиль Сообщений: 6549 Откуда: Уфа Дата регистрации: 01.08.2003 |
Володя у меня на все про все ушло 4 минуты включая создание и заполнение таблицы как у тебя (20 млн записей), сортировку и сборку в массив и выгрузку в csv ------------------ Тяжело согнать курсором муху с монитора ... |
© 2000-2024 Fox Club  |