Build, set the views data cache if empty and return the views data.
array The views_data of all tables.
function _views_fetch_data_build() {
  $cache = module_invoke_all('views_data');
  foreach (module_implements('views_data_alter') as $module) {
    $function = $module . '_views_data_alter';
    $function($cache);
  }
  _views_data_process_entity_types($cache);
  // Keep a record with all data.
  views_cache_set('views_data', $cache, TRUE);
  // Save data in seperate cache entries.
  foreach ($cache as $key => $data) {
    $cid = 'views_data:' . $key;
    views_cache_set($cid, $data, TRUE);
  }
  return $cache;
}