데이터 흐름에서 데이터 변환에 사용할 수 있도록 Oracle Analytics에서 OCI(Oracle Cloud Infrastructure) Functions를 통합합니다.
OCI에서 생성된 함수를 사용하여 Oracle Analytics에서 데이터를 변환할 수 있습니다. 예를 들어, 언어 변환 함수를 사용하여 영어 텍스트를 스페인어 또는 독일어로 변환할 수 있습니다.
먼저 Oracle Analytics에서 OCI 함수를 등록하면, BI 서비스 관리자 또는 DV 콘텐츠 작성자 권한이 있는 Oracle Analytics 사용자가 데이터 흐름에서 해당 함수를 사용할 수 있습니다.
Oracle Analytics 데이터 흐름에서 데이터를 변환하는 데 사용할 수 있도록 OCI 콘솔에서 함수를 생성합니다.
Oracle Analytics에서 OCI 함수 등록 정보
Oracle Analytics에서 OCI 함수를 등록하는 경우 함수 선택 대화상자에서 비활성화되면 해당 함수가 oac-compatible
태그로 구성되어 있으며 올바른 funcMode
값으로 호출되는지 확인합니다.
.png''
Oracle Analytics에서 사용할 OCI 함수 구성 정보
Oracle Analytics에서 사용할 OCI 함수에 oac-compatible
태그가 있어야 하며, 함수 코드에 funcMode
변수가 포함되어야 합니다. OCI 콘솔에서 다음 설정을 구성합니다.
oac-compatible
인 자유 형식의 태그를 추가하고 값을 true
로 설정합니다.funcMode
변수를 포함합니다. Oracle Analytics
는 funcMode=describeFunction
을 통한 OCI 함수 등록 요청 및 funcMode=executeFunction
을 통한 OCI 함수 호출 요청을 전송합니다. func.py에서 처리기 함수는 describeFunction 모드 또는 executeFunction 모드에서 작동해야 합니다. 이 함수는 아래 그림과 같이 요청에서 입력 변수 funcMode
의 값을 기반으로 수행될 수 있습니다.
다음은 Python에서 Word Count 예에 대한 OCI 함수의 요청 및 응답 형식입니다.
funcMode = describeFunction
{ "funcMode": "describeFunction"}
요청의 funcMode가 'describeFunction'인 경우 함수는 status(returnCode 및 errorMessage), outputs(출력 열의 name, dataType), parameters(입력 매개변수의 name, description, type 등), bucketName 등과 함께 다음 형식(Word Count 예)의 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 } }
요청의 funcMode가 'describeFunction'인 경우 funcDefinition이 반환되도록 func.py에서 다음 코드를 추가합니다.
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에서 데이터 흐름으로부터 호출된 경우 요청 객체가 args, 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 콘솔에서 개발자 서비스, 함수를 차례로 누르고 화면에 표시되는 지침에 따라 애플리케이션과 하나 이상의 함수를 생성합니다. 자세한 내용은 Creating Functions in OCI Documentation을(를) 참조하십시오. 함수를 처음 생성하는 경우 엔드 투 엔드 예 Creating, Deploying, and Invoking a Helloworld Function의 단계를 따릅니다. Oracle Analytics에서 사용하려는 모든 함수에는 자유 형식의 태그 oac-compatible=true
가 포함되어야 합니다(위의 Oracle Analytics에서 사용할 OCI 함수 구성 정보 참조).
OCI 콘솔에서의 함수 생성 팁
Oracle Analytics를 OCI Functions와 통합하려면 필요한 보안 정책이 있어야 합니다.
Oracle Analytics Cloud와 OCI 테넌시 간의 접속 시 지정한 OCI 사용자에게는 사용할 OCI 리소스가 포함된 컴파트먼트에서 읽기, 쓰기 및 삭제 권한이 있어야 합니다. OCI 사용자가 다음과 같은 최소 OCI 보안 정책을 가진 사용자 그룹에 속하는지 확인하십시오. Oracle Analytics에서 OCI 테넌시에 접속하는 경우 OCI API 키 또는 리소스 주체를 사용할 수 있습니다.
주: 리소스 주체의 경우 컴파트먼트의 모든 Analytics 인스턴스를 포함하려면 {request.principal.id='<analytics_instance_ocid>'}
대신 {request.principal.type='analyticsinstance', request.principal.compartment.id='<compartmentA_ocid>'}
를 지정하십시오.
표 32-1 OCI Functions 통합에 필요한 보안 정책
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>'} |
표 32-2 OCI Functions - 동적 그룹 정책
정책 | 설명 |
---|---|
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>
는 함수를 포함하는 컴파트먼트의 OCID입니다.
아래 나열된 순서대로 높은 레벨의 다음 태스크를 수행하여 Oracle Analytics에서 OCI 함수로 데이터를 변환합니다.
작업 | 설명 | 추가 정보 |
---|---|---|
OCI에서 함수 생성(함수 개발자 권한 필요) |
OCI 테넌시에서 함수를 생성하고 해당 함수가 Oracle Analytics용으로 지정된 필요 조건을 준수하는지 확인합니다. |
|
OCI 정책 지정 | API 키 또는 리소스 주체를 사용하여 접속하는 데 필요한 OCI 정책이 있는지 확인합니다. | OCI Functions와 Oracle Analytics 통합에 필요한 정책 |
OCI 테넌시에 대한 Oracle Analytics 접속(관리자 또는 DV 작성자 권한 필요) | Oracle Analytics에서 OCI 테넌시에 대한 접속을 생성합니다. | |
Oracle Analytics에서 OCI 함수 등록(관리자 또는 DV 작성자 권한 필요) | Oracle Analytics에서 데이터 흐름으로부터 호출할 수 있도록 OCI 함수를 등록합니다. | |
OCI 함수를 사용하여 데이터 변환(관리자 또는 DV 작성자 권한 필요) | 데이터 흐름을 생성하고 사용자정의 스크립트 적용 단계를 사용하여 OCI 함수를 호출합니다. |
데이터 흐름에서 데이터 변환에 사용할 수 있도록 Oracle Analytics에서 OCI 함수를 등록합니다. 예를 들어, 데이터 분석가가 영어 텍스트를 스페인어 또는 독일어로 변환 가능하도록 언어 변환 함수를 등록할 수 있습니다.