# #node.js #google-bigquery
Вопрос:
У меня есть приложение, которое позволяет людям использовать графический пользовательский интерфейс для создания моделей в Bigquery, поэтому я могу создать модель, вызвав мои API-интерфейсы nodejs, которые вызывают bigquery, модель требует некоторого обучения, как я могу запросить bigquery, чтобы проверить, прошла ли моя модель обучение с использованием моего nodejs bigqueryклиентская библиотека, чтобы я знал, что модель прошла обучение, и я могу начать доступ к центроидам?
Ответ №1:
Поскольку вы можете обучать модель, для обучения должна быть создана соответствующая jobID
. Что вы можете сделать, это перечислить все задания и отфильтровать их по статусу, в этом случае проверьте запущенные.
Приведенный ниже код вернет запущенные задания:
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();
const jobArr = []
async function listJobs() {
// Lists all jobs in current GCP project.
// List the 5 most recent "running" jobs in reverse chronological order.
// Omit the max_results parameter to list jobs from the past 6 months.
// set allUsers to true to display jobs owned by all users in the project.
const options = {
maxResults: 5,
allUsers: true,
stateFilter: 'running' //Acceptable values are "done", "pending", and "running"
};
const [jobs] = await bigquery.getJobs(options);
console.log('Jobs:');
jobs.forEach(job => {
console.log(job.id)
});
}
Дополнительную информацию о том, как использовать этот метод, см. в getJobs().
В целях тестирования я запустил одно задание, и оно вернуло текущее выполняемое задание. Теперь вы можете использовать этот идентификатор задания и сохранить его где-нибудь, чтобы отслеживать, завершено задание или нет, получая сведения о его задании.
Jobs:
bquxjob_12345_1234456
Вы можете дополнительно проверить детали этого задания, используя bigquery.job()
для получения таких сведений, как адрес электронной почты, на котором выполнялось задание, статика (время создания, время запуска и т. Д.) И т. Д. Вы можете дополнительно проверить в Job REST reference информацию, которую вы можете извлечь из этого.
Получите адрес электронной почты, на котором выполнялось задание:
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();
const jobArr = []
async function listJobs() {
// Lists all jobs in current GCP project.
// List the 5 most recent "running" jobs in reverse chronological order.
// Omit the max_results parameter to list jobs from the past 6 months.
// set allUsers to true to display jobs owned by all users in the project.
const options = {
maxResults: 5,
allUsers: true,
stateFilter: 'running' //Acceptable values are "done", "pending", and "running"
};
const [jobs] = await bigquery.getJobs(options);
console.log('Jobs:');
jobs.forEach(job => {
jobArr.push(job.id) // pushed the jobID in a list to pass to getjob()
console.log(job.id)
});
getJob(jobArr)
}
async function getJob(jobArr) {
// Get job properties.
for (const element of jobArr) {
const job = bigquery.job(element);
const [jobResult] = await job.get();
console.log("Email:")
console.log(jobResult.metadata.user_email);
// uncomment this part to show start and end time
//console.log("Start Time (UNIX epoch):")
//console.log(jobResult.metadata.statistics.startTime);
//console.log("End Time (UNIX epoch):")
//console.log(jobResult.metadata.statistics.endTime);
}
}
listJobs()
Дополнительную информацию о том, как использовать этот метод, см. в job().
Вывод:
Jobs:
bquxjob_12345_1234456
Email:
test_email@test.com