I have the MDX query below and the result is not what I expected. If my where clause is included just 1 city ([Geography].[Iorg].[City].[San Francisco]) then my aggregate result is correct for that city, but if Included 2 cities then my aggregate result is for the whole state of california which is not what I wanted. I just want to return result of those two cities.
{ [Geography].[Iorg].[City].[San Francisco]
,[Geography].[Iorg].[City].[San Jose]
}
This clause is for security {[Geography].[State].[California]} but I don't get when 1 city is included then the result is good but when I included two cities then the result is for state California.
If I remove my [Geography].[Country Name].children ON ROWS then the result is correct but I need that in my query. Any help would be appreciated.
SELECT
CROSSJOIN ({
[Measures].[Fleet]},
{[Time Calculations].[Current Period] }) ON COLUMNS
,
[Geography].[Country Name].children
ON ROWS
FROM [DMI]
WHERE
(
[Date].[Date Hierarchy].[Date].&[2019-02-12T00:00:00] ,
{ [Geography].[Iorg].[City].[San Francisco]
,[Geography].[Iorg].[City].[San Jose]
}
,{[Geography].[State].[California]}
)
You should query like this
SELECT
CROSSJOIN ({
[Measures].[Fleet]},
{[Time Calculations].[Current Period] }) ON COLUMNS
,
[Geography].[Country Name].children
ON ROWS
From (select {[Geography].[Iorg].[City].[San Francisco],
[Geography].[Iorg].[City].[San Jose]}on 1 FROM [DMI]
)
WHERE
(
[Date].[Date Hierarchy].[Date].&[2019-02-12T00:00:00]
,{[Geography].[State].[California]}
)
Related
I am need to delete all 2 month from set. This code return all date range without excepting 2 month.
SELECT
{[Measures].[In]} ON COLUMNS,
EXCEPT([Date].[2014].[1] : [Date].[2016].[2], [Date].[Month].[2]) ON ROWS
FROM [Shop hourly]
Print screen for whytheq
My decision based on whytheq answear. I create a dimension for all kind of dates, and except them. Example:
SELECT {[Measures].[In sum]} ON COLUMNS,
NON EMPTY
{[Shop].[11], [Shop].[22], [Shop].[33]} *
Except([Quarter].Children, [Quarter].[2]) *
[Month].Children ON ROWS
FROM [Shop hourly]
WHERE
([Date].[2013].[1].[1] : [Date].[2016].[1].[1]) *
Except([Year].Children, [Year].[2014])
In AdventureWorks I can do the following:
SELECT
[Measures].[Internet Sales Amount] ON 0
,NON EMPTY
Except
(
[Date].[Calendar].[Month].&[2005]&[7]
:
[Date].[Calendar].[Month].&[2008]&[7]
,Exists
(
[Date].[Calendar].[Month].MEMBERS
,[Date].[Calendar Quarter of Year].&[CY Q3]
)
) ON 1
FROM [Adventure Works];
So adapting the above to your cube maybe looks like the following:
SELECT
{[Measures].[In]} ON COLUMNS
,Except
(
[Date].[2014].[1] : [Date].[2016].[2]
,Exists
(
[Date].MEMBERS
,[Date].[Month].[2]
)
) ON ROWS
FROM [Shop hourly];
WITH
MEMBER [Measures].[ParameterCaption] AS [Estate].[Week].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS [Estate].[Week].CURRENTMEMBER.UNIQUENAME
MEMBER [Measures].[ParameterLevel] AS [Estate].[Week].CURRENTMEMBER.LEVEL.ORDINAL
SELECT
{[Measures].[ParameterCaption], [Measures].[ParameterValue], [Measures].[ParameterLevel]} ON COLUMNS
,
NON EMPTY (
ORDER (
EXCEPT( [Estate].[Week].[ALL].CHILDREN
, { [Estate].[Week]})
, ( [Estate].[Week].MEMBERVALUE)
, ASC
)
) ON ROWS
From [EstateRpt]
WHERE Filter([V Estate Weekly Rpt].[Week].CHILDREN, [V Estate Weekly Rpt].[Week].MEMBERVALUE = 'NONE')
Hi, i am new to the MDX. I want to filter the week which is not equal to "NONE"? by default, week is set the "NONE", so it will appear the NONE data in cube. I want to filter this NONE.
I do try the WHERE clause but it show the error to me which i do not figure out what is the problem
If you want to filter out 'NONE' then you need to use this in your filter:
<> 'NONE'
Also you need to use CurrentMember within your filter like this example:
SELECT
{
[Date].[Calendar].[Month].&[2006]&[7]
,[Date].[Calendar].[Date].&[20050220]
}
*
{[Measures].[Reseller Sales Amount]} ON COLUMNS
,
{[Product].[Category].Children}
*
{[Geography].[Geography].[Country].MEMBERS} ON ROWS
FROM [Adventure Works]
WHERE
Filter
(
[Geography].[State-Province].MEMBERS
,
[Geography].[State-Province].CurrentMember.Member_Caption <> 'California'
);
This is my MDX query. This will the items that is sold on particular three days. This query returns all items sold, but I wish to get only top 3 items on that particular dates.
How do I can get this? Here's my MDX query:
select
{
[Measures].[Quantity],
[Measures].[Net Sales]
}
on columns,
NON EMPTY
ORDER
(
(
[Products].[Item Description].children
),
[Measures].[Quantity], DESC
)
* [Calendar].[Date].[Date]
on rows
from
(
select
{
[Calendar].[Date].&[2015-03-23T00:00:00],
[Calendar].[Date].&[2015-03-22T00:00:00],
[Calendar].[Date].&[2015-03-21T00:00:00]
}
ON columns
FROM [SalesReport])
Use the TopCount function as below:
select
{
[Measures].[Quantity],
[Measures].[Net Sales]
}
on columns,
NON EMPTY
TopCount([Products].[Item Description].children * [Calendar].[Date].[Date],
3,
[Measures].[Quantity])
on rows
from
(
select
{
[Calendar].[Date].&[2015-03-23T00:00:00],
[Calendar].[Date].&[2015-03-22T00:00:00],
[Calendar].[Date].&[2015-03-21T00:00:00]
}
ON columns
FROM [SalesReport])
To get the top 3 records for each date, you can user the GENERATE function :
select
{
[Measures].[Quantity],
[Measures].[Net Sales]
}
on columns,
NON EMPTY
GENERATE([Calendar].[Date].[Date],
TopCount([Products].[Item Description].children,
3,
[Measures].[Quantity])
)
on rows
from
(
select
{
[Calendar].[Date].&[2015-03-23T00:00:00],
[Calendar].[Date].&[2015-03-22T00:00:00],
[Calendar].[Date].&[2015-03-21T00:00:00]
}
ON columns
FROM [SalesReport])
I have the following MDX:
SELECT
NON EMPTY
{
[Measures].[Returns]
,[Measures].[Returns]
} ON COLUMNS
,NON EMPTY
{[Employees].[Company].[Company].ALLMEMBERS}
DIMENSION PROPERTIES
MEMBER_CAPTION
,MEMBER_UNIQUE_NAME
ON ROWS
FROM
(
SELECT
StrToSet
("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
,CONSTRAINED
) ON COLUMNS
FROM [cbSales]
)
WHERE
IIF
(
StrToSet
("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
,CONSTRAINED
).Count
= 1
,StrToSet
("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
,CONSTRAINED
)
,[Exec Date].[Hierarchy].CurrentMember
);
Both columns shows returned data for month 2014/01
I want to have data for the next month (2014/02) in the second column.
How can I change the query to achieve my goal.
I'll try to replicate with AdvWks cube, so currently not tested:
WITH
MEMBER [Measures].[ReturnsNextMth] AS
(
[Measures].[Returns]
,[Exec Date].[Hierarchy].CurrentMember.NextMember
)
SELECT
NON EMPTY
{
[Measures].[Returns]
,[Measures].[ReturnsNextMth]
} ON COLUMNS
,NON EMPTY
{
[Employees].[Company].[Company].ALLMEMBERS
*
[Exec Date].[Hierarchy].[Month Num].ALLMEMBERS
} ON ROWS
FROM
(
SELECT
StrToSet
("[Exec Date].[Hierarchy].[Month Num].&[2014]&[1]"
,CONSTRAINED
) ON COLUMNS
FROM [cbSales]
);
Something similar in AdvWks:
WITH
MEMBER [Measures].[ReturnsNextMth] AS
(
[Measures].[Internet Order Count]
,[Date].[Calendar].CurrentMember.NextMember
)
SELECT
NON EMPTY
{
[Measures].[Internet Order Count]
,[Measures].[ReturnsNextMth]
} ON COLUMNS
,NON EMPTY
{
[Sales Territory].[Sales Territory].[Country].MEMBERS
*
[Date].[Calendar].[Month].ALLMEMBERS
} ON ROWS
FROM
(
SELECT
[Date].[Calendar].[Month].&[2008]&[1] ON COLUMNS
FROM [Adventure Works]
);
This gives these results. I found this quite surprising as the sub-select seems to suggest we only have Jan-2008 available, but sub-select is a bit of a strange creature. This article explains: http://bisherryli.com/2013/02/08/mdx-25-slicer-or-sub-cube/. So our measure [ReturnsNextMth] still functions ok.
I am trying to make an MDX query that can tell me how many products were sold in countries other than China. With the following query I can only get the units sold of bottled water for each of the countries, but not their sum. How do I modify the query to get the sum of that ?
SELECT NON EMPTY Except(
{[Location].[All Places].Children},
{[Location].[China]}
) ON COLUMNS,
{[Product].[All Products].[Bottled Water].Children} ON ROWS
FROM [Places]
WHERE [Measures].[Units Sold]
The following should do what you want:
WITH
SET [countries] as Except( {[Location].[All Places].Children}, {[Location].[China]} )
MEMBER [measures].[X] as Sum( [countries] , [Measures].[Units Sold] )
SELECT {[Product].[All Products].[Bottled Water].Children} ON ROWS
FROM [Places]
WHERE [measures].[x]