Benutzerdefinierte Attribute

Cloud Talent Solution bietet verschiedene vorkonfigurierte Jobattribute, um die Anforderungen unterschiedlicher Kunden zu erfüllen. Um die beste Leistung von Cloud Talent Solution zu erzielen, wird dringend empfohlen, so weit wie möglich die vorkonfigurierten Felder zu verwenden.

Darüber hinaus stehen in Cloud Talent Solution benutzerdefinierte Attribute zum Speichern generischer Informationen zur Verfügung. Mit benutzerdefinierten Attributen wird Kunden noch mehr Flexibilität zur Unterstützung ihrer Geschäftslogik geboten. In benutzerdefinierten Attributen sind entweder Strings oder numerische Informationen gespeichert. Ein Filtern nach diesen Attributen ist möglich, indem in Suchabfragen entsprechende Filter festgelegt werden. Einige der in dieser Anleitung verlinkten Dokumente sind ggf. nur auf Englisch verfügbar.

Benutzerdefinierte Attribute

  • Definition benutzerdefinierter Feldnamen: Definieren Sie einen Namen für ein bestimmtes Jobattribut. Stellen Sie dieses Attribut je nach Ihren Anforderungen entweder filterbar oder nicht filterbar ein. Wenn die Benutzeroberfläche eine filterbare Facette benötigt, die von Cloud Talent Solution nicht sofort bereitgestellt wird, kann normalerweise eine customAttribute verwendet werden, um die richtige Filterung bereitzustellen.
  • Berücksichtigung bzw. keine Berücksichtigung der Groß-/Kleinschreibung: In jeder Suchanfrage kann angegeben werden, ob beim Suchen in allen benutzerdefinierten Attributen zwischen Groß- und Kleinschreibung zu unterscheiden ist.
  • Bereichsbasierte Filterung: customAttribute Suchfilter können Jobs zwischen einem Bereich angegebener numerischer Werte filtern. Wenn beispielsweise ein bestimmtes Feld customAttribute zum Speichern der Mindest-GPA-Anforderungen eines Jobs verwendet wird, kann der Suchfilter customAttribute verwendet werden, um Jobs innerhalb eines bestimmten Mindest-GPA-Bereichs zurückzugeben, der größer als ein Mindest-GPA-Wert ist. kleiner als ein Mindest-GPA-Wert usw.
  • Feldübergreifende Filterung: customAttribute bietet Kunden von Cloud Talent Solution auch die Möglichkeit, Ausdrücke zu definieren, die eine Kombination von benutzerdefinierten Attributen filtern. Beispiel: In der Geschäftslogik eines Kunden ist festgelegt, dass nur Jobs mit Sponsoring für ein Visum oder Telearbeitsjobs gewünscht werden. Der Kunde speichert beide Felder in einem anderen customAttribute. Anschließend kann er einen Suchfilter mit einem Ausdruck angeben, der die benötigte Logik definiert. Für Ausdrücke werden nur drei Verschachtelungsebenen unterstützt.

  • Schlüsselwortspezifische Suche: Geben Sie im keywordSearchableCustomAttributes des zugeordneten Unternehmens ein bestimmtes customAttribute an, um sicherzustellen, dass Suchanforderungen, die einen Wert im angegebenen customAttribute enthalten, die Jobs zurückgeben, die diesen Wert in diesem customAttribute enthalten.

  • SQL-basierte Suche:Mit customAttribute können Sie Ausdrücke im Booleschen Stil in der Suchanforderung definieren. Cloud Talent Solution analysiert diese Ausdrücke automatisch, wendet die Filter auf die Suchanforderung an und gibt die Ergebnisse entsprechend zurück. Für boolesche Ausdrücke sind nur drei Verschachtelungsebenen und maximal 2.000 Zeichen zulässig.

  • Definition benutzerdefinierter Histogramm-Buckets: Benutzerdefinierte Attribute ermöglichen Cloud Talent Solution-Kunden, benutzerdefinierte Buckets festzulegen, mit denen sich Histogramme berechnen lassen. Sie können beispielsweise eine customAttribute verwenden, um minimale GPA-Informationen zu speichern, und dann ein Histogramm für dieses Feld erstellen. Außerdem haben Sie die Möglichkeit, Buckets von 3,0 bis 3,5, 3,51 bis 4,0 usw. zu erstellen, um alle Mindestnotendurchschnitte in diesen Buckets zu gruppieren.

