import { v1 as bqdt, protos } from "@google-cloud/bigquery-data-transfer";
const { CreateTransferConfigRequest, TransferConfig } =
protos.google.cloud.bigquery.datatransfer.v1;
type Gcloud = {
type: string;
project_id: string;
private_key_id: string;
private_key: string;
client_email: string;
client_id: string;
auth_uri: string;
token_uri: string;
auth_provider_x509_cert_url: string;
client_x509_cert_url: string;
universe_domain: string;
};
export async function main(
resource: Gcloud,
destinationDatasetId: string,
datasetRegion: string = "us",
displayName: string,
query: string,
schedule: string,
writeDisposition: string = "WRITE_TRUNCATE",
destinationTableNameTemplate: string = "logs"
) {
const bqdtClient = new bqdt.DataTransferServiceClient({
credentials: resource,
projectId: resource.project_id,
});
const parent = bqdtClient.projectPath(resource.project_id);
const transferConfig = new TransferConfig({
displayName,
dataSourceId: "scheduled_query",
destinationDatasetId,
schedule,
datasetRegion,
params: {
fields: {
query: { stringValue: query },
destination_table_name_template: {
stringValue: destinationTableNameTemplate,
},
write_disposition: { stringValue: writeDisposition },
},
},
});
const request = new CreateTransferConfigRequest({
parent,
transferConfig,
serviceAccountName: resource.clientEmail,
});
const [response] = await bqdtClient.createTransferConfig(request);
return response;
}
Submitted by hugo697 692 days ago
import { v1 as bqdt, protos } from "@google-cloud/bigquery-data-transfer";
const { CreateTransferConfigRequest, TransferConfig } =
protos.google.cloud.bigquery.datatransfer.v1;
type Gcloud = {
type: string;
project_id: string;
private_key_id: string;
private_key: string;
client_email: string;
client_id: string;
auth_uri: string;
token_uri: string;
auth_provider_x509_cert_url: string;
client_x509_cert_url: string;
universe_domain: string;
};
export async function main(
resource: Gcloud,
destinationDatasetId: string,
datasetRegion: string = "us",
displayName: string,
query: string,
schedule: string,
writeDisposition: string = "WRITE_TRUNCATE",
destinationTableNameTemplate: string = "logs"
) {
const bqdtClient = new bqdt.DataTransferServiceClient({
credentials: resource,
projectId: resource.project_id,
});
const parent = bqdtClient.projectPath(resource.project_id);
const transferConfig = new TransferConfig({
displayName,
dataSourceId: "scheduled_query",
destinationDatasetId,
schedule,
datasetRegion,
params: {
fields: {
query: { stringValue: query },
destination_table_name_template: {
stringValue: destinationTableNameTemplate,
},
write_disposition: { stringValue: writeDisposition },
},
},
});
const request = new CreateTransferConfigRequest({
parent,
transferConfig,
serviceAccountName: resource.clientEmail,
});
const [response] = await bqdtClient.createTransferConfig(request);
return response;
}
Submitted by hugo697 693 days ago
import { v1 as bqdt, protos } from '@google-cloud/bigquery-data-transfer'
const { CreateTransferConfigRequest, TransferConfig } = protos.google.cloud.bigquery.datatransfer.v1
type Gcloud = {
projectId: string
privateKey: string
clientEmail: string
}
export async function main(
resource: Gcloud,
destinationDatasetId: string,
datasetRegion: string = 'us',
displayName: string,
query: string,
schedule: string,
writeDisposition: string = 'WRITE_TRUNCATE',
destinationTableNameTemplate: string = 'logs'
) {
const credentials = {
client_email: resource.clientEmail,
private_key: resource.privateKey.replace(/\\n/g, '\n')
}
const bqdtClient = new bqdt.DataTransferServiceClient({
credentials,
projectId: resource.projectId
})
const parent = bqdtClient.projectPath(resource.projectId)
const transferConfig = new TransferConfig({
displayName,
dataSourceId: 'scheduled_query',
destinationDatasetId,
schedule,
datasetRegion,
params: {
fields: {
query: { stringValue: query },
destination_table_name_template: { stringValue: destinationTableNameTemplate },
write_disposition: { stringValue: writeDisposition }
}
}
})
const request = new CreateTransferConfigRequest({
parent,
transferConfig,
serviceAccountName: resource.clientEmail
})
const [response] = await bqdtClient.createTransferConfig(request)
return response
}
Submitted by hugo697 693 days ago