Oracle Analytics와 OCI Functions 통합

데이터 흐름에서 데이터 변환에 사용할 수 있도록 Oracle Analytics에서 OCI(Oracle Cloud Infrastructure) Functions를 통합합니다.

Oracle Analytics에서 OCI 함수 사용 정보

OCI에서 생성된 함수를 사용하여 Oracle Analytics에서 데이터를 변환할 수 있습니다. 예를 들어, 언어 변환 함수를 사용하여 영어 텍스트를 스페인어 또는 독일어로 변환할 수 있습니다.

먼저 Oracle Analytics에서 OCI 함수를 등록하면, BI 서비스 관리자 또는 DV 콘텐츠 작성자 권한이 있는 Oracle Analytics 사용자가 데이터 흐름에서 해당 함수를 사용할 수 있습니다.

Oracle Analytics에서 사용할 OCI 함수 구성 정보

Oracle Analytics 데이터 흐름에서 데이터를 변환하는 데 사용할 수 있도록 OCI 콘솔에서 함수를 생성합니다.

Oracle Analytics에서 OCI 함수 등록 정보

Oracle Analytics에서 OCI 함수를 등록하는 경우 함수 선택 대화상자에서 비활성화되면 해당 함수가 oac-compatible 태그로 구성되어 있으며 올바른 funcMode 값으로 호출되는지 확인합니다.
GUID-6FE05B2C-5352-4953-998F-D967B6BA1891-default.png에 대한 설명이 이어집니다.
.png''

Oracle Analytics에서 사용할 OCI 함수 구성 정보

Oracle Analytics에서 사용할 OCI 함수에 oac-compatible 태그가 있어야 하며, 함수 코드에 funcMode 변수가 포함되어야 합니다. OCI 콘솔에서 다음 설정을 구성합니다.

  • oac-compatible - 함수에 이름이 oac-compatible인 자유 형식의 태그를 추가하고 값을 true로 설정합니다.GUID-6DDD2A98-7F8D-45D7-9110-9643C2128A84-default.png에 대한 설명이 이어집니다.
    .png''
  • funcMode - 함수 코드에 funcMode 변수를 포함합니다. Oracle AnalyticsfuncMode=describeFunction을 통한 OCI 함수 등록 요청 및 funcMode=executeFunction을 통한 OCI 함수 호출 요청을 전송합니다. func.py에서 처리기 함수는 describeFunction 모드 또는 executeFunction 모드에서 작동해야 합니다. 이 함수는 아래 그림과 같이 요청에서 입력 변수 funcMode의 값을 기반으로 수행될 수 있습니다.

    GUID-0C335709-DEDC-4655-8A29-F544608DA8B3-default.png에 대한 설명이 이어집니다.
    .png''

    다음은 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 콘솔에서의 함수 생성 팁

  • 로그 사용 - 기본적으로 함수에 대해 로그가 사용 안함으로 설정됩니다. 함수에 대해 로그를 사용으로 설정하려면 애플리케이션 페이지에서 로그를 누르고 로그 이름에 대해 제공된 로그를 사용으로 설정합니다. 리소스 아래에서 로그 탐색을 선택하고 함수 문제 디버깅 및 진단을 위해 로그 항목으로 드릴할 수 있게 되었습니다.
  • 종속 항목 포함 - 함수에 대한 requirements.txt 파일에 종속 패키지를 포함합니다.
  • 들여쓰기 규칙 준수 - Python 함수를 코딩하는 동안에는 Python 들여쓰기 규칙을 따릅니다.
  • 함수 응답 오류 사용 - [데이터 흐름] 페이지에 나열된 오류 세부정보를 사용하여 문제를 진단합니다.
  • 먼저 로컬에서 함수 테스트 - OCI에서 함수를 생성하기 전에 개발 환경에서 로컬로 함수를 테스트하여 해당 함수가 구문적, 논리적으로 올바른지 확인합니다.
  • OCI에서 함수 테스트 - 함수를 Oracle Analytics와 통합하기 전에 OCI에서 독립형 함수로 해당 함수를 성공적으로 배치 및 호출할 수 있는지 확인합니다.
  • 시간 초과 늘리기 - 기본적으로 함수의 시간 초과는 30초입니다. 필요한 경우 OCI 콘솔의 함수 편집 페이지에서 시간 초과 설정을 늘립니다(예: 300초로 변경).
  • 메모리 늘리기 - 기본적으로 함수의 메모리 제한은 1024MB입니다. 필요한 경우 OCI 콘솔의 함수 편집 페이지에서 메모리 제한을 늘립니다.
  • 공간 최적화 - 사용 직후 사용되지 않은 파일을 삭제합니다.
  • 네트워크 대기 시간 유의 - 네트워크 대기 시간으로 인해 전체 처리 과정에서 약간의 지연이 발생할 수 있습니다.

