anchor.diff:  
   	log.Printf("[INFO] Updating BigQuery table: %s", d.Id())
   
  -	id, err := parseBigQueryTableId(d.Id())
  +	project, err := getProject(d, config)
   	if err != nil {
   		return err
   	}
   
  -	if _, err = config.clientBigQuery.Tables.Update(id.Project, id.DatasetId, id.TableId, table).Do(); err != nil {
  +	datasetID := d.Get("dataset_id").(string)
  +	tableID := d.Get("table_id").(string)
  +
  +	if _, err = config.clientBigQuery.Tables.Update(project, datasetID, tableID, table).Do(); err != nil {
   		return err
   	}
   
  
positive.code: 	return []map[string]interface{}{result}
  }
  
  type bigQueryTableId struct {
  	Project, DatasetId, TableId string
  }
  
  func parseBigQueryTableId(id string) (*bigQueryTableId, error) {
  	// Expected format is "projects/{{project}}/datasets/{{dataset}}/tables/{{table}}"
  	matchRegex := regexp.MustCompile("^projects/(.+)/datasets/(.+)/tables/(.+)$")
  	subMatches := matchRegex.FindStringSubmatch(id)
  	if subMatches == nil {
  		return nil, fmt.Errorf("Invalid BigQuery table specifier. Expecting projects/{{project}}/datasets/{{dataset}}/tables/{{table}}, got %s", id)
  	}
  	return &bigQueryTableId{
  		Project:   subMatches[1],
  		DatasetId: subMatches[2],
  		TableId:   subMatches[3],
  	}, nil
  }
  
negative.code: 
  	log.Printf("[INFO] Reading BigQuery table: %s", d.Id())
  
  	project, err := getProject(d, config)
  	if err != nil {
  		return err
  	}
  
  	datasetID := d.Get("dataset_id").(string)
  	tableID := d.Get("table_id").(string)
  
  	res, err := config.clientBigQuery.Tables.Get(project, datasetID, tableID).Do()
  	if err != nil {
  		return handleNotFoundError(err, d, fmt.Sprintf("BigQuery table %q", tableID))
  	}
  
  	d.Set("project", project)
  	d.Set("description", res.Description)
  	d.Set("expiration_time", res.ExpirationTime)
  	d.Set("friendly_name", res.FriendlyName)
  