Creating individual fields from a multi-column Field API widget
Here is the solution.

/**
*  Implements hook_field_views_data_alter
* 
* @param mixed $result
* @param mixed $field
*/
function addressfield_field_views_data_alter (&amp;$result, $field) {
  if (array_key_exists('field_data_field_address', $result)) {
    $result['field_data_field_address']['field_address_country'] += array(
      'title' =&gt; t('Country'),
      'help' =&gt; t('The Country name of the field'),
      'field' =&gt; array(
        'handler' =&gt; 'addressfield_views_handler_field_country',
        'click sortable' =&gt; TRUE,
      ),
    );
  }
}


Or if you want to not use a real field in the table such as field_address_country but to instead alias a field you can add a field and table attribute to the field array like this.

function addressfield_field_views_data_alter (&amp;$result, $field) {
  if ($field['type'] == 'addressfield')) {
      $result['field_data_field_address']['country'] = array(
        'title' =&gt; t('Country'),
        'group' =&gt; 'Bad Ass',
        'help' =&gt; t('The Country name of the field'),
        'field' =&gt; array(
          'field' =&gt; 'field_address_country',
          'table' =&gt; 'field_data_field_address',
          'handler' =&gt; 'views_handler_field',
          'click sortable' =&gt; TRUE,
        ),
      );
   }
}