Atributos personalizados

Cloud Talent Solution incluye varios atributos de trabajo integrados para atender las necesidades de diversos clientes. Para que Cloud Talent Solution tenga el mejor rendimiento, te recomendamos usar los campos integrados lo más posible.

Además, Cloud Talent Solution también cuenta con atributos personalizados para almacenar información genérica, que brindan más flexibilidad y permiten que los clientes respalden su lógica empresarial. Los atributos personalizados pueden almacenar una string o información numérica y también se pueden filtrar en las búsquedas si configuras los filtros adecuados.

Funciones de los atributos personalizados

  • Definir un nombre de campo personalizado: Define el nombre de un atributo específico de un trabajo. Determina si este atributo se puede filtrar o no según tus necesidades. Por lo general, si la interfaz de usuario necesita una faceta filtrable que Cloud Talent Solution no proporciona de manera inmediata, se puede usar un customAttribute para proporcionar el filtrado correcto.
  • Búsqueda con (o sin) distinción de mayúsculas y minúsculas: En cada solicitud de búsqueda, se puede especificar si la búsqueda de todos los atributos personalizados distingue o no mayúsculas y minúsculas.
  • Filtrado basado en rango: Los filtros de búsqueda customAttribute pueden filtrar trabajos entre un rango de valores numéricos especificados. Por ejemplo, si se usa un campo customAttribute determinado para almacenar los requisitos mínimos de GPA de un trabajo, el filtro de búsqueda customAttribute se puede usar para mostrar trabajos dentro de un cierto rango de GPA mínimo, mayor que un valor mínimo de GPA, menor que un valor mínimo de GPA, etcétera.
  • Filtro de campos combinados: customAttribute también proporciona a los clientes de Cloud Talent Solution la capacidad de definir expresiones que filtran una combinación de atributos personalizados. Por ejemplo, la lógica empresarial de un cliente indica que solo necesita trabajos desde casa o con patrocinio de visa. El cliente almacena estos dos campos en un customAttribute diferente. Luego, puede especificar un filtro de búsqueda con una expresión que defina la lógica necesaria. Solo se admiten 3 niveles de expresiones anidadas.

  • Búsqueda específica de palabras clave: Especifica un determinado customAttribute en los keywordSearchableCustomAttributes de la empresa asociada para garantizar que las solicitudes de búsqueda que contienen un valor en el customAttribute especificado muestren los trabajos que contienen este valor en ese customAttribute.

  • Búsquedas basadas en SQL: customAttribute te permite definir expresiones de estilo booleano en la solicitud de búsqueda. Cloud Talent Solution analiza automáticamente estas expresiones, aplica los filtros a la solicitud de búsqueda y muestra los resultados correspondientes. Solo se admiten 3 niveles de expresiones booleanas anidadas y con un máximo de 2,000 caracteres.

  • Definir intervalos de histograma personalizados: Los atributos personalizados permiten que los clientes de Cloud Talent Solution puedan definir intervalos personalizados para calcular los histogramas. Por ejemplo, puedes usar un customAttribute para almacenar información mínima de GPA y, luego, crear un histograma en este campo. Puedes crear más intervalos, como de 3.0 a 3.5, de 3.51 a 4.0, etc., para agrupar todos los GPA mínimos en ellos.

Usa atributos personalizados

Crea un nuevo trabajo con el campo customAttribute (puede usarse con valores numéricos o de string):

Go

import (
	"context"
	"fmt"
	"io"

	talent "cloud.google.com/go/talent/apiv4beta1"
	"github.com/gofrs/uuid"
	talentpb "google.golang.org/genproto/googleapis/cloud/talent/v4beta1"
	money "google.golang.org/genproto/googleapis/type/money"
)

