Skip to main content

Create

import {
cloudApi,
serviceClients,
Session,
waitForOperation,
} from "@yandex-cloud/nodejs-sdk";

const CreateTransferRequest =
cloudApi.datatransfer.transfer_service.CreateTransferRequest;
const TransferType = cloudApi.datatransfer.transfer.TransferType;

(async () => {
const authToken = process.env["YC_OAUTH_TOKEN"];
const session = new Session({ oauthToken: authToken });
const client = session.client(serviceClients.TransferServiceClient);

const operation = await client.create(
CreateTransferRequest.fromPartial({
// sourceId: "sourceId",
// targetId: "targetId",
// description: "description",
// folderId: "folderId",
// runtime: {
// ycRuntime: {
// jobCount: 0,
// uploadShardParams: {
// jobCount: 0,
// processCount: 0
// }
// }
// },
// type: TransferType.SNAPSHOT_AND_INCREMENT,
// name: "name",
// labels: {"key": "labels"},
// transformation: {
// transformers: [{
// maskField: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// columns: ["columns"],
// function: {
// maskFunctionHash: {
// userDefinedSalt: "userDefinedSalt"
// }
// }
// },
// filterColumns: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// columns: {
// includeColumns: ["includeColumns"],
// excludeColumns: ["excludeColumns"]
// }
// },
// renameTables: {
// renameTables: [{
// originalName: {
// nameSpace: "nameSpace",
// name: "name"
// },
// newName: {
// nameSpace: "nameSpace",
// name: "name"
// }
// }]
// },
// replacePrimaryKey: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// keys: ["keys"]
// },
// convertToString: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// columns: {
// includeColumns: ["includeColumns"],
// excludeColumns: ["excludeColumns"]
// }
// },
// sharderTransformer: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// columns: {
// includeColumns: ["includeColumns"],
// excludeColumns: ["excludeColumns"]
// },
// shardsCount: 0
// },
// tableSplitterTransformer: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// columns: ["columns"],
// splitter: "splitter"
// },
// filterRows: {
// tables: {
// includeTables: ["includeTables"],
// excludeTables: ["excludeTables"]
// },
// filter: "filter",
// filters: ["filters"]
// }
// }]
// }
})
);
await waitForOperation(operation, session);
})();

CreateTransferRequest​

sourceId : string​
targetId : string​
description : string​
folderId : string​
runtime : Runtime​
type : TransferType​
name : string​
labels : string​
transformation : Transformation​

Runtime​

One of runtime​

  • ycRuntime : YcRuntime​

Transformation​

Transformation is converting data using special transformer functions. These functions are executed on a data stream, applied to each data change item, and transform them. A transformer can be run at both the metadata and data levels. Data can only be transformed if the source and target are of different types.

transformers : Transformer​

Transformers are set as a list. When activating a transfer, a transformation plan is made for the tables that match the specified criteria. Transformers are applied to the tables in the sequence specified in the list.

YcRuntime​

jobCount : int64​
uploadShardParams : ShardingUploadParams​

Transformer​

Some transformers may have limitations and only apply to some source-target pairs.

One of transformer​

  • maskField : MaskFieldTransformer​
  • filterColumns : FilterColumnsTransformer​
  • renameTables : RenameTablesTransformer​
  • replacePrimaryKey : ReplacePrimaryKeyTransformer​
  • convertToString : ToStringTransformer​
  • sharderTransformer : SharderTransformer​
  • tableSplitterTransformer : TableSplitterTransformer​
  • filterRows : FilterRowsTransformer​

ShardingUploadParams​

jobCount : int64​
processCount : int64​

MaskFieldTransformer​

Mask field transformer allows you to hash data

tables : TablesFilter​

List of included and excluded tables

columns : string​

Specify the name of the column for data masking (a regular expression).

function : MaskFunction​

Mask function

FilterColumnsTransformer​

Set up a list of table columns to transfer

tables : TablesFilter​

List of the tables to filter using lists of included and excluded tables.

columns : ColumnsFilter​

List of the columns to transfer to the target tables using lists of included and excluded columns.

RenameTablesTransformer​

Set rules for renaming tables by specifying the current names of the tables in the source and new names for these tables in the target.