Benutzerdefinierte Attribute verwenden

Erstellen Sie einen neuen Job mit dem Feld customAttribute (kann entweder mit numerischen oder Zeichenfolgenwerten verwendet werden):

Go

Informationen zum Installieren und Verwenden der Clientbibliothek für CTS finden Sie unter CTS-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur CTS Go API.

Richten Sie zur Authentifizierung bei CTS die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import (
	"context"
	"fmt"
	"io"

	talent "cloud.google.com/go/talent/apiv4beta1"
	"cloud.google.com/go/talent/apiv4beta1/talentpb"
	"github.com/gofrs/uuid"
	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: %w", err)
	}
	defer c.Close()

	// 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: %w", 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

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


import com.google.cloud.talent.v4.CreateJobRequest;
import com.google.cloud.talent.v4.CustomAttribute;
import com.google.cloud.talent.v4.Job;
import com.google.cloud.talent.v4.JobServiceClient;
import com.google.cloud.talent.v4.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 {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    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());
    }
  }
}

Node.js

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


const talent = require('@google-cloud/talent').v4;

/**
 * Create Job with Custom Attributes
 *
 * @param projectId {string} Your Google Cloud Project ID
 * @param tenantId {string} Identifier of the Tenantd
 */
function sampleCreateJob(
  projectId,
  tenantId,
  companyName,
  requisitionId,
  languageCode
) {
  const client = new talent.JobServiceClient();
  // const projectId = 'Your Google Cloud Project ID';
  // const tenantId = 'Your Tenant ID (using tenancy is optional)';
  // const companyName = 'Company name, e.g. projects/your-project/companies/company-id';
  // const requisitionId = 'Job requisition ID, aka Posting ID. Unique per job.';
  // const languageCode = 'en-US';
  const formattedParent = client.tenantPath(projectId, tenantId);
  const job = {
    company: companyName,
    requisitionId: requisitionId,
    languageCode: languageCode,
  };
  const request = {
    parent: formattedParent,
    job: job,
  };
  client
    .createJob(request)
    .then(responses => {
      const response = responses[0];
      console.log(`Created job: ${response.name}`);
    })
    .catch(err => {
      console.error(err);
    });
}

Python

Weitere Informationen zum Installieren und Erstellen eines Cloud Talent Solution-Clients finden Sie unter Cloud Talent Solution-Clientbibliotheken.


from google.cloud import talent


def create_job(project_id, tenant_id, company_id, requisition_id):
    """Create Job with Custom Attributes"""

    client = talent.JobServiceClient()

    # project_id = 'Your Google Cloud Project ID'
    # tenant_id = 'Your Tenant ID (using tenancy is optional)'
    # company_id = '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'

    if isinstance(project_id, bytes):
        project_id = project_id.decode("utf-8")
    if isinstance(tenant_id, bytes):
        tenant_id = tenant_id.decode("utf-8")
    if isinstance(company_id, bytes):
        company_id = company_id.decode("utf-8")

    # 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
    custom_attribute = talent.CustomAttribute()
    custom_attribute.filterable = True
    custom_attribute.string_values.append("Intern")
    custom_attribute.string_values.append("Apprenticeship")

    parent = f"projects/{project_id}/tenants/{tenant_id}"

    job = talent.Job(
        company=company_id,
        title="Software Engineer",
        requisition_id=requisition_id,
        description="This is a description of this job",
        language_code="en-us",
        custom_attributes={"FOR_STUDENTS": custom_attribute},
    )

    response = client.create_job(parent=parent, job=job)
    print(f"Created job: {response.name}")
    return response.name

Standardmäßig suchen die Endpunkte searchJobs und searchJobsForAlert nur nach Standardfeldern. Wenn Sie auch nach customAttribute-Feldern suchen müssen, definieren Sie mit dem Feld keywordSearchableJobCustomAttributes eine Liste von benutzerdefinierten Attributen für die Suche.

Wenn ein Personalvermittler beispielsweise eine customAttribute "customRequisitions" verwenden möchte, um die Anforderungs-IDs von Jobs zu speichern, die für einen bestimmten Arbeitgeber spezifisch sind, wird durch Festlegen von keywordSearchableJobCustomAttributes für dieses Feld eine regelmäßige Suche durch einen Personalvermittler durchgeführt "ABC123" gibt alle Jobs zurück, die die customAttribute "customRequisitions" mit dem Wert "ABC123" haben.