public function getRegion($idSite, $period, $date, $segment = false)
{
$dataTable = $this->getDataTable(Archiver::REGION_RECORD_NAME, $idSite, $period, $date, $segment);
$segments = array('regionCode', 'countryCode');
$dataTable->filter('AddSegmentByLabel', array($segments, Archiver::LOCATION_SEPARATOR));
$separator = Archiver::LOCATION_SEPARATOR;
$unk = Visit::UNKNOWN_CODE;
// split the label and put the elements into the 'region' and 'country' metadata fields
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'region', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 0, $unk)));
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'country', __NAMESPACE__ . '\\getElementFromStringArray', array($separator, 1, $unk)));
// add country name metadata
$dataTable->filter('MetadataCallbackAddMetadata', array('country', 'country_name', __NAMESPACE__ . '\\CountryTranslate', $applyToSummaryRow = false));
// get the region name of each row and put it into the 'region_name' metadata
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'region_name', __NAMESPACE__ . '\\getRegionName', $params = null, $applyToSummaryRow = false));
// add the country flag as a url to the 'logo' metadata field
$dataTable->filter('MetadataCallbackAddMetadata', array('country', 'logo', __NAMESPACE__ . '\\getFlagFromCode'));
// prettify the region label
$dataTable->filter('ColumnCallbackReplace', array('label', __NAMESPACE__ . '\\getPrettyRegionName'));
$dataTable->queueFilter('ReplaceSummaryRowLabel');
return $dataTable;
}