Сценарий вычисления SQL в SSAS - PullRequest
0 голосов
/ 14 июня 2019

Я хочу преобразовать код SQL в сценарий расчета SSAS для проекта SSAA. Целью данного скрипта является расчет стоимости акций на конкретную дату.

select  sum(p.movement) Stock
        ,
        ((select top 1  price from ItemMovement_New ch 
                                where ch.ITEMID='10003226' and  ch.Store='F-GJK' and ch.SaleDate <='2019-06-01' 
                                order by SaleDate desc)) Price, 
        sum(p.movement) +  ((select top 1  price from ItemMovement_New ch 
                                                where ch.ITEMID='10003226' and  ch.Store='F-GJK' and ch.SaleDate <='2019-06-01' 
                                                order by SaleDate desc)) [Stock Value]
from ItemMovement_New p
where Store='F-GJK'  and ITEMID='10003226' and SaleDate <='2019-06-01'

Результат: -

Stock   Price   Stock_Value
 1      2895       2895

Ответы [ 2 ]

0 голосов
/ 15 июня 2019
CREATE MEMBER CURRENTCUBE.[Measures].MaxDate AS
0 , VISIBLE = False;

CREATE MEMBER CURRENTCUBE.[Measures].DAYSTODATE AS 
COUNT(NULL:[Time].[Date].CURRENTMEMBER)-1
, VISIBLE = False; 

CREATE MEMBER CURRENTCUBE.[Measures].HADSALE AS 
IIF([Measures].[Price]=0, NULL, [Measures].DAYSTODATE)
, VISIBLE = False; 

SCOPE([Measures].MAXDATE, [Time].[Time].[Date].MEMBERS);  
    THIS = MAX(NULL:[Time].[Date].CURRENTMEMBER, [Measures].HADSALE); 
END SCOPE;

CREATE MEMBER CURRENTCUBE.[Measures].LASTSALE AS
IIF(ISEMPTY([Measures].MAXDATE), NULL, 
(
([Measures].[Price]) ,
[Time].[Time].[Date].MEMBERS.ITEM([Measures].MAXDATE))), VISIBLE = True; 
0 голосов
/ 14 июня 2019

Примечание PLZ в цене запроса ниже не будет мерой суммы. Он должен быть либо разным, либо, если вы сделали его мерой суммы, то разделите его на количество строк.

with 
member measure.ClosingCount 
as
sum(([date].[date].currentmember,[Product].[Product].currentmember), 
[Meausres].[Opening]-[Measures].[Qty])

measure.ClosingAmount 
as
sum(([date].[date].currentmember,[Product].[Product].currentmember), 
[measure].[ClosingCount]*[Measures].[Price] )

select measure.ClosingAmount on 0,
[Product].[Product].[YourProduct] on 1 
from yourcube 
where 
[date].[date].[2019-06-01]
...