powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Advanced LOCAL CUBE
10 сообщений из 10, страница 1 из 1
Advanced LOCAL CUBE
    #33038423
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Никто не связывался при создании локальных кубов через PTS, где SELECT из N таблиц из реляционного источника (MS SQL 2K) ?

Есть казус - PTS пытается парсить запрос и сам делает промежуточные запросы к источнику с целью получить данные для измерения. Таким образом есть теоретическая возможность, что локальный куб будет хранить данные измерения и фактов отдельно - связывая их по ключу (как и "большой" сервер), что резко уменьшает размер локального куба (а я за это очень борюсь)

Вообщем, при выполеннии этого селекта
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SELECT  
	trn.[Seller:Company!Key&Name],
	trn.[Seller:Branch!Key&Name],
	trn.[Seller:Seller!Key], 
	trn.[Seller:Seller!Name],

	trn.[Customer.General:Customer!Key], 
	trn.[Customer.General:Customer!Name],


	prod.PlmGroup 		[Product.Palma:Group!Name],
	prod.PlmSupplier		[Product.Palma:Supplier!Name],
	prod.PlmClass 		[Product.Palma:Class!Name],
	trn.[Product.Palma:Product!Key]		
					[Product.Palma:Product!Key], 
	prod.ProductName 	[Product.Palma:Product!Name],
	REPLACE(CAST(prod.[weight] AS VARCHAR( 10 )),',','.')  
					[Product.Palma:Product!Weight],
	prod.hCoef 			[Product.Palma:Product!hCoef],
	prod.Code 			[Product.Palma:Product!Code],
	prod.NoNDS 			[Product.Palma:Product!NoNDS],

	trn.[Calendar.YQMD:Year!Key],
	trn.[Calendar.YQMD:Year!Name],
	trn.[Calendar.YQMD:Month!Key],
	trn.[Calendar.YQMD:Month!Name],
	trn.[Calendar.YQMD:Day!Key],
	trn.[Calendar.YQMD:Day!Name],

	trn.[Measures:Продано себест, грн],
	trn.[Measures:Продано, шт],
	trn.[Measures:Базовая сумма, грн],
	trn.[Measures:Продано фин себест, грн],
	trn.[Measures:Продано с НДС, грн],
	trn.[Measures:Продано, грн],
	trn.[Measures:План продаж по поставщику, грн],
	trn.[Measures:План продаж по клиенту, грн]
FROM  tempDB.dbo.lcTransaction trn,  logistDM.dbo.tdProdHierarchies prod 
WHERE prod.ProductNo=trn.[Product.Palma:Product!Key]

PTS сам направляет запрос к источнику
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT  DISTINCT 
	prod.PlmGroup [Product.Palma:Group!Name], 
	prod.PlmSupplier [Product.Palma:Supplier!Name], 
	prod.PlmClass [Product.Palma:Class!Name], 
	trn.[Product.Palma:Product!Key] [Product.Palma:Product!Key], 
	prod.ProductName [Product.Palma:Product!Name] 
FROM logistDM.dbo.tdProdHierarchies prod, tempDB.dbo.lcTransaction trn
Все бы хорошо, что почему то теряет INNER JOIN на prod.ProductNo=trn.[Product.Palma:Product!Key], и запрос надолго валит сервер, да и неправильно это.
Как побороть пока не знаю, все перепробовал..
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33038504
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Torin
Код: plaintext
1.
FROM  tempDB.dbo.lcTransaction trn,  logistDM.dbo.tdProdHierarchies prod 
WHERE prod.ProductNo=trn.[Product.Palma:Product!Key]
почему то теряет INNER JOIN на prod.ProductNo=trn.[Product.Palma:Product!Key], и запрос надолго валит сервер, да и неправильно это.
Как побороть пока не знаю, все перепробовал..
нельзя потерять то, чего нет :-)
попробуйте вместо from/where написать INNER JOIN/ON
либо ещё вариант создать вьюшку в самой базе
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33038537
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Biryukov Torin
Код: plaintext
1.
FROM  tempDB.dbo.lcTransaction trn,  logistDM.dbo.tdProdHierarchies prod 
WHERE prod.ProductNo=trn.[Product.Palma:Product!Key]
почему то теряет INNER JOIN на prod.ProductNo=trn.[Product.Palma:Product!Key], и запрос надолго валит сервер, да и неправильно это.
Как побороть пока не знаю, все перепробовал..
нельзя потерять то, чего нет :-)
попробуйте вместо from/where написать INNER JOIN/ON
либо ещё вариант создать вьюшку в самой базе
Не понял что именно "нет" ?
"INNER JOIN/ON" не кушаемс, синтаксис не позволяет - пробовал, ругается, да и в BNF прямо указано, что так нельзя

