function getAdditionalSelects(oBinding) {
		var oColumn, aComputedSelect, sComputedSelect, oDimension, i, j, oMeasure, n, sPropertyName,
			oAnalyticalQueryRequest
				= new odata4analytics.QueryResultRequest(oBinding.oAnalyticalQueryResult),

			aSelect = oBinding.mParameters.select.split(","),
			bError = trimAndCheckForDuplicates(aSelect, oBinding.sPath);

		// prepare oAnalyticalQueryRequest to be able to call getURIQueryOptionValue("$select")
		oAnalyticalQueryRequest.setAggregationLevel(oBinding.aMaxAggregationLevel);
		oAnalyticalQueryRequest.setMeasures(oBinding.aMeasureName);

		// update dimension's key, text and attributes as done in relevant _prepare... functions
		Object.keys(oBinding.oDimensionDetailsSet).forEach(function (sDimensionKey) {
			oDimension = oBinding.oDimensionDetailsSet[sDimensionKey];

			oAnalyticalQueryRequest.includeDimensionKeyTextAttributes(sDimensionKey,
				true, oDimension.textPropertyName !== undefined, oDimension.aAttributeName);
		});

		// update measure's raw value, formatted value and unit property as done in relevant
		// _prepare... functions
		Object.keys(oBinding.oMeasureDetailsSet).forEach(function (sMeasureKey) {
			oMeasure = oBinding.oMeasureDetailsSet[sMeasureKey];

			oAnalyticalQueryRequest.includeMeasureRawFormattedValueUnit(sMeasureKey,
				oMeasure.rawValuePropertyName !== undefined,
				oMeasure.formattedValuePropertyName !== undefined,
				oMeasure.unitPropertyName !== undefined);
		});

		// at least all selected properties, computed by the binding, are contained in select
		// binding parameter
		sComputedSelect = oAnalyticalQueryRequest.getURIQueryOptionValue("$select");
		if (sComputedSelect) {
			aComputedSelect = sComputedSelect.split(",");
			for (i = 0, n = aComputedSelect.length; i < n; i++) {
				sPropertyName = aComputedSelect[i];
				j = aSelect.indexOf(sPropertyName);
				if (j < 0) {
					oColumn = oBinding.mAnalyticalInfoByProperty[sPropertyName];
					if (!oColumn || (!oColumn.visible && !oColumn.inResult)) {
						continue; // ignore automatically added columns
					}
					oLogger.warning("Ignored the 'select' binding parameter, because"
							+ " it does not contain the property '" + sPropertyName + "'",
						oBinding.sPath);
					bError = true;
				} else {
					aSelect.splice(j, 1);
				}
			}
		}

		const aAdditionalSelects = [];
		// check additionally selected properties, no new dimensions and new measures or
		// associated properties for new dimensions or measures are allowed
		for (i = 0; i < aSelect.length; i += 1) {
			sPropertyName = aSelect[i];

			oDimension = oBinding.oAnalyticalQueryResult.findDimensionByPropertyName(sPropertyName);
			if (oDimension) {
				const oDimensionDetails = oBinding.oDimensionDetailsSet[oDimension.getName()];
				if (oDimensionDetails === undefined) {
					logUnsupportedPropertyInSelect(oBinding.sPath, sPropertyName, oDimension);
					bError = true;
				// eslint-disable-next-line no-use-before-define
				} else if (AnalyticalBinding._updateDimensionDetailsTextProperty(oDimension, sPropertyName,
						oDimensionDetails)) {
					continue;
				}
			}

			oMeasure = oBinding.oAnalyticalQueryResult.findMeasureByPropertyName(sPropertyName);
			if (oMeasure && oBinding.oMeasureDetailsSet[oMeasure.getName()] === undefined) {
				logUnsupportedPropertyInSelect(oBinding.sPath, sPropertyName, oMeasure);
				bError = true;
			}
			aAdditionalSelects.push(sPropertyName);
		}
		return bError ? [] : aAdditionalSelects;
	}
Checks whether the select binding parameter fits to the current analytical info and returns
an array of properties that need to be added to leaf requests. If the select binding
parameter does not fit to the current analytical info a warning is logged and the select
binding parameter is ignored.
Select binding parameter does not fit to the analytical info,
<ul>
<li>if an additional dimension is contained in the select binding parameter
<li>if an associated property (e.g. text property or attribute) of an additional dimension
is contained in the select binding parameter
<li>if an additional measure is contained in the select binding parameter
<li>if an associated property (e.g. text property) of an additional measure is contained in
the select binding parameter
<li>if a dimension or a measure of the current analytical info is not contained in the select
binding parameter, unless the dimension or measure has been added automatically by the
binding, because a property associated to the dimension or measure has been added as a
"visible" or "inResult" column
</ul>

@param {sap.ui.model.analytics.AnalyticalBinding} oBinding
  The analytical binding instance
@returns {string[]} An array of additional properties that need to be selected or an empty
  array if there are no additional select properties needed