OCI Functions와 Oracle Analytics 통합에 필요한 정책

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입니다.

OCI 함수를 사용하여 데이터를 변환하기 위한 일반적인 워크플로우

아래 나열된 순서대로 높은 레벨의 다음 태스크를 수행하여 Oracle Analytics에서 OCI 함수로 데이터를 변환합니다.

작업 설명 추가 정보

OCI에서 함수 생성(함수 개발자 권한 필요)

OCI 테넌시에서 함수를 생성하고 해당 함수가 Oracle Analytics용으로 지정된 필요 조건을 준수하는지 확인합니다.

Oracle Analytics에서 사용할 OCI 함수 구성 정보

OCI 정책 지정 API 키 또는 리소스 주체를 사용하여 접속하는 데 필요한 OCI 정책이 있는지 확인합니다. OCI Functions와 Oracle Analytics 통합에 필요한 정책
OCI 테넌시에 대한 Oracle Analytics 접속(관리자 또는 DV 작성자 권한 필요) Oracle Analytics에서 OCI 테넌시에 대한 접속을 생성합니다.

OCI 테넌시에 대한 접속 생성

Oracle Analytics에서 OCI 함수 등록(관리자 또는 DV 작성자 권한 필요) Oracle Analytics에서 데이터 흐름으로부터 호출할 수 있도록 OCI 함수를 등록합니다.

Oracle Analytics에서 OCI 함수 등록

OCI 함수를 사용하여 데이터 변환(관리자 또는 DV 작성자 권한 필요) 데이터 흐름을 생성하고 사용자정의 스크립트 적용 단계를 사용하여 OCI 함수를 호출합니다.

OCI 함수를 사용하여 데이터 변환

Oracle Analytics에서 OCI 함수 등록

데이터 흐름에서 데이터 변환에 사용할 수 있도록 Oracle Analytics에서 OCI 함수를 등록합니다. 예를 들어, 데이터 분석가가 영어 텍스트를 스페인어 또는 독일어로 변환 가능하도록 언어 변환 함수를 등록할 수 있습니다.

  1. Oracle Analytics의 [홈] 페이지에서 페이지 메뉴, 모델/함수 등록, OCI 함수를 차례로 누릅니다.
  2. 사용자정의 함수 등록 대화상자에서 함수가 있는 OCI 테넌시에 대한 접속을 선택합니다.
  3. 애플리케이션 선택 대화상자에서 OCI 함수를 포함하는 애플리케이션을 선택합니다.
    확실하지 않을 경우 OCI에서 함수를 생성한 사람에게 문의합니다.
  4. 함수 선택 대화상자에서 함수를 선택한 다음 등록을 누릅니다.
    사용할 함수가 비활성화된 경우 해당 함수가 Oracle Analytics에 대해 구성되었는지 관리자에게 문의합니다. Oracle Analytics에서 사용할 OCI 함수 구성 정보을(를) 참조하십시오.
데이터 흐름에서 등록된 OCI 함수를 사용하여 데이터를 변환할 수 있습니다. 등록된 함수를 확인하려는 경우 머신 러닝 페이지( 페이지에서 네비게이터, 머신 러닝, 스크립트를 차례로 누를 때 표시되는 페이지)의 스크립트 탭에서 등록된 함수를 볼 수 있습니다.