А въюшку на чем сделать ?. К одной строке нельзя приводить, тогда он просто кладет строки в куб, и его размер получается на порядок большим, чем тоже чамое в "большом" кубе
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33038624
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мутный случай
кто генерит текст запроса? кто его выполняет? как связаны PTS и MS SQL 2k ?
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33038680
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый запрос - последняя часть запроса создания локального куба. Его выполняет VB приложение через ADO, а ADO в свою очередь, поднимает для этого PTS
Второй запрос - можно словить профалером только - его в том же контексте запускает сам PTS, когда парсит первый запрос.

Самое любопытное, что если в первом запросе все поля для измерения продуктов брать из таблицы измерения (logistDM.dbo.tdProdHierarchies) (а не так как сейчас - ключ из таблицы факта, остальное - из таблицы измерния), то куб процессится, ничего лишнего не спрашивает, размер тот же, что и без этих выкрутасов.

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

Как конкретно связанны PTS и MS SQL 2k я пока не знаю. В BOL только понял, что PTS поднимается через ADO или ADOMD
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33038714
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай, по теме из BOL есть только
"INSERT INTO Statement" из "Analysis Services Programming"
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33039645
Беляев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой Вы создаете куб ROLAP или MOLAP (опции ATTEMPT_DEFER ATTEMPT_ANALYSIS) ?

Приведите текст CREATE CUBE + INSERT INTO

Уменьшить размер куба можно только уменьшив число разрезов выбранных данных или выбрав ROLAP модель.

Владислав Беляев
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33040708
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БеляевКакой Вы создаете куб ROLAP или MOLAP (опции ATTEMPT_DEFER ATTEMPT_ANALYSIS) ?

Приведите текст CREATE CUBE + INSERT INTO

Уменьшить размер куба можно только уменьшив число разрезов выбранных данных или выбрав ROLAP модель.

Владислав Беляев
MOLAP
Запросы ниже

Хочу обратить внимание на тот факт, что запрос из моего первого сообщения заставляет PTS до выполнения основного SELECT сделать самостоятельно еще один SELECT к источнику
Зачем он это может делать, кроме как получить отдельно измерение продуктов?

Разница между запросами в том, что в SELECT
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    tempDB.dbo.lcTransaction.[Product.Palma:Group!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Supplier!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Class!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Key], 
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Weight],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!hCoef],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Code],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!NoNDS],

Заменяется на
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
prod.PlmGroup
prod.PlmSupplier
prod.PlmClass
trn.[Product.Palma:Product!Key], 
prod.ProductName
REPLACE(CAST(prod.[weight] AS VARCHAR( 10 )),',','.'),
prod.hCoef,
prod.Code,
prod.NoNDS,

+ JOIN в Where 

Рабочий запрос (без извратов)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
Provider=MSOLAP. 8 ;DATA SOURCE=e:\temp\olap_cube.cub;SOURCE_DSN="Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=TS;User ID=tor;Password=sklad"
;CREATECUBE= Create CUBE [Sales] (
DIMENSION [Branches],
   LEVEL [All Branches] TYPE ALL,
   LEVEL [Company],
   LEVEL [Branch],
   LEVEL [Seller]  OPTIONS (SORTBYNAME, UNIQUE_KEY),

DIMENSION [Time] TYPE TIME,
   HIERARCHY [YMD],
       LEVEL [All Time] TYPE ALL,
       LEVEL [Year] TYPE YEAR OPTIONS (SORTBYKEY, UNIQUE_KEY),
       LEVEL [Month] TYPE MONTH OPTIONS (SORTBYKEY, UNIQUE_KEY),
       LEVEL [Day] TYPE DAY OPTIONS (SORTBYKEY, UNIQUE_KEY),

DIMENSION [Products] OPTIONS(ALLOWSIBLINGSWITHSAMENAME),
   HIERARCHY [Palma],
       LEVEL [All Palma Products] TYPE ALL,
       LEVEL [Group],
       LEVEL [Supplier],
       LEVEL [Brand],
       LEVEL [Description] OPTIONS (SORTBYNAME, UNIQUE_KEY), 

       PROPERTY [weight]            TYPE REGULAR CAPTION "Unit weight", 
       PROPERTY [measure coef]  TYPE REGULAR CAPTION "Units in case", 
       PROPERTY [Code]              TYPE REGULAR CAPTION "Code", 
       PROPERTY [Is Vat Used]       TYPE REGULAR CAPTION "Is Vat Used", 

DIMENSION [Customers], 
   LEVEL [All Customers] TYPE ALL , 
   LEVEL [Customer] OPTIONS (SORTBYNAME, UNIQUE_KEY), 

MEASURE [Себестоимость грн]             FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY,
MEASURE [Продано штук]                    FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_I2,
MEASURE [Стоимость по прайсу грн]   FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY,
MEASURE [Стоимость импорта грн]     FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY,
MEASURE [Продано с НДС грн]            FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY,
MEASURE [Продано грн]                      FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY,

MEASURE [PlanCustomerSupplier]         FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY HIDDEN,
MEASURE [PlanCustomer]                     FUNCTION SUM FORMAT 'Standard' TYPE DBTYPE_CY HIDDEN,

)