renameTables : RenameTable​

List of renaming rules

ReplacePrimaryKeyTransformer​

Override primary keys

tables : TablesFilter​

List of included and excluded tables

keys : string​

List of columns to be used as primary keys

ToStringTransformer​

Convert column values to strings The values will be converted depending on the source type Conversion rules are described here: https://cloud.yandex.com/en/docs/data-transfer/concepts/data-transformation#convert-to-string

tables : TablesFilter​

List of included and excluded tables

columns : ColumnsFilter​

List of included and excluded columns

SharderTransformer​

Set the number of shards for particular tables and a list of columns whose values will be used for calculating a hash to determine a shard.

tables : TablesFilter​

List of included and excluded tables

columns : ColumnsFilter​

List of included and excluded columns

shardsCount : int64​

Number of shards

TableSplitterTransformer​

A transfer splits the X table into multiple tables (X_1, X_2, ..., X_n) based on data. If a row was located in the X table before it was split, it is now in the X_i table, where i is determined by the column list and split string parameters. Example: If the column list has two columns, month of birth and gender, specified and the split string states @, information about an employee whose name is John and who was born on February 11, 1984, from the Employees table will get to a new table named Employees@February@male.

tables : TablesFilter​

List of included and excluded tables

columns : string​

Specify the columns in the tables to be partitioned.

splitter : string​

Specify the split string to be used for merging components in a new table name.

FilterRowsTransformer​

This filter only applies to transfers with queues (Logbroker or Apache Kafka®) as a data source. When running a transfer, only the strings meeting the specified criteria remain in a changefeed.

tables : TablesFilter​

List of included and excluded tables.

filter : string​

Filtering criterion. This can be comparison operators for numeric, string, and Boolean values, comparison to NULL, and checking whether a substring is part of a string. Details here: https://yandex.cloud/en-ru/docs/data-transfer/concepts/data-transformation#append-only-sources. Deprecated: Use filters instead.

filters : string​

Data is transported if it satisfies at least one of filters. Consider that there is OR statement between filters. Each filter can be comparison operators for numeric, string, and Boolean values, comparison to NULL, and checking whether a substring is part of a string. Details in docs: https://yandex.cloud/en-ru/docs/data-transfer/concepts/data-transformation#append-only-sources.

TablesFilter​

Filter tables using lists of included and excluded tables.

includeTables : string​

List of tables that will be included to transfer

excludeTables : string​

List of tables that will be excluded to transfer

MaskFunction​

Mask function

One of maskFunction​

  • maskFunctionHash : MaskFunctionHash​

    Hash mask function

ColumnsFilter​

Filter columns using lists of included and excluded columns.

includeColumns : string​

List of columns that will be included to transfer

excludeColumns : string​

List of columns that will be excluded to transfer

RenameTable​

Specify rule for renaming table

originalName : Table​

Specify the current names of the table in the source

newName : Table​

Specify the new names for this table in the target

MaskFunctionHash​

Hash data using HMAC

userDefinedSalt : string​

This string will be used in the HMAC(sha256, salt) function applied to the column data.

Table​

nameSpace : string​
name : string​

Operation​

An Operation resource. For more information, see Operation.

id : string​

ID of the operation.

description : string​

Description of the operation. 0-256 characters long.

createdAt : google.protobuf.Timestamp​

Creation timestamp.

createdBy : string​

ID of the user or service account who initiated the operation.

modifiedAt : google.protobuf.Timestamp​

The time when the Operation resource was last modified.

done : bool​

If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.

metadata : google.protobuf.Any​

Service-specific metadata associated with the operation. It typically contains the ID of the target resource that the operation is performed on. Any method that returns a long-running operation should document the metadata type, if any.

One of result​

The operation result. If done == false and there was no failure detected, neither error nor response is set. If done == false and there was a failure detected, error is set. If done == true, exactly one of error or response is set.

  • error : google.rpc.Status​

    The error result of the operation in case of failure or cancellation.

  • response : google.protobuf.Any​
    The normal response of the operation in case of success.

    If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is the standard Create/Update, the response should be the target resource of the operation. Any method that returns a long-running operation should document the response type, if any.