// createJobWithCustomAttributes creates a job with custom attributes.
func createJobWithCustomAttributes(w io.Writer, projectID, companyID, jobTitle string) (*talentpb.Job, error) {
	ctx := context.Background()

	// Initialize a job service client.
	c, err := talent.NewJobClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("talent.NewJobClient: %v", err)
	}

	// requisitionID shoud be the unique ID in your system
	requisitionID := fmt.Sprintf("job-with-custom-attribute-%s", uuid.Must(uuid.NewV4()).String())
	jobToCreate := &talentpb.Job{
		Company:       fmt.Sprintf("projects/%s/companies/%s", projectID, companyID),
		RequisitionId: requisitionID,
		Title:         jobTitle,
		ApplicationInfo: &talentpb.Job_ApplicationInfo{
			Uris: []string{"https://googlesample.com/career"},
		},
		Description:     "Design, devolop, test, deploy, maintain and improve software.",
		LanguageCode:    "en-US",
		PromotionValue:  2,
		EmploymentTypes: []talentpb.EmploymentType{talentpb.EmploymentType_FULL_TIME},
		Addresses:       []string{"Mountain View, CA"},
		CustomAttributes: map[string]*talentpb.CustomAttribute{
			"someFieldString": {
				Filterable:   true,
				StringValues: []string{"someStrVal"},
			},
			"someFieldLong": {
				Filterable: true,
				LongValues: []int64{900},
			},
		},
		CompensationInfo: &talentpb.CompensationInfo{
			Entries: []*talentpb.CompensationInfo_CompensationEntry{
				{
					Type: talentpb.CompensationInfo_BASE,
					Unit: talentpb.CompensationInfo_HOURLY,
					CompensationAmount: &talentpb.CompensationInfo_CompensationEntry_Amount{
						Amount: &money.Money{
							CurrencyCode: "USD",
							Units:        1,
						},
					},
				},
			},
		},
	}

	// Construct a createJob request.
	req := &talentpb.CreateJobRequest{
		Parent: fmt.Sprintf("projects/%s", projectID),
		Job:    jobToCreate,
	}

	resp, err := c.CreateJob(ctx, req)
	if err != nil {
		return nil, fmt.Errorf("CreateJob: %v", err)
	}

	fmt.Fprintf(w, "Created job with custom attributres: %q\n", resp.GetName())
	fmt.Fprintf(w, "Custom long field has value: %v\n", resp.GetCustomAttributes()["someFieldLong"].GetLongValues())

	return resp, nil
}

Java

Consulta Bibliotecas cliente de Cloud Talent Solution para obtener más información sobre cómo instalar y crear un cliente de Cloud Talent Solution.


import com.google.cloud.talent.v4beta1.CreateJobRequest;
import com.google.cloud.talent.v4beta1.CustomAttribute;
import com.google.cloud.talent.v4beta1.Job;
import com.google.cloud.talent.v4beta1.JobServiceClient;
import com.google.cloud.talent.v4beta1.TenantName;
import java.io.IOException;

public class JobSearchCreateJobCustomAttributes {

  public static void createJob() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String tenantId = "your-tenant-id";
    String companyId = "your-company-id";
    String requisitionId = "your-unique-req-id";
    createJob(projectId, tenantId, companyId, requisitionId);
  }

  // Create Job with Custom Attributes.
  public static void createJob(
          String projectId,
          String tenantId,
          String companyId,
          String requisitionId)
          throws IOException {
    try (JobServiceClient jobServiceClient = JobServiceClient.create()) {
      TenantName parent = TenantName.of(projectId, tenantId);

      // Custom attribute can be string or numeric value, and can be filtered in search queries.
      // https://cloud.google.com/talent-solution/job-search/docs/custom-attributes
      CustomAttribute customAttribute = CustomAttribute.newBuilder()
              .addStringValues("Internship")
              .addStringValues("Apprenticeship")
              .setFilterable(true)
              .build();

      Job job =
              Job.newBuilder()
                      .setCompany(companyId)
                      .setTitle("Software Developer I")
                      .setDescription("This is a description of this <i>wonderful</i> job!")
                      .putCustomAttributes("FOR_STUDENTS", customAttribute)
                      .setRequisitionId(requisitionId)
                      .setLanguageCode("en-US")
                      .build();

      CreateJobRequest request =
              CreateJobRequest.newBuilder().setParent(parent.toString()).setJob(job).build();
      Job response = jobServiceClient.createJob(request);
      System.out.printf("Created job: %s\n", response.getName());
    }
  }
}

PHP

Consulta Bibliotecas cliente de Cloud Talent Solution para obtener más información sobre cómo instalar y crear un cliente de Cloud Talent Solution.

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\JobServiceClient;
use Google\Cloud\Talent\V4beta1\Job;

