:: Visual Foxpro, Foxpro for DOS
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 тысяч записей
Хочу попробовать импортировать все в Оракл
и там сделать, но не уверен, что это тоже покатит
по времени.
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
boba
Хочу попробовать импортировать все в Оракл

Может лучше в MS-SQL?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Там в обоих можно,
но по второй координате у меня прорва полей,
а их нужно что в Оракл что в MS SQL писать
явно список полей для pivot. То есть все варианты полей по второй переменной.
На работе я все это склеивал динамически,
но с удаленки перенести не могу,
придется писать с нуля.
Не могу, почему я не могу заставить это делать быстро ФОКС.



Исправлено 1 раз(а). Последнее : boba, 05.04.21 10:37
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
boba
Не могу, почему я не могу заставить это делать быстро ФОКС.

По удаленке?
Так фокс вроде ж именно в этом проигрывает выполняемому запросу на том же SQL-сервере.
Или что имелось в виду?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Фокс не проигрывает
Я как-то давненько упражнялся на скорости
запросов на фоксе и на Оракл и MS SQL
Если на фоксе есть верные для запроса индексы,
он редко когда от серверов отстает.
Дистинк для удаления дублей в упомянутой мной таблице
он сделал сделал меньше минуты.
Дубли там были.
Исходный текстовый файл я качал с инета за 10 проходов
Больше года было скачать нельзя, потом клеил в один файл руками
в редакторе. Повторы там встречались многократно.
Где сейчас это мне нужно, не есть удаленка.
На удаленке у меня есть своя собственная нехилая процедура склейки будущего
текста запроса именно на Оракл так, что список полей туда готовиться динамически.
Ratings: 0 negative/0 positive
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
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Примерно так и делал вчера.
Медленно , учитывая объем файла
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Фокс быстро работает, пока нет кэширования файла на диск,
все держится в оперативной памяти,
а как есть кэширование, реальные тормоза.
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
И проиндексировать. Или положить в Collection

Тут фишка! Я Collection редко использую, но тут бы воспользовался.

Для этих 2-х (курсор или Colltction) надо для строк помнить предыдущую пару!
Типа "2005-10-24T02:30:00" -> 1
И не искать, если "2005-10-24T02:30:00" не изменилась
Глянь, там они идут подряд
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
boba
Фокс быстро работает, пока нет кэширования файла на диск,
все держится в оперативной памяти,
а как есть кэширование, реальные тормоза.

Тут, вообще на мой взгляд, все и так нормально при курсорах. Индекс дай по первому (и единственному) полю.
И твой Locate for будет летать!
Collection даже вне подозрения (как жена Юлия Цезаря)

У меня было совсем другое, но общее тут - скорость.
Как-то я там на Collection её существенно улучшил!



Исправлено 2 раз(а). Последнее : Ydin, 05.04.21 15:35
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
идут подряд, я сам такой индекс поставил
И по времени монотонную сортировку и по второй переменной
есть индекс
Сейчас пытаюсь новый вариант писать
Ясно, что Оракл и ms sql это бы в pivot
скушали, не кушают такой массивный импорт
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Володя, они тут и на фиг не нужны - простая задача
Хочешь, кинь мне на личку таблицу типа
CDT,FR,AML
как сам назвал ее.
Можешь ее исказить для секретности. К-во только дай!
Уверен, что легко получится.
Причем из 2-х вариантов напишу через курсоры, это быстрее.
А с массива в Фоксовский курсор - как легко.
Проблема после 254 поля.
Это еще если такое будет



Исправлено 5 раз(а). Последнее : Ydin, 09.04.21 22:20
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
идут подряд, я сам такой индекс поставил
Да, его и программою без проблем.
Кинуть в курсор и отсортировать...
Аж руки чешутся. И, конечно, мне ничего не надо, только убрать зуд с рук!

А не кинешь, то напишу на том, что ты уже написал...
А потом сравним. Единственное - я с Ораклом давно не работаю и у меня его нет. Только с MySQL последние годы



Исправлено 5 раз(а). Последнее : Ydin, 05.04.21 16:15
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
напиши в личку почту , все пришлю
Это шумы айрис на станции Гарм.
Сделаешь, когда дойдет до публикации,
тебя туда впишем, если конечно будешь не против
это фоксовый файл
Импорт в оракл умер так же как и в ms sql



Исправлено 1 раз(а). Последнее : boba, 05.04.21 16:24
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
boba
Импорт в оракл умер так же как и в ms sql
Странно... В том виде, что в первом посте должен был на ура слопать. Поделись файликом, поэкспериментирую.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
ssa
boba
Импорт в оракл умер так же как и в ms sql
Странно... В том виде, что в первом посте должен был на ура слопать. Поделись файликом, поэкспериментирую.

Там на выходе в каком формате нужно ?
Если число полей по ширине больше 255 - то текстовик напрашивается (csv)

Я бы тоже погонял на VFPA - это зверь

Недавно заливал в dbf из csv ~140 млн строк - размер таблицы на выходе ~7 Gb
Был приятно удивлен скоростью на своем ноуте - несколько минут (включая индексацию)

ps Увидел
Цитата:
в итоге нужен текстовый файл формата csv

[attachment 35225 123_1.png]


------------------
Тяжело согнать курсором муху с монитора ...




Исправлено 1 раз(а). Последнее : Равиль, 05.04.21 21:01
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Что-то получилось на тех твоих данных.
Я так отвык писать под Фоксом просто, а не на своем Фреймворке.
Код кину прям тут, если что скажи, хорошо.
Там первое сообщение - время. Оно в нуле на таких данных, понятно.
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Понял так, что первая колонка - код по строке.
Вторая - код для колонки.
Третья заполнитель - собственно данные
Первые 2 колонки - текстовые, 3-я - числовые, тут через текст

Да, сейчас вижу - Pivot чистый. С таблицы (матрицы) слепок. И надо перевернуть.
У меня есть электронные таблицы свои. Там у меня встроенный Pivot.
Но уже забытое для меня. Обжали нас там.
Но там грид переворачивался! С хидерами и левой колонкой грида взамен этому наоборот.
Еще в диаграммах переворачивал... Но нашим оно не интересно, типа да, крутая экзотика, но за это не платят.



Исправлено 4 раз(а). Последнее : Ydin, 06.04.21 08:30
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Айрис-шумы! Понятия не имею о чем это тут
Ratings: 0 negative/0 positive
Re: pivot x2tab на большой таблице
Равиль

Сообщений: 6549
Откуда: Уфа
Дата регистрации: 01.08.2003
boba
Фокс не проигрывает ...

Володя у меня на все про все ушло 4 минуты
включая создание и заполнение таблицы как у тебя (20 млн записей),
сортировку и сборку в массив и выгрузку в csv


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика