Filtering dimension queries

You can filter elements from dimensions.

To filter the selected elements, use the where keyword followed by a filtering condition. You can filter out elements based on a general condition or based on attribute values of type string, int, double and dateTime.

These examples demonstrate how to filter elements based on different attributes. In all the examples the attrName is a string variable that contains the name of the attribute to be retrieved. The type-comparison, also called the type of the attribute, is decided based on the type of the right side of the comparison:

Example of filtering elements by string attribute

OLAPElementList list = on connection select all from dimName where (attrName == "5");

The right side of comparison is "5" which is of type string. Therefore, the attribute is retrieved as a string attribute and compared alphabetically with the value "5".

Example of filtering elements by int attribute

OLAPElementList list = on connection select all from dimName where (attrName == 5);

The right side of comparison is 5, which is of type int. Therefore, the attribute is retrieved as an int attribute and compared numerically with the value 5.

Example of filtering elements by bool attribute

OLAPElementList list = on connection select all from dimName where (attrName == true);

Only Boolean attribute values are supported.

Example of filtering elements in foreach iteration by their name

You can use a dimension query and filter the dimension element by two different conditions into two separate element lists. We recommend that you move the filtering condition from the dimension query to this foreach statement, which is used for iterating a list of elements:


     OLAPConnection connection = OLAPCreateNamedConnection("");

	string errorMessage = "";
	int errorCode = 0;

	string sDimension = "Product";
	string nameAttribute = "NAME";

	try
	{
		OLAPElementList list = on connection select all from sDimension order by olapname asc, nameAttribute desc;

		foreach (OLAPElement e in list where (e == "ElementName"))
		{
			WriteLine("\t" + ToString(e));
		}
	}
	catch (errorMessage, errorCode)
	{
		WriteLine("Exception: " + errorMessage);
	}

	OLAPDisconnect(connection);