Интегрируйте Oracle Analytics с функциями Oracle Cloud Infrastructure (OCI), чтобы использовать их в потоках данных для преобразования данных.
Можно преобразовать данные в Oracle Analytics с помощью функций, созданных в OCI. Например, можно использовать функцию преобразования языка для преобразования английского текста в испанский или немецкий.
Сначала вы регистрируете функции OCI в Oracle Analytics, а затем любой пользователь Oracle Analytics с полномочиями администратора сервиса BI или автором контента DV может использовать их в потоках данных.
Создайте функции в консоли OCI, чтобы их можно было использовать для преобразования данных в потоки данных Oracle Analytics.
Регистрация функций OCI в Oracle Analytics
Если при регистрации функции OCI в Oracle Analytics она затеняется серым цветом в диалоговом окне "Выбор функции", с помощью тега oac-compatible убедитесь, что она настроена и вызывается с правильным значением funcMode.

.png
Настройка функций OCI для использования в Oracle Analytics
Функции OCI, которые необходимо использовать в Oracle Analytics, должны иметь тег oac-compatible, а код функции должен включать переменную funcMode. Настройте следующие параметры в консоли OCI.
oac-compatible и установите значение true.
funcMode в код функции. Oracle Analytics отправляет запрос на регистрацию функции OCI с кодом funcMode=describeFunction и запрос на вызов функции OCI с кодом funcMode=executeFunction. Функция обработчика в func.py должна работать в режиме describeFunction или executeFunction. Это можно сделать на основе значения входной переменной funcMode из запроса, как показано ниже.
Ниже представлен формат запроса и ответа на примере функций OCI для подсчета слов в Python.
funcMode = describeFunction
{ "funcMode": "describeFunction"}Когда funcMode в запросе имеет значение "describeFunction", функция должна возвращать определение функции со статусом (returnCode & errorMessage), выходными данными (имя, тип данных выходного столбца), параметрами (имя, описание, тип и т. п. входного параметра), bucketName и т. д. в виде объекта JSON следующего формата (пример подсчета слов).
funcDefinition = {
"status": {
"returnCode": 0,
"errorMessage": ""
},
"funcDescription": {
"outputs": [
{"name": "word_count", "dataType": "integer"}
],
"parameters": [
{"name": "textColumn", "displayName": "Text Column",
"description": "Choose column to count words", "required": True,
"value": {"type": "column"}}
],
"bucketName": "bucket-OCI-FAAS",
"isOutputJoinableWithInput": True
}
}Добавьте следующий код в func.py, чтобы возвращать funcDefinition, когда funcMode в запросе имеет значение "describeFunction".
def handler(ctx, data: io.BytesIO = None):
response_data = ""
try:
body = json.loads(data.getvalue())
funcMode = body.get("funcMode")
if funcMode == 'describeFunction':
response_data = json.dumps(funcDefinition)
except (Exception, ValueError) as ex:
response_data = json.dumps(
{"error": "{0}".format(str(ex))})
return response.Response(
ctx, response_data,
headers={"Content-Type": "application/json"}
)funcMode = executeFunction: если funcMode имеет значение "executeFunction", необходимо выполнить фактическую логику функции, а ответ должен быть отправлен назад в Oracle Analytics вместе с выходными данными. Когда зарегистрированная функция вызывается из потока данных в Oracle Analytics, объект запроса будет иметь следующий формат с именем столбца в аргументах: input(bucketName, fileName, fileExtension, fileName, method & rowID) и output(bucketName, fileName & fileExtension).
{
"args":
{
"textColumn": "REVIEW"
},
"funcMode": "executeFunction",
"input":
{
"bucketName": "bucket-OCI-FAAS",
"fileExtension": ".csv",
"fileName": "oac-fn-e99cd4fddb3844be89c7af6ea4bbeb76-input",
"method": "csv",
"rowID": "row_id"
},
"output":
{
"bucketName": "bucket-OCI-FAAS",
"fileExtension": ".csv",
"fileName": "oac-fn-e99cd4fddb3844be89c7af6ea4bbeb76-output"
}
}Создание функций в OCI
Можно создавать функции с помощью консоли OCI, командной строки (Fn Project CLI) или API-интерфейса. Например, в консоли OCI нажмите Сервисы для разработчиков, затем Функции и следуйте инструкциям на экране, чтобы создать приложения и одну или несколько функций. Подробнее см. в разделе Создание функций в документации OCI. При первом создании функций следуйте инструкциям, приведенным в подробном примере Создание, развертывание и вызов функций HelloWorld. Любые функции, которые необходимо использовать в Oracle Analytics, должны иметь произвольный тег oac-compatible=true (см. раздел Настройка функций OCI для использования в Oracle Analytics выше).
Советы по созданию функций в консоли OCI
Для интеграции Oracle Analytics с функциями OCI убедитесь в наличии необходимых политик безопасности.
Пользователь OCI, указанный в подключении между Oracle Analytics Cloud и арендой OCI, должен иметь разрешения на чтение, запись и удаление в пространстве, содержащем необходимые ресурсы OCI. Убедитесь, что пользователь OCI принадлежит к группе пользователей со следующими минимальными политиками безопасности OCI. При подключении к аренде OCI из Oracle Analytics можно использовать API-ключ OCI или субъект ресурсов.
Примечание.:
Для субъекта ресурсов: чтобы включить все экземпляры Analytics в пространстве, укажите{request.principal.type='analyticsinstance', request.principal.compartment.id='<compartmentA_ocid>'} вместо {request.principal.id='<analytics_instance_ocid>'}.| Политики API-ключей | Политики субъектов ресурсов |
|---|---|
Allow group <group_name> to use functions-family in compartment <compartment_name> |
Allow any-user to use functions-family in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>'} |
Allow group <group_name> to read buckets in compartment <compartment_name> |
Allow any-user to read buckets in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>'} |
Allow group <group_name> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' |
Allow any-user to manage objects in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>', target.bucket.name='<staging_bucket_name>'} |
Allow group <group_name> to read objectstorage-namespaces in tenancy |
Allow any-user to read objectstorage-namespaces in tenancy where all {request.principal.id='<analytics_instance_ocid>'} |
| Политики динамических групп | Описание |
|---|---|
Allow dynamic-group <dynamic_group> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' |
Предоставляет доступ к промежуточному сегменту для динамической группы. |
Пример правила сопоставления: <dynamic_group>.{resource.type = 'fnfunc', resource.compartment.id = '<compartment_ocid>'}, где <compartment_id> — это идентификатор отделения Oracle Cloud, содержащего функции.
Выполните эти задачи высокого уровня в указанном ниже порядке, чтобы преобразовать данные в Oracle Analytics с помощью функций OCI.
| Задача | Описание | Дополнительная информация |
|---|---|---|
|
Создание функций в OCI (требуются полномочия разработчика функций) |
В аренде OCI создайте функции и убедитесь, что они соответствуют предварительным условиям, указанным для использования с Oracle Analytics. |
|
| Назначение политик OCI | Убедитесь в наличии политик OCI, необходимых для подключения с помощью ключа API или субъекта ресурсов. | Политики, необходимые для интеграции функций OCI с Oracle Analytics |
| Подключение Oracle Analytics к аренде OCI (требуются полномочия администратора или автора DV) | В Oracle Analytics создайте подключение к аренде OCI. |
Создание подключения к области аренды Oracle Cloud Infrastructure |
| Регистрация функций OCI в Oracle Analytics (требуются полномочия администратора или автора DV) | В Oracle Analytics зарегистрируйте функции OCI, чтобы их можно было вызывать из потоков данных. | |
| Преобразование данных с помощью функций OCI (требуются полномочия администратора или автора DV) | Создайте поток данных и используйте шаг Применить нестандартный сценарий, чтобы вызвать функцию OCI. |
Зарегистрируйте функции OCI в Oracle Analytics, чтобы использовать их в потоках данных для преобразования данных. Например, можно зарегистрировать функцию преобразования языка, чтобы аналитики данных могли преобразовать английский текст в испанский или немецкий.