/**
 * Create Job with Custom Attributes.
 *
 * @param string $projectId Your Google Cloud Project ID
 * @param string $tenantId  Identifier of the Tenantd
 */
function sampleCreateJob($projectId, $tenantId, $companyName, $requisitionId, $languageCode)
{

    $jobServiceClient = new JobServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $tenantId = 'Your Tenant ID (using tenancy is optional)';
    // $companyName = 'Company name, e.g. projects/your-project/companies/company-id';
    // $requisitionId = 'Job requisition ID, aka Posting ID. Unique per job.';
    // $languageCode = 'en-US';
    $formattedParent = $jobServiceClient->tenantName($projectId, $tenantId);
    $job = new Job();
    $job->setCompany($companyName);
    $job->setRequisitionId($requisitionId);
    $job->setLanguageCode($languageCode);

    try {
        $response = $jobServiceClient->createJob($formattedParent, $job);
        printf('Created job: %s'.PHP_EOL, $response->getName());
    } finally {
        $jobServiceClient->close();
    }

}

Ruby

Consulta Bibliotecas cliente de Cloud Talent Solution para obtener más información sobre cómo instalar y crear un cliente de Cloud Talent Solution.


# Create Job with Custom Attributes
#
# @param project_id {String} Your Google Cloud Project ID
# @param tenant_id {String} Identifier of the Tenantd
def sample_create_job project_id, tenant_id, company_name, requisition_id, language_code
  # Instantiate a client
  job_client = Google::Cloud::Talent::JobService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # tenant_id = "Your Tenant ID (using tenancy is optional)"
  # company_name = "Company name, e.g. projects/your-project/companies/company-id"
  # requisition_id = "Job requisition ID, aka Posting ID. Unique per job."
  # language_code = "en-US"
  formatted_parent = job_client.class.tenant_path(project_id, tenant_id)
  job = {
    company: company_name,
    requisition_id: requisition_id,
    language_code: language_code
  }

  response = job_client.create_job(formatted_parent, job)
  puts "Created job: #{response.name}"
end

C#

Consulta Bibliotecas cliente de Cloud Talent Solution para obtener más información sobre cómo instalar y crear un cliente de Cloud Talent Solution.

public static object CreateJobCustomAttributes(string projectId, string tenantId, string companyId, string requisitionId)
{
    JobServiceClient jobServiceClient = JobServiceClient.Create();
    TenantName tenantName = TenantName.FromProjectTenant(projectId, tenantId);

    // Custom attribute can be string or numeric value, and can be filtered in search queries.
    // https://cloud.google.com/talent-solution/job-search/docs/custom-attributes
    CustomAttribute customAttributes = new CustomAttribute
    {
        Filterable = true
    };
    customAttributes.StringValues.Add("Internship");
    customAttributes.StringValues.Add("Intern");
    customAttributes.StringValues.Add("Apprenticeship");

    Job job = new Job
    {
        Company = companyId,
        RequisitionId = requisitionId,
        Title = "Software Developer I",
        Description = "This is a description of this <i>wonderful</i> job!",
        LanguageCode = "en-US"
    };
    job.CustomAttributes.Add("FOR_STUDENTS", customAttributes);

    CreateJobRequest request = new CreateJobRequest
    {
        ParentAsTenantName = tenantName,
        Job = job
    };

    Job response = jobServiceClient.CreateJob(request);

    Console.WriteLine($"Created Job: {response.Name}");
    return 0;
}

De forma predeterminada, los extremos searchJobs y searchJobsForAlert solo buscan en los campos listos para usar. Si también necesitas buscar en los campos de customAttribute, usa el campo keywordSearchableJobCustomAttributes para definir una lista de atributos personalizados que quieras incluir en la búsqueda.

Por ejemplo, si un reclutador desea usar un customAttribute "customRequisitions" para almacenar los ID de solicitud de trabajos particulares para un empleador específico, si se configura keywordSearchableJobCustomAttributes para incluir este campo, una búsqueda regular realizada por un reclutador para "ABC123" muestra todos los trabajos que tienen las "customRequisitions" customAttribute con un valor de "ABC123".