;INSERTINTO=INSERT INTO [Sales](
   [Branches].[Company],
   [Branches].[Branch],
   [Branches].[Seller].KEY,
   [Branches].[Seller].NAME,

   [Customers].[Customer].KEY,
   [Customers].[Customer].NAME,

   [Products].[Palma].[Group],
   [Products].[Palma].[Supplier],
   [Products].[Palma].[Brand],
   [Products].[Palma].[Description].KEY,
   [Products].[Palma].[Description].NAME,

   [Products].[Palma].[Description].[weight],
   [Products].[Palma].[Description].[measure coef],
   [Products].[Palma].[Description].[Code],
   [Products].[Palma].[Description].[Is Vat Used],

   [Time].[YMD].[Year].KEY,
   [Time].[YMD].[Year].NAME,
   [Time].[YMD].[Month].KEY,
   [Time].[YMD].[Month].NAME,
   [Time].[YMD].[Day].KEY,
   [Time].[YMD].[Day].NAME,

   Measures.[Себестоимость грн],
   Measures.[Продано штук],
   Measures.[Стоимость по прайсу грн],
   Measures.[Стоимость импорта грн],
   Measures.[Продано с НДС грн],
   Measures.[Продано грн],
   Measures.[PlanCustomerSupplier],
   Measures.[PlanCustomer]

) 

 SELECT  
    tempDB.dbo.lcTransaction.[Seller:Company!Key&Name],
    tempDB.dbo.lcTransaction.[Seller:Branch!Key&Name],
    tempDB.dbo.lcTransaction.[Seller:Seller!Key], 
    tempDB.dbo.lcTransaction.[Seller:Seller!Name],

    tempDB.dbo.lcTransaction.[Customer.General:Customer!Key], 
    tempDB.dbo.lcTransaction.[Customer.General:Customer!Name],

    tempDB.dbo.lcTransaction.[Product.Palma:Group!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Supplier!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Class!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Key], 
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Name],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Weight],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!hCoef],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!Code],
    tempDB.dbo.lcTransaction.[Product.Palma:Product!NoNDS],

    tempDB.dbo.lcTransaction.[Calendar.YQMD:Year!Key],
    tempDB.dbo.lcTransaction.[Calendar.YQMD:Year!Name],
    tempDB.dbo.lcTransaction.[Calendar.YQMD:Month!Key],
    tempDB.dbo.lcTransaction.[Calendar.YQMD:Month!Name],
    tempDB.dbo.lcTransaction.[Calendar.YQMD:Day!Key],
    tempDB.dbo.lcTransaction.[Calendar.YQMD:Day!Name],

    tempDB.dbo.lcTransaction.[Measures:Продано себест, грн],
    tempDB.dbo.lcTransaction.[Measures:Продано, шт],
    tempDB.dbo.lcTransaction.[Measures:Базовая сумма, грн],
    tempDB.dbo.lcTransaction.[Measures:Продано фин себест, грн],
    tempDB.dbo.lcTransaction.[Measures:Продано с НДС, грн],
    tempDB.dbo.lcTransaction.[Measures:Продано, грн],
    tempDB.dbo.lcTransaction.[Measures:План продаж по поставщику, грн],
    tempDB.dbo.lcTransaction.[Measures:План продаж по клиенту, грн]

FROM 
    tempDB.dbo.lcTransaction 
;
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33048045
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моша, ну пожааалуйста, в чем прикол ?
Локальный куб можно загружать только "плоскими" строками где измерения и факты в куче, или можно по другому ?
;-)
...
Рейтинг: 0 / 0
Advanced LOCAL CUBE
    #33055983
Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставим вопрос иначе.
Кто в силах пояснить, что сдесь имеется ввиду ?
MSDNThe ATTEMPT_ANALYSIS option causes PivotTable Service to attempt to parse the query and formulate an optimized set of queries. If the query cannot be parsed, PivotTable Services processes the query immediately as if the PASSTHROUGH had been specified.
Имеет непосредственное отношение к сути топика
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Advanced LOCAL CUBE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]