Есть большой массив данных, который не влазит на лист, - masiv(i,7) т.е. 7 столбцов и очень много строк... как из него сделать кэш для сводной у меня есть мысль
[vba]
Код
Dim objPivotCache As PivotCache Set objPivotCache = ActiveWorkbook.PivotCaches.Add(xlExternal)
' А вот как передать masiv(i,7) в objPivotCache??? ' Строим сводную на лист1 With wsPivot objPivotCache.CreatePivotTable TableDestination:=sheets("Лист1").Range("a1") End With
[/vba]
Может кто знает как это сделать??? без выгрузки в промежуточные файлы типа (txt) ?
Есть большой массив данных, который не влазит на лист, - masiv(i,7) т.е. 7 столбцов и очень много строк... как из него сделать кэш для сводной у меня есть мысль
[vba]
Код
Dim objPivotCache As PivotCache Set objPivotCache = ActiveWorkbook.PivotCaches.Add(xlExternal)
' А вот как передать masiv(i,7) в objPivotCache??? ' Строим сводную на лист1 With wsPivot objPivotCache.CreatePivotTable TableDestination:=sheets("Лист1").Range("a1") End With
[/vba]
Может кто знает как это сделать??? без выгрузки в промежуточные файлы типа (txt) ?SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Понедельник, 30.09.2013, 16:54
до 10 млн. ... но хотелось бы обойтись без aсcess. думаю создать из массива внешнее подключение и считать с него через рекордсет в pivot cash. это поартикульные парные продажи... т.е. как продается товар с другими товарами. а далее из этой кучи строю сводную(получается своего рода рейтинг товаров для каждого товара). на самом деле это могут быть любые данные обработанные в массиве... основной вопрос как из массива сделать внешнее подключение в книге,на основании которого можно построить сводную таблицу.
до 10 млн. ... но хотелось бы обойтись без aсcess. думаю создать из массива внешнее подключение и считать с него через рекордсет в pivot cash. это поартикульные парные продажи... т.е. как продается товар с другими товарами. а далее из этой кучи строю сводную(получается своего рода рейтинг товаров для каждого товара). на самом деле это могут быть любые данные обработанные в массиве... основной вопрос как из массива сделать внешнее подключение в книге,на основании которого можно построить сводную таблицу.SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Понедельник, 30.09.2013, 22:33
Поделюсь опытом Стояла задача из 8 млн строк получить сводные данные. Аccess не подойдет для такого объема данных.пробовал, 30 минут ждал и не получил результата Попробовал в Mysql,он через 5 минут упал. Попробовал все это проделать в MSSQL2008, получилось, затрачено было 4 минуты на обработку. Есть одно НО,запрос надо отрабатывать в Management Studio и потом экспортировать результат в файл.
Поделюсь опытом Стояла задача из 8 млн строк получить сводные данные. Аccess не подойдет для такого объема данных.пробовал, 30 минут ждал и не получил результата Попробовал в Mysql,он через 5 минут упал. Попробовал все это проделать в MSSQL2008, получилось, затрачено было 4 минуты на обработку. Есть одно НО,запрос надо отрабатывать в Management Studio и потом экспортировать результат в файл.doober
а как передать эти данные в Management Studio?(и нужно ли мне это) У меня уже есть сформированный массив, мне нужно передать его во внешнее подключение. В моем файле запрос уже отработан через innerJoin... я его передал в массив, добавил одну колонку... а вот как запихнуть этот самый массив обратно в внешнее подключение???
а как передать эти данные в Management Studio?(и нужно ли мне это) У меня уже есть сформированный массив, мне нужно передать его во внешнее подключение. В моем файле запрос уже отработан через innerJoin... я его передал в массив, добавил одну колонку... а вот как запихнуть этот самый массив обратно в внешнее подключение???SLAVICK
Разговор идет пока в темную. Данные где находятся? Текст запроса каков? Возможно есть смысл на стороне сервера создать временную таблицу и с нее получить свод. Быстрее будет выполняться все на стороне сервера.
Разговор идет пока в темную. Данные где находятся? Текст запроса каков? Возможно есть смысл на стороне сервера создать временную таблицу и с нее получить свод. Быстрее будет выполняться все на стороне сервера.doober
sSQL = "Select T4.Main,T4.WithIt,T4.Rate,T4.OneGroup,T4.SecondGroup,Sum(T5.Amount) As MainSum From" sSQL = sSQL & " (Select T1.Article As Main, T3.Article As WithIt,T3.AGroup As OneGroup,T1.AGroup As SecondGroup, Count(*) As Rate" sSQL = sSQL & " From ([Articles$] As T1" sSQL = sSQL & " Inner Join [Sales$] As T2 On (T1.Article=T2.Article))" sSQL = sSQL & " Inner Join [Sales$] As T3 On (T2.Check=T3.Check)" sSQL = sSQL & " Where (T3.Article<>T1.Article)" sSQL = sSQL & " Group By T1.Article, T3.Article, T1.AGroup, T3.AGroup) As T4,[Sales$] As T5,[Sales$] As T6" sSQL = sSQL & " Where ((T4.Main=T5.Article) And (T4.WithIt=T6.Article) And (T5.Check=T6.Check))" sSQL = sSQL & " And (T4.OneGroup=T6.AGroup) And (T4.SecondGroup=T5.AGroup) Group By T4.Main,T4.WithIt,T4.OneGroup,T4.SecondGroup,T4.Rate" sSQL = sSQL & " Order By T4.Rate Desc,T4.Main,T4.OneGroup,T4.SecondGroup"
[/vba] этот выполненный запрос передаю в массив, и добавляю один столбец, затем хочу на основе нового массива - создать новое подключение
[vba]
Код
sSQL = "Select T4.Main,T4.WithIt,T4.Rate,T4.OneGroup,T4.SecondGroup,Sum(T5.Amount) As MainSum From" sSQL = sSQL & " (Select T1.Article As Main, T3.Article As WithIt,T3.AGroup As OneGroup,T1.AGroup As SecondGroup, Count(*) As Rate" sSQL = sSQL & " From ([Articles$] As T1" sSQL = sSQL & " Inner Join [Sales$] As T2 On (T1.Article=T2.Article))" sSQL = sSQL & " Inner Join [Sales$] As T3 On (T2.Check=T3.Check)" sSQL = sSQL & " Where (T3.Article<>T1.Article)" sSQL = sSQL & " Group By T1.Article, T3.Article, T1.AGroup, T3.AGroup) As T4,[Sales$] As T5,[Sales$] As T6" sSQL = sSQL & " Where ((T4.Main=T5.Article) And (T4.WithIt=T6.Article) And (T5.Check=T6.Check))" sSQL = sSQL & " And (T4.OneGroup=T6.AGroup) And (T4.SecondGroup=T5.AGroup) Group By T4.Main,T4.WithIt,T4.OneGroup,T4.SecondGroup,T4.Rate" sSQL = sSQL & " Order By T4.Rate Desc,T4.Main,T4.OneGroup,T4.SecondGroup"
[/vba] этот выполненный запрос передаю в массив, и добавляю один столбец, затем хочу на основе нового массива - создать новое подключениеSLAVICK
Могу предложить хранимую процедуру для MSSQL,если вы с ним работаете. Создает временную таблицу с допстолбцом+заполняет данными на основе вашего запроса. Типы полей сами подправите Запрос на выполнение в коментах в скрипте.Вам осталось заполнить допстолбец и получить сводную
Могу предложить хранимую процедуру для MSSQL,если вы с ним работаете. Создает временную таблицу с допстолбцом+заполняет данными на основе вашего запроса. Типы полей сами подправите Запрос на выполнение в коментах в скрипте.Вам осталось заполнить допстолбец и получить своднуюdoober
Спасибо... пока не приходилось работать с MSSQL. попробую. А все таки не пойму неужели нельзя никак передать массив в sql запрос в книге и создать из него кэш для сводной таблицы?
Спасибо... пока не приходилось работать с MSSQL. попробую. А все таки не пойму неужели нельзя никак передать массив в sql запрос в книге и создать из него кэш для сводной таблицы?SLAVICK
А все таки не пойму неужели нельзя никак передать массив в sql запрос в книге и создать из него кэш для сводной таблицы?
Вам же и объясняют, что это делать незачем... Ведь вы всё равно сначала выполняете запрос на стороне сервера (чтобы получить "массив данных"), затем нагружаете сеть передачей этого немаленького массива, а затем ещё и нагружаете ресурсы ПК обработкой этого массива. Вместо того, чтобы сразу же первым запросом на сервере получить только необходимые данные, только их переслать на станцию, и, соответственно, сразу же по ним получить результат.
А все таки не пойму неужели нельзя никак передать массив в sql запрос в книге и создать из него кэш для сводной таблицы?
Вам же и объясняют, что это делать незачем... Ведь вы всё равно сначала выполняете запрос на стороне сервера (чтобы получить "массив данных"), затем нагружаете сеть передачей этого немаленького массива, а затем ещё и нагружаете ресурсы ПК обработкой этого массива. Вместо того, чтобы сразу же первым запросом на сервере получить только необходимые данные, только их переслать на станцию, и, соответственно, сразу же по ним получить результат.AndreTM
Есть зачем:) не обязательно для этого примера, а, например, происходит действие в массиве, и его нужно сохранить в книге, а на лист не влазит... или влазит, но не хочется выгружать эти данные ну и т.д.
Есть зачем:) не обязательно для этого примера, а, например, происходит действие в массиве, и его нужно сохранить в книге, а на лист не влазит... или влазит, но не хочется выгружать эти данные ну и т.д. SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Четверг, 03.10.2013, 17:20