private function checkSupportedPivot()
{
$reportId = $this->thisReport->getModule() . '.' . $this->thisReport->getName();
if (!$this->isFetchingBySegmentEnabled) {
// if fetching by segment is disabled, then there must be a subtable for the current report and
// subtable's dimension must be the pivot dimension
if (empty($this->subtableDimension)) {
throw new Exception("Unsupported pivot: report '{$reportId}' has no subtable dimension.");
}
if (!$this->isPivotDimensionSubtable()) {
throw new Exception("Unsupported pivot: the subtable dimension for '{$reportId}' does not match the " . "requested pivotBy dimension. [subtable dimension = {$this->subtableDimension->getId()}, " . "pivot by dimension = {$this->pivotByDimension->getId()}]");
}
} else {
$canFetchBySubtable = !empty($this->subtableDimension) && $this->subtableDimension->getId() === $this->pivotByDimension->getId();
if ($canFetchBySubtable) {
return;
}
// if fetching by segment is enabled, and we cannot fetch by subtable, then there has to be a report
// for the pivot dimension (so we can fetch the report), and there has to be a segment for this report's
// dimension (so we can use it when fetching)
if (empty($this->pivotDimensionReport)) {
throw new Exception("Unsupported pivot: No report for pivot dimension '{$this->pivotByDimension->getId()}'" . " (report required for fetching intersected tables by segment).");
}
if (empty($this->thisReportDimensionSegment)) {
throw new Exception("Unsupported pivot: No segment for dimension of report '{$reportId}'." . " (segment required for fetching intersected tables by segment).");
}
}
}