Oracle Cloud Infrastructure関数のデータ・フローへの登録および使用
Oracle Cloud Infrastructure (OCI)関数をOracle Analyticsに登録し、それらをデータ・フローで使用してデータを変換できるようにします。
Oracle AnalyticsでのOCI関数の使用について
OCIで作成された関数を使用してOracle Analytics内のデータを変換できます。たとえば、言語変換関数を使用して、英語のテキストをスペイン語またはドイツ語に変換できます。
まず、Oracle AnalyticsでOCI関数を登録すると、BIサービス管理者またはDVコンテンツ作成者権限を持つすべてのOracle Analyticsユーザーがデータ・フローでそれらを使用できるようになります。
Oracle Analyticsで使用するOCI関数の構成について
OCIコンソールで関数を作成し、それらを使用して、Oracle Analyticsデータ・フローのデータを変換できるようにします。
Oracle AnalyticsでのOCI関数の登録について
OCI関数をOracle Analyticsに登録する際、「関数の選択」ダイアログでグレー表示されている場合、それがoac-compatible
タグで構成済であり、正しいfuncMode
値で起動されていることを確認してください。
図oci-functions-select-function-register.pngの説明
Oracle Analyticsで使用するOCI関数の構成について
Oracle Analyticsで使用するOCI関数にはoac-compatible
タグがあり、関数コードにはfuncMode
変数を含める必要があります。OCIコンソールでこれらの設定を構成します:
- oac-compatible - 名前
oac-compatible
を使用してフリー・フォーム・タグを関数に追加して、値true
に設定します。
図oci-function-tags.pngの説明 - funcMode -
funcMode
変数を関数コードに含めます。Oracle Analytics
は、funcMode=describeFunction
でOCI関数を登録するリクエスト、およびfuncMode=executeFunction
でOCI関数を起動するリクエストを送信します。func.py内のハンドラ関数は、describeFunctionモードまたはexecuteFunctionモードで操作する必要があります。次に示すリクエストの入力変数funcMode
の値に基づいて、これを実行できます。pythonでの語数の例におけるOCI関数のリクエストおよびレスポンス形式を次に示します。
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 } }
リクエスト内のfuncModeが'describeFunction'である場合、次のコードをfunc.pyに追加して、funcDefinitionを返します。
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コンソールで、「開発者サービス」、「ファンクション」を順にクリックし、画面上の指示に従って、アプリケーションおよび1つ以上の関数を作成します。詳細は、OCIドキュメントでのファンクションの作成を参照してください。初めて関数を作成している場合、エンド・ツー・エンドのステップHelloworldファンクションの作成、デプロイおよび起動に従います。Oracle Analyticsで使用するすべての関数には、フリー・フォーム・タグoac-compatible=true
を含める必要があります(前述のOracle Analyticsで使用するOCI関数の構成についてを参照)。
OCIコンソールでの関数の作成のヒント
- ログの有効化 - デフォルトでは、関数のログは無効化されています。関数のログを有効にするには、アプリケーション・ページで、「ログ」をクリックし、「ログ名」に提供されているログを有効にします。「リソース」で、「ログの探索」を選択し、ログ・エントリにドリルして、関数の問題をデバック、診断できます。
- 依存関係を含める - 関数のrequirements.txtファイル内の依存パッケージを含めます。
- インデント・ルールに従う- Python関数をコーディングする際に、Pythonのインデント・ルールに従います。
- 関数レスポンス・エラーの使用 - データフロー・ページにリストされているエラー詳細を使用して、問題を診断します。
- 関数を先にローカルでテスト - OCIで関数を作成する前に、開発環境において関数をローカルでテストし、関数が構文的かつ論理的に正しいことを確認してください。
- OCIでの関数のテスト - 関数をOracle Analyticsと統合する前に、それらをOCI内の標準関数として正常にデプロイおよび起動できることを確認してください。
- タイムアウトの増加- デフォルトでは、関数のタイムアウト値は30秒です。必要に応じて、OCIコンソールの「ファンクションの編集」ページでタイムアウト設定を増加します(たとえば、300秒に変更します)。
- メモリーの増加- デフォルトでは、関数のメモリー制限は1024MBです。必要に応じて、OCIコンソールの「ファンクションの編集」ページでメモリー制限を増加します。
- 領域の最適化 - 未使用のファイルは、使用後にただちに削除してください。
- ネットワーク・レイテンシに注意 - ネットワーク・レイテンシにより処理全体でわずかな遅延が発生する可能性があることに注意してください。
OCI関数を使用したデータの変換のための一般的なワークフロー
次にリストされた順序でこれらの高レベルのタスクに従い、OCI関数を使用してデータを変換します。
タスク | 説明 | 詳細情報 |
---|---|---|
OCIでの関数の作成(関数の開発者権限が必要) |
OCIテナンシで関数を作成し、それらが、Oracle Analyticsで使用するために指定された前提条件に準拠していることを確認してください。 |
|
OCIテナンシへのOracle Analyticsの接続(管理者またはDV作成者権限が必要) | Oracle Analyticsで、OCIテナンシへの接続を作成します。 | |
Oracle AnalyticsでのOCI関数の登録(管理者またはDV作成者権限が必要) | Oracle Analyticsで、OCI関数をデータ・フローから呼び出せるように登録します。 | |
OCI関数を使用したデータの変換(管理者またはDV作成者権限が必要) | データ・フローを作成し、「カスタム・スクリプトの適用」ステップを使用して、OCI関数を起動します。 |