This repository has been archived by the owner on Jul 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(samples): interactive tutorials code samples for import user ev…
…ents (#152) * chore: import user events interactive samples
- Loading branch information
1 parent
fd95679
commit 27f7cc4
Showing
16 changed files
with
709 additions
and
347 deletions.
There are no files selected for viewing
87 changes: 87 additions & 0 deletions
87
samples/interactive-tutorials/events/import-user-events-big-query.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
// Copyright 2022 Google Inc. All Rights Reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
async function main(datasetId) { | ||
// [START retail_import_user_events_big_query] | ||
|
||
// Imports the Google Cloud client library. | ||
const {UserEventServiceClient} = require('@google-cloud/retail').v2; | ||
|
||
// Instantiates a client. | ||
const retailClient = new UserEventServiceClient(); | ||
|
||
const projectId = await retailClient.getProjectId(); | ||
const dataSchema = 'user_event'; | ||
const tableId = 'events'; // TO CHECK ERROR HANDLING USE THE TABLE OF INVALID USER EVENTS | ||
|
||
// Placement | ||
const parent = `projects/${projectId}/locations/global/catalogs/default_catalog`; // TO CHECK ERROR HANDLING PASTE THE INVALID CATALOG NAME HERE | ||
|
||
// The desired input location of the data. | ||
const inputConfig = { | ||
bigQuerySource: { | ||
projectId, | ||
datasetId, | ||
tableId, | ||
dataSchema, | ||
}, | ||
}; | ||
|
||
const IResponseParams = { | ||
IImportUserEventsResponse: 0, | ||
IImportMetadata: 1, | ||
IOperation: 2, | ||
}; | ||
|
||
const callImportUserEvents = async () => { | ||
// Construct request | ||
const request = { | ||
parent, | ||
inputConfig, | ||
}; | ||
|
||
console.log('Import request: ', request); | ||
|
||
// Run request | ||
const [operation] = await retailClient.importUserEvents(request); | ||
const response = await operation.promise(); | ||
const result = response[IResponseParams.IImportMetadata]; | ||
console.log( | ||
`Number of successfully imported events: ${result.successCount | 0}` | ||
); | ||
console.log( | ||
`Number of failures during the importing: ${result.failureCount | 0}` | ||
); | ||
console.log(`Operation result: ${JSON.stringify(response)}`); | ||
}; | ||
|
||
console.log('Start events import'); | ||
await callImportUserEvents(); | ||
console.log('Events import finished'); | ||
// [END retail_import_user_events_big_query] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main( | ||
...(() => { | ||
const argv = process.argv.slice(2); | ||
return argv.length ? argv : ['user_events']; | ||
})() | ||
); |
94 changes: 94 additions & 0 deletions
94
samples/interactive-tutorials/events/import-user-events-gcs.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
// Copyright 2022 Google Inc. All Rights Reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
async function main(bucketName) { | ||
// [START retail_import_user_events_gcs] | ||
|
||
// Imports the Google Cloud client library. | ||
const {UserEventServiceClient} = require('@google-cloud/retail').v2; | ||
|
||
// Instantiates a client. | ||
const retailClient = new UserEventServiceClient(); | ||
|
||
const projectId = await retailClient.getProjectId(); | ||
|
||
//TODO(developer) set the environment variable value which will be used as the bucket name | ||
const gcsBucket = `gs://${bucketName}`; | ||
const gcsErrorsBucket = `gs://${bucketName}/error`; | ||
const gcsEventsObject = 'user_events.json'; // TO CHECK ERROR HANDLING USE THE JSON WITH INVALID USER EVENTS | ||
|
||
// Placement | ||
const parent = `projects/${projectId}/locations/global/catalogs/default_catalog`; // TO CHECK ERROR HANDLING PASTE THE INVALID CATALOG NAME HERE | ||
|
||
// The desired input location of the data. | ||
const inputConfig = { | ||
gcsSource: { | ||
inputUris: [gcsBucket + '/' + gcsEventsObject], | ||
dataSchema: 'user_event', | ||
}, | ||
}; | ||
|
||
// The desired location of errors incurred during the Import. | ||
const errorsConfig = { | ||
gcsPrefix: gcsErrorsBucket, | ||
}; | ||
|
||
const IResponseParams = { | ||
IImportUserEventsResponse: 0, | ||
IImportMetadata: 1, | ||
IOperation: 2, | ||
}; | ||
|
||
const callImportUserEvents = async () => { | ||
// Construct request | ||
const request = { | ||
parent, | ||
inputConfig, | ||
errorsConfig, | ||
}; | ||
|
||
console.log('Import request: ', request); | ||
|
||
// Run request | ||
const [operation] = await retailClient.importUserEvents(request); | ||
const response = await operation.promise(); | ||
const result = response[IResponseParams.IImportMetadata]; | ||
console.log( | ||
`Number of successfully imported events: ${result.successCount | 0}` | ||
); | ||
console.log( | ||
`Number of failures during the importing: ${result.failureCount | 0}` | ||
); | ||
console.log(`Operation result: ${JSON.stringify(response)}`); | ||
}; | ||
|
||
console.log('Start events import'); | ||
await callImportUserEvents(); | ||
console.log('Events import finished'); | ||
// [END retail_import_user_events_gcs] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main( | ||
...(() => { | ||
const argv = process.argv.slice(2); | ||
return argv.length ? argv : [process.env['EVENTS_BUCKET_NAME']]; | ||
})() | ||
); |
92 changes: 92 additions & 0 deletions
92
samples/interactive-tutorials/events/import-user-events-inline.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
// Copyright 2022 Google Inc. All Rights Reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
async function main() { | ||
// [START retail_import_user_events_inline] | ||
|
||
// Imports the Google Cloud client library. | ||
const {UserEventServiceClient} = require('@google-cloud/retail').v2; | ||
|
||
// Instantiates a client. | ||
const retailClient = new UserEventServiceClient(); | ||
|
||
const projectId = await retailClient.getProjectId(); | ||
|
||
// Placement | ||
const parent = `projects/${projectId}/locations/global/catalogs/default_catalog`; | ||
|
||
// Create events | ||
const generateEvent = eventType => { | ||
return { | ||
eventType, | ||
visitorId: 'visitor_' + Math.random().toString(36).slice(2), | ||
eventTime: { | ||
seconds: Math.round(Date.now() / 1000), | ||
}, | ||
}; | ||
}; | ||
|
||
// The desired input location of the data. | ||
const inputConfig = { | ||
userEventInlineSource: { | ||
userEvents: [ | ||
generateEvent('home-page-view'), | ||
generateEvent('home-page-view'), | ||
generateEvent('home-page-view'), | ||
], | ||
}, | ||
}; | ||
|
||
const IResponseParams = { | ||
IImportUserEventsResponse: 0, | ||
IImportMetadata: 1, | ||
IOperation: 2, | ||
}; | ||
|
||
const callImportUserEvents = async () => { | ||
// Construct request | ||
const request = { | ||
parent, | ||
inputConfig, | ||
}; | ||
|
||
console.log('Import request: ', request); | ||
|
||
// Run request | ||
const [operation] = await retailClient.importUserEvents(request); | ||
const response = await operation.promise(); | ||
const result = response[IResponseParams.IImportMetadata]; | ||
console.log( | ||
`Number of successfully imported events: ${result.successCount | 0}` | ||
); | ||
console.log( | ||
`Number of failures during the importing: ${result.failureCount | 0}` | ||
); | ||
console.log(`Operation result: ${JSON.stringify(response)}`); | ||
}; | ||
|
||
console.log('Start events import'); | ||
await callImportUserEvents(); | ||
console.log('Events import finished'); | ||
// [END retail_import_user_events_inline] | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
31 changes: 31 additions & 0 deletions
31
samples/interactive-tutorials/setup/delete-events-bigquery-table.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// Copyright 2022 Google Inc. All Rights Reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
async function main() { | ||
const utils = require('./setup-cleanup'); | ||
|
||
const dataset = 'user_events'; | ||
|
||
//Delete created bigquery dataset | ||
await utils.deleteBqDataset(dataset); | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(); |
32 changes: 32 additions & 0 deletions
32
samples/interactive-tutorials/setup/delete-events-gcs-bucket.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
// Copyright 2022 Google Inc. All Rights Reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
async function main() { | ||
const utils = require('./setup-cleanup'); | ||
|
||
// The ID of your GCS bucket | ||
const bucketName = process.env['EVENTS_BUCKET_NAME']; | ||
|
||
//Delete created bucket | ||
await utils.deleteBucket(bucketName); | ||
} | ||
|
||
process.on('unhandledRejection', err => { | ||
console.error(err.message); | ||
process.exitCode = 1; | ||
}); | ||
|
||
main(); |
Oops, something went wrong.