データ・フロー演算子の使用

データ統合では、データ・フロー演算子は、データ・フローで使用できる入力ソース、出力ターゲットおよび変換を表します。

「演算子」パネルから、演算子をキャンバスにドラッグ・アンド・ドロップして、データ・フローを設計します。次に、「プロパティ」パネルの「詳細」タブを使用して、各演算子の基本プロパティと必須プロパティを構成します。該当する場合は、「拡張オプション」タブを使用して他のプロパティを指定します。

一般に、データ・フロー演算子には、1つ以上のインバウンド・ポートと、データが流れる1つ以上のアウトバウンド・ポートを含めることができます。たとえば、フィルタ演算子、結合演算子およびターゲット演算子のインバウンド・ポートに、同じソース・アウトバウンド・ポートを接続できます。また、同じ結合インバウンド・ポートに別のソース演算子を接続することもできます。

データ・フローが有効になるためには、少なくとも1つのソース演算子と1つのターゲット演算子が含まれている必要があります。データ統合では1つのデータ・フロー内で複数のターゲット演算子がサポートされますが、1つのターゲット演算子に含めることができるインバウンド・ポートは1つのみです。

演算子どうしを接続するには、一方の演算子に、その右側にコネクタ(小さい円)が表示されるまでカーソルを置きます。次に、そのコネクタを接続先の次の演算子にドラッグ・アンド・ドロップします。コネクタをドロップして、演算子どうしが線で結ばれると、その接続は有効になります。

接続線は、あるノードから別のノードへデータがどのように流れるかを示します。表示されているコネクタをあるオブジェクトから別のオブジェクトにドラッグできても、1つのフィルタ演算子、式演算子、集計演算子、個別演算子、ソート演算子およびターゲット演算子に複数のインバウンド接続線を使用することはできません。

重要

複合データ型については、階層データ型を参照して、何がサポートされているかを理解してください。「プロパティ」パネルの「属性」タブと「データ」タブでは、一部の構成を実行できない場合があります。

データ演算子

データ統合には、データ・フローの入力および変換済データの出力として機能する、入出力データ・エンティティを追加するためのソース演算子およびターゲット演算子が用意されています。

データ・アセット、接続およびスキーマの選択

データ・フロー内のデータ演算子の入力または出力データ・エンティティを構成するには、まずデータ・アセット、接続およびスキーマ(またはバケット)を選択します。

選択は、プロパティ・パネルの「詳細」タブに表示される順序で、リソース・タイプの横でオプションが有効になっているときに「選択」をクリックして行います。

たとえば、最初にソース演算子を追加すると、「データ・アセット」のみが選択可能になります。次のリソース・タイプ「接続」の選択オプションは、前のオブジェクトを選択した後にのみ有効になります。

リソースの横にある「選択」をクリックすると、目的のオブジェクトを選択するパネルが表示されます。リソース・メニューを使用してオブジェクトを選択することも、「すべて表示」をクリックし、別のパネルを使用して参照または検索し、オブジェクトを選択することもできます。

リソース・オブジェクトを選択すると、後続の各選択は、前の選択から継承された親子関係に基づきます。選択パネルの上部にあるブレッドクラムに、選択階層が表示されます。たとえば、データ・アセット「Oracle Databaseデータ・アセット1」と接続「デフォルト接続」を選択したとします。「スキーマ」を選択すると、ブレッドクラムに「接続のデフォルト接続を使用したOracle Databaseデータasset1から」と表示されます。

データ・エンティティの選択

データ・アセット、接続およびスキーマ(またはバケット)を選択した後、使用可能なデータ・エンティティのリストからデータ・エンティティを選択します。

一般に、「データ・エンティティの参照」パネルでは次の操作を実行できます。

  • 使用可能なデータ・エンティティを参照し、名前でエンティティを選択します。

  • 検索する使用可能なリストをフィルタしてから選択します。検索フィールドで、エンティティ名の一部または全体を入力し、[Enter]を押して検索を開始します。検索は大/小文字を区別します。たとえば、使用可能なデータ・エンティティにBANK_USおよびBANK_EUが含まれる場合は、BANKと入力し、フィルタされたリストから選択します。

  • 検索文字列に1つ以上のパラメータを使用します。たとえば: CUSTOMERS_${COUNTRY}

    パラメータ化されたデータ・エンティティ名を使用して入力リソースまたは出力リソースを選択するには、データ・エンティティ名でのパラメータの使用を参照してください。

リソースのデータ・アセット・タイプに応じて、データ・エンティティを選択した後、「プロパティ」パネルの「詳細」タブまたは「拡張オプション」タブで、より多くの構成が必要になる場合があります。

リソース・オブジェクトへのパラメータの割当て

データ・アセットやデータ・フロー内の接続などのリソース・オブジェクトが特定のリソースに永続的にバインドされないようにするには、そのオブジェクトにパラメータを割り当てます。

パラメータの割当ては、リソース・オブジェクトの選択後または選択する前に行うことができます。

  • データ・フローで、ソースまたはターゲット演算子を追加します。リソース・タイプを選択した後、リソース名の横にある「パラメータの割当て」をクリックし、別のパネルを使用して、選択したオブジェクトのパラメータを選択して割り当てます。適切なパラメータ・タイプがない場合は、パラメータを追加して割り当てることができます。

    ノート

    「パラメータの割当て」は、名前にパラメータ(BANK_${REGION}など)が含まれているデータ・エンティティでは使用できません。パラメータ化したエンティティ・リソースを別のパラメータにバインドすることはできません。
  • または、ソースまたはターゲット演算子を追加してから「パラメータの割当て」をクリックして、1つのパネルを使用してパラメータを割り当て、同時にオブジェクトのリソースを選択することもできます。「パラメータの追加」パネルで、前の選択から継承した親子関係に基づいてリソースを選択します。パネルの上部にあるブレッドクラムに、選択階層が表示されます。

データ・フロー・パラメータの使用も参照してください。

データ・エンティティ名でのパラメータの使用

データ演算子に指定したデータ・エンティティ・リソースの名前に1つ以上のデータ・フロー・パラメータを含めることができます。

データ・エンティティ名のデータ・フロー・パラメータに使用する構文は、${PARAMETER_NAME}です。たとえば: CUSTOMERS_${COUNTRY}

パラメータ名では大文字と小文字が区別され、各パラメータにはデフォルト値が必要です。

たとえば、CUSTOMERS_${COUNTRY}がデータベース表CUSTOMERS_USAを返し、BANK_${COUNTRY}/*BANK_EUオブジェクト・ストレージ・ファイルを返すことがあります。

データ演算子の構成時にデータ・エンティティ名にパラメータを使用するには、次の操作を実行できます。

  • データ演算子を追加する前にデータ・フローにパラメータを追加します
  • 演算子のデータ・エンティティの構成時にパラメータを追加します

パラメータの追加方法

データ・フローで、キャンバス・ツールバーの「表示」メニューから「パラメータ」を選択して「パラメータ」パネルを開きます。

「Parameters」パネルで、「Config」をクリックし、「Add」をクリックします。

「パラメータの追加」パネルで、適切なデータ型(VARCHARやNUMERICなど)のパラメータを構成し、デフォルト値を追加します。

データ・フローのデータ・エンティティの構成中に、「データ・エンティティの参照」パネルにパラメータ名を入力して、使用可能なデータ・エンティティを検索できます。検索フィールドに、${に続けて任意の文字を入力します。パラメータ名の先頭部分がデータ・フロー内の既存パラメータと一致すると、候補名のリストが表示されます。リストからパラメータを選択するには、パラメータ名をクリックし、}を追加して構文を完了してから、[Enter]を押します。

データ・エンティティ構成時にパラメータを追加する方法

「データ・エンティティの参照」パネルでは、次の操作を実行できます:

  • 「More actions」メニューから、「Add data flow parameter」を選択して、「Add data flow parameter」パネルを使用します。追加して使用するパラメータのデータ型、デフォルト値およびその他のプロパティを指定します。

  • 検索フィールドに、${に続けて任意の文字を入力します。パラメータ名の先頭部分がデータ・フロー内の既存パラメータと一致すると、候補名のリストが表示されます。リストからパラメータを選択するには、パラメータ名をクリックし、}を追加して構文を完了してから、[Enter]を押します。

  • 検索フィールドで、${PARAMETER_NAME}などのパラメータ名を入力します。そのパラメータ名がデータ・フローにまだ存在していない場合は、[Enter]を押すと、データ統合「データ・フロー・パラメータの追加」パネルが表示されます。または、パラメータ名を入力した後、「その他のアクション」メニューから「データ・フロー・パラメータの追加」を選択します。

    「データ・フロー・パラメータの追加」パネルで、追加して使用するパラメータのデータ型、デフォルト値およびその他のプロパティを指定します。

ソース演算子

ソース演算子を使用して、データ・フローへの入力となるデータ・エンティティを指定します。

ソース演算子の追加および構成

1つのデータ・フローに複数のソース演算子を追加できます。

重要

ソース演算子に階層データ・エンティティを使用している場合は、階層データ型を参照して、何がサポートされているかを理解してください。「プロパティ」パネルの「属性」タブまたは「データ」タブでは、一部の構成を実行できない場合があります。
  1. 「演算子」パネルから、ソース演算子をキャンバスにドラッグします。
  2. ソース演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブで、「識別子」フィールドにソース演算子の名前を入力するか、デフォルト名のままにします。
  3. この演算子の入力ソースを構成するには、リソース・タイプの横で使用可能になったときに「選択」をクリックして、データ・アセット、接続およびスキーマ(またはバケット)を選択します。このソース演算子に選択するデータ・アセット・タイプの詳細は、次の説明を参照してください。
    データ・アセット・タイプ 説明

    オブジェクト・ストレージ

    Amazon S3

    HDFS

    「バケット」の横にある「選択」をクリックしてコンパートメントを選択し、バケットを選択します。

    データ・アセット、接続およびバケットを選択した後、ステップ5に進み、データ・エンティティを選択します。

    汎用RESTデータ・アセット

    接続を選択すると、データ・アセットの作成時に入力したベースURLが表示されます。ソースを構成するには、次のステップを実行します。

    • 「リソース」の横にある「選択」をクリックして、エンドポイントを選択します。

    • 「操作」の横にある「選択」をクリックして、エンドポイントの操作を選択します。

    • プロパティの詳細は、ステップ7を参照してください。

    Oracle BI Cloud Connector (BICC)を使用するOracle Fusion Applications

    「スキーマ」で、BICCオファリングを選択します。選択したBICCオファリングによって、データ抽出用のBICCビュー・オブジェクト(VO)が提供されます。

    データ・アセット、接続およびスキーマを選択した後、ステップ4に進み、データ・エンティティを選択します。

    Oracle BI Publisher (BIP)を使用したOracle Fusion Applications

    データ・アセット:

    データ・フローでBIPデータ・アセットを使用するには、ステージングの場所としてオブジェクト・ストレージ・バケットが必要です。 そのデータ・アセットにデフォルトのステージング場所が指定されていないデータ・アセットを選択すると、データ統合に警告通知が表示されます。通知が表示されたら、次のいずれかのオプションを選択します。
    • 「データ・アセットの更新」をクリックして、そのデータ・アセットにデフォルトのステージングの場所を追加します。
    • 「プロパティ」パネルの「ステージングの場所」の横にある「選択」をクリックして、ステージングに使用するバケットがあるオブジェクト・ストレージ・データ・アセットを選択します。

    スキーマ:

    レポートがスキーマとして含まれているBIPフォルダを選択します。

    詳細は、データ統合のBIPからのデータの抽出を参照してください:
    • BIPレポートとそのSQL問合せの準備
    • チャンクの構成
    • カスタムBIPパラメータの使用

    データ・アセット、接続およびスキーマを選択した後、ステップ4に進み、データ・エンティティを選択します。

    オブジェクト・ストレージ、Amazon S3またはHDFSではないその他のデータ・アセット

    データ・アセット、接続およびスキーマを選択した後、ステップ4に進み、データ・エンティティを選択します。

  4. オブジェクト・ストレージ、Amazon S3またはHDFSデータ・アセットからないデータ・エンティティを選択するには:
    1. 「データ・エンティティの選択」パネルで、次のことに注意してください。必要に応じて、次のことができます。
      • 「データ・エンティティ」メニューを使用して、名前でデータ・エンティティを選択します。

      • 「データ・エンティティの参照」をクリックして、別のパネルを使用して、使用可能なリストを参照または検索して、データ・エンティティを選択します。

        名前の全体または一部を使用してリストを検索する場合は、データ・エンティティの選択を参照してください。

        構文${PARAMETER_NAME}を使用して、選択したデータ・エンティティの名前に1つ以上のデータ・フロー・パラメータを含めることができます。例: BANK_${REGION}

        エンティティ名の構成時にパラメータの追加および使用に関するヘルプが必要な場合は、データ・エンティティ名でのパラメータの使用を参照してください。

    2. このソース演算子のデータ・アセット・タイプに応じて、データ・エンティティを選択し、必要に応じて追加の構成を完了します。
      データ・アセット・タイプ 説明

      Oracle Database

      Amazon RDS上のOracle Database

      Oracle Siebel

      Oracle Peoplesoft

      Oracle E-Business Suite

      Oracle ATPおよびADW

      MySQL

      MySQL熱波

      Amazon RDS上のMySQL

      Amazon RDS for SQL Server

      Microsoft SQL Server

      Microsoft Azure SQL Database

      IBM DB2

      「詳細」で次のようにします。

      • 名前でデータ・エンティティを選択します。

      • 該当する場合は、「カスタムSQLの入力」をクリックして、エディタに1つのSQL文を入力します。

        SQL問合せ文を使用することで、データベース・ソース・エンティティとエンティティのシェイプを同時に定義できます。たとえば、ソース演算子に使用するエンティティを定義した後でフィルタ演算子を追加するのではなく、SQL文でデータを定義してフィルタ処理することができます。

        SQL問合せの入力後、「検証」をクリックして文にエラーがないか確認します。

      • 使用可能な場合は、次のステップに従って、新規または更新されたレコードのみをソースからターゲットにロードします。

        • 「増分ロード」チェック・ボックスを選択して、ロード・プロセスの最終実行以降に作成または変更された行のみを識別およびロードします。

        • 「ウォーターマーク」列で、増分ロードされた行をマークするために使用する列を選択します。ウォーターマーク列として使用できるのは、DATETIMESTAMPおよびDATETIME列のみです。

      Oracle BI Cloud Connector (BICC)を使用するOracle Fusion Applications

      「詳細」タブで、データの抽出元となるデータ・エンティティとしてBICCビュー・オブジェクト(VO)を選択します。次に、「抽出戦略」メニューを使用して、ソース・データの抽出方法を選択します。

      • 完全: 指定した初期抽出日(オプション)からのすべてのデータが抽出およびロードされます。「初期抽出日」に日付を指定していない場合は、すべてのデータが抽出されます。
      • 増分: 特定の日付より後に作成または変更されたデータのみを抽出およびロードします。
        • 「管理済」を選択して、データ統合によって追跡および管理される最終日を使用します。日付は明示的に指定しません。
          重要

          「管理対象」オプションは、過去に追加の24時間データをフェッチします。

          データ統合では、パラメータSYS.LAST_LOAD_DATEを追加して、最後のロードまたはタスク実行の日付を追跡し、連続した実行で最後に成功したロード日をウォーターマークとして格納します。タスクが実行されると、システムに格納されている最終日の値を変更できます。

        • 「カスタム」を選択して、「最終抽出日」フィールドに日付を自分で指定します。

      次に、「データ・アセット・デフォルト」を使用しない場合は、抽出されたデータに別のBICC外部構成ストレージを選択します。「データ・アセットのデフォルト」は、アセットが作成または編集されたときにBICC Fusion Applicationsデータ・アセット内に構成されたBICC外部ストレージです。

      オプションで、「拡張オプション」タブで次の情報を入力します。

      BICC抽出プログラムによって、通常の抽出パスではなくFusion Applicationsデータベースから直接入力行を読み取る場合には、「BIブローカーの有効化」を選択します。
      重要

      • BIブローカ・モードは、高度なユーザーのためのパフォーマンス最適化オプションです。
      • BIブローカ・モードは、一部のデータ・ストアでのみサポートされるBICC機能です。サポートされていないデータ・ストアでは抽出に失敗します。
      • BIブローカ・オプションを使用すると、基礎となるデータベースのデータ・ストアに対して問合せが直接実行されるため、抽出のパフォーマンスが向上する可能性があります。パフォーマンスの向上は、データ・ストア、BIサーバー上の現在のワークロード、データベース上の現在のワークロードおよびその他の要因によって異なります。
      • BIブローカ・モードを有効にすると、ソース列のデータ型が変更される場合があります。
      「BIブローカの有効化」を選択しない場合、データはBIサーバーを介して抽出されます。詳細は、Business Intelligence Cloud抽出の作成ガイドの抽出するオファリングの構成ブローカ抽出モードを参照してください。BICCガイドは、Oracle Fusion Cloud Applications Suiteドキュメントのアプリケーション共通のブック・リストの一部です。

      「BICC列のプロパティ」で、ターゲットに属性として含めるBICCソースから列のタイプを選択します。

        • すべて: BICC PVOのすべての列が含まれます。ただし、ExtnAttributeで始まる名前の列や、同じ名前とラベルの列が表示されません。

        • デフォルトのみ: BICC PVOでデフォルトで抽出に使用可能な列のみが含まれます。フレックス列を含むすべての列が表示されます。

        • デフォルトおよび主キー: BICC PVOのデフォルト列および主キー列が含まれます。フレックス列を含むすべての列が表示されます。

        • 主キーのみ: BICC PVOの主キー列のみが含まれます。フレックス列を含むすべての列が表示されます。

      Oracle BI Publisher (BIP)を使用したOracle Fusion Applications

      「詳細」タブ:

      • 「データ・エンティティ」で、レポートを選択します。レポートの場所のリマインダは、データ統合のBIPを使用したOracle Fusion Applicationsからのデータの抽出ブログを参照してください。
      • 抽出したデータをステージングするためのオブジェクト・ストレージ・バケットであるステージングの場所を指定します。選択したデータ・アセットにデフォルトのステージング場所が指定されている場合、データ統合では、そのデータ・アセットのデフォルトのステージング場所として指定されたオブジェクト・ストレージ・データ・アセットおよびバケットが自動的に使用されます。選択したデータ・アセットにデフォルトのステージングの場所が指定されていない場合は、ステージングに使用するバケットがあるオブジェクト・ストレージ・データ・アセットを選択できます。それ以外の場合は、データ・アセットを更新してデフォルトのステージング場所を追加することも、別のデータ・アセットを選択することもできます。

      次に、「拡張オプション」タブで次のように入力します。

      • 「行制限の有効化」を選択して、取得する最大行数を指定します。

      • 「行制限」フィールドに、行制限を指定します。

      • 大容量のデータが予想される場合は、「チャンクの有効化」の下の「チャンク・サイズ」フィールドにサイズを指定します。「チャンク・サイズ」は、指定した行制限が100000より大きい場合は必須です。

        チャンクのヘルプは、ブログデータ統合のBIPを使用したOracle Fusion Applicationsからのデータの抽出を参照してください。

      • 「BIPプロパティ」セクションに、データ・エンティティに対して選択したレポートのBIPレポート・パラメータが表示されます。「返される行数」フィールドおよび「開始オフセット」フィールドそれぞれでプロパティを選択します。両方のフィールドに同じプロパティを選択することはできません。
      • 新規または更新されたレコードのみをソースからターゲットにロードするには:
        • 「増分ロード」チェック・ボックスを選択して、ロード・プロセスの最終実行以降に作成または変更されたデータのみを識別およびロードします。
        • 「ウォーターマーク」列で、増分ロードされたデータをマークするために使用するプロパティを選択します。
    3. データ・エンティティを選択すると、「プロパティ」パネルの「詳細」タブの「データ・エンティティ」の横に、選択したデータ・エンティティの名前が表示されます。
      • SQL文を指定した場合、ラベルSQL_ENTITY<nnnnnnnnn>が表示されます(例: SQL_ENTITY123456789)

      • エンティティ名でパラメータを使用した場合、ラベルにはパラメータ名が含まれます(例: BANK_${REGION})

        ノート

        名前にパラメータが含まれるデータ・エンティティの場合、エンティティ・リソースを別のパラメータにバインドすることはできません。「パラメータの割当て」オプションは使用できません。

  5. オブジェクト・ストレージ、Amazon S3またはHDFSデータ・アセットのデータ・エンティティを選択するには:
    1. 「データ・エンティティの選択」パネルを使用し、1つのエンティティを名前で選択するか、1つ以上のエンティティをパターン式を使用して選択します。
      • 「名前で参照」をクリックし、別のパネルを使用して使用可能なリストを参照または検索し、1つのデータ・エンティティを名前で選択します。

        名前の全体または一部を使用してリストを検索する場合は、データ・エンティティの選択を参照してください。

        構文${PARAMETER_NAME}を使用して、選択したデータ・エンティティの名前に1つ以上のデータ・フロー・パラメータを含めることができます。例: BANK_${REGION}.csv

        名前によるデータ・エンティティの構成時にパラメータの追加および使用に関するヘルプが必要な場合は、データ・エンティティ名でのパラメータの使用を参照してください。

      • 「パターンで参照」をクリックし、正規表現(ワイルドカードを含む)を使用して、特定のディレクトリおよびファイル・パターンと照合する1つ以上のエンティティを選択します。たとえば、フィールドにCUSTOMERS*と入力し、[Enter]を押してリストをフィルタ処理します。パターンのテストおよび使用を参照してください。

        また、構文${PARAMETER_NAME}を使用して、パターン式にパラメータを含めることもできます。例: CUSTOMERS_${REGION}/*

        パターンによるデータ・エンティティ名の構成時にパラメータの追加および使用に関するヘルプが必要な場合は、データ・エンティティ名でのパラメータの使用を参照してください。

        ノート

        式を使用する場合、そのパターンに一致するすべての既存ファイルは同じ構造を持つものとみなされます。一致したファイルは、データ・フローで単一のエンティティとして扱われます。将来の新規ファイルがパターンと一致する場合も処理されます。

        名前にパラメータが含まれるデータ・エンティティの場合、エンティティ・リソースを別のパラメータにバインドすることはできません。「パラメータの割当て」オプションは使用できません。

    2. 名前またはパターンでデータ・エンティティを選択したら、「データ・エンティティの選択」パネルでエンティティ構成を完了します

      構成を完了する方法は、選択したデータ・エンティティに対して選択したファイル・タイプによって異なります。

      ファイル・タイプ 説明

      CSV

      「名前で参照」を使用してデータ・エンティティを選択した場合は、「RAWデータのプレビュー」をクリックして、ファイルの最初の10行を表示できます。

      使用する「式」(式)を選択します。ファイルの圧縮に使用する圧縮方法がわからない場合は、「自動」(デフォルト)を選択します。

      デフォルトの「エンコーディング」はUTF- 8で、変更できません。

      構成可能なその他の設定は次のとおりです。

      • ファイルの最初の行がヘッダー行である場合は、「ヘッダーあり」「はい」を選択します。
      • データ行の値が複数の行にわたる場合、「複数行」「はい」を選択します。
      • データ値で検出される他の文字をエスケープするためのエスケープ文字を指定します。例: \
      • データ・フィールドを区切るデリミタ文字を選択します。例: 「コロン」(:)、COMMA(,)、PIPE(|)、SEMICOLON(;)またはTAB(\t)
      • 列デリミタがファイルのデータ行の最後に含まれる場合は、「後続のデリミタ」「はい」を選択します。
      • 他の文字をリテラル文字として扱うための引用符文字を指定します。例: "

      JSON

      使用する「式」(式)を選択します。ファイルの圧縮に使用する圧縮方法がわからない場合は、「自動」(デフォルト)を選択します。

      デフォルトの「エンコーディング」はUTF- 8で、変更できません。

      「カスタム・スキーマの使用」を選択して、エンティティ・シェイプの推測に使用されるカスタム・サンプル・スキーマを貼り付けるかアップロードします。このチェック・ボックスを選択すると、スキーマ・ドリフトはソース・エンティティに適用できなくなります。

      • 「アップロード」を選択した場合は、表示されたボックスにカスタム・スキーマ・ファイルを削除するか、「ファイルの選択」をクリックしてアップロードするスキーマ・ファイルを選択します。

      • 「スキーマに貼付け」を選択した場合は、スキーマ・テキスト・ファイルの内容をコピーして、表示されたボックスに貼り付けます。

      PARQUET

      デフォルトの「圧縮タイプ」は「自動」で、変更できません。

      AVRO

      デフォルトの「圧縮タイプ」は「自動」で、変更できません。

      エクセル

      XLSXファイルのみがサポートされています。

      デフォルトの「圧縮タイプ」は「自動」で、変更できません。

      デフォルトでは、データ統合では、ファイルの最初の行がヘッダー行として処理されます。ファイル内の最初の行がヘッダー行でない場合は、「ヘッダーあり」「いいえ」を選択します。

      「エンティティの選択基準」では、基準を「シート名」「シート索引」または「表名」として選択できます。次に、ワークシート名、ワークシート索引または表名の「値」を入力します。シート インデックスは0に基づいています。

      「シート名」または「シート索引」に、選択する「データ範囲」として使用するファイルの領域を入力します。データ範囲値を入力しない場合、デフォルトはデータ範囲A1で、シート全体に対応します。ファイルにヘッダー行がある場合は、ヘッダー行から始まる値を入力します(たとえば、A1:K56)。

    3. データ・エンティティの構成が完了したら、「選択」をクリックします。

      「プロパティ」パネルの「詳細」タブに戻ります。選択したデータ・エンティティの名前またはエンティティ・パターン式が「データ・エンティティ」の横に表示されます。たとえば、CUSTOMERS_EU.csvCUSTOMERS*またはCUSTOMERS_${REGION}/*です

      ノート

      名前にパラメータが含まれるデータ・エンティティの場合、エンティティ・リソースを別のパラメータにバインドすることはできません。「パラメータの割当て」オプションは使用できません。

    4. 使用可能な場合、適用可能な場合は、「増分ロード」チェック・ボックスを選択して、ロード・プロセスが最後に正常に実行されてから作成または変更されたデータのみを識別およびロードします。

      オブジェクト・ストレージなどのファイル・データ・アセットの場合、データ統合は、フォルダで選択されたオブジェクトまたはファイル・パターンによって選択されたオブジェクトの最終変更日(タイムスタンプ)に基づいて増分抽出を実行します。

      たとえば、1月5日に、オブジェクト・ストレージ・バケットにEMPLOYEE_1.csvEMPLOYEE_2.csvEMPLOYEE_3.csvという3つのファイルがあるとします

      1月5日にロード・ジョブが正常に実行されると、3つのファイルがすべて処理されます。

      • 1月6日に、新しいファイルEMPLOYEE_4.csvがバケットに追加されます。このファイルの最終変更日(タイムスタンプ)は1月6日です。ロード・ジョブが1月6日に実行されると、EMPLOYEE_4.csvのみが取得され、増分データ・ロードのために処理されます。
      • 1月6日に、新しいファイルEMPLOYEE_4.csvがバケットに追加されます。このファイルの最終変更日(タイムスタンプ)は1月6日です。ファイルEMPLOYEE_2.csvも1月6日に変更されます。ロード・ジョブが1月6日に実行されると、ファイルEMPLOYEE_2.csvおよびEMPLOYEE_4.csvが処理のために選択されます。
  6. (オプション)「詳細」タブで、選択したエンティティ名の横にあるリフレッシュ・アイコンを選択し、デザイナでの現在の作業セッション中にエンティティの最新スキーマを使用していることを確認します。実際のデータの変更ではなく、エンティティのメタデータのみがフェッチされます。
  7. (Optional) On the Advanced options tab, depending on the data asset type for this source operator, you can select or uncheck applicable options.

    項目 説明

    ファイル・メタデータを属性としてフェッチ

    返されるデータに属性としてファイル・メタデータ(ファイル名やファイル・サイズなど)を含めるには、このチェック・ボックスを選択します。

    スキーマ・ドリフトを許可

    デフォルトでは、データ・フローの設計時および実行時にデータ統合がスキーマ定義の変更を動的に処理できるように、スキーマ・ドリフトが有効になっています。スキーマ・ドリフトは、指定されたデータ・エンティティ内のスキーマ定義の変更内容です。変更内容には、追加または削除された属性と、変更された属性データ型またはエンティティ名が含まれます。

    「スキーマ・ドリフトの許可」チェックボックスをクリアすると、スキーマ・ドリフトが無効になり、データ・フローの定義時にスキーマ定義がロックされます。スキーマ・ドリフトが無効になっている場合、データ統合は、基礎となるシェイプが変更された場合でも、指定されたデータ・エンティティの固定シェイプを使用します。

    カスタム・スキーマが選択されている場合、スキーマ・ドリフトは適用されず、このオプションを選択できません。

    欠落しているファイルを空として扱います

    オブジェクト・ストレージ・データ・アセット専用です。

    このチェック・ボックスは、「スキーマ・ドリフトの許可」が選択されていない場合にのみ使用できます。

    プッシュダウンを許可

    デフォルトでは、プッシュダウンが有効になっているため、システムでプッシュダウンがサポートされていれば、データ統合でソース・データベース・システムを使用して変換操作を処理できます。プッシュダウンをサポートしているのは、Oracleデータベース、Oracle Autonomous Data Warehouse、Oracle Autonomous Transaction ProcessingおよびMySQLのみです。データ統合でソース・データベース・システムを使用して操作を処理する場合は、ソースからプルされるデータが少なくなります。

    「プッシュダウンの許可」チェックボックスをクリアすると、プッシュダウンが無効になります。プッシュダウンが無効になっている場合、データ統合ではすべてのデータをソース・システムから直接プルしてから、変換を処理します。

    「パラメータ」および「ヘッダー」設定

    RESTデータ・アセット専用です。

    「パラメータ」および「ヘッダー」設定を使用して、追加のソース・プロパティを構成します。

  8. 「属性」タブで、選択したデータ・エンティティの属性を表示します。BICC Fusion Applicationsデータ・アセットの場合、属性は選択したVOのBICC列です。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカード?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY(データ型)、COMPOSITEまたはMAP(キー・タイプ、値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  9. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    BICC Fusion Applicationsデータ・アセットの場合、10行分のデータのみが表示されます。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  10. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
ファイル・パターンの使用

OCI Object Storageをデータ・ソースとして構成するときに、1つ以上のデータ・エンティティを選択するために、正規表現を使用してファイル・パターンを指定できます。

ファイル・パターンは、ディレクトリやファイルの名前に一致するファイルを検索し、一致するファイルが見つかったらその処理方法を指定するためのルールです。

使用する構文

データ統合では、ファイル・パターンを指定するためのglobパターン構文をサポートしています。

  • アスタリスク*は、任意の数の文字(なしも含む)に一致します。
  • 2つのアスタリスク(**)は*と同様に機能しますが、ディレクトリの境界を越えて完全なパスが照合されます。
  • 疑問符(?)は、1文字に一致します。
  • 中カッコは、サブパターンの集まりを指定します。例:
    • {sun,moon,stars}は、"sun"、"moon"または"stars"に一致します。
    • {temp*,tmp*}は、tempまたはtmpで始まるすべての文字列に一致します。
  • 大カッコは、単一文字のセットを表します。ハイフン文字(-)が使用されている場合は、文字の範囲を表します。例:
    • [aeiou]は、任意の小文字の母音に一致します。
    • [0-9]は、任意の数字に一致します。
    • [A-Z]は、任意の大文字に一致します。
    • [a-z,A-Z]は、任意の大文字または小文字に一致します。

    大カッコ内の*?および\は、それ自体に一致します。

  • それ以外の文字はすべて、それ自体に一致します。
  • *?またはその他の特殊文字と一致させるには、バックスラッシュ文字\を使用してその文字をエスケープします。例: \\は単一のバックスラッシュに一致し、\?は疑問符に一致します。
*.html.htmlで終わるすべての文字列に一致します
???3つの文字または数字を含むすべての文字列に一致します
*[0-9]*数値を含むすべての文字列に一致します
*.{htm,html,pdf}.htm.htmlまたは.pdfで終わる任意の文字列に一致します
a?*.javaaで始まり、その後に1つ以上の文字または数字が続き、.javaで終わる任意の文字列に一致します。
{foo*,*[0-9]*}fooで始まる任意の文字列、または1つの数値を含む任意の文字列に一致します
directory1/20200209/part-*[0-9]*jsonファイル名がpart-で始まり、任意の数の0-9の数字を含み、jsonで終わる、フォルダ内のすべてのファイルに一致します
directory3/**.csvフォルダdirectory3およびそのサブフォルダにある、拡張子がcsvのすべてのファイルに一致します
directory3/*.csvメイン・フォルダdirectory3のみにある、拡張子がcsvのすべてのファイルに一致します。サブフォルダ内のファイルは含まれません。
パターンのテストおよび使用

式をテストして、使用するパターンによって1つ以上のデータ・エンティティのオブジェクト・ストレージ・ファイルが取得されることを確認できます。

  1. 「データ・エンティティの選択」パネルで、「パターンで参照」をクリックします。

  2. 「データ・エンティティをパターンで参照」パネルで、「その他のアクション」メニューから「パターンのテスト」を選択します。

  3. 「パターンのテスト」パネルの「検索パターン」フィールドにパターン式を入力し、使用する前にテストします。

    たとえば、ディレクトリdepartment1/2020にある拡張子.jsonのすべてのファイルを検索する場合は、department1/2020/*.jsonと入力します。「検索パターン」フィールドでパラメータ構文${}を使用できます。

  4. 検索パターンをテストするには、「テスト・ファイル名」ブロックに、1つのファイル名または改行文字で区切った複数のファイル名を指定します。たとえば、パターンBANK_C*/*の場合、ファイル名は次のようになります:

    BANK_CITY/part-00002-0aaf87d57fbc-c000.csv	
    BANK_COUNTRY/part-00000-a66df3ab02fd-c000.csv
  5. 「パターンのテスト」をクリックします。

    テスト・ファイル名が「結果ファイル名」ブロックに返されたことを確認します。

  6. 「パターンの使用」をクリックして、パターン式を「データ・エンティティをパターンで参照」パネルに追加します。

    「データ・エンティティをパターンで参照」パネルに戻ります。パターン式と一致するファイルが表に表示されます。

  7. 「パターンを選択」をクリックします。

    「データ・エンティティの選択」パネルに戻ります。パターン式は「データ・エンティティ」の横に表示されます。

    式を使用する場合、そのパターンに一致するすべての既存ファイルは同じ構造を持つものとみなされます。一致したファイルは、データ・フローで単一のエンティティとして扱われます。将来の新規ファイルがパターンと一致する場合も処理されます。

データ統合管理増分ロード(BICC)の使用

増分ロードでは、ソースからターゲットに新規または更新されたデータのみがロードされます。データ統合では、BICC Oracle Fusion Applicationsをソース・データとして構成するときに、管理対象増分抽出戦略を使用して増分ロードを実行できます。

増分抽出戦略の使用を選択すると、最終抽出日に基づいて、ソースから新規または更新されたレコードのみが抽出されます。データ統合には、2つの最終抽出日オプションがあります:

  • カスタム: タスク実行ごとに最終抽出日を指定します。

  • 管理: データ統合では、タスク実行タイムスタンプを追跡し、連続した実行で最後に成功したロード日をウォーターマークとして格納することで、日付が管理されます。

    データ統合で管理される最終抽出日オプションを使用すると、タスク実行の日付を明示的に指定する必要はありません。ただし、実行時に日付を上書きできます。

タスク・スケジュールによって開始されたタスク実行

データ統合では、タスク・スケジュールによって開始されたタスク実行とは無関係にタスク実行を追跡します。そのため、「管理対象」の最終抽出日オプションを使用し、タスク・スケジュールも設定した場合、データ統合では、タスク・スケジュールによって開始されていないタスク実行の最終正常タスク実行タイムスタンプとは別に、タスク・スケジュール実行の最終正常タスク実行タイムスタンプが自動的に追跡されます。つまり、タスク・スケジュール内で管理される最終日またはタスク内で管理される最終日は、他の実行操作によって変更されません。

データ・フロー内の様々なデータ・エンティティの増分ロード

データ・フロー内の異なるデータ・エンティティに対して増分ロードを設定するとします。これを行うには、パラメータを使用して、データ・エンティティごとにタスク・スケジュールを作成します。一般的なステップは次のとおりです。

  1. データ・フローで、ソース・スキーマ(BICCオファリング)およびデータ・エンティティ(BICC VO)のパラメータを割り当てます。
  2. パラメータ化されたデータ・フローの統合タスクを作成および公開します。
  3. 統合タスクのタスク・スケジュールを作成します。「パラメータの構成」ページで、タスク・スケジュールのスキーマおよびデータ・エンティティ値を指定します。
  4. 同じ統合タスクに対して別のタスク・スケジュールを作成します。「パラメータの構成」ページで、このタスク・スケジュールのスキーマおよびデータ・エンティティ値を設定します。
1日に複数回増分ロード

増分ロードを1日に複数回実行する場合は、データ・フローのBICCソース演算子の直後にフィルタ演算子を追加します。次に、すでに処理されているデータをフィルタで除外する条件式を作成します。たとえば、BICC VOのlast_update_date列がLastUpdateDateFieldの場合、式は次のようになります。

FILTER_1.MYSOURCE_1.LastUpdateDateField > ${SYS.LAST_LOAD_DATE}

ターゲット演算子

ターゲット演算子を使用して、変換されたデータを格納するための出力となるデータ・エンティティを指定します。

ターゲット演算子の追加および構成

1つのデータ・フローに複数のターゲット演算子を追加できます。各ターゲットには、インバウンド・ポートを1つのみ含めることができます。

重要

ターゲット演算子に階層データ・エンティティを使用している場合は、階層データ型を参照して、何がサポートされているかを理解してください。「プロパティ」パネルの「属性」タブ、「マップ」タブ、「データ」タブでは、一部の構成を実行できない場合があります。
  1. 「演算子」パネルから、ターゲット演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. ターゲット演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブで次を実行します:

    項目 説明

    識別子

    ターゲット演算子の名前を入力するか、デフォルト名のままにします。

    新規データ・エンティティの作成

    (オプション)ターゲットの既存のエンティティを更新するかわりに、ターゲットに新しいエンティティを作成するには、このチェック・ボックスを選択します。後のステップで、ターゲットに作成するデータ・エンティティの名前を入力するよう求められます。

    既存のデータ・エンティティをターゲットとして使用する場合は、チェック・ボックスを選択しないでください。ターゲット・データ・アセット、接続およびスキーマを選択すると、データ・エンティティの選択を求められます。

    データ・アセット

    接続

    「スキーマ」または「バケット」

    表示されたリソースの順序どおりに、リソースの横にある「選択」をクリックして、データ・アセット、接続およびスキーマまたはバケットを選択します。

    次のことに注意してください。

    • 一部のデータ・ソース・タイプは、ターゲット・データ・アセットとして使用できません。たとえば、PostgreSQLおよびHiveはターゲットとして使用できません。

    • 統合戦略のマージでは、オブジェクト・ストレージ・データ・アセットをターゲットとして使用できません。

    • オブジェクト・ストレージ・データ・アセットを使用している場合は、最初にコンパートメントを選択し、次にバケットを選択します。

    • Autonomous Data WarehouseまたはAutonomous Transaction Processingをターゲットとして使用するには、ステージングの場所としてオブジェクト・ストレージ・バケットが必要です。 そのデータ・アセットにデフォルトのステージング場所が指定されていないデータ・アセットを選択すると、データ統合に警告通知が表示されます。通知が表示されたら、次のいずれかのオプションを選択します。
      • 「データ・アセットの更新」をクリックして、そのデータ・アセットにデフォルトのステージングの場所を追加します。
      • 「プロパティ」パネルの「ステージングの場所」の横にある「選択」をクリックして、ステージングに使用するバケットがあるオブジェクト・ストレージ・データ・アセットを選択します。
      PAR_MANAGEリクエスト権限が必要です。詳細は、ステップ5を参照してください。

    データ・エンティティ

    「新規データ・エンティティの作成」チェック・ボックスを選択した場合は、ターゲットとして作成するエンティティの名前を入力します。詳細は、ステップ3を参照してください。

    「新規データ・エンティティの作成」チェック・ボックスを選択しなかった場合は、既存のデータ・エンティティをターゲットとして選択します。詳細は、ステップ4を参照してください。

    (タイプがAutonomous Data WarehouseまたはAutonomous Transaction Processingのデータ・アセットのみ)

    ステージングの場所

    データ統合は、ステージングの場所を使用してデータをステージングしてからターゲットにロードします。

    詳細は、ステップ5を参照してください。

    統合戦略

    データのターゲット・データ・エンティティへの移動方法は、選択する統合戦略によって異なります。オプションは次のとおりです。

    • 挿入: 新しいレコードを挿入します。または、データがターゲットに存在するときはレコードを追加します。

      「新規データ・エンティティの作成」チェック・ボックスが選択されている場合、選択可能なのみの戦略オプションは「挿入」です。

    • 上書き: 新しいレコードを挿入する前にターゲット上で切捨てを実行します

      上書き戦略を選択した場合、ターゲット・エンティティの新規データ・エンティティは作成できません

    • マージ: 新しいレコードが挿入され、既存のレコードが既存のデータ・エンティティにマージされます。

      マージ戦略を使用する場合は、次の点に注意してください。

      • マージ戦略は、データベース・ターゲットでのみ使用できます。この統合戦略を使用する場合は、オブジェクト・ストレージ・データ・アセットをターゲットとして使用できません。

      • マージ・キーは、属性または属性を識別して、更新または挿入する既存の行または新しい行を決定します。マージ・キーとして、主キー/一意キーまたは非主キーを選択できます。

        「選択」または「編集」をクリックします。「マージ・キー」パネルで、次のいずれかのアクションを実行します:

        • 主キー/一意キー属性を選択し、キーを選択します。
        • 「その他の属性」を選択して、他の(プライマリでない)属性を使用します。マージ・キーの名前を入力し、リストから属性を選択します。
      • パラメータ化されたターゲット・データ・エンティティがマージ戦略を使用するように構成されている場合は、マージ・キーの選択を変更できます。
        • 設計時および実行時の統合タスク
        • 設計時および実行時にパイプライン内の統合タスク(パイプライン・タスク)
        • タスク・スケジュール内(統合タスクおよびパイプライン・タスク)

    (オブジェクト・ストレージの場合のみ)

    出力を単一ファイルとして作成

    このステップは、オブジェクト・ストレージ・ターゲットではオプションです。

    出力を1つのファイルに書き込む場合は、「出力を1つのファイルとして作成」チェック・ボックスを選択します。そうしないと、複数のファイルが作成されます。タスクが実行されるたびに、単一の出力ファイルが上書きされます。

    単一出力ファイルの作成は、データ統合のパフォーマンスに影響することがあります。大規模なデータセットでは単一出力ファイルのオプションを使用しないでください。

    次のいずれかの条件が適用される場合にのみ、出力を単一のファイルに書き込むように選択できます。

    • 「統合戦略」が「挿入」で、「新規データ・エンティティの作成」チェック・ボックスが選択されている場合。新しいエンティティ名の末尾にスラッシュ(/)を追加しないでください。詳細は、ステップ3を参照してください。
    • 「統合戦略」が「上書き」で、既存のデータ・エンティティを使用する場合(「新規データ・エンティティの作成」チェック・ボックスは選択されていません)。エンティティ名の末尾にスラッシュ(/)が付いていない既存のデータ・エンティティを選択します。詳細は、ステップ4を参照してください。
  3. 「新規データ・エンティティの作成」チェック・ボックスを選択した場合: 作成されるエンティティの名前を入力します。新しいデータ・エンティティは、その名前が存在していない場合にのみ作成されます。

    新しいエンティティ名の一部にパラメータを使用する場合は、データ・エンティティ名のパラメータも参照してください。

    データ・アセット・タイプに応じて、データ・エンティティの名前を入力するときは、次の点に注意してください:

    ターゲット・タイプ 説明

    Oracle Database、Autonomous Data WarehouseまたはAutonomous Transaction Processingの場合

    新しいデータ・エンティティ名を入力します。

    データベース・データ・エンティティをターゲット出力として作成するとき、指定したエンティティ名が存在しない場合は、データ・エンティティが作成され、データが出力に挿入されます。指定したエンティティ名が存在する場合、操作の結果は、データ・フローのターゲットのシェイプおよび既存のエンティティのシェイプによって決まります。

    シェイプは、属性の数と名前、データ型、長さや精度など型の特徴、およびデータが存在するかどうかに基づきます。たとえば、データ型varchar2(4000)は、データ・フロー・ターゲット上の属性名が既存データ・エンティティ上の属性名と同じであっても、varchar2(2000)と同じシェイプではありません。

    • データ・フロー上のターゲット・エンティティのシェイプが既存エンティティのシェイプと同じ場合、データベース操作は:
      • データを挿入します(データが存在しない場合)
      • データを更新するか挿入します(データが存在する場合)
    • データ・フロー上のターゲット・エンティティのシェイプが既存エンティティのシェイプと異なる場合:
      • 属性名が存在しないとき、操作は属性を既存エンティティに追加します。

        たとえば、データ・フロー上のターゲットに属性EMPLOYEE_ID NUMBER(10)があるが、EMPLOYEE_ID NUMBERが既存エンティティに存在しない場合です。

      • 属性名が既存エンティティに存在するが、データ型のシェイプが異なる場合:
        • 属性データが存在するがデータ・シェイプが小さいとき、データベース操作は失敗します。たとえば、データ・フロー上のターゲットにEMPLOYEE_COMMENTS VARCHAR2(4000)があり、既存エンティティにEMPLOYEE_COMMENTS VARCHAR2(2000)があるとき、操作は失敗します。データ・フロー上のターゲットにEMPLOYEE_COMMENTS VARCHAR2(2000)があり、既存エンティティにEMPLOYEE_COMMENTS VARCHAR2(4000)があるとき、操作は成功します。

        • 属性データが存在しないとき、操作は属性を変更して、データを挿入します。

          ターゲットがAutonomous Databaseの場合、列オブジェクト、REF、VARRAY、ネスト表、LOB列型を変更しようとすると、データベース・エラーORA-22859: invalid modification of columnsが発生することがあります。優先される型の列を作成し、適切な型コンストラクタを使用して列データを新しい型にコピーします。

    また、TEXTとCLOB間の変換は、データ統合ではサポートされません。自律型データベースのVARCHAR2列に対して4000バイトの制限があると、特定のユースケースで「新規データ・エンティティの作成」チェック・ボックスを選択するのではなく、CLOBデータ型の既存のターゲット・データ・エンティティを使用する必要がある場合があります。

    オブジェクト・ストレージの場合

    新しいデータ・エンティティ名に続けてスラッシュ(/)を入力します。たとえば、newdirectory/と入力します。

    ただし、単一ファイル出力を作成するために「出力を単一ファイルとして作成」チェック・ボックスを選択した場合は、末尾のスラッシュ(/)なしの新しいエンティティ名を入力します。

    出力を単一ファイルに書き込む場合、構文${PARAMETER_NAME}を使用してファイル名にパラメータを含めることができます。たとえば、ファイル名は次のように記述できます:

    /bucket1/file_${REGION}.csv
    /bucket1/file_${CURRENT_DATE}.csv

    「ファイル・タイプ」および「圧縮タイプ」も選択します。選択できる圧縮タイプは、選択したファイル・タイプによって異なります。ファイルの圧縮に使用する圧縮方法がわからない場合は、「なし(デフォルト)」を選択します。

    CSVおよびJSONファイル・タイプの場合、デフォルトの「エンコーディング」はUTF-8です。これは変更できません。

    ファイル・タイプCSVを選択した場合、構成できるその他の設定は次のとおりです。

    • ファイルの最初の行がヘッダー行である場合は、「ヘッダーあり」「はい」を選択します。
    • データ行の値が複数の行にわたる場合、「複数行」「はい」を選択します。
    • データ値で検出される他の文字をエスケープするためのエスケープ文字を指定します。例: \
    • データ・フィールドを区切るデリミタ文字を選択します。例: 「コロン」(:)、COMMA(,)、PIPE(|)、SEMICOLON(;)またはTAB(\t)
    • 列デリミタがファイルのデータ行の最後に含まれる場合は、「後続のデリミタ」「はい」を選択します。
    • 他の文字をリテラル文字として扱うための引用文字を指定します。例: "
  4. 「新規データ・エンティティの作成」チェック・ボックスを選択しなかった場合: 既存のデータ・エンティティを選択します。

    デザイナの現在の作業セッション中にエンティティの最新スキーマを使用していることを確認するには、エンティティ名の横にあるリフレッシュ・アイコンをクリックします。実際のデータの変更ではなく、エンティティのメタデータのみがフェッチされます。

    データ・アセット・タイプに応じて、既存のデータ・エンティティを使用するように構成する場合は、次の点に注意してください:

    ターゲット・タイプ 説明

    オブジェクト・ストレージの場合

    1つの出力ファイルを使用する場合は、「出力を1つのファイルとして作成」チェック・ボックスを選択します。そうしないと、複数のファイルが作成されます。タスクが実行されるたびに、単一の出力ファイルが上書きされます。

    単一出力ファイルの作成は、データ統合のパフォーマンスに影響することがあります。大規模なデータセットでは単一出力ファイルのオプションを使用しないでください。

    「出力を単一ファイルとして作成」チェック・ボックスが選択されている場合: データ・エンティティを選択するときに、末尾にスラッシュ(/)がないエンティティ名を選択します。

    「ファイル・タイプ」を選択します。CSVがファイル・タイプの場合は、「RAWデータのプレビュー」をクリックして、ファイルの最初の10行を表示できます。

    「圧縮タイプ」を選択します。選択できる圧縮タイプは、選択したファイル・タイプによって異なります。ファイルの圧縮に使用する圧縮方法がわからない場合は、「なし(デフォルト)」を選択します。

    CSVおよびJSONファイル・タイプの場合、デフォルトの「エンコーディング」はUTF-8です。これは変更できません。

    ファイル・タイプがCSVの場合、構成できるその他の設定は次のとおりです。

    • ファイルの最初の行がヘッダー行である場合は、「ヘッダーあり」「はい」を選択します。
    • データ行の値が複数の行にわたる場合、「複数行」「はい」を選択します。
    • データ値で検出される他の文字をエスケープするためのエスケープ文字を指定します。例: \
    • データ・フィールドを区切るデリミタ文字を選択します。例: 「コロン」(:)、COMMA(,)、PIPE(|)、SEMICOLON(;)またはTAB(\t)
    • 列デリミタがファイルのデータ行の最後に含まれる場合は、「後続のデリミタ」「はい」を選択します。
    • 他の文字をリテラル文字として扱うための引用符文字を指定します。例: "

    ファイル・タイプがJSONの場合は、「カスタム・スキーマの使用」を選択して、エンティティ・シェイプの推測に使用されるカスタム・サンプル・スキーマを貼り付けるかアップロードします。

    • 「アップロード」を選択した場合は、表示されたボックスにカスタム・スキーマ・ファイルを削除するか、「ファイルの選択」をクリックしてアップロードするスキーマ・ファイルを選択します。

    • 「スキーマに貼付け」を選択した場合は、スキーマ・テキスト・ファイルの内容をコピーして、表示されたボックスに貼り付けます。

  5. Autonomous Data WarehouseまたはAutonomous Transaction Processingの場合、ステージングの場所を選択する(アセットにデフォルトの場所が定義されていない場合)か、場所を編集して別のステージングの場所を使用します。
    ノート

    ターゲットがAutonomous Data WarehouseまたはAutonomous Transaction Processingの場合、「ステージングの場所」オプションが有効になり、オブジェクト・ストレージ・バケットを選択できます。データ統合は、ステージングの場所を使用してデータをステージングしてからターゲットにロードします。

    ターゲット・データ・アセットにデフォルトのステージング場所が構成されている場合、データ統合ではそのバケットが自動的にステージングに使用されます。別のステージング場所を指定するには値を明示的に編集してください。

    Autonomous Data WarehouseまたはAutonomous Transaction Processingをターゲットとして使用するには、次の例に示すように、まずステージング・バケットでPAR_MANAGEリクエスト権限を有効にする必要があります:

    allow any-user to manage buckets in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.permission='PAR_MANAGE', request.principal.id='<workspace-ocid>'}

    事前認証済リクエストの使用を参照してください。

    1. 「ステージングの場所」で、「選択」または「編集」をクリックします。
    2. (編集)別のステージング場所を選択する場合は、「ステージング場所の選択」パネルで「デフォルトのステージング場所の設定を使用」チェック・ボックスを選択しないでください。
    3. 「データ・アセット」メニューをクリックし、「オブジェクト・ストレージ」データ・アセットを選択します。
    4. 次に、「接続」「コンパートメント」および「バケット」を選択し、「選択」をクリックします。
  6. (オプション)「拡張オプション」タブで、このターゲット演算子のデータ・アセット・タイプに応じて、値を入力するか、デフォルト値を使用できます。

    項目 説明

    拒否の制限

    Autonomous Data WarehouseまたはAutonomous Transaction Processingの場合

    値を入力してください

    ターゲットにロードできない可能性があるエラー行の最大数を指定できます。これを超えると統合タスクが失敗します。たとえば、データ・ソースに1,000行が含まれるときに、拒否制限を200に設定すると、200番目のエラー行が拒否された直後にタスクが失敗します。

    値を指定しない場合、デフォルトはゼロです。つまり、最初のエラー行が拒否されたときにタスクが失敗します。

    タスクが失敗した場合は、拒否された行が含まれる表名をログで確認してください。次に、Autonomous Database内で影響を受けた表と行を問い合せます。

    ロード順序

    値を入力してください

    正の整数のみ入力できます。デフォルト値は0です。ロード順序は、データのロード先のターゲット・ノードの順序を指定します。最初に値0のターゲット、次に値1のターゲットのようにロードされます。複数のノードの値が同じ場合、ターゲットは特定の順序でロードされません。

  7. 「属性」タブでは、個々の属性を選択することも、フィルタ・アイコンを使用して名前パターンまたは属性タイプで属性のリストをフィルタ処理することもできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY(データ型)、COMPOSITEまたはMAP(キー・タイプ、値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  8. 「データ」タブで、「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。データは読取り専用であるため、変換をターゲット演算子に適用できません。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  9. 「マップ」タブで、受信属性をターゲット・データ・エンティティの属性にマップする方法を決定します。「新規データ・エンティティの作成」チェック・ボックスを選択した場合、マッピング属性は適用できません。

    階層データ型のターゲット・エンティティの場合、最上位フィールドしかマップできません。サポートされている内容を理解するには、「階層データ型」を参照してください。

  10. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。

    データ統合では、次の状況で警告がチェックされて表示されます:

    • データがソース属性からマップされたターゲット属性にロードされると、データの切捨てが発生する可能性があります。
    • ソース属性のデータ型が、マップ済属性のデータ型と一致しません。
データの表示

「データ」タブには、データ・フローに適用された演算子に基づいて変換されたデータが表示されます。

重要

ターゲット演算子に階層データ・エンティティを使用している場合は、階層データ型を参照して、何がサポートされているかを理解してください。

ターゲット・エンティティのデータを名前パターンまたはデータ型でフィルタ処理できます。データを名前パターンでフィルタ処理するには、「パターンによるフィルタ」フィールドに単純な正規表現パターンまたはワイルドカード?および*を入力します。データを型でフィルタ処理するには、パターン・フィールドの横にあるメニューからデータ型を選択します。

データは読取り専用であるため、変換をターゲット演算子に適用できません。

属性のマッピング

「マップ」タブは、ターゲット演算子に対してのみ使用できます。

重要

ターゲット演算子に階層データ・エンティティを使用している場合は、階層データ型を参照して、何がサポートされているかを理解してください。

新しいターゲット・データ・エンティティを作成している場合、「マップ」タブは使用できません。受信属性は、1対1マッピングを使用した表またはファイル構造の作成に使用されます。

既存のターゲット・データ・エンティティを使用する場合は、受信属性をターゲット・データ・エンティティの属性にマップします。行うことができるアクションは:

位置によるマップ

受信属性を、リスト内の位置に従ってターゲット・エンティティ属性にマップします。

アクション・メニューから「位置による自動マップ」を選択します。「位置による自動マップ」ルールが追加されます。

名前によるマップ

受信属性を同じ名前のターゲット属性にマップします。

アクション・メニューから「名前による自動マップ」を選択します。「名前による自動マップ」ルールが追加されます。

パターンによるマップ

ユーザー定義の単純な正規表現ルールに基づいて、受信属性をターゲット属性にマップします。

アクション・メニューから「パターンによるマップ」を選択します。ソース・パターンおよびターゲット・パターンを入力します。次に、「プレビュー」マッピングをクリックして、ソース・パターンとターゲット・パターンをテストします。

パターンを定義するには、アスタリスク(*)および疑問符(?)記号を使用できます。文字列パターン内の任意の文字数のワイルドカードを示すアスタリスクを使用します。疑問符を使用して、1文字のワイルドカードを示します。たとえば、*INPUT?は、n個の文字から始まり、文字列INPUTを含み、その後に単一の文字が続くすべての一致属性をマップします(NEWINPUTSなど)。

デフォルトでは、パターン照合では大文字/小文字を区別しません。たとえば、ソース・パターン*Nameは、ターゲット名CUSTOMER_NAMEおよびCustomer_Nameに一致します。

異なる取得グループを指定するには、$nを使用します。たとえば、ソース演算子またはアップストリーム演算子のLAST_NAMEFIRST_NAMEおよびUSERNAMEを、ターゲット・データ・エンティティのTGT_LAST_NAMETGT_FIRST_NAMEおよびTGT_USERNAMEにマップするとします。この場合、「ソース・パターン」フィールドに*NAME「ターゲット・パターン」フィールドにTGT_$1と入力します。*NAMEのアスタリスク(*)は、NAMEの前の文字列がターゲット・パターンの$1にある文字列であることを意味します。$1は、ソース・パターン内の最初の取得グループ(この場合はアスタリスク(*)です)を示します。

大/小文字を区別するパターン一致が必要な場合は、ソース・パターンに(?c)接頭辞を追加します。たとえば、名前にキャメル・大文字を使用するソース属性CustomerNameを、Customer_Nameという名前のターゲット属性にマップするとします。ソース・パターンとして(?c)([A-Z][a-z]+)([A-Z][a-z]+)を入力し、ターゲット・パターンとして$1_$2を入力します。(?c)接頭辞がソース・パターンの先頭に追加されると、マッピングで大/小文字を区別するパターン一致がオンになります。データ統合では、CustomerNameのNが新しいパターンの開始であることを検出するため、照合時に([A-Z][a-z]+)([A-Z][a-z]+)を2つの異なる単語(取得グループ)として扱います。

ダイレクト手動マップ

ソース・リストの受信属性をターゲット・リストの属性にドラッグ・アンド・ドロップして、マッピングを作成します。

または、アクション・メニューから「手動マップ」を選択できます。次に、「属性のマップ」ダイアログを使用し、ソース属性およびターゲット属性を選択してマッピングを作成します。

マッピングの削除

選択したマップを削除します。

「ルールの表示」を選択します。「ルール」パネルで、1つ以上のルールを選択し、「削除」をクリックします。または、ルールのアクション・メニューから「削除」を選択して、そのルールを消去することもできます。

すべてのマッピングのクリア

すべてのマッピングを削除します。

アクション・メニューから「マッピングのリセット」を選択します。手動ルールおよび自動マップ・ルールがすべて削除されます。

整形演算子

重要

複合データ型については、階層データ型を参照して、何がサポートされているかを理解してください。「プロパティ」パネルの「属性」タブと「データ」タブでは、一部の構成を実行できない場合があります。

フィルタ演算子

フィルタ演算子を使用して、インバウンド・ポートからデータのサブセットを選択し、フィルタ条件に基づいてアウトバウンド・ポートへのダウンストリームを継続します。

フィルタ演算子の追加および構成
  1. 「演算子」パネルから、フィルタ演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. フィルタ演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「フィルタ条件」の横にある「作成」をクリックします。
  4. 「フィルタ条件の作成」パネルの「条件ビルダー」セクションで、属性、パラメータおよび関数をダブルクリックするかドラッグ・アンド・ドロップしてエディタに追加し、条件を作成できます。エディタに条件式を手動で入力し、式を検証することもできます。
    ノート

    エディタでは、関数などの追加された要素にプレースホルダがある場合があります。プレースホルダを別の要素に置き換えるには、プレースホルダを強調表示して、リストから別の要素をダブルクリックします。
  5. 「作成」をクリックします。
  6. (オプション)「パラメータの割当て」をクリックしてパラメータを使用します。こうすることで、データ・フローの公開時にフィルタ条件がコンパイル済コードにバインドされません。パラメータの割当てを参照してください。
  7. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  8. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  9. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
フィルタ条件の作成

条件ビルダーを使用して要素を視覚的に選択し、フィルタ条件を作成します。エディタでフィルタ条件を手動入力することもできます。

フィルタ条件を作成すると、条件に基づいてアップストリーム演算子からデータのサブセットを選択できます。

フィルタ条件で使用できる要素には、受信属性、パラメータおよび関数があります。要素をダブルクリックするか、リストからドラッグ・アンド・ドロップするかしてエディタに追加し、条件を作成できます。条件は作成する前に検証できます。

「受信」には、アップストリーム演算子からこのフィルタ演算子に入る属性が表示されます。

たとえば、市区町村名でデータをフィルタするには、次のように条件式を作成します:

FILTER_1.ADDRESSES.CITY='Redwood Shores'

パラメータは、条件ビルダー(フィルタ演算子、結合演算子、ルックアップ演算子および分割演算子)または式ビルダー(式演算子および集計演算子)を使用してデータ・フローに追加された式パラメータです。式パラメータには、名前、タイプおよびデフォルト値があります。式パラメータの追加を参照してください。

たとえば、フィルタ条件で市区町村名のパラメータを使用するとします。P_VARCHAR_CITYという名前のVARCHARパラメータを作成し、デフォルト値をRedwood Shoresに設定できます。その後、次のようにフィルタ式を作成できます:

FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY

ファンクションデータ統合で使用可能な関数で、条件の中で使用できます。ファンクションは、関数に渡される引数に対して実行される操作です。ファンクションは、引数からデータ値を計算、操作または抽出します。

たとえば、市区町村名または人口でデータをフィルタするには、OR関数を使用して、次のようにフィルタ条件式を作成します:

FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>100000000
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>$P_NUMERIC

条件の作成時に追加できる関数のリストを次に示します:

ハッシュ関数
関数説明
MD5(all data types)データ型のMD5チェックサムを計算し、文字列値を返します。 MD5(column_name)
SHA1(all data types)データ型のSHA-1ハッシュ値を計算し、文字列値を返します。 SHA1(column_name)
SHA2(all data types, bitLength)データ型のSHA-2ハッシュ値を計算し、文字列値を返します。bitLengthは整数です。 SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512)
ORA_HASH(expr, [max_bucket], [seed_value])

exprのハッシュ値を計算し、NUMBER値を返します。

exprには、式、列、リテラルを指定できます。

max_bucketは、0から4294967295 (デフォルト)までの返された最大バケット値です。

seed_valueは、0 (デフォルト)から4294967295までの値です。

Oracleは、ハッシュ関数をexprseed_valueの組合せに適用して、同じデータ・セットに対して様々な結果を生成します。

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

算術関数
関数説明
ABS(numeric)numeric値の絶対乗を返します。ABS(-1)
CEIL(numeric)numeric値を超えない最小の整数を返しますCEIL(-1,2)
FLOOR(numeric)numeric値を超えない最大の整数を返します。FLOOR(-1,2)
MOD(numeric1, numeric2)numeric1numeric2で除算した後の剰余を返します。MOD(8,2)
POWER(numeric1, numeric2)numeric1numeric2で累乗します。POWER(2,3)
ROUND(numeric1, numeric2)numeric1を小数点以下numeric2桁に丸めて返します。ROUND(2.5,0)
TRUNC(numeric1, numeric2)numeric1を小数点以下numeric2桁に切り捨てて返します。TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])指定されたformatおよびlocale(オプション)に基づいて、exprを数値に変換します。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされるフォーマット・パターン:

  • 0: 数字
  • #: 数字。ゼロは存在しないことを示します
  • .: 小数点セパレータのプレースホルダ
  • ,: グループ化セパレータのプレースホルダ
  • E: 指数フォーマットの仮数と指数を区切ります
  • -: デフォルトの否定接頭辞
  • ¤: 通貨シンボルで置換される通貨記号。二重の場合、国際通貨記号で置換されます。パターン内に存在する場合は、小数点セパレータのかわりに通貨小数点セパレータが使用されます。

TO_NUMBER('5467.12')5467.12を返します

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US')-45677.7を返します

日付と時間関数
関数 説明
CURRENT_DATE 現在の日付を返します。 CURRENT_DATEは、2023-05-26などの今日の日付を返します
CURRENT_TIMESTAMP セッション・タイムゾーンに対する現在の日付と時刻を返します。 CURRENT_TIMESTAMPは、今日の日付と現在の時刻(2023-05-26 12:34:56など)を返します
DATE_ADD(date, number_of_days) 指定したdateからnumber日後の日付を返します。 DATE_ADD('2017-07-30', 1)2017-07-31を返します
DATE_FORMAT(expr, format[, locale])

指定されたformatおよびlocale(オプション)に基づいて、日付のexprをフォーマットします。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされる日付フォーマット・パターン:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd')'2020-10-11'を返します。最初の引数は、2020年10月11日を表すDateオブジェクトです。

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES')'2018/junio/17'を返します

DAYOFMONTH(date) 特定の日(月間)を返します。 DAYOFMONTH('2020-12-25')25を返します。
DAYOFWEEK(date) 特定の日(週間)を返します。 DAYOFWEEK('2020-12-25')は、金曜日の6を返します。米国では、日曜日は1、月曜日は2などとみなされます。
DAYOFYEAR(date) 特定の日(年間)を返します。 DAYOFYEAR('2020-12-25')360を返します
WEEKOFYEAR(date) 日付が年内の何番目の週かを返します。

WEEKOFYEAR('2022-07-28')30を返します

WEEKOFYEAR('2022-07-28 13:24:30')30を返します

HOUR(datetime) 日時の時間の値を返します。 HOUR('2020-12-25 15:10:30')15を返します
LAST_DAY(date) 月末の日付を返します。 LAST_DAY('2020-12-25')31を返します
MINUTE(datetime) 日時の分の値を返します。 HOUR('2020-12-25 15:10:30')10を返します
MONTH(date) 日付の月の値を返します。 MONTH('2020-06-25')6を返します。
QUARTER(date) 日付が属する四半期を返します。 QUARTER('2020-12-25')4を返します。
SECOND(datetime) 日時の秒の値を返します。 SECOND('2020-12-25 15:10:30')30を返します
TO_DATE(string, format_string[, localeStr]) format_string式を含む文字列式を日付に解析します。ロケールはオプションです。デフォルトはen-USです。サポートされる言語タグ

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合は、大/小文字を区別する次のフォーマット文字列がサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

TO_DATE('31 December 2016', 'dd MMMM yyyy')は、日付値2016-12-31を返します

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES')は、日付値2018-06-17を返します

TO_TIMESTAMP(expr, format_string[, localeStr]) 指定されたformat_stringおよびlocaleStr(オプション)に基づいて、VARCHARのexprをTIMESTAMPの値に変換します。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次のフォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss')は、11am 10:10 Oct 11th, 2020を表すTIMESTAMPオブジェクトを返します
WEEK(date)

日付の週の値を返します。

WEEK('2020-06-25')4を返します
YEAR(date) 日付の年の値を返します。 YEAR('2020-06-25') returns 2020
ADD_MONTHS(date_expr, number_months) 指定した日付、タイムスタンプまたは文字列(yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマット)に指定した数の月を追加した日付を返します。

ADD_MONTHS('2017-07-30', 1)2017-08-30を返します

ADD_MONTHS('2017-07-30 09:07:21', 1)2017-08-30を返します

MONTHS_BETWEEN(start_date_expr, end_date_expr)

start_date_exprend_date_exprの間の月数を返します。start_date_exprend_date_exprには、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの日付、タイムスタンプまたは文字列を指定できます

整数が返されるのは、両方の日付の日の部分が同じ場合、または両方が月の最終日の場合です。それ以外の場合は、1か月を31日として差が計算されます。

MONTHS_BETWEEN('2022-01-01', '2022-01-31')は1を返します

MONTHS_BETWEEN('2022-07-28', '2020-07-25')は24を返します

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30')は24を返します

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

日付、タイムスタンプまたは文字列をUTC時間として解釈し、その時間を指定したタイムゾーンのタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 03:40:00.0を返します
TO_UTC_TIMESTAMP(time_stamp, time_zone)

指定したタイムゾーンの日付、タイムスタンプまたは文字列をUTCタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 01:40:00.0を返します
FROM_UNIXTIME(unix_time[, fmt])

指定したUnix時間すなわちエポックを、現在のシステム・タイム・ゾーンおよび指定したフォーマットで、その時点のタイムスタンプを表す文字列に変換します。

ノート: Unix時間とは、1970年1月1日00:00:00 UTCから経過した秒数です。

fmtを省略した場合、デフォルトのフォーマットはyyyy-MM-dd HH:mm:ssです

FROM_UNIXTIME(1255033470)'2009-10-08 13:24:30'を返します

FROM_UNIXTIME(1637258854)'2021-11-18 10:07:34'を返します

例のデフォルトのタイムゾーンはPSTです

UNIX_TIMESTAMP([time_expr[, fmt]])

現在時刻または指定した時刻をUnixタイムスタンプ(秒単位)に変換します。

time_exprは、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの、日付、タイムスタンプまたは文字列です

time_exprを指定しないと、現在時刻が変換されます。

time_exprが文字列で、fmtを省略した場合、デフォルトはyyyy-MM-dd HH:mm:ssです

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')28800を返します

この例のデフォルトのタイムゾーンはPSTです

INTERVAL 'year' YEAR[(year_precision)]

期間を年単位で返します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '1' YEARは1年の期間を返します

INTERVAL '200' YEAR(3)は200年の期間を返します

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

期間を年と月の単位で返します。yearおよびmonthフィールドを使用して期間を格納するために使用します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '100-5' YEAR(3) TO MONTHは100年と5か月の期間を返します。先頭の年の精度として3を指定する必要があります。
INTERVAL 'month' MONTH[(month_precision)]

期間を月単位で返します。

month_precisionmonthフィールドの桁数で、範囲は0から9です。month_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '200' MONTH(3)は200か月の期間を返します。月の精度として3を指定する必要があります。
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

日、時、分、秒で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '11 10:09:08.555' DAY TO SECOND(3)は、11日10時間9分8秒555ミリ秒の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

日、時、分で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '11 10:09' DAY TO MINUTEは、11日10時間9分の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

日数と時間数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '100 10' DAY(3) TO HOURは、100日10時間の期間を返します
INTERVAL 'day' DAY[(day_precision)]

日数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

INTERVAL '999' DAY(3)は999日の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

時、分、秒で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)は、9時間8分7.6666666秒の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

時間と分数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '09:30' HOUR TO MINUTEは、9時間30分の期間を返します
INTERVAL 'hour' HOUR[(hour_precision)]

時間数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '40' HOURは40時間の期間を返します
INTERVAL 'minute' MINUTE[(minute_precision)]

分数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '15' MINUTEは15分間の期間を返します
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

分数と秒数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '15:30' MINUTE TO SECONDは15分30秒の期間を返します
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

秒数で期間を返します。

fractional_seconds_precisionは、secondフィールドの分数部分の桁数であり、範囲は0から9です。デフォルトは3です。

INTERVAL '15.678' SECONDは15.678秒の期間を返します
分析関数
関数 説明
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) ウィンドウ・フレームの最初の行である行で評価された値を返します。 FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最初の値を返します。
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より前のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC)は、BANK_IDでパーティション化し、BANK_NAMEの降順にしたときの、現在行より2行前のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) ウィンドウ・フレームの最後の行である行で評価された値を返します。 LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最後の値を返します。
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より後のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDでパーティション化し、BANK_NAMEの昇順にしたときの、現在行より2行後のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
RANK() OVER([ partition_clause ] order_by_clause) ギャップを含む現在行のランクを返します(1からカウント)。 RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行のランクをBANK_NAMEの昇順で返します。
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) パーティション内の現在行の一意の番号を返します(1からカウント)。 ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行の一意の行番号をBANK_NAMEの昇順で返します。
文字列関数
関数説明
CAST(value AS type)指定されたタイプの指定された値を返します。CAST("10" AS INT)10を返します
CONCAT(string, string)文字列または列を結合した値を返しますCONCAT('Oracle','SQL')OracleSQLを返します
CONCAT_WS(separator, expression1, expression2, expression3,...) 指定したセパレータを使用して、文字列または列を結合した値を文字列または列間で返します。

区切り記号は必須であり、文字列である必要があります。

セパレータの後に少なくとも1つの式を指定する必要があります。たとえば: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle')Hello-Oracleを返します

CONCAT_WS(' ', address, city, postal_code)123 MyCity 987654を返します

関数の子が配列である場合、配列はフラット化されます。

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9)1,2,3,4,5,6,7,8,9を返します

INITCAP(string)各単語の最初の文字を大文字、残りの文字をすべて小文字にした文字列を、単語どうしを空白で区切って返します。INITCAP('oRACLE sql')Oracle Sqlを返します
INSTR(string, substring[start_position])stringで最初に出現するsubstringの(1から始まる)索引を返しますINSTR('OracleSQL', 'SQL')7を返します
LOWER(string)すべての文字を小文字に変更して文字列を返します。LOWER('ORACLE')oracleを返します
LENGTH(string)文字列の文字長またはバイナリ・データのバイト数を返します。文字列の長さには末尾のスペースも含まれます。LENGTH('Oracle')6を返します
LTRIM(string)先頭のスペースを左から除去して文字列を返します。LTRIM(' Oracle')
NVL(expr1, epxr2)nullでない引数を返します。NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])入力文字列から正規表現パターンに一致する文字列を検索して抽出します。オプションのキャプチャ・グループ索引が指定されている場合、この関数は特定のグループを抽出します。

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?')https://www.oracle.comを返します

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1)22を返します
REPLACE(string, search, replacement)出現するすべてのsearchreplacementに置換します。

文字列にsearchが見つからない場合、stringがそのまま返されます。

replacementが指定されていない場合、または空の文字列の場合、stringから削除されるsearchは何にも置換されません。

REPLACE('ABCabc', 'abc', 'DEF')ABCDEFを返します
RTRIM(string)先頭のスペースを右から除去して文字列を返します。RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])位置から始まる部分文字列を返します。 SUBSTRING('Oracle SQL' FROM 2 FOR 3)racを返します
数値の場合、TO_CHAR(expr)および日付の場合、TO_CHAR(expr, format[, locale])数字と日付を文字列に変換します。数値の場合、書式は必要ありません。日付の場合は、「日時関数」で説明されているDATE_FORMATと同じ形式を使用します。デフォルトのロケールはen-USです。「サポートされている言語タグ」を参照してください。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次の日付フォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

数値の例: TO_CHAR(123)123を返します

日付の例: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US')は文字列2020.10.30を返します。最初の引数は、2020年10月30日を表すDateオブジェクトです。

UPPER(string)すべての文字を大文字に変更して文字列を返します。UPPER('oracle')ORACLEを返します
LPAD(str, len[, pad])文字列の左側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。LPAD('ABC', 5, '*')'**ABC'を返します
RPAD(str, len[, pad])文字列の右側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。RPAD('XYZ', 6, '+' )は'XYZ+++'を返します
演算子(比較)関数
関数説明
CASE WHEN condition1 THEN result1 ELSE result2 END条件を満たす値を返します。CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' ENDは、1> 0の場合はABCを返し、それ以外の場合はXYZを返します
AND論理AND演算子。両方のオペランドがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 AND y = 20)は、xが10でyが20の場合、trueを返します。いずれか一方がtrueでない場合は、falseを返します
OR論理OR演算子。いずれかのオペランドがtrueであるか、両方ともtrueである場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 OR y = 20)は、xが10ではなく、かつyが20でない場合、falseを返します。いずれか一方がtrueの場合は、trueを返します
NOT論理NOT演算子。
LIKEstring1がstring2のパターンに一致するかどうかにかかわらず、文字列パターン・マッチングを実行します。
=等価かどうかをテストします。expr1がexpr2と等しい場合はtrueを返し、それ以外の場合はfalseを返します。x = 10は、xの値が10の場合はtrueを返し、それ以外の場合はfalseを返します
!=非等価かどうかをテストします。expr1がexpr2と等しくない場合はtrueを返し、それ以外の場合はfalseを返します。x != 10は、xの値が10の場合はfalseを返し、それ以外の場合はtrueを返します
>式の大なりをテストします。expr1がexpr2より大きい場合は、trueを返します。x > 10は、xの値が10より大きい場合はtrueを返し、それ以外の場合はfalseを返します
>=式の大なりイコールをテストします。expr1がexpr2以上の場合は、trueを返します。x > =10は、xの値が10以上の場合はtrueを返し、それ以外の場合はfalseを返します
<式の小なりをテストします。expr1がexpr2より小さい場合は、trueを返します。x < 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
<=式の小なりイコールをテストします。expr1がexpr2以下の場合は、trueを返します。x <= 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
||2つの文字列を連結します。'XYZ' || 'hello''XYZhello'を返します
BETWEEN範囲を評価します。FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
IN式が値リストと一致するかどうかをテストします。FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
一意ID関数
関数説明
NUMERIC_ID()各行に対して64ビットの数値の汎用一意識別子を生成します。NUMERIC_ID()は、たとえば3458761969522180096および3458762008176885761を返します
ROWID()単調に増加する64ビット数を生成します。ROWID()は、たとえば、012などを返します
UUID()各行に対して128ビットの文字列の汎用一意識別子を生成します。UUID()は、たとえば20d45c2f-0d56-4356-8910-162f4f40fb6dを返します
MONOTONICALLY_INCREASING_ID() 単調に増加する一意の64ビット整数を生成します。連続した数字にはなりません。 MONOTONICALLY_INCREASING_ID()は、たとえば、858993459225769803776を返します
条件付き関数
関数説明
COALESCE(value, value [, value]*)存在する場合は最初のnullでない引数を返し、それ以外の場合はnullを返します。COALESCE(NULL, 1, NULL)1を返します
NULLIF(value, value)2つの値が等しい場合はnullを返し、それ以外の場合は最初の値を返します。NULLIF('ABC','XYZ')ABCを返します
階層関数
関数説明
SCHEMA_OF_JSON(string)JSON文字列を解析し、スキーマのDDLフォーマットを推測します。

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]')'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'を返します

SCHEMA_OF_JSON('[{\"col\":0}]')'ARRAY<STRUCT<col: BIGINT>>'を返します

FROM_JSON(column, string)

JSON文字列を含む列を解析し、指定スキーマを含む次のいずれかの型に解析します。

  • Map (キー・タイプがString)
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>')は、指定スキーマ{704, ORACLE CITY}のStruct型列を返します

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>')は、指定スキーマ{1, 0.8}のStruct型列を返します

TO_JSON(column)StructまたはStruct配列あるいはMapまたはMap配列の型を含む列をJSON文字列に変換します。TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value')))はJSON文字列{"s1":[1,2,3],"s2":{"key":"value"}}を返します
TO_MAP(string,column[,string,column]*)Map型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。入力キー列をNULLにすることはできません。すべて同じデータ型である必要があります。入力値列はすべて同じデータ型である必要があります。

TO_MAP('Ename',Expression_1.attribute1)は、Map型の列{"ENAME" -> 100}を返します

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit)は、Map型の列{"block" -> 1,"unit" -> 1}を返します

TO_STRUCT(string,column[,string,column]*)Struct型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。

TO_STRUCT('Ename',Expression_1.attribute1){100}を返します

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2){100, "John"}を返します

TO_ARRAY(column[,column]*)Array型の新しい列を作成します。入力列はすべて同じデータ型である必要があります。

TO_Array(Expression_1.attribute1)[100]を返します

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3)["John","Friend"]を返します

高順序関数

式および階層データ型の作成をサポートするデータ・フロー演算子では、上位の関数を使用できます。

サポートされている演算子は次のとおりです:

  • 集計

  • フィルタ

  • 結合

  • 検索

  • 分割済

  • ピボット

関数説明
TRANSFORM(column, lambda_function)配列と無名関数を取得し、各要素に関数を適用して結果を出力配列に割り当てることによって、新しい配列を設定します。整数[1, 2, 3]の入力配列の場合、TRANSFORM(array, x -> x + 1)[2, 3, 4]の新しい配列を返します。
TRANSFORM_KEYS(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、キーがラムダ関数の結果のタイプを持ち、値が列マップ値のタイプを持つマップを返します。整数キーおよび文字列値が{1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}の入力マップの場合、TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1){3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}の新しいマップを返します。
TRANSFORM_VALUES(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、値がラムダ関数の結果のタイプを持ち、キーが列マップ・キーのタイプを持つマップを返します。 文字列キーおよび文字列値が{'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}の入力マップの場合、TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v){'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}の新しいマップを返します。
ARRAY_SORT(array(...), lambda_function)

式演算子のみがARRAY_SORTをサポートします。

配列を取得し、2つの引数を取る指定された関数に従ってソートします。

この関数は、最初のエレメントが2番目のエレメントより小さいか、等しいか、または大きいかに応じて-1、0、または1を返す必要があります。

関数を省略すると、配列は昇順にソートされます。

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

返される配列は次のとおりです。

[1,5,6]

結合演算子

結合演算子を使用して、複数のインバウンド・ソースからのデータをリンクします。

結合演算子の追加および構成
  1. 「演算子」パネルから、結合演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. 結合演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「結合タイプ」を選択します。サポートされる結合タイプは:
    結合タイプ
    アイコン 結合タイプ 説明
    内部結合のベン図 内部 2つのインバウンド・ソースから結合条件を満たすデータを選択します。
    左外部結合のベン図 左外部 インバウンド・ソース1からすべてのデータと、インバウンド・ソース2から結合条件を満たすデータを選択します。
    右外部結合のベン図 右外部 インバウンド・ソース1から結合条件を満たすデータと、インバウンド・ソース2からすべてのデータを選択します。
    完全外部結合のベン図 完全外部 2つのインバウンド・ソースからすべてのデータを選択し、一致させられる行はマッチングして、一致が見つからない行にはnullを挿入します。
  4. 「結合条件」の横にある「作成」をクリックします。
  5. 「結合条件の作成」パネルの「条件ビルダー」セクションで、属性、パラメータおよび関数をダブルクリックするかドラッグ・アンド・ドロップしてエディタに追加し、条件を作成できます。エディタに条件式を手動で入力し、式を検証することもできます。
    ノート

    エディタでは、関数などの追加された要素にプレースホルダがある場合があります。プレースホルダを別の要素に置き換えるには、プレースホルダを強調表示して、リストから別の要素をダブルクリックします。
  6. 「作成」をクリックします。
  7. (オプション)「パラメータの割当て」をクリックしてパラメータを使用します。こうすることで、データ・フローの公開時に結合条件がコンパイル済コードにバインドされません。パラメータの割当てを参照してください。
  8. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  9. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  10. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
結合条件の作成

条件ビルダーを使用して要素を視覚的に選択し、結合条件を作成します。エディタで結合条件を手動入力することもできます。

結合条件を作成すると、条件に基づいて2つのインバウンド・ソースからデータを選択できます。

結合条件で使用できる要素には、受信属性、パラメータおよび関数があります。要素をダブルクリックするか、リストからドラッグ・アンド・ドロップするかしてエディタに追加し、条件を作成できます。条件は作成する前に検証できます。

「受信」には、結合演算子に接続されているアップストリーム・ポートからの属性が、2つの個別のJOINフォルダとして表示されます。各ポートからの属性を表示するには、該当するJOINフォルダを展開または縮小します。たとえば、JOIN_1_1やJOIN_1_2です。

JOIN_1_1.BANK_CUSTOMER.ADDRESS_ID = JOIN_1_2.BANK_ADDRESS.ADDRESS_ID

パラメータは、条件ビルダー(フィルタ演算子、結合演算子、ルックアップ演算子および分割演算子)または式ビルダー(式演算子および集計演算子)を使用してデータ・フローに追加された式パラメータです。式パラメータには、名前、タイプおよびデフォルト値があります。式パラメータの追加を参照してください。

2つのソースを結合し、BANK_NAME='ABC Bank'の行のみを保持するとします。P_VARCHARという名前のVARCHARパラメータを作成し、デフォルト値をABC BANKに設定できます。その後、次のように結合式を作成できます:

JOIN_1_1.ADDRESSES.BANK_ID = JOIN_1_2.BANK.BANK_ID AND JOIN_1_2.BANK.BANK_NAME = $P_VARCHAR

ファンクションデータ統合で使用可能な関数で、条件の中で使用できます。ファンクションは、関数に渡される引数に対して実行される操作です。ファンクションは、引数からデータ値を計算、操作または抽出します。

条件の作成時に追加できる関数のリストを次に示します:

ハッシュ関数
関数説明
MD5(all data types)データ型のMD5チェックサムを計算し、文字列値を返します。 MD5(column_name)
SHA1(all data types)データ型のSHA-1ハッシュ値を計算し、文字列値を返します。 SHA1(column_name)
SHA2(all data types, bitLength)データ型のSHA-2ハッシュ値を計算し、文字列値を返します。bitLengthは整数です。 SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512)
ORA_HASH(expr, [max_bucket], [seed_value])

exprのハッシュ値を計算し、NUMBER値を返します。

exprには、式、列、リテラルを指定できます。

max_bucketは、0から4294967295 (デフォルト)までの返された最大バケット値です。

seed_valueは、0 (デフォルト)から4294967295までの値です。

Oracleは、ハッシュ関数をexprseed_valueの組合せに適用して、同じデータ・セットに対して様々な結果を生成します。

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

算術関数
関数説明
ABS(numeric)numeric値の絶対乗を返します。ABS(-1)
CEIL(numeric)numeric値を超えない最小の整数を返しますCEIL(-1,2)
FLOOR(numeric)numeric値を超えない最大の整数を返します。FLOOR(-1,2)
MOD(numeric1, numeric2)numeric1numeric2で除算した後の剰余を返します。MOD(8,2)
POWER(numeric1, numeric2)numeric1numeric2で累乗します。POWER(2,3)
ROUND(numeric1, numeric2)numeric1を小数点以下numeric2桁に丸めて返します。ROUND(2.5,0)
TRUNC(numeric1, numeric2)numeric1を小数点以下numeric2桁に切り捨てて返します。TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])指定されたformatおよびlocale(オプション)に基づいて、exprを数値に変換します。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされるフォーマット・パターン:

  • 0: 数字
  • #: 数字。ゼロは存在しないことを示します
  • .: 小数点セパレータのプレースホルダ
  • ,: グループ化セパレータのプレースホルダ
  • E: 指数フォーマットの仮数と指数を区切ります
  • -: デフォルトの否定接頭辞
  • ¤: 通貨シンボルで置換される通貨記号。二重の場合、国際通貨記号で置換されます。パターン内に存在する場合は、小数点セパレータのかわりに通貨小数点セパレータが使用されます。

TO_NUMBER('5467.12')5467.12を返します

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US')-45677.7を返します

日付と時間関数
関数 説明
CURRENT_DATE 現在の日付を返します。 CURRENT_DATEは、2023-05-26などの今日の日付を返します
CURRENT_TIMESTAMP セッション・タイムゾーンに対する現在の日付と時刻を返します。 CURRENT_TIMESTAMPは、今日の日付と現在の時刻(2023-05-26 12:34:56など)を返します
DATE_ADD(date, number_of_days) 指定したdateからnumber日後の日付を返します。 DATE_ADD('2017-07-30', 1)2017-07-31を返します
DATE_FORMAT(expr, format[, locale])

指定されたformatおよびlocale(オプション)に基づいて、日付のexprをフォーマットします。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされる日付フォーマット・パターン:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd')'2020-10-11'を返します。最初の引数は、2020年10月11日を表すDateオブジェクトです。

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES')'2018/junio/17'を返します

DAYOFMONTH(date) 特定の日(月間)を返します。 DAYOFMONTH('2020-12-25')25を返します。
DAYOFWEEK(date) 特定の日(週間)を返します。 DAYOFWEEK('2020-12-25')は、金曜日の6を返します。米国では、日曜日は1、月曜日は2などとみなされます。
DAYOFYEAR(date) 特定の日(年間)を返します。 DAYOFYEAR('2020-12-25')360を返します
WEEKOFYEAR(date) 日付が年内の何番目の週かを返します。

WEEKOFYEAR('2022-07-28')30を返します

WEEKOFYEAR('2022-07-28 13:24:30')30を返します

HOUR(datetime) 日時の時間の値を返します。 HOUR('2020-12-25 15:10:30')15を返します
LAST_DAY(date) 月末の日付を返します。 LAST_DAY('2020-12-25')31を返します
MINUTE(datetime) 日時の分の値を返します。 HOUR('2020-12-25 15:10:30')10を返します
MONTH(date) 日付の月の値を返します。 MONTH('2020-06-25')6を返します。
QUARTER(date) 日付が属する四半期を返します。 QUARTER('2020-12-25')4を返します。
SECOND(datetime) 日時の秒の値を返します。 SECOND('2020-12-25 15:10:30')30を返します
TO_DATE(string, format_string[, localeStr]) format_string式を含む文字列式を日付に解析します。ロケールはオプションです。デフォルトはen-USです。サポートされる言語タグ

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合は、大/小文字を区別する次のフォーマット文字列がサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

TO_DATE('31 December 2016', 'dd MMMM yyyy')は、日付値2016-12-31を返します

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES')は、日付値2018-06-17を返します

TO_TIMESTAMP(expr, format_string[, localeStr]) 指定されたformat_stringおよびlocaleStr(オプション)に基づいて、VARCHARのexprをTIMESTAMPの値に変換します。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次のフォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss')は、11am 10:10 Oct 11th, 2020を表すTIMESTAMPオブジェクトを返します
WEEK(date)

日付の週の値を返します。

WEEK('2020-06-25')4を返します
YEAR(date) 日付の年の値を返します。 YEAR('2020-06-25') returns 2020
ADD_MONTHS(date_expr, number_months) 指定した日付、タイムスタンプまたは文字列(yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマット)に指定した数の月を追加した日付を返します。

ADD_MONTHS('2017-07-30', 1)2017-08-30を返します

ADD_MONTHS('2017-07-30 09:07:21', 1)2017-08-30を返します

MONTHS_BETWEEN(start_date_expr, end_date_expr)

start_date_exprend_date_exprの間の月数を返します。start_date_exprend_date_exprには、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの日付、タイムスタンプまたは文字列を指定できます

整数が返されるのは、両方の日付の日の部分が同じ場合、または両方が月の最終日の場合です。それ以外の場合は、1か月を31日として差が計算されます。

MONTHS_BETWEEN('2022-01-01', '2022-01-31')は1を返します

MONTHS_BETWEEN('2022-07-28', '2020-07-25')は24を返します

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30')は24を返します

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

日付、タイムスタンプまたは文字列をUTC時間として解釈し、その時間を指定したタイムゾーンのタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 03:40:00.0を返します
TO_UTC_TIMESTAMP(time_stamp, time_zone)

指定したタイムゾーンの日付、タイムスタンプまたは文字列をUTCタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 01:40:00.0を返します
FROM_UNIXTIME(unix_time[, fmt])

指定したUnix時間すなわちエポックを、現在のシステム・タイム・ゾーンおよび指定したフォーマットで、その時点のタイムスタンプを表す文字列に変換します。

ノート: Unix時間とは、1970年1月1日00:00:00 UTCから経過した秒数です。

fmtを省略した場合、デフォルトのフォーマットはyyyy-MM-dd HH:mm:ssです

FROM_UNIXTIME(1255033470)'2009-10-08 13:24:30'を返します

FROM_UNIXTIME(1637258854)'2021-11-18 10:07:34'を返します

例のデフォルトのタイムゾーンはPSTです

UNIX_TIMESTAMP([time_expr[, fmt]])

現在時刻または指定した時刻をUnixタイムスタンプ(秒単位)に変換します。

time_exprは、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの、日付、タイムスタンプまたは文字列です

time_exprを指定しないと、現在時刻が変換されます。

time_exprが文字列で、fmtを省略した場合、デフォルトはyyyy-MM-dd HH:mm:ssです

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')28800を返します

この例のデフォルトのタイムゾーンはPSTです

INTERVAL 'year' YEAR[(year_precision)]

期間を年単位で返します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '1' YEARは1年の期間を返します

INTERVAL '200' YEAR(3)は200年の期間を返します

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

期間を年と月の単位で返します。yearおよびmonthフィールドを使用して期間を格納するために使用します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '100-5' YEAR(3) TO MONTHは100年と5か月の期間を返します。先頭の年の精度として3を指定する必要があります。
INTERVAL 'month' MONTH[(month_precision)]

期間を月単位で返します。

month_precisionmonthフィールドの桁数で、範囲は0から9です。month_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '200' MONTH(3)は200か月の期間を返します。月の精度として3を指定する必要があります。
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

日、時、分、秒で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '11 10:09:08.555' DAY TO SECOND(3)は、11日10時間9分8秒555ミリ秒の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

日、時、分で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '11 10:09' DAY TO MINUTEは、11日10時間9分の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

日数と時間数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '100 10' DAY(3) TO HOURは、100日10時間の期間を返します
INTERVAL 'day' DAY[(day_precision)]

日数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

INTERVAL '999' DAY(3)は999日の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

時、分、秒で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)は、9時間8分7.6666666秒の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

時間と分数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '09:30' HOUR TO MINUTEは、9時間30分の期間を返します
INTERVAL 'hour' HOUR[(hour_precision)]

時間数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '40' HOURは40時間の期間を返します
INTERVAL 'minute' MINUTE[(minute_precision)]

分数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '15' MINUTEは15分間の期間を返します
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

分数と秒数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '15:30' MINUTE TO SECONDは15分30秒の期間を返します
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

秒数で期間を返します。

fractional_seconds_precisionは、secondフィールドの分数部分の桁数であり、範囲は0から9です。デフォルトは3です。

INTERVAL '15.678' SECONDは15.678秒の期間を返します
分析関数
関数 説明
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) ウィンドウ・フレームの最初の行である行で評価された値を返します。 FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最初の値を返します。
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より前のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC)は、BANK_IDでパーティション化し、BANK_NAMEの降順にしたときの、現在行より2行前のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) ウィンドウ・フレームの最後の行である行で評価された値を返します。 LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最後の値を返します。
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より後のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDでパーティション化し、BANK_NAMEの昇順にしたときの、現在行より2行後のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
RANK() OVER([ partition_clause ] order_by_clause) ギャップを含む現在行のランクを返します(1からカウント)。 RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行のランクをBANK_NAMEの昇順で返します。
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) パーティション内の現在行の一意の番号を返します(1からカウント)。 ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行の一意の行番号をBANK_NAMEの昇順で返します。
文字列関数
関数説明
CAST(value AS type)指定されたタイプの指定された値を返します。CAST("10" AS INT)10を返します
CONCAT(string, string)文字列または列を結合した値を返しますCONCAT('Oracle','SQL')OracleSQLを返します
CONCAT_WS(separator, expression1, expression2, expression3,...) 指定したセパレータを使用して、文字列または列を結合した値を文字列または列間で返します。

区切り記号は必須であり、文字列である必要があります。

セパレータの後に少なくとも1つの式を指定する必要があります。たとえば: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle')Hello-Oracleを返します

CONCAT_WS(' ', address, city, postal_code)123 MyCity 987654を返します

関数の子が配列である場合、配列はフラット化されます。

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9)1,2,3,4,5,6,7,8,9を返します

INITCAP(string)各単語の最初の文字を大文字、残りの文字をすべて小文字にした文字列を、単語どうしを空白で区切って返します。INITCAP('oRACLE sql')Oracle Sqlを返します
INSTR(string, substring[start_position])stringで最初に出現するsubstringの(1から始まる)索引を返しますINSTR('OracleSQL', 'SQL')7を返します
LOWER(string)すべての文字を小文字に変更して文字列を返します。LOWER('ORACLE')oracleを返します
LENGTH(string)文字列の文字長またはバイナリ・データのバイト数を返します。文字列の長さには末尾のスペースも含まれます。LENGTH('Oracle')6を返します
LTRIM(string)先頭のスペースを左から除去して文字列を返します。LTRIM(' Oracle')
NVL(expr1, epxr2)nullでない引数を返します。NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])入力文字列から正規表現パターンに一致する文字列を検索して抽出します。オプションのキャプチャ・グループ索引が指定されている場合、この関数は特定のグループを抽出します。

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?')https://www.oracle.comを返します

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1)22を返します
REPLACE(string, search, replacement)出現するすべてのsearchreplacementに置換します。

文字列にsearchが見つからない場合、stringがそのまま返されます。

replacementが指定されていない場合、または空の文字列の場合、stringから削除されるsearchは何にも置換されません。

REPLACE('ABCabc', 'abc', 'DEF')ABCDEFを返します
RTRIM(string)先頭のスペースを右から除去して文字列を返します。RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])位置から始まる部分文字列を返します。 SUBSTRING('Oracle SQL' FROM 2 FOR 3)racを返します
数値の場合、TO_CHAR(expr)および日付の場合、TO_CHAR(expr, format[, locale])数字と日付を文字列に変換します。数値の場合、書式は必要ありません。日付の場合は、「日時関数」で説明されているDATE_FORMATと同じ形式を使用します。デフォルトのロケールはen-USです。「サポートされている言語タグ」を参照してください。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次の日付フォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

数値の例: TO_CHAR(123)123を返します

日付の例: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US')は文字列2020.10.30を返します。最初の引数は、2020年10月30日を表すDateオブジェクトです。

UPPER(string)すべての文字を大文字に変更して文字列を返します。UPPER('oracle')ORACLEを返します
LPAD(str, len[, pad])文字列の左側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。LPAD('ABC', 5, '*')'**ABC'を返します
RPAD(str, len[, pad])文字列の右側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。RPAD('XYZ', 6, '+' )は'XYZ+++'を返します
演算子(比較)関数
関数説明
CASE WHEN condition1 THEN result1 ELSE result2 END条件を満たす値を返します。CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' ENDは、1> 0の場合はABCを返し、それ以外の場合はXYZを返します
AND論理AND演算子。両方のオペランドがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 AND y = 20)は、xが10でyが20の場合、trueを返します。いずれか一方がtrueでない場合は、falseを返します
OR論理OR演算子。いずれかのオペランドがtrueであるか、両方ともtrueである場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 OR y = 20)は、xが10ではなく、かつyが20でない場合、falseを返します。いずれか一方がtrueの場合は、trueを返します
NOT論理NOT演算子。
LIKEstring1がstring2のパターンに一致するかどうかにかかわらず、文字列パターン・マッチングを実行します。
=等価かどうかをテストします。expr1がexpr2と等しい場合はtrueを返し、それ以外の場合はfalseを返します。x = 10は、xの値が10の場合はtrueを返し、それ以外の場合はfalseを返します
!=非等価かどうかをテストします。expr1がexpr2と等しくない場合はtrueを返し、それ以外の場合はfalseを返します。x != 10は、xの値が10の場合はfalseを返し、それ以外の場合はtrueを返します
>式の大なりをテストします。expr1がexpr2より大きい場合は、trueを返します。x > 10は、xの値が10より大きい場合はtrueを返し、それ以外の場合はfalseを返します
>=式の大なりイコールをテストします。expr1がexpr2以上の場合は、trueを返します。x > =10は、xの値が10以上の場合はtrueを返し、それ以外の場合はfalseを返します
<式の小なりをテストします。expr1がexpr2より小さい場合は、trueを返します。x < 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
<=式の小なりイコールをテストします。expr1がexpr2以下の場合は、trueを返します。x <= 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
||2つの文字列を連結します。'XYZ' || 'hello''XYZhello'を返します
BETWEEN範囲を評価します。FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
IN式が値リストと一致するかどうかをテストします。FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
一意ID関数
関数説明
NUMERIC_ID()各行に対して64ビットの数値の汎用一意識別子を生成します。NUMERIC_ID()は、たとえば3458761969522180096および3458762008176885761を返します
ROWID()単調に増加する64ビット数を生成します。ROWID()は、たとえば、012などを返します
UUID()各行に対して128ビットの文字列の汎用一意識別子を生成します。UUID()は、たとえば20d45c2f-0d56-4356-8910-162f4f40fb6dを返します
MONOTONICALLY_INCREASING_ID() 単調に増加する一意の64ビット整数を生成します。連続した数字にはなりません。 MONOTONICALLY_INCREASING_ID()は、たとえば、858993459225769803776を返します
条件付き関数
関数説明
COALESCE(value, value [, value]*)存在する場合は最初のnullでない引数を返し、それ以外の場合はnullを返します。COALESCE(NULL, 1, NULL)1を返します
NULLIF(value, value)2つの値が等しい場合はnullを返し、それ以外の場合は最初の値を返します。NULLIF('ABC','XYZ')ABCを返します
階層関数
関数説明
SCHEMA_OF_JSON(string)JSON文字列を解析し、スキーマのDDLフォーマットを推測します。

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]')'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'を返します

SCHEMA_OF_JSON('[{\"col\":0}]')'ARRAY<STRUCT<col: BIGINT>>'を返します

FROM_JSON(column, string)

JSON文字列を含む列を解析し、指定スキーマを含む次のいずれかの型に解析します。

  • Map (キー・タイプがString)
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>')は、指定スキーマ{704, ORACLE CITY}のStruct型列を返します

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>')は、指定スキーマ{1, 0.8}のStruct型列を返します

TO_JSON(column)StructまたはStruct配列あるいはMapまたはMap配列の型を含む列をJSON文字列に変換します。TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value')))はJSON文字列{"s1":[1,2,3],"s2":{"key":"value"}}を返します
TO_MAP(string,column[,string,column]*)Map型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。入力キー列をNULLにすることはできません。すべて同じデータ型である必要があります。入力値列はすべて同じデータ型である必要があります。

TO_MAP('Ename',Expression_1.attribute1)は、Map型の列{"ENAME" -> 100}を返します

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit)は、Map型の列{"block" -> 1,"unit" -> 1}を返します

TO_STRUCT(string,column[,string,column]*)Struct型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。

TO_STRUCT('Ename',Expression_1.attribute1){100}を返します

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2){100, "John"}を返します

TO_ARRAY(column[,column]*)Array型の新しい列を作成します。入力列はすべて同じデータ型である必要があります。

TO_Array(Expression_1.attribute1)[100]を返します

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3)["John","Friend"]を返します

高順序関数

式および階層データ型の作成をサポートするデータ・フロー演算子では、上位の関数を使用できます。

サポートされている演算子は次のとおりです:

  • 集計

  • フィルタ

  • 結合

  • 検索

  • 分割済

  • ピボット

関数説明
TRANSFORM(column, lambda_function)配列と無名関数を取得し、各要素に関数を適用して結果を出力配列に割り当てることによって、新しい配列を設定します。整数[1, 2, 3]の入力配列の場合、TRANSFORM(array, x -> x + 1)[2, 3, 4]の新しい配列を返します。
TRANSFORM_KEYS(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、キーがラムダ関数の結果のタイプを持ち、値が列マップ値のタイプを持つマップを返します。整数キーおよび文字列値が{1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}の入力マップの場合、TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1){3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}の新しいマップを返します。
TRANSFORM_VALUES(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、値がラムダ関数の結果のタイプを持ち、キーが列マップ・キーのタイプを持つマップを返します。 文字列キーおよび文字列値が{'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}の入力マップの場合、TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v){'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}の新しいマップを返します。
ARRAY_SORT(array(...), lambda_function)

式演算子のみがARRAY_SORTをサポートします。

配列を取得し、2つの引数を取る指定された関数に従ってソートします。

この関数は、最初のエレメントが2番目のエレメントより小さいか、等しいか、または大きいかに応じて-1、0、または1を返す必要があります。

関数を省略すると、配列は昇順にソートされます。

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

返される配列は次のとおりです。

[1,5,6]

式演算子

式演算子を使用して、単一のデータ行に対して1つ以上の変換を実行することにより、新しい派生フィールドを作成します。

式演算子を使用して属性グループのデータ型を変更するには、属性グループのデータ型の変更を参照してください。

式演算子の追加および構成
  1. 「演算子」パネルから、演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. 式演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「式」で、「式の追加」をクリックします。
  4. 「式の追加」パネルで、「識別子」フィールドに式の名前を入力するか、名前をそのままにします。
  5. (オプション)式を複数の属性に適用するには、「バルク選択の許可」を選択します。次に、名前または正規表現パターンを使用して属性を選択します。たとえば、ソース・データ・セットに3つの名前属性があり、UPPER関数を3つのソース属性すべてに適用するとします。パターンを使用して、このソース属性グループを選択できます。
    1. 「ソース属性」で、「パターン」を選択し、「パターンの編集」をクリックします。次に、ソース属性のグループに一致する正規表現を入力します。たとえば、*NAMEと入力すると、属性FIRST_NAMELAST_NAMEおよびFULL_NAMEが一致します。
    2. メニューからデータ型を選択します。
    3. 「ターゲット属性」で、「パターン」に、ターゲット属性名を定義する正規表現を入力します。デフォルトでは、元のソース属性名を示す$0が入力されます。パターンを更新して、要件に応じてターゲット属性に名前を付けます。たとえば、$0_UPPERと入力すると、元のソース属性名にテキストUPPERが追加されます。
    4. デフォルトでは、「ソース属性データ型の使用」が選択されます。選択内容は保持できます。「ソース属性データ型の使用」の選択を解除した場合は、データ型を選択し、選択した型に対応するフィールドに入力します。
  6. (オプション)「バルク選択の許可」を選択しなかった場合、入力した式から式ビルダーでデータ型を検出するには、「式のデータ型」「データ型の推測」を選択できます。「データ型のプレビュー」および「検証」をクリックして、データ型をプレビューおよびリフレッシュし、式を検証できます。

    「データ型の推測」は、ネストされた型のレベルが含まれる、Map、Array、Structなどの複合データ型を扱う際に役立ちます。

  7. 「バルク選択の許可」および「データ型の推測」を選択しなかった場合は、「データ型」メニューから値を選択し、選択したタイプに対応するフィールドに入力します。
  8. 「式ビルダー」セクションでは、受信属性、パラメータまたは関数をダブルクリックまたはドラッグしてエディタに追加することで、視覚的に式を構築します。または、式を自ら手動で記述できます。式の追加を参照してください。式を検証することもできます。

    データ・フロー内で作成されたユーザー定義パラメータや、データ統合によって実行時に生成されるシステム・パラメータなど、パラメータを式で使用できます。

    「バルク選択の許可」を選択した場合は、式で%MACRO_INPUT%を使用して、関数を適用する属性を指定します。たとえば、パターン*NAMEを使用すると、ソース属性FIRST_NAMELAST_NAMEおよびFULL_NAMEが一致します。これで、関数をUPPER(%MACRO_INPUT%)として指定し、パターンに一致するすべての属性に関数を適用できるようになります。

    この式の出力から1つ以上の受信属性を除外するには、「受信属性の除外」チェック・ボックスを選択します。次に、メニューを使用して、出力から除外する受信属性を追加します。除外ルールが、除外対象として選択した各属性に適用されます。属性を除外できるのは、式を初めて追加するときだけです。式を編集するとき、「受信属性の除外」チェック・ボックスは使用できません。

    ノート

    関数内のプレースホルダを別の要素に置き換えるには、プレースホルダを強調表示して、リストから別の要素をダブルクリックして関数に追加します。
  9. 「追加」をクリックします。
    必要に応じて、ステップ3から始まるステップを繰り返して、さらに式を追加できます。
  10. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタし、選択した属性またはフィルタした属性に一括除外ルールを適用できます。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、?および*などのワイルドカードを使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。

      属性のグループのデータ型を変更するには、「データ型の変更」を選択します。表示されるダイアログで、選択した属性またはフィルタ処理した属性の新しいデータ型を選択します。次に、選択した新しいデータ型に適用可能な他のプロパティを選択します。「適用」をクリックすると、「詳細」タブにルールではなく式が追加されます。

    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  11. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

    式の追加も参照してください。

  12. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
属性グループのデータ型の変更

式演算子を使用すると、一括変換アクションを使用して属性のデータ型を変更できます。

CAST関数を使用して属性データ型を1つずつ変更するのではなく、式演算子を追加して、複数の属性に一括変換アクションを同時に適用できます。
  1. 式演算子を適切な受信オブジェクトに接続します。
  2. キャンバス上で式演算子にフォーカスがある状態で、「プロパティ」パネルの「属性」タブで、(左側の式演算子にリンクされている)受信属性を表示するように選択します。
  3. 変換する属性が数個の場合は、チェック・ボックスを使用して、変換する属性を選択します。
  4. 変換する属性が多数ある場合は、属性にフィルタを適用します:
    1. 「名前」列で、フィルタ・アイコンをクリックします。表示されるフィルタ・フィールドに、ワイルドカード(?および*)を使用した単純な正規表現パターンを入力し、名前パターンで属性をフィルタします。たとえば、ADD*と入力すると、属性ADDRESS1ADDRESS2およびADDRESS_KEYが一致します。
    2. 「タイプ」列で、フィルタ・アイコンをクリックします。表示されるメニューで、変更する属性の現在の属性タイプを選択します。たとえば、ADDRESS1およびADDRESS2のタイプがVARCHARで、ADDRESS_KEYのタイプがNUMERICであるとします。「VARCHAR」を選択すると、ADDRESS1およびADDRESS2のみを変換できます。
  5. 「アクション」メニューから、「データ型の変更」を選択します。
  6. 「データ型の変更」ダイアログで、選択した属性またはフィルタを適用した属性に新しいデータ型を選択します。

    次に、選択した新しいデータ型に適用可能な他のプロパティを指定します。

    元の属性をデータ・セットに保持するには、「ソース属性の維持」を選択します。このチェック・ボックスが選択されていない場合、新しい属性のみが結果のデータに含まれます。

  7. 「適用」をクリックします。
  8. 「詳細」タブを選択します。
    演算子に追加された式を確認します。
式の追加

式ビルダーを使用して要素を視覚的に選択し、エディタで式を作成します。式を自ら手動で記述することもできます。

式を作成するときは、次の点に注意してください:

  • 文字列リテラルは単一引用符で囲みます。例: CONCAT('We ', 'like')およびUPPER('oracle')

  • 属性名は二重引用符で囲みます。例: UPPER("Sales")およびCONCAT(CONCAT("EXPRESSION_1.EMP_UTF8_EN_COL_CSV.EN_NAME", ' '), "EXPRESSION_1.EMP_UTF8_EN_COL_CSV.NAME")

    属性名を二重引用符で囲むことは、マルチバイト文字や、完全修飾名に特殊文字が含まれる名前では必須です。

「式の追加」パネルには、2つのセクション(「式情報」「式ビルダー」)があります。「式情報」フィールドでは、式の名前とデータ型を指定できます。複数の属性に適用する式を作成することもできます。ネストされた型のレベルが含まれる、Map、Array、Structなどの複合データ型を扱う際には、入力した式からビルダーがデータ型を検出するように選択できます。データ型をビルダーで推測するときは、データ型をプレビューおよびリフレッシュし、式を検証できます。

「式ビルダー」セクションには、式を作成するための要素がリストされます。式で使用できる要素には、受信属性、パラメータおよび関数があります。リストの要素をダブルクリックするかリストからエディタにドラッグして式を作成するか、自分で式を記述します。式は作成する前に検証できます。

「受信」には、アップストリーム演算子からこの式演算子に入る属性が表示されます。属性リストの下には、除外ルールを適用するためのチェック・ボックスがあります。この式の出力から1つ以上の受信属性を除外するには、「受信属性の除外」チェック・ボックスを選択します。次に、メニューを使用して、出力から除外する受信属性を追加します。除外ルールが、除外対象として選択した各属性に適用されます。属性を除外できるのは、式を初めて追加するときだけです。式を編集するとき、「受信属性の除外」チェック・ボックスは使用できません。

パラメータには、ユーザー定義パラメータおよびシステム生成パラメータが含まれます。

ユーザー定義パラメータは、条件ビルダー(フィルタ演算子、結合演算子、ルックアップ演算子および分割演算子)または式ビルダー(式演算子および集計演算子)を使用してデータ・フローに追加された式パラメータです。式パラメータの追加を参照してください。構文は$PARAMETER_NAMEです。例: EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE

データ統合によって、システム・パラメータ(SYS.TASK_START_TIMEなど)が生成されます。システム・パラメータの値は、システム情報を記録するために式で使用できます。構文は${SYSTEM_PARAMETER}です。例: ${SYS.TASK_RUN_NAME}

ファンクションデータ統合で使用可能な関数で、式の中で使用できます。ファンクションは、関数に渡される引数に対して実行される操作です。ファンクションは、引数からデータ値を計算、操作または抽出します。ワークスペースで作成したユーザー定義関数を追加することもできます。例: MYLIBRARY.MYFUNCTION

データ統合で使用可能な関数のリストを次に示します:

ハッシュ関数
関数説明
MD5(all data types)データ型のMD5チェックサムを計算し、文字列値を返します。 MD5(column_name)
SHA1(all data types)データ型のSHA-1ハッシュ値を計算し、文字列値を返します。 SHA1(column_name)
SHA2(all data types, bitLength)データ型のSHA-2ハッシュ値を計算し、文字列値を返します。bitLengthは整数です。 SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512)
ORA_HASH(expr, [max_bucket], [seed_value])

exprのハッシュ値を計算し、NUMBER値を返します。

exprには、式、列、リテラルを指定できます。

max_bucketは、0から4294967295 (デフォルト)までの返された最大バケット値です。

seed_valueは、0 (デフォルト)から4294967295までの値です。

Oracleは、ハッシュ関数をexprseed_valueの組合せに適用して、同じデータ・セットに対して様々な結果を生成します。

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

算術関数
関数説明
ABS(numeric)numeric値の絶対乗を返します。ABS(-1)
CEIL(numeric)numeric値を超えない最小の整数を返しますCEIL(-1,2)
FLOOR(numeric)numeric値を超えない最大の整数を返します。FLOOR(-1,2)
MOD(numeric1, numeric2)numeric1numeric2で除算した後の剰余を返します。MOD(8,2)
POWER(numeric1, numeric2)numeric1numeric2で累乗します。POWER(2,3)
ROUND(numeric1, numeric2)numeric1を小数点以下numeric2桁に丸めて返します。ROUND(2.5,0)
TRUNC(numeric1, numeric2)numeric1を小数点以下numeric2桁に切り捨てて返します。TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])指定されたformatおよびlocale(オプション)に基づいて、exprを数値に変換します。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされるフォーマット・パターン:

  • 0: 数字
  • #: 数字。ゼロは存在しないことを示します
  • .: 小数点セパレータのプレースホルダ
  • ,: グループ化セパレータのプレースホルダ
  • E: 指数フォーマットの仮数と指数を区切ります
  • -: デフォルトの否定接頭辞
  • ¤: 通貨シンボルで置換される通貨記号。二重の場合、国際通貨記号で置換されます。パターン内に存在する場合は、小数点セパレータのかわりに通貨小数点セパレータが使用されます。

TO_NUMBER('5467.12')5467.12を返します

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US')-45677.7を返します

配列関数

式演算子のみが配列関数をサポートします。

関数説明
ARRAY_POSITION(array(...), element)指定された配列内で指定された要素の最初の出現位置を返します。

位置はゼロベースではなく、1で始まります。

ARRAY_POSITION(array(3, 2, 1, 4, 1), 1)3を返します
REVERSE(array(...)) 指定された要素の配列を逆の順序で返します。 REVERSE(array(2, 1, 4, 3))[3,4,1,2]を返します
ELEMENT_AT(array(...), index) 指定されたインデックス位置で指定された配列の要素を返します。

インデックスはゼロではなく、1で始まります。

index = -1の場合、最後の要素を返します。

ELEMENT_AT(array(1, 2, 3), 2)2を返します
日付と時間関数
関数 説明
CURRENT_DATE 現在の日付を返します。 CURRENT_DATEは、2023-05-26などの今日の日付を返します
CURRENT_TIMESTAMP セッション・タイムゾーンに対する現在の日付と時刻を返します。 CURRENT_TIMESTAMPは、今日の日付と現在の時刻(2023-05-26 12:34:56など)を返します
DATE_ADD(date, number_of_days) 指定したdateからnumber日後の日付を返します。 DATE_ADD('2017-07-30', 1)2017-07-31を返します
DATE_FORMAT(expr, format[, locale])

指定されたformatおよびlocale(オプション)に基づいて、日付のexprをフォーマットします。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされる日付フォーマット・パターン:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd')'2020-10-11'を返します。最初の引数は、2020年10月11日を表すDateオブジェクトです。

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES')'2018/junio/17'を返します

DAYOFMONTH(date) 特定の日(月間)を返します。 DAYOFMONTH('2020-12-25')25を返します。
DAYOFWEEK(date) 特定の日(週間)を返します。 DAYOFWEEK('2020-12-25')は、金曜日の6を返します。米国では、日曜日は1、月曜日は2などとみなされます。
DAYOFYEAR(date) 特定の日(年間)を返します。 DAYOFYEAR('2020-12-25')360を返します
WEEKOFYEAR(date) 日付が年内の何番目の週かを返します。

WEEKOFYEAR('2022-07-28')30を返します

WEEKOFYEAR('2022-07-28 13:24:30')30を返します

HOUR(datetime) 日時の時間の値を返します。 HOUR('2020-12-25 15:10:30')15を返します
LAST_DAY(date) 月末の日付を返します。 LAST_DAY('2020-12-25')31を返します
MINUTE(datetime) 日時の分の値を返します。 HOUR('2020-12-25 15:10:30')10を返します
MONTH(date) 日付の月の値を返します。 MONTH('2020-06-25')6を返します。
QUARTER(date) 日付が属する四半期を返します。 QUARTER('2020-12-25')4を返します。
SECOND(datetime) 日時の秒の値を返します。 SECOND('2020-12-25 15:10:30')30を返します
TO_DATE(string, format_string[, localeStr]) format_string式を含む文字列式を日付に解析します。ロケールはオプションです。デフォルトはen-USです。サポートされる言語タグ

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合は、大/小文字を区別する次のフォーマット文字列がサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

TO_DATE('31 December 2016', 'dd MMMM yyyy')は、日付値2016-12-31を返します

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES')は、日付値2018-06-17を返します

TO_TIMESTAMP(expr, format_string[, localeStr]) 指定されたformat_stringおよびlocaleStr(オプション)に基づいて、VARCHARのexprをTIMESTAMPの値に変換します。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次のフォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss')は、11am 10:10 Oct 11th, 2020を表すTIMESTAMPオブジェクトを返します
WEEK(date)

日付の週の値を返します。

WEEK('2020-06-25')4を返します
YEAR(date) 日付の年の値を返します。 YEAR('2020-06-25') returns 2020
ADD_MONTHS(date_expr, number_months) 指定した日付、タイムスタンプまたは文字列(yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマット)に指定した数の月を追加した日付を返します。

ADD_MONTHS('2017-07-30', 1)2017-08-30を返します

ADD_MONTHS('2017-07-30 09:07:21', 1)2017-08-30を返します

MONTHS_BETWEEN(start_date_expr, end_date_expr)

start_date_exprend_date_exprの間の月数を返します。start_date_exprend_date_exprには、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの日付、タイムスタンプまたは文字列を指定できます

整数が返されるのは、両方の日付の日の部分が同じ場合、または両方が月の最終日の場合です。それ以外の場合は、1か月を31日として差が計算されます。

MONTHS_BETWEEN('2022-01-01', '2022-01-31')は1を返します

MONTHS_BETWEEN('2022-07-28', '2020-07-25')は24を返します

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30')は24を返します

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

日付、タイムスタンプまたは文字列をUTC時間として解釈し、その時間を指定したタイムゾーンのタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 03:40:00.0を返します
TO_UTC_TIMESTAMP(time_stamp, time_zone)

指定したタイムゾーンの日付、タイムスタンプまたは文字列をUTCタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 01:40:00.0を返します
FROM_UNIXTIME(unix_time[, fmt])

指定したUnix時間すなわちエポックを、現在のシステム・タイム・ゾーンおよび指定したフォーマットで、その時点のタイムスタンプを表す文字列に変換します。

ノート: Unix時間とは、1970年1月1日00:00:00 UTCから経過した秒数です。

fmtを省略した場合、デフォルトのフォーマットはyyyy-MM-dd HH:mm:ssです

FROM_UNIXTIME(1255033470)'2009-10-08 13:24:30'を返します

FROM_UNIXTIME(1637258854)'2021-11-18 10:07:34'を返します

例のデフォルトのタイムゾーンはPSTです

UNIX_TIMESTAMP([time_expr[, fmt]])

現在時刻または指定した時刻をUnixタイムスタンプ(秒単位)に変換します。

time_exprは、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの、日付、タイムスタンプまたは文字列です

time_exprを指定しないと、現在時刻が変換されます。

time_exprが文字列で、fmtを省略した場合、デフォルトはyyyy-MM-dd HH:mm:ssです

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')28800を返します

この例のデフォルトのタイムゾーンはPSTです

INTERVAL 'year' YEAR[(year_precision)]

期間を年単位で返します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '1' YEARは1年の期間を返します

INTERVAL '200' YEAR(3)は200年の期間を返します

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

期間を年と月の単位で返します。yearおよびmonthフィールドを使用して期間を格納するために使用します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '100-5' YEAR(3) TO MONTHは100年と5か月の期間を返します。先頭の年の精度として3を指定する必要があります。
INTERVAL 'month' MONTH[(month_precision)]

期間を月単位で返します。

month_precisionmonthフィールドの桁数で、範囲は0から9です。month_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '200' MONTH(3)は200か月の期間を返します。月の精度として3を指定する必要があります。
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

日、時、分、秒で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '11 10:09:08.555' DAY TO SECOND(3)は、11日10時間9分8秒555ミリ秒の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

日、時、分で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '11 10:09' DAY TO MINUTEは、11日10時間9分の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

日数と時間数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '100 10' DAY(3) TO HOURは、100日10時間の期間を返します
INTERVAL 'day' DAY[(day_precision)]

日数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

INTERVAL '999' DAY(3)は999日の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

時、分、秒で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)は、9時間8分7.6666666秒の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

時間と分数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '09:30' HOUR TO MINUTEは、9時間30分の期間を返します
INTERVAL 'hour' HOUR[(hour_precision)]

時間数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '40' HOURは40時間の期間を返します
INTERVAL 'minute' MINUTE[(minute_precision)]

分数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '15' MINUTEは15分間の期間を返します
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

分数と秒数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '15:30' MINUTE TO SECONDは15分30秒の期間を返します
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

秒数で期間を返します。

fractional_seconds_precisionは、secondフィールドの分数部分の桁数であり、範囲は0から9です。デフォルトは3です。

INTERVAL '15.678' SECONDは15.678秒の期間を返します
分析関数
関数 説明
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) ウィンドウ・フレームの最初の行である行で評価された値を返します。 FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最初の値を返します。
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より前のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC)は、BANK_IDでパーティション化し、BANK_NAMEの降順にしたときの、現在行より2行前のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) ウィンドウ・フレームの最後の行である行で評価された値を返します。 LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最後の値を返します。
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より後のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDでパーティション化し、BANK_NAMEの昇順にしたときの、現在行より2行後のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
RANK() OVER([ partition_clause ] order_by_clause) ギャップを含む現在行のランクを返します(1からカウント)。 RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行のランクをBANK_NAMEの昇順で返します。
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) パーティション内の現在行の一意の番号を返します(1からカウント)。 ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行の一意の行番号をBANK_NAMEの昇順で返します。
文字列関数
関数説明
CAST(value AS type)指定されたタイプの指定された値を返します。CAST("10" AS INT)10を返します
CONCAT(string, string)文字列または列を結合した値を返しますCONCAT('Oracle','SQL')OracleSQLを返します
CONCAT_WS(separator, expression1, expression2, expression3,...) 指定したセパレータを使用して、文字列または列を結合した値を文字列または列間で返します。

区切り記号は必須であり、文字列である必要があります。

セパレータの後に少なくとも1つの式を指定する必要があります。たとえば: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle')Hello-Oracleを返します

CONCAT_WS(' ', address, city, postal_code)123 MyCity 987654を返します

関数の子が配列である場合、配列はフラット化されます。

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9)1,2,3,4,5,6,7,8,9を返します

INITCAP(string)各単語の最初の文字を大文字、残りの文字をすべて小文字にした文字列を、単語どうしを空白で区切って返します。INITCAP('oRACLE sql')Oracle Sqlを返します
INSTR(string, substring[start_position])stringで最初に出現するsubstringの(1から始まる)索引を返しますINSTR('OracleSQL', 'SQL')7を返します
LOWER(string)すべての文字を小文字に変更して文字列を返します。LOWER('ORACLE')oracleを返します
LENGTH(string)文字列の文字長またはバイナリ・データのバイト数を返します。文字列の長さには末尾のスペースも含まれます。LENGTH('Oracle')6を返します
LTRIM(string)先頭のスペースを左から除去して文字列を返します。LTRIM(' Oracle')
NVL(expr1, epxr2)nullでない引数を返します。NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])入力文字列から正規表現パターンに一致する文字列を検索して抽出します。オプションのキャプチャ・グループ索引が指定されている場合、この関数は特定のグループを抽出します。

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?')https://www.oracle.comを返します

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1)22を返します
REPLACE(string, search, replacement)出現するすべてのsearchreplacementに置換します。

文字列にsearchが見つからない場合、stringがそのまま返されます。

replacementが指定されていない場合、または空の文字列の場合、stringから削除されるsearchは何にも置換されません。

REPLACE('ABCabc', 'abc', 'DEF')ABCDEFを返します
RTRIM(string)先頭のスペースを右から除去して文字列を返します。RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])位置から始まる部分文字列を返します。 SUBSTRING('Oracle SQL' FROM 2 FOR 3)racを返します
数値の場合、TO_CHAR(expr)および日付の場合、TO_CHAR(expr, format[, locale])数字と日付を文字列に変換します。数値の場合、書式は必要ありません。日付の場合は、「日時関数」で説明されているDATE_FORMATと同じ形式を使用します。デフォルトのロケールはen-USです。「サポートされている言語タグ」を参照してください。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次の日付フォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

数値の例: TO_CHAR(123)123を返します

日付の例: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US')は文字列2020.10.30を返します。最初の引数は、2020年10月30日を表すDateオブジェクトです。

UPPER(string)すべての文字を大文字に変更して文字列を返します。UPPER('oracle')ORACLEを返します
LPAD(str, len[, pad])文字列の左側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。LPAD('ABC', 5, '*')'**ABC'を返します
RPAD(str, len[, pad])文字列の右側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。RPAD('XYZ', 6, '+' )は'XYZ+++'を返します
演算子(比較)関数
関数説明
CASE WHEN condition1 THEN result1 ELSE result2 END条件を満たす値を返します。CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' ENDは、1> 0の場合はABCを返し、それ以外の場合はXYZを返します
AND論理AND演算子。両方のオペランドがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 AND y = 20)は、xが10でyが20の場合、trueを返します。いずれか一方がtrueでない場合は、falseを返します
OR論理OR演算子。いずれかのオペランドがtrueであるか、両方ともtrueである場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 OR y = 20)は、xが10ではなく、かつyが20でない場合、falseを返します。いずれか一方がtrueの場合は、trueを返します
NOT論理NOT演算子。
LIKEstring1がstring2のパターンに一致するかどうかにかかわらず、文字列パターン・マッチングを実行します。
=等価かどうかをテストします。expr1がexpr2と等しい場合はtrueを返し、それ以外の場合はfalseを返します。x = 10は、xの値が10の場合はtrueを返し、それ以外の場合はfalseを返します
!=非等価かどうかをテストします。expr1がexpr2と等しくない場合はtrueを返し、それ以外の場合はfalseを返します。x != 10は、xの値が10の場合はfalseを返し、それ以外の場合はtrueを返します
>式の大なりをテストします。expr1がexpr2より大きい場合は、trueを返します。x > 10は、xの値が10より大きい場合はtrueを返し、それ以外の場合はfalseを返します
>=式の大なりイコールをテストします。expr1がexpr2以上の場合は、trueを返します。x > =10は、xの値が10以上の場合はtrueを返し、それ以外の場合はfalseを返します
<式の小なりをテストします。expr1がexpr2より小さい場合は、trueを返します。x < 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
<=式の小なりイコールをテストします。expr1がexpr2以下の場合は、trueを返します。x <= 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
||2つの文字列を連結します。'XYZ' || 'hello''XYZhello'を返します
BETWEEN範囲を評価します。FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
IN式が値リストと一致するかどうかをテストします。FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
一意ID関数
関数説明
NUMERIC_ID()各行に対して64ビットの数値の汎用一意識別子を生成します。NUMERIC_ID()は、たとえば3458761969522180096および3458762008176885761を返します
ROWID()単調に増加する64ビット数を生成します。ROWID()は、たとえば、012などを返します
UUID()各行に対して128ビットの文字列の汎用一意識別子を生成します。UUID()は、たとえば20d45c2f-0d56-4356-8910-162f4f40fb6dを返します
MONOTONICALLY_INCREASING_ID() 単調に増加する一意の64ビット整数を生成します。連続した数字にはなりません。 MONOTONICALLY_INCREASING_ID()は、たとえば、858993459225769803776を返します
条件付き関数
関数説明
COALESCE(value, value [, value]*)存在する場合は最初のnullでない引数を返し、それ以外の場合はnullを返します。COALESCE(NULL, 1, NULL)1を返します
NULLIF(value, value)2つの値が等しい場合はnullを返し、それ以外の場合は最初の値を返します。NULLIF('ABC','XYZ')ABCを返します
階層関数
関数説明
SCHEMA_OF_JSON(string)JSON文字列を解析し、スキーマのDDLフォーマットを推測します。

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]')'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'を返します

SCHEMA_OF_JSON('[{\"col\":0}]')'ARRAY<STRUCT<col: BIGINT>>'を返します

FROM_JSON(column, string)

JSON文字列を含む列を解析し、指定スキーマを含む次のいずれかの型に解析します。

  • Map (キー・タイプがString)
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>')は、指定スキーマ{704, ORACLE CITY}のStruct型列を返します

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>')は、指定スキーマ{1, 0.8}のStruct型列を返します

TO_JSON(column)StructまたはStruct配列あるいはMapまたはMap配列の型を含む列をJSON文字列に変換します。TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value')))はJSON文字列{"s1":[1,2,3],"s2":{"key":"value"}}を返します
TO_MAP(string,column[,string,column]*)Map型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。入力キー列をNULLにすることはできません。すべて同じデータ型である必要があります。入力値列はすべて同じデータ型である必要があります。

TO_MAP('Ename',Expression_1.attribute1)は、Map型の列{"ENAME" -> 100}を返します

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit)は、Map型の列{"block" -> 1,"unit" -> 1}を返します

TO_STRUCT(string,column[,string,column]*)Struct型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。

TO_STRUCT('Ename',Expression_1.attribute1){100}を返します

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2){100, "John"}を返します

TO_ARRAY(column[,column]*)Array型の新しい列を作成します。入力列はすべて同じデータ型である必要があります。

TO_Array(Expression_1.attribute1)[100]を返します

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3)["John","Friend"]を返します

高順序関数

式および階層データ型の作成をサポートするデータ・フロー演算子では、上位の関数を使用できます。

サポートされている演算子は次のとおりです:

  • 集計

  • フィルタ

  • 結合

  • 検索

  • 分割済

  • ピボット

関数説明
TRANSFORM(column, lambda_function)配列と無名関数を取得し、各要素に関数を適用して結果を出力配列に割り当てることによって、新しい配列を設定します。整数[1, 2, 3]の入力配列の場合、TRANSFORM(array, x -> x + 1)[2, 3, 4]の新しい配列を返します。
TRANSFORM_KEYS(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、キーがラムダ関数の結果のタイプを持ち、値が列マップ値のタイプを持つマップを返します。整数キーおよび文字列値が{1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}の入力マップの場合、TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1){3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}の新しいマップを返します。
TRANSFORM_VALUES(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、値がラムダ関数の結果のタイプを持ち、キーが列マップ・キーのタイプを持つマップを返します。 文字列キーおよび文字列値が{'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}の入力マップの場合、TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v){'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}の新しいマップを返します。
ARRAY_SORT(array(...), lambda_function)

式演算子のみがARRAY_SORTをサポートします。

配列を取得し、2つの引数を取る指定された関数に従ってソートします。

この関数は、最初のエレメントが2番目のエレメントより小さいか、等しいか、または大きいかに応じて-1、0、または1を返す必要があります。

関数を省略すると、配列は昇順にソートされます。

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

返される配列は次のとおりです。

[1,5,6]
式の複製

式演算子に追加された式は複製できます。

  1. データ・フロー・キャンバスで、式演算子を選択します。
  2. 「プロパティ」パネルの「詳細」タブで、式のリストを確認します。
  3. 複製する式に対応する「アクション」メニューから、「複製」を選択します。
    確認ダイアログは表示されず、複製された式がすぐにリストに追加されます。
式の移動

式演算子に追加された式の順序は変更できます。

  1. データ・フロー・キャンバスで、式演算子を選択します。
  2. 「プロパティ」パネルの「詳細」タブで、式のリストを確認します。
  3. 移動する式のアクション・メニューから、「上へ移動」「下へ移動」「一番上へ移動」または「一番下へ移動」を選択します。
    式の現在位置に応じて、関連する移動アクションのみを使用できます。たとえば、「上に移動」および「先頭に移動」は、リストの最初の式には使用できません。

集計演算子

集計演算子を使用して、すべての行または行のグループに対して合計や件数などの計算を実行することにより、新しい派生属性を作成します。

集計演算子の追加および構成
  1. 「演算子」パネルから、集計をキャンバスにドラッグ・アンド・ドロップします。
  2. 集計演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「グループ化」で、次のいずれかを選択します:
    • 属性: メニューを使用して、グループ化に使用する属性を1つ以上選択します。
    • パターン: 「パターンの追加」をクリックして、グループ化に使用する属性を選択するパターンを追加します。2つ以上の属性に一致する正規表現パターンを使用します。
    ノート

    追加した式は、選択した各属性に対して実行されます。ダウンストリームを継続する属性には、グループ化に使用する属性に加えて、追加した式から導出される属性が含まれます。
  4. 「式」で、「式の追加」をクリックします。
  5. 「式の追加」パネルで、「識別子」フィールドに集計式の名前を入力するか、名前をそのままにします。
  6. (オプション)正規表現パターンを使用して、式操作を適用するソース属性を選択するには、「バルク選択の許可」を選択し、「パターン」を選択します。たとえば、データ・セットに3つの順序属性があり、SUM演算子関数を3つすべてに適用する場合を考えます。パターンを使用して、このソース属性グループを選択できます。
    1. 「ソース属性」で、「パターン」に、ソース属性のグループに一致する正規表現を入力します。たとえば、*ORDERと入力すると、属性FIRST_ORDERLAST_ORDERおよびFINAL_ORDERが一致します。
    2. 次に、「データ型」で、メニューから値を選択し、選択した型に対応するフィールドに入力します。
    3. 「ターゲット属性」で、「パターン」に、ターゲット属性名を定義する正規表現を入力します。デフォルトでは、元のソース属性を示す$0が入力されます。パターンを更新して、要件に応じてターゲット属性に名前を付けます。たとえば、$0_SUMと入力すると、元のソース属性名にテキストSUMが追加されます。
    4. デフォルトでは、「ソース属性データ型の使用」が選択されます。選択内容は保持できます。「ソース属性データ型の使用」の選択を解除した場合は、データ型を選択し、選択した型に対応するフィールドに入力します。
  7. (オプション)「バルク選択の許可」を選択しなかった場合、入力した式から式ビルダーでデータ型を検出するには、「式のデータ型」「データ型の推測」を選択できます。「データ型のプレビュー」および「検証」をクリックして、データ型をプレビューおよびリフレッシュし、式を検証できます。

    ビルダーがデータ型を推測できるようにすると、ネストされた型のレベルが含まれる、Map、Array、Structなどの複合データ型を扱う際に役立ちます。

  8. 「バルク選択の許可」を選択しなかった場合は、「データ型」で、メニューから値を選択し、選択した型に従って対応するフィールドに入力します。
  9. (オプション)入力した式から式ビルダーでデータ型を検出するには、「式のデータ型」「データ型の推測」を選択できます。「データ型のプレビュー」および「検証」をクリックして、データ型をプレビューおよびリフレッシュし、式を検証できます。

    ビルダーがデータ型を推測できるようにすると、ネストされた型のレベルが含まれる、Map、Array、Structなどの複合データ型を扱う際に役立ちます。

  10. 「バルク選択の許可」および「データ型の推測」を選択しなかった場合は、「データ型」メニューから値を選択し、選択したタイプに対応するフィールドに入力します。
  11. 「式ビルダー」セクションでは、受信属性、パラメータまたは関数をダブルクリックまたはドラッグしてエディタに追加することで、視覚的に式を構築します。または、式を自ら手動で記述できます。式を検証することもできます。

    「バルク選択の許可」を選択した場合は、式で%MACRO_INPUT%を使用して、関数を適用する属性を指定します。たとえば、ソース属性FIRST_NAMELAST_NAMEおよびFULL_NAMEに一致させるために、パターン*NAMEを使用した場合を考えてみます。これで、関数をUPPER(%MACRO_INPUT%)として指定し、パターンに一致するすべての属性に関数を適用できるようになります。

    この式の出力から1つ以上の受信属性を除外するには、「受信属性の除外」チェック・ボックスを選択します。次に、メニューを使用して、出力から除外する受信属性を追加します。除外ルールが、除外対象として選択した各属性に適用されます。属性を除外できるのは、式を初めて追加するときだけです。式を編集するとき、「受信属性の除外」チェック・ボックスは使用できません。

    ノート

    関数内のプレースホルダを別の要素に置き換えるには、プレースホルダを強調表示して、リストから別の要素をダブルクリックして関数に追加します。
  12. 「追加」をクリックします。
    必要に応じて、ステップ4から始まるステップを繰り返して、さらに式を追加できます。
  13. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  14. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。
  15. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
集計式の追加

式ビルダーを使用して要素を視覚的に選択し、エディタで式を作成します。式を自ら手動で記述することもできます。

「式の追加」パネルには、2つのセクション(「式情報」「式ビルダー」)があります。「式情報」フィールドでは、式の名前とデータ型を指定できます。複数の属性に適用する式を作成することもできます。ネストされた型のレベルが含まれる、Map、Array、Structなどの複合データ型を扱う際には、入力した式からビルダーがデータ型を検出するように選択できます。データ型をビルダーで推測するときは、データ型をプレビューおよびリフレッシュし、式を検証できます。

「式ビルダー」セクションには、式を作成するための要素がリストされます。式で使用できる要素には、受信属性、パラメータおよび関数があります。リストの要素をダブルクリックするかリストからエディタにドラッグして式を作成するか、自分で式を記述します。式は作成する前に検証できます。

「受信」には、アップストリーム演算子からこの式演算子に入る属性が表示されます。属性リストの下には、除外ルールを適用するためのチェック・ボックスがあります。この式の出力から1つ以上の受信属性を除外するには、「受信属性の除外」チェック・ボックスを選択します。次に、メニューを使用して、出力から除外する受信属性を追加します。除外ルールが、除外対象として選択した各属性に適用されます。属性を除外できるのは、式を初めて追加するときだけです。式を編集するとき、「受信属性の除外」チェック・ボックスは使用できません。

パラメータは、条件ビルダー(フィルタ演算子、結合演算子、ルックアップ演算子および分割演算子)または式ビルダー(式演算子および集計演算子)を使用してデータ・フローに追加された式パラメータです。式パラメータには、名前、タイプおよびデフォルト値があります。式パラメータの追加を参照してください。

ファンクションは、関数に渡される引数に対して実行される操作です。ファンクションは、引数からデータ値を計算、操作または抽出します。式の作成に使用できる関数のリストを次に示します:

集計関数
関数説明
COUNT(value[, value]*)指定された1つ以上の式がすべてnullでない行の数を返します。COUNT(expr1)
COUNT(*)取得された行の合計数(nullのある行を含む)を返します。COUNT(*)
MAX(value)引数の最大値を返します。MAX(expr)
MIN(value)引数の最小値を返します。MIN(expr)
SUM(numeric)グループの値から計算された合計を返します。SUM(expr1)
AVG(numeric)式の数値の平均を返します。AVG(AGGREGATE_1.src1.attribute1)
LISTAGG(column[, delimiter]) WITHIN GROUP (order_by_clause)

order句に基づいてグループごとに、指定したデリミタで入力列の値を連結します。

columnには、結果で連結する値が含まれます。

delimiterは、結果でcolumn値を区切ります。delimiterを指定しないと、空白文字が使用されます。

order_by_clauseは、連結した値を返す順序を決定します。

この関数はアグリゲータとしてのみ使用できます。また、グループ化の有無に関係なく使用できます。グループ化せずに使用すると、結果が単一行になります。グループ化して使用すると、各グループに1行ずつ返されます。

idnameという2つの列を含む表について考えてみます。この表には3つの行があります。id列の値は101、102、102です。name列の値は、A、B、Cです。

+-----+--------+
| id  | name  |
+-----+--------+
| 101 | A     |
+-----+--------+
| 102 | B     |
+-----+--------+
| 102 | C     |
+-----+--------+

例1: グループ化なし

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id)は、値がA-B-Cname列を返します

+--------+
| name   |
+--------+
| A-B-C  |
+--------+

例2: idでグループ化

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id)は、値がAB-Cの2つに分かれたname列を返します。

+--------+
| name   |
+--------+
| A      |
+--------+
| B-C    |
+--------+
高順序関数

式および階層データ型の作成をサポートするデータ・フロー演算子では、上位の関数を使用できます。

サポートされている演算子は次のとおりです:

  • 集計

  • フィルタ

  • 結合

  • 検索

  • 分割済

  • ピボット

関数説明
TRANSFORM(column, lambda_function)配列と無名関数を取得し、各要素に関数を適用して結果を出力配列に割り当てることによって、新しい配列を設定します。整数[1, 2, 3]の入力配列の場合、TRANSFORM(array, x -> x + 1)[2, 3, 4]の新しい配列を返します。
TRANSFORM_KEYS(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、キーがラムダ関数の結果のタイプを持ち、値が列マップ値のタイプを持つマップを返します。整数キーおよび文字列値が{1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}の入力マップの場合、TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1){3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}の新しいマップを返します。
TRANSFORM_VALUES(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、値がラムダ関数の結果のタイプを持ち、キーが列マップ・キーのタイプを持つマップを返します。 文字列キーおよび文字列値が{'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}の入力マップの場合、TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v){'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}の新しいマップを返します。
ARRAY_SORT(array(...), lambda_function)

式演算子のみがARRAY_SORTをサポートします。

配列を取得し、2つの引数を取る指定された関数に従ってソートします。

この関数は、最初のエレメントが2番目のエレメントより小さいか、等しいか、または大きいかに応じて-1、0、または1を返す必要があります。

関数を省略すると、配列は昇順にソートされます。

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

返される配列は次のとおりです。

[1,5,6]

個別演算子

個別演算子を使用して、一意の値を持つ個別行を返します。

個別演算子の追加および構成
  1. 「演算子」パネルから、個別演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. 個別演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします

    「詳細」タブで、個別演算子に対するデフォルトの構成が設定されます。

  3. 演算子の出力を表示するには、「データ」タブをクリックします。
    一意の値を持つ個別行が表示されます。また、データに変換を適用したり、属性を選択してデータ・プロファイルまたは属性プロファイルを表示することもできます。データ変換についてさらに学習します。
  4. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。個別演算子はフィルタ済の属性のみを操作し、一意の値を持つ個別行を出力します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用した場合、属性は名前パターン*_CODEとnumericタイプまたはvarcharタイプでフィルタされます。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  5. 「データ」タブで、「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  6. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。

ソート演算子

ソート演算子を使用して、昇順または降順でのデータのソートを実行します。

ソート演算子を使用する場合は、他の演算子の適用後にソート演算子を適用することをお薦めします。これにより、ソート演算子がターゲット演算子の直前に配置されるため、データを特定の順序でターゲットに挿入できます。

ソート演算子の追加および構成

ソート演算子を使用する場合は、他の整形演算子より後で、データのソートが必要な演算子の前に、ソート演算子を適用します。

たとえば、データを特定のソート順でターゲットに挿入するには、ターゲット演算子の前にソート演算子を適用します。

  1. 「演算子」パネルから、ソート演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. ソート演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「ソート条件」セクションで、「追加」をクリックします。

    「ソート条件の追加」パネルには、ソース表からフェッチされたすべての属性フィールドが表示されます。

  4. 「ソート条件の追加」パネルで、データのソート基準となる属性を選択します。
  5. 名前パターンを使用して属性をフィルタするには、名前パターン(*CITY*など)を入力します。
  6. 「ソート順」で、「昇順」または「降順」を選択して、「追加」をクリックします。

    追加した各条件が、ソート条件リストに表示されます。

    ノート

    複数のソート条件は1つずつ追加できます。リスト内のソート条件の順序に基づいてソートが実行されます。たとえば、リストの最初の条件に基づいてソートが開始されます。次に、ソートされたデータが2番目の条件に基づいて再ソートされます。

    文字列データ型の場合、ソート操作は辞書式順序に基づいて行われます。

  7. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  8. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  9. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
ソート条件の追加

キャンバスでソート演算子を追加し、それを別の演算子と接続した後、ソート条件を追加できます。

「ソート条件の追加」パネルで、リストされたフィールドからソートする属性を選択したり、パターンを使用して属性名をフィルタできます。文字列データ型の場合、ソート操作は辞書式順序に基づいて行われます。

ソート条件を追加するには:

  1. 「詳細」タブで、「ソート条件」セクションに移動し、「追加」をクリックします。

    「ソート条件の追加」パネルには、ソース表からフェッチされたすべての属性フィールドが表示されます。

  2. 「ソート条件の追加」パネルで、データのソート基準となる属性を選択します。
  3. 名前パターンを使用して属性をフィルタするには、名前パターン(*CITY*など)を入力します。
  4. 「ソート順」で、「昇順」または「降順」を選択して、「追加」をクリックします。

    追加した各条件が、ソート条件リストに表示されます。

    ノート

    複数のソート条件は1つずつ追加できます。リスト内のソート条件の順序に基づいてソートが実行されます。たとえば、まず、リスト内の最初の条件に基づいてソートが実行されてから、ソートされたデータが2番目の条件に基づいて再ソートされます。
ソート条件の優先順位付け

リスト内でソート条件を上下に移動して、ソートの優先順位を設定します。

これにより、まず優先度の高いソート条件でソートしてから、ソートしたデータをリスト内の次の条件で再ソートできます。たとえば、まず住所でソートしてから郵便番号でソートする場合は、住所を含むソート条件を最上位に移動します。

ソート条件に優先順位を付けるには:

  1. 「詳細」タブで、「ソート条件」セクションに移動します。
  2. 上または下に移動するソート条件に対応する「アクション」メニューをクリックします。
  3. ソート条件が最初に適用されるようにするには、「上に移動」を選択します。
  4. ソート条件が後から適用されるようにするには、「下に移動」を選択します。
    ソートは、まず上に移動した条件に適用されてから、下に移動した条件に適用されます。
ソート条件の編集

ソート条件を編集するには:

  1. 「詳細」タブで、「ソート条件」セクションに移動します。
  2. 変更するソート条件に対応する「アクション」メニューをクリックし、「編集」を選択します。
  3. 「ソート条件の編集」パネルで、新しい属性を選択するか、名前パターンを入力して属性をフィルタ処理します。
    すでに選択されている属性またはパターン(それに関連付けられた属性を含む)は、それ以上選択できないようにグレー表示されます(使用不可になります)。
ソート条件の削除

ソート条件は、1つずつ削除することも、一括削除することもできます。

ソート条件を削除するには:

  1. 「詳細」タブで、「ソート条件」セクションに移動します。
  2. ソート条件を1つずつ削除するには、削除するソート条件に対応する「アクション」メニューをクリックします。
  3. 複数のソート条件を削除するには、それぞれに対応するチェック・ボックスを選択して、リスト上部にある「削除」をクリックします。

和集合演算子

和集合演算子を使用して、複数のデータ・セット間の和集合操作を実行します。

和集合タイプの理解

和集合操作は、最大10個のソース演算子に対して実行できます。少なくとも2つのソース入力を構成する必要があります。ソース入力属性全体で属性名を照合して和集合操作を実行するように選択することも、属性の位置で属性を照合することもできます。

属性名による和集合

次の2つのデータ・エンティティの例について考えてみます。データ・エンティティ1がプライマリ入力として設定されています。結果のデータ・エンティティは、名前による和集合操作中に2つの入力からのデータをどのように結合するかを示します。結果のデータ・エンティティは、プライマリ入力データ・エンティティからの属性名、順序およびデータ型を使用します。

データ・エンティティ1、プライマリ入力
部門 事業所ID 倉庫
IT 1400 サンフランシスコ
出荷 1500 サウスレイク(テキサス州)
経理 1700 ニュージャージー
データ・エンティティ2
倉庫 事業所ID 部門
デンバー 1600 福利厚生
ニューヨーク 1400 建設
結果のデータ・エンティティ
部門 事業所ID 倉庫
IT 1400 サンフランシスコ
出荷 1500 サウスレイク(テキサス州)
経理 1700 ニュージャージー
福利厚生 1600 デンバー
建設 1400 ニューヨーク
属性位置による和集合

次の2つのデータ・エンティティの例について考えてみます。データ・エンティティ2がプライマリ入力として設定されています。結果のデータ・エンティティは、位置による和集合操作中に2つの入力からのデータをどのように結合するかを示します。結果のデータ・エンティティは、プライマリ入力データ・エンティティからの属性名、順序およびデータ型を使用します。

データ・エンティティ1
部門 事業所ID 倉庫
IT 1400 サンフランシスコ
出荷 1500 サウスレイク(テキサス州)
経理 1700 ニュージャージー
データ・エンティティ2、プライマリ入力
倉庫 事業所ID 部門
デンバー 1600 福利厚生
ニューヨーク 1400 建設
結果のデータ・エンティティ
倉庫 事業所ID 部門
デンバー 1600 福利厚生
ニューヨーク 1400 建設
IT 1400 サンフランシスコ
出荷 1500 サウスレイク(テキサス州)
経理 1700 ニュージャージー
和集合演算子の追加および構成
  1. 和集合演算子をデータ・フローに追加するには、「演算子」パネルから和集合演算子をキャンバスにドラッグ・アンド・ドロップします。和集合操作は、最大10個のデータ・ソースに対して実行できます。
    和集合演算子の「詳細」タブが、「プロパティ」パネルに表示されます。
  2. 「詳細」タブで、「識別子」フィールドにこの和集合操作の名前を入力するか、名前をそのままにします。
  3. 「入力属性の照合基準」フィールドを使用して、和集合操作の実行方法を指定します。次の2つのオプションから選択できます:
    • 名前: ソースからの属性名を照合して、和集合操作を実行します。入力全体で属性の名前とデータ型、および属性の数が同一である必要があります。照合では大/小文字が区別されます。を参照して、名前による和集合操作の仕組みを理解してください。
    • ポジション: ソースからの属性の位置に基づいて属性が照合されます。入力全体で属性の数と属性のデータ型が同一である必要があります。を参照して、位置による和集合操作の仕組みを理解してください。
  4. 「Union all」で、接続されているすべてのデータ・エンティティのすべての行を重複を排除せずに操作から返すには、このチェックボックスを選択します。
  5. 「プライマリ入力」で、和集合操作でキー・ソースとみなすソースを選択します。このプライマリ入力によって、和集合操作の結果の属性の属性名、属性データ型および属性順序が決まります。デフォルトでは、データ・フローに最初に追加されたソースがプライマリ入力として設定されます。
  6. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用した場合、属性は名前パターン*_CODEとnumericタイプまたはvarcharタイプでフィルタされます。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  7. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  8. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。

マイナス演算子

マイナス演算子を使用して、2つのデータ・エンティティを比較し、一方のエンティティには存在するがもう一方のエンティティには存在しない行を返します。

結果のデータで重複する行を保持するか削除するかを選択できます。

マイナス・タイプの理解

マイナス操作は、2つのソース演算子に対してのみ実行できます。ソース入力属性全体で属性名を照合してマイナス操作を実行するように選択することも、属性の位置で属性を照合することもできます。

属性名によるマイナス

次の2つのデータ・エンティティの例について考えてみます。データ・エンティティ1がプライマリ入力として設定されています。結果のデータ・エンティティは、名前によるマイナス操作中に2つの入力からのデータをどのように減算するかを示します。結果のデータ・エンティティは、プライマリ入力データ・エンティティからの属性名、順序およびデータ型を使用します。

データ・エンティティ1、プライマリ入力
部門事業所ID倉庫
IT1400サンフランシスコ
出荷1500オースティン
経理1700ニュージャージー
データ・エンティティ2
部門倉庫事業所ID
福利厚生デンバー1600
ITサンフランシスコ1400
結果のデータ・エンティティ
部門事業所ID倉庫
出荷1500オースティン
経理1700ニュージャージー
属性位置によるマイナス

次の2つのデータ・エンティティの例について考えてみます。データ・エンティティ2がプライマリ入力として設定されています。結果のデータ・エンティティは、位置によるマイナス操作中に2つの入力からのデータをどのように減算するかを示します。結果のデータ・エンティティは、プライマリ入力データ・エンティティからの属性名、順序およびデータ型を使用します。

データ・エンティティ1
部門事業所ID倉庫
IT1400サンフランシスコ
出荷1500オースティン
経理1700ニュージャージー
データ・エンティティ2、プライマリ入力
部門名事業所倉庫の市区町村
福利厚生1600デンバー
IT1400サンフランシスコ
結果のデータ・エンティティ
部門名事業所倉庫の市区町村
福利厚生1600デンバー
マイナス演算子の追加および構成
  1. マイナス演算子をデータ・フローに追加するには、「演算子」パネルからマイナス演算子をキャンバスにドラッグ・アンド・ドロップします。
    マイナス演算子の「詳細」タブが、プロパティ・パネルに表示されます。
  2. 「詳細」タブで、「識別子」フィールドにこのマイナス操作の名前を入力するか、名前をそのままにします。
  3. 「入力属性の照合基準」フィールドを使用して、マイナス操作の実行方法を指定します。次の2つのオプションから選択できます:
    • 名前: ソースからの属性名を照合して、マイナス操作を実行します。入力全体で属性の名前とデータ型、および属性の数が同一である必要があります。照合では大/小文字が区別されます。を参照して、名前によるマイナス操作の仕組みを理解してください。
    • ポジション: ソースからの属性の位置に基づいて属性が照合されます。入力全体で属性の数と属性のデータ型が同一である必要があります。を参照して、位置によるマイナス操作の仕組みを理解してください。
  4. 「Minus all」のチェック・ボックスは、1つのデータ・エンティティで見つかったすべての行(もう1つのデータ・エンティティには存在しない行)を、重複を排除せずに操作から返す場合に選択します。
  5. 「プライマリ入力」で、マイナス操作のプライマリ・ソースとして使用するソースを選択します。プライマリ入力によって、結果の出力の属性名、属性データ型および属性順序が決まります。デフォルトでは、マイナス演算子に接続されている最初のソースがプライマリ入力として設定されます。
    アイコン プライマリ入力 説明
    左外部結合のベン図 左のマイナス インバウンド・ソース2と一致する行を削除した後、インバウンド・ソース1から残りの個別行をすべて選択します。
    右外部結合のベン図 右のマイナス インバウンド・ソース1と一致する行を削除した後、インバウンド・ソース2から残りの固有行をすべて選択します。
  6. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用した場合、属性は名前パターン*_CODEとnumericタイプまたはvarcharタイプでフィルタされます。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  7. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  8. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。

論理積演算子

論理積演算子を使用して、複数のデータ・エンティティを比較し、接続されたエンティティに存在する行を返します。

結果のデータで重複する行を保持するか削除するかを選択できます。

論理積タイプの理解

論理積操作は、2つ以上のソース演算子に対して実行できます。ソース入力属性全体で属性名を照合して操作を実行するように選択することも、属性の位置で属性を照合することもできます。

属性名による論理積

次の2つのデータ・エンティティの例について考えてみます。データ・エンティティ1がプライマリ入力として設定されています。結果のデータ・エンティティは、2つの入力からのデータを属性名でどのように交差するかを示します。結果のデータ・エンティティは、プライマリ入力データ・エンティティからの属性名、順序およびデータ型を使用します。

データ・エンティティ1、プライマリ入力
部門事業所ID倉庫
IT1400サンフランシスコ
出荷1500オースティン
経理1700ニュージャージー
データ・エンティティ2
部門倉庫事業所ID
福利厚生デンバー1600
ITサンフランシスコ1400
結果のデータ・エンティティ
部門事業所ID倉庫
IT1400サンフランシスコ
属性位置による論理積

次の2つのデータ・エンティティの例について考えてみます。データ・エンティティ2がプライマリ入力として設定されています。結果のデータ・エンティティは、2つの入力からのデータを属性位置でどのように交差するかを示します。結果のデータ・エンティティは、プライマリ入力データ・エンティティからの属性名、順序およびデータ型を使用します。

データ・エンティティ1
部門事業所ID倉庫
IT1400サンフランシスコ
出荷1500オースティン
経理1700ニュージャージー
データ・エンティティ2、プライマリ入力
部門名事業所倉庫の市区町村
福利厚生1600デンバー
IT1400サンフランシスコ
結果のデータ・エンティティ
部門名事業所倉庫の市区町村
IT1400サンフランシスコ
論理積演算子の追加および構成
  1. 論理積演算子をデータ・フローに追加するには、「演算子」パネルから論理積演算子をキャンバスにドラッグ・アンド・ドロップします。
    論理積演算子の「詳細」タブが、「プロパティ」パネルに表示されます。
  2. 「詳細」タブで、「識別子」フィールドにこの論理積操作の名前を入力するか、名前をそのままにします。
  3. 「入力属性の照合基準」フィールドを使用して、論理積操作の実行方法を指定します。次の2つのオプションから選択できます:
    • 名前: ソースからの属性名を照合して、論理積操作を実行します。入力全体で属性の名前とデータ型、および属性の数が同一である必要があります。照合では大/小文字が区別されます。を参照して、名前による論理積操作の仕組みを理解してください。
    • ポジション: ソースからの属性の位置に基づいて属性が照合されます。入力全体で属性の数と属性のデータ型が同一である必要があります。を参照して、位置による論理積操作の仕組みを理解してください。
  4. 生成される出力のすべての行を重複を排除せずに操作から返すには、「Intersect all」のチェック・ボックスを選択します。
  5. 「プライマリ入力」で、論理積操作のプライマリ・ソースとして使用するソースを選択します。プライマリ入力によって、結果の出力の属性名、属性データ型および属性順序が決まります。デフォルトでは、論理積演算子に接続されている最初のソースがプライマリ入力として設定されます。
  6. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用した場合、属性は名前パターン*_CODEとnumericタイプまたはvarcharタイプでフィルタされます。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  7. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  8. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。

分割演算子

分割演算子を使用して、シーケンス内で評価される分割条件に基づいて、入力データの1つのソースを複数の出力ポートに分割します。

各分割条件には出力ポートがあります。条件を満たすデータは、対応する出力ポートに転送されます。

デフォルトでは、分割演算子は不一致条件で構成されます。これは常に、シーケンス内の最後の条件として使用可能です。不一致条件に独自の条件を追加することはできません。また、不一致条件を削除することもできません。

演算子は、条件を1つずつ評価します。シーケンス内のすべての条件が評価された後、条件を満たさないデータは不一致出力ポートに転送されます。

分割の例

属性BANK_IDおよびBANK_NAMEを持つデータ・エンティティBANKがあるとします。

2つの分割条件を設定します。不一致条件を含む完全なシーケンスは次のとおりです:

条件出力ポート条件
CONDITION1SPLIT_1.BANK.BANK_ID<102
CONDITION2SPLIT_1.BANK.BANK_ID<104
UNMATCHEDデフォルトのUNMATCHED条件は、シーケンス内の他の条件を満たしていないすべてのデータをUNMATCHED出力ポートに転送します
BANKデータ・エンティティ

データ・エンティティには4つの行があります。

BANK_IDBANK_NAME
101A Bank 101
102B Bank 102
103C Bank 103
104D Bank 104
Condition1の出力、最初の一致条件

CONDITION1は、一致する1行を返します。

BANK_IDBANK_NAME
101A Bank 101
Condition2の出力、最初の一致条件

CONDITION2は、(CONDITION1の後の不一致行から)一致する2つの行を返します。

BANK_IDBANK_NAME
102B Bank 102
103C Bank 103
不一致条件の出力、最初の一致条件

UNMATCHED条件は、残りの行を返します。

BANK_IDBANK_NAME
104D Bank 104
Condition1の出力、すべての一致条件

CONDITION1は、一致する1行を返します。

BANK_IDBANK_NAME
101A Bank 101
Condition2の出力、すべての一致条件

すべてのデータがCONDITION2によって評価され、一致する3つの行が返されます。

BANK_IDBANK_NAME
101A Bank 101
102B Bank 102
103C Bank 103
不一致条件の出力、すべての一致条件

UNMATCHED条件は、CONDITION1およびCONDITION2を満たさない行を返します。

BANK_IDBANK_NAME
104D Bank 104
分割演算子の追加および構成

キャンバスに分割演算子を追加すると、デフォルトで分割演算子アイコンが展開されて表示され、不一致分割条件が示されます。不一致条件は、シーケンスに追加すした他の条件を満たさないすべてのデータを転送します。

  1. 「演算子」パネルから、分割演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. 分割演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「一致」で、分割条件を満たす受信データの処理方法を指定します。次の2つのオプションから選択できます:
    • 最初の一致条件: シーケンス内の最初の条件に一致するデータが、後続の条件による処理から削除されます。

      たとえば、最後に不一致条件である4つの条件(Condition1、Condition2、Condition3、不一致)を持つシーケンスを考えてみます。

      Condition1について、この操作では一致が見つかりません。Condition2については、一致が見つかりました。この操作では、一致したデータがCondition2に指定されている出力ポートにルーティングされてから、Condition3の不一致データが評価されます。Condtion3で一致が見つからない場合、すべてのデータが、不一致条件に指定された出力ポートにルーティングされます。ただし、Condition3で一致が見つかった場合、この操作では、一致したデータがCondition3の出力ポートにルーティングされ、残りのデータが不一致条件のポートにルーティングされます。

    • すべての一致条件: いずれかの条件に一致するデータが、シーケンス内のすべての条件について評価されます。

      たとえば、Condition1およびCondition2を持つシーケンスを考えてみます。Condition1が評価された後、一致が見つかりました。一致したデータは、Condition1に指定された出力ポートにルーティングされます。その後、すべてのデータ(一致データと不一致データ)がCondition2によって評価されます。Condition2に一致したデータが、対応する出力ポートにルーティングされます。Condition1およびCondition2を満たさないデータは、不一致分割条件の出力ポートにルーティングされます。

  4. 「分割条件」で、「条件の追加」をクリックして分割条件を追加します。
    1. パネルで分割条件を追加するには、「識別子」の値を編集するか、そのままにします。
    2. 「条件ビルダー」セクションで、属性、パラメータおよび関数をダブルクリックまたは削除してエディタに追加し、条件を作成できます。エディタに条件式を手動で入力し、式を検証することもできます。
      ノート

      エディタでは、関数などの追加された要素にプレースホルダがある場合があります。プレースホルダを別の要素に置き換えるには、プレースホルダを強調表示して、リストから別の要素をダブルクリックします。
    3. 「追加」をクリックします。
      最初に追加した条件が不一致条件の前に挿入されます。条件のシーケンスは、キャンバス上の展開された演算子アイコンにも表示されます。
    4. このステップを繰り返して、シーケンスを形成する条件を追加します。
      2番目の条件が、シーケンス内の最初の条件と不一致条件の間に挿入されます。後続の条件は、常に不一致条件の前に挿入されます。分割条件のシーケンスは、キャンバス上に展開された分割演算子アイコンにも反映されます。
  5. 分割条件の出力ポートをキャンバス上の別の演算子に接続するには:
    1. 分割演算子アイコンを展開すると、条件シーケンスが表示されます。
      分割演算子アイコンが展開されていない場合も、演算子を次の演算子に接続できますが、リンクは不一致条件のポートから作成されます。
    2. 条件の端にカーソルを置き、条件の右側にある小さい円を次の整形演算子またはターゲットにドラッグします。
    3. 各条件を適切な演算子またはターゲットに接続します。
    各条件出力ポートは、複数の整形演算子およびターゲット演算子にリンクできます。キャンバス上で分割演算子アイコンが展開されていない場合は、リンク線の上にカーソルを置くと、そのリンクの条件名が表示されます。
  6. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  7. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    「条件付き出力ポート」メニューには、演算子に構成されている条件(不一致条件を含む)の数と同数のアイテムが表示されます。デフォルトでは、最初の条件ポートからの出力が表示されます。出力ビューを変更するには、メニューから条件出力のポートを選択します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  8. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
分割条件の追加

条件ビルダーを使用して要素を視覚的に選択し、分割条件を作成および追加します。エディタで分割条件を手動入力することもできます。

既存の条件シーケンスに分割条件を追加できます。分割条件は、シーケンスの最後の不一致条件の前に追加されます。不一致条件に独自の条件を追加することはできません。

分割条件で使用できる要素には、受信属性、パラメータおよび関数があります。要素をダブルクリックするか、リストからドラッグ・アンド・ドロップするかしてエディタに追加し、条件を作成できます。条件は作成する前に検証できます。

「受信」には、アップストリーム・ポートからの属性が表示されます。例:

SPLIT_1.BANK.BANK_NAME='ABC Bank'

パラメータは、条件ビルダー(フィルタ演算子、結合演算子、ルックアップ演算子および分割演算子)または式ビルダー(式演算子および集計演算子)を使用してデータ・フローに追加された式パラメータです。式パラメータには、名前、タイプおよびデフォルト値があります。式パラメータの追加を参照してください。

P_VARCHAR_NAMEという名前のVARCHARパラメータを作成し、デフォルト値をABC BANKに設定するとします。この場合、このパラメータを次のように分割条件で使用できます:

SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME

ファンクションデータ統合で使用可能な関数で、条件の中で使用できます。ファンクションは、関数に渡される引数に対して実行される操作です。ファンクションは、引数からデータ値を計算、操作または抽出します。

P_VARCHAR_LIKEという名前のVARCHARパラメータを作成し、デフォルト値をB%に設定するとします。この場合、このパラメータを次のように分割条件で使用できます:

SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE

条件の作成時に追加できる関数のリストを次に示します:

ハッシュ関数
関数説明
MD5(all data types)データ型のMD5チェックサムを計算し、文字列値を返します。 MD5(column_name)
SHA1(all data types)データ型のSHA-1ハッシュ値を計算し、文字列値を返します。 SHA1(column_name)
SHA2(all data types, bitLength)データ型のSHA-2ハッシュ値を計算し、文字列値を返します。bitLengthは整数です。 SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512)
ORA_HASH(expr, [max_bucket], [seed_value])

exprのハッシュ値を計算し、NUMBER値を返します。

exprには、式、列、リテラルを指定できます。

max_bucketは、0から4294967295 (デフォルト)までの返された最大バケット値です。

seed_valueは、0 (デフォルト)から4294967295までの値です。

Oracleは、ハッシュ関数をexprseed_valueの組合せに適用して、同じデータ・セットに対して様々な結果を生成します。

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

算術関数
関数説明
ABS(numeric)numeric値の絶対乗を返します。ABS(-1)
CEIL(numeric)numeric値を超えない最小の整数を返しますCEIL(-1,2)
FLOOR(numeric)numeric値を超えない最大の整数を返します。FLOOR(-1,2)
MOD(numeric1, numeric2)numeric1numeric2で除算した後の剰余を返します。MOD(8,2)
POWER(numeric1, numeric2)numeric1numeric2で累乗します。POWER(2,3)
ROUND(numeric1, numeric2)numeric1を小数点以下numeric2桁に丸めて返します。ROUND(2.5,0)
TRUNC(numeric1, numeric2)numeric1を小数点以下numeric2桁に切り捨てて返します。TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])指定されたformatおよびlocale(オプション)に基づいて、exprを数値に変換します。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされるフォーマット・パターン:

  • 0: 数字
  • #: 数字。ゼロは存在しないことを示します
  • .: 小数点セパレータのプレースホルダ
  • ,: グループ化セパレータのプレースホルダ
  • E: 指数フォーマットの仮数と指数を区切ります
  • -: デフォルトの否定接頭辞
  • ¤: 通貨シンボルで置換される通貨記号。二重の場合、国際通貨記号で置換されます。パターン内に存在する場合は、小数点セパレータのかわりに通貨小数点セパレータが使用されます。

TO_NUMBER('5467.12')5467.12を返します

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US')-45677.7を返します

日付と時間関数
関数 説明
CURRENT_DATE 現在の日付を返します。 CURRENT_DATEは、2023-05-26などの今日の日付を返します
CURRENT_TIMESTAMP セッション・タイムゾーンに対する現在の日付と時刻を返します。 CURRENT_TIMESTAMPは、今日の日付と現在の時刻(2023-05-26 12:34:56など)を返します
DATE_ADD(date, number_of_days) 指定したdateからnumber日後の日付を返します。 DATE_ADD('2017-07-30', 1)2017-07-31を返します
DATE_FORMAT(expr, format[, locale])

指定されたformatおよびlocale(オプション)に基づいて、日付のexprをフォーマットします。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされる日付フォーマット・パターン:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd')'2020-10-11'を返します。最初の引数は、2020年10月11日を表すDateオブジェクトです。

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES')'2018/junio/17'を返します

DAYOFMONTH(date) 特定の日(月間)を返します。 DAYOFMONTH('2020-12-25')25を返します。
DAYOFWEEK(date) 特定の日(週間)を返します。 DAYOFWEEK('2020-12-25')は、金曜日の6を返します。米国では、日曜日は1、月曜日は2などとみなされます。
DAYOFYEAR(date) 特定の日(年間)を返します。 DAYOFYEAR('2020-12-25')360を返します
WEEKOFYEAR(date) 日付が年内の何番目の週かを返します。

WEEKOFYEAR('2022-07-28')30を返します

WEEKOFYEAR('2022-07-28 13:24:30')30を返します

HOUR(datetime) 日時の時間の値を返します。 HOUR('2020-12-25 15:10:30')15を返します
LAST_DAY(date) 月末の日付を返します。 LAST_DAY('2020-12-25')31を返します
MINUTE(datetime) 日時の分の値を返します。 HOUR('2020-12-25 15:10:30')10を返します
MONTH(date) 日付の月の値を返します。 MONTH('2020-06-25')6を返します。
QUARTER(date) 日付が属する四半期を返します。 QUARTER('2020-12-25')4を返します。
SECOND(datetime) 日時の秒の値を返します。 SECOND('2020-12-25 15:10:30')30を返します
TO_DATE(string, format_string[, localeStr]) format_string式を含む文字列式を日付に解析します。ロケールはオプションです。デフォルトはen-USです。サポートされる言語タグ

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合は、大/小文字を区別する次のフォーマット文字列がサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

TO_DATE('31 December 2016', 'dd MMMM yyyy')は、日付値2016-12-31を返します

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES')は、日付値2018-06-17を返します

TO_TIMESTAMP(expr, format_string[, localeStr]) 指定されたformat_stringおよびlocaleStr(オプション)に基づいて、VARCHARのexprをTIMESTAMPの値に変換します。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次のフォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss')は、11am 10:10 Oct 11th, 2020を表すTIMESTAMPオブジェクトを返します
WEEK(date)

日付の週の値を返します。

WEEK('2020-06-25')4を返します
YEAR(date) 日付の年の値を返します。 YEAR('2020-06-25') returns 2020
ADD_MONTHS(date_expr, number_months) 指定した日付、タイムスタンプまたは文字列(yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマット)に指定した数の月を追加した日付を返します。

ADD_MONTHS('2017-07-30', 1)2017-08-30を返します

ADD_MONTHS('2017-07-30 09:07:21', 1)2017-08-30を返します

MONTHS_BETWEEN(start_date_expr, end_date_expr)

start_date_exprend_date_exprの間の月数を返します。start_date_exprend_date_exprには、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの日付、タイムスタンプまたは文字列を指定できます

整数が返されるのは、両方の日付の日の部分が同じ場合、または両方が月の最終日の場合です。それ以外の場合は、1か月を31日として差が計算されます。

MONTHS_BETWEEN('2022-01-01', '2022-01-31')は1を返します

MONTHS_BETWEEN('2022-07-28', '2020-07-25')は24を返します

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30')は24を返します

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

日付、タイムスタンプまたは文字列をUTC時間として解釈し、その時間を指定したタイムゾーンのタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 03:40:00.0を返します
TO_UTC_TIMESTAMP(time_stamp, time_zone)

指定したタイムゾーンの日付、タイムスタンプまたは文字列をUTCタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 01:40:00.0を返します
FROM_UNIXTIME(unix_time[, fmt])

指定したUnix時間すなわちエポックを、現在のシステム・タイム・ゾーンおよび指定したフォーマットで、その時点のタイムスタンプを表す文字列に変換します。

ノート: Unix時間とは、1970年1月1日00:00:00 UTCから経過した秒数です。

fmtを省略した場合、デフォルトのフォーマットはyyyy-MM-dd HH:mm:ssです

FROM_UNIXTIME(1255033470)'2009-10-08 13:24:30'を返します

FROM_UNIXTIME(1637258854)'2021-11-18 10:07:34'を返します

例のデフォルトのタイムゾーンはPSTです

UNIX_TIMESTAMP([time_expr[, fmt]])

現在時刻または指定した時刻をUnixタイムスタンプ(秒単位)に変換します。

time_exprは、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの、日付、タイムスタンプまたは文字列です

time_exprを指定しないと、現在時刻が変換されます。

time_exprが文字列で、fmtを省略した場合、デフォルトはyyyy-MM-dd HH:mm:ssです

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')28800を返します

この例のデフォルトのタイムゾーンはPSTです

INTERVAL 'year' YEAR[(year_precision)]

期間を年単位で返します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '1' YEARは1年の期間を返します

INTERVAL '200' YEAR(3)は200年の期間を返します

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

期間を年と月の単位で返します。yearおよびmonthフィールドを使用して期間を格納するために使用します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '100-5' YEAR(3) TO MONTHは100年と5か月の期間を返します。先頭の年の精度として3を指定する必要があります。
INTERVAL 'month' MONTH[(month_precision)]

期間を月単位で返します。

month_precisionmonthフィールドの桁数で、範囲は0から9です。month_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '200' MONTH(3)は200か月の期間を返します。月の精度として3を指定する必要があります。
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

日、時、分、秒で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '11 10:09:08.555' DAY TO SECOND(3)は、11日10時間9分8秒555ミリ秒の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

日、時、分で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '11 10:09' DAY TO MINUTEは、11日10時間9分の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

日数と時間数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '100 10' DAY(3) TO HOURは、100日10時間の期間を返します
INTERVAL 'day' DAY[(day_precision)]

日数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

INTERVAL '999' DAY(3)は999日の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

時、分、秒で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)は、9時間8分7.6666666秒の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

時間と分数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '09:30' HOUR TO MINUTEは、9時間30分の期間を返します
INTERVAL 'hour' HOUR[(hour_precision)]

時間数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '40' HOURは40時間の期間を返します
INTERVAL 'minute' MINUTE[(minute_precision)]

分数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '15' MINUTEは15分間の期間を返します
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

分数と秒数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '15:30' MINUTE TO SECONDは15分30秒の期間を返します
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

秒数で期間を返します。

fractional_seconds_precisionは、secondフィールドの分数部分の桁数であり、範囲は0から9です。デフォルトは3です。

INTERVAL '15.678' SECONDは15.678秒の期間を返します
分析関数
関数 説明
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) ウィンドウ・フレームの最初の行である行で評価された値を返します。 FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最初の値を返します。
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より前のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC)は、BANK_IDでパーティション化し、BANK_NAMEの降順にしたときの、現在行より2行前のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) ウィンドウ・フレームの最後の行である行で評価された値を返します。 LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最後の値を返します。
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より後のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDでパーティション化し、BANK_NAMEの昇順にしたときの、現在行より2行後のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
RANK() OVER([ partition_clause ] order_by_clause) ギャップを含む現在行のランクを返します(1からカウント)。 RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行のランクをBANK_NAMEの昇順で返します。
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) パーティション内の現在行の一意の番号を返します(1からカウント)。 ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行の一意の行番号をBANK_NAMEの昇順で返します。
文字列関数
関数説明
CAST(value AS type)指定されたタイプの指定された値を返します。CAST("10" AS INT)10を返します
CONCAT(string, string)文字列または列を結合した値を返しますCONCAT('Oracle','SQL')OracleSQLを返します
CONCAT_WS(separator, expression1, expression2, expression3,...) 指定したセパレータを使用して、文字列または列を結合した値を文字列または列間で返します。

区切り記号は必須であり、文字列である必要があります。

セパレータの後に少なくとも1つの式を指定する必要があります。たとえば: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle')Hello-Oracleを返します

CONCAT_WS(' ', address, city, postal_code)123 MyCity 987654を返します

関数の子が配列である場合、配列はフラット化されます。

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9)1,2,3,4,5,6,7,8,9を返します

INITCAP(string)各単語の最初の文字を大文字、残りの文字をすべて小文字にした文字列を、単語どうしを空白で区切って返します。INITCAP('oRACLE sql')Oracle Sqlを返します
INSTR(string, substring[start_position])stringで最初に出現するsubstringの(1から始まる)索引を返しますINSTR('OracleSQL', 'SQL')7を返します
LOWER(string)すべての文字を小文字に変更して文字列を返します。LOWER('ORACLE')oracleを返します
LENGTH(string)文字列の文字長またはバイナリ・データのバイト数を返します。文字列の長さには末尾のスペースも含まれます。LENGTH('Oracle')6を返します
LTRIM(string)先頭のスペースを左から除去して文字列を返します。LTRIM(' Oracle')
NVL(expr1, epxr2)nullでない引数を返します。NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])入力文字列から正規表現パターンに一致する文字列を検索して抽出します。オプションのキャプチャ・グループ索引が指定されている場合、この関数は特定のグループを抽出します。

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?')https://www.oracle.comを返します

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1)22を返します
REPLACE(string, search, replacement)出現するすべてのsearchreplacementに置換します。

文字列にsearchが見つからない場合、stringがそのまま返されます。

replacementが指定されていない場合、または空の文字列の場合、stringから削除されるsearchは何にも置換されません。

REPLACE('ABCabc', 'abc', 'DEF')ABCDEFを返します
RTRIM(string)先頭のスペースを右から除去して文字列を返します。RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])位置から始まる部分文字列を返します。 SUBSTRING('Oracle SQL' FROM 2 FOR 3)racを返します
数値の場合、TO_CHAR(expr)および日付の場合、TO_CHAR(expr, format[, locale])数字と日付を文字列に変換します。数値の場合、書式は必要ありません。日付の場合は、「日時関数」で説明されているDATE_FORMATと同じ形式を使用します。デフォルトのロケールはen-USです。「サポートされている言語タグ」を参照してください。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次の日付フォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

数値の例: TO_CHAR(123)123を返します

日付の例: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US')は文字列2020.10.30を返します。最初の引数は、2020年10月30日を表すDateオブジェクトです。

UPPER(string)すべての文字を大文字に変更して文字列を返します。UPPER('oracle')ORACLEを返します
LPAD(str, len[, pad])文字列の左側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。LPAD('ABC', 5, '*')'**ABC'を返します
RPAD(str, len[, pad])文字列の右側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。RPAD('XYZ', 6, '+' )は'XYZ+++'を返します
演算子(比較)関数
関数説明
CASE WHEN condition1 THEN result1 ELSE result2 END条件を満たす値を返します。CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' ENDは、1> 0の場合はABCを返し、それ以外の場合はXYZを返します
AND論理AND演算子。両方のオペランドがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 AND y = 20)は、xが10でyが20の場合、trueを返します。いずれか一方がtrueでない場合は、falseを返します
OR論理OR演算子。いずれかのオペランドがtrueであるか、両方ともtrueである場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 OR y = 20)は、xが10ではなく、かつyが20でない場合、falseを返します。いずれか一方がtrueの場合は、trueを返します
NOT論理NOT演算子。
LIKEstring1がstring2のパターンに一致するかどうかにかかわらず、文字列パターン・マッチングを実行します。
=等価かどうかをテストします。expr1がexpr2と等しい場合はtrueを返し、それ以外の場合はfalseを返します。x = 10は、xの値が10の場合はtrueを返し、それ以外の場合はfalseを返します
!=非等価かどうかをテストします。expr1がexpr2と等しくない場合はtrueを返し、それ以外の場合はfalseを返します。x != 10は、xの値が10の場合はfalseを返し、それ以外の場合はtrueを返します
>式の大なりをテストします。expr1がexpr2より大きい場合は、trueを返します。x > 10は、xの値が10より大きい場合はtrueを返し、それ以外の場合はfalseを返します
>=式の大なりイコールをテストします。expr1がexpr2以上の場合は、trueを返します。x > =10は、xの値が10以上の場合はtrueを返し、それ以外の場合はfalseを返します
<式の小なりをテストします。expr1がexpr2より小さい場合は、trueを返します。x < 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
<=式の小なりイコールをテストします。expr1がexpr2以下の場合は、trueを返します。x <= 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
||2つの文字列を連結します。'XYZ' || 'hello''XYZhello'を返します
BETWEEN範囲を評価します。FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
IN式が値リストと一致するかどうかをテストします。FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
一意ID関数
関数説明
NUMERIC_ID()各行に対して64ビットの数値の汎用一意識別子を生成します。NUMERIC_ID()は、たとえば3458761969522180096および3458762008176885761を返します
ROWID()単調に増加する64ビット数を生成します。ROWID()は、たとえば、012などを返します
UUID()各行に対して128ビットの文字列の汎用一意識別子を生成します。UUID()は、たとえば20d45c2f-0d56-4356-8910-162f4f40fb6dを返します
MONOTONICALLY_INCREASING_ID() 単調に増加する一意の64ビット整数を生成します。連続した数字にはなりません。 MONOTONICALLY_INCREASING_ID()は、たとえば、858993459225769803776を返します
条件付き関数
関数説明
COALESCE(value, value [, value]*)存在する場合は最初のnullでない引数を返し、それ以外の場合はnullを返します。COALESCE(NULL, 1, NULL)1を返します
NULLIF(value, value)2つの値が等しい場合はnullを返し、それ以外の場合は最初の値を返します。NULLIF('ABC','XYZ')ABCを返します
階層関数
関数説明
SCHEMA_OF_JSON(string)JSON文字列を解析し、スキーマのDDLフォーマットを推測します。

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]')'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'を返します

SCHEMA_OF_JSON('[{\"col\":0}]')'ARRAY<STRUCT<col: BIGINT>>'を返します

FROM_JSON(column, string)

JSON文字列を含む列を解析し、指定スキーマを含む次のいずれかの型に解析します。

  • Map (キー・タイプがString)
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>')は、指定スキーマ{704, ORACLE CITY}のStruct型列を返します

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>')は、指定スキーマ{1, 0.8}のStruct型列を返します

TO_JSON(column)StructまたはStruct配列あるいはMapまたはMap配列の型を含む列をJSON文字列に変換します。TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value')))はJSON文字列{"s1":[1,2,3],"s2":{"key":"value"}}を返します
TO_MAP(string,column[,string,column]*)Map型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。入力キー列をNULLにすることはできません。すべて同じデータ型である必要があります。入力値列はすべて同じデータ型である必要があります。

TO_MAP('Ename',Expression_1.attribute1)は、Map型の列{"ENAME" -> 100}を返します

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit)は、Map型の列{"block" -> 1,"unit" -> 1}を返します

TO_STRUCT(string,column[,string,column]*)Struct型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。

TO_STRUCT('Ename',Expression_1.attribute1){100}を返します

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2){100, "John"}を返します

TO_ARRAY(column[,column]*)Array型の新しい列を作成します。入力列はすべて同じデータ型である必要があります。

TO_Array(Expression_1.attribute1)[100]を返します

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3)["John","Friend"]を返します

高順序関数

式および階層データ型の作成をサポートするデータ・フロー演算子では、上位の関数を使用できます。

サポートされている演算子は次のとおりです:

  • 集計

  • フィルタ

  • 結合

  • 検索

  • 分割済

  • ピボット

関数説明
TRANSFORM(column, lambda_function)配列と無名関数を取得し、各要素に関数を適用して結果を出力配列に割り当てることによって、新しい配列を設定します。整数[1, 2, 3]の入力配列の場合、TRANSFORM(array, x -> x + 1)[2, 3, 4]の新しい配列を返します。
TRANSFORM_KEYS(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、キーがラムダ関数の結果のタイプを持ち、値が列マップ値のタイプを持つマップを返します。整数キーおよび文字列値が{1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}の入力マップの場合、TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1){3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}の新しいマップを返します。
TRANSFORM_VALUES(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、値がラムダ関数の結果のタイプを持ち、キーが列マップ・キーのタイプを持つマップを返します。 文字列キーおよび文字列値が{'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}の入力マップの場合、TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v){'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}の新しいマップを返します。
ARRAY_SORT(array(...), lambda_function)

式演算子のみがARRAY_SORTをサポートします。

配列を取得し、2つの引数を取る指定された関数に従ってソートします。

この関数は、最初のエレメントが2番目のエレメントより小さいか、等しいか、または大きいかに応じて-1、0、または1を返す必要があります。

関数を省略すると、配列は昇順にソートされます。

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

返される配列は次のとおりです。

[1,5,6]
分割条件の編集

不一致条件以外の分割条件は編集できます。

  1. デザイナ・キャンバスで、変更する条件の分割演算子を選択します。
    分割演算子の「詳細」タブが、「プロパティ」パネルに表示されます。キャンバス上で、演算子アイコンを展開および縮小して、既存の分割条件を表示および非表示にできます。
  2. 「詳細」タブの「分割条件」で、変更する分割条件の横にあるアクション・メニューから、「編集」を選択します。
  3. 「分割条件の編集」パネルで、「識別子」の値を編集するか、そのままにします。
  4. 「条件ビルダー」セクションで、受信属性または関数をダブルクリックして選択するか、エディタにドラッグ・アンド・ドロップして、条件を作成できます。エディタで条件式を手動で編集し、条件を保存する前に検証することもできます。
  5. 「変更の保存」をクリックします。
分割条件のシーケンスの変更

分割条件は、シーケンス内で上下に移動できます。不一致条件のみ移動できません。

  1. デザイナ・キャンバスで、変更する条件のシーケンスを持つ分割演算子を選択します。
    分割演算子の「詳細」タブが、「プロパティ」パネルに表示されます。キャンバス上で、演算子アイコンを展開および縮小して、既存の分割条件を表示および非表示にできます。
  2. 「詳細」タブの「分割条件」で、分割条件のシーケンスを確認します。
  3. 条件行の横にあるアクション・メニューで、その条件をシーケンス内で上または下に移動するアクションを選択します。
    条件を移動すると、キャンバス上で展開された分割演算子アイコンの条件の位置がそれに応じて変化することに注意してください。
分割条件の削除

不一致条件以外の分割条件は削除できます。

  1. デザイナ・キャンバスで、削除する条件の分割演算子を選択します。
    分割演算子の「詳細」タブが、「プロパティ」パネルに表示されます。キャンバス上で、演算子アイコンを展開および縮小して、分割条件を表示および非表示にできます。
  2. 「詳細」タブの「分割条件」で、削除する条件の横にあるアクション・メニューから、「削除」を選択します。
  3. 複数の条件を削除するには、「順序」列の横の列を使用して条件を選択し、「削除」をクリックします。
  4. 削除した条件の出力ポートが別の演算子またはターゲットに接続されている場合は、条件の削除後にデータ・フローを確認して必要な変更を行ってください。

ピボット演算子

ピボット演算子を使用すると、入力ソースの1つの属性から一意の行値を取得し、その値を出力の複数の属性にピボットできます。

ピボット操作は、複数の行からの入力を使用して、集計関数式およびピボット・キーとして指定した属性の値に基づいて変換を実行します。ピボット操作の結果は、行と属性がピボット(再配置)された出力です。

出力の行数は、グループ化基準として使用する属性の選択に基づきます。

  • グループ化基準として1つ以上の属性を指定すると、同じグループ化基準属性値を含む受信行は1つの行にグループ化されます。たとえば、1つのグループ化基準属性を指定し、その属性に一意の値が4つ含まれている場合、受信データが変換されて、出力で4つの行にグループ化されます。
  • グループ化基準の属性を指定しない場合、すべての受信データは1つの出力行に変換されます。

出力の属性数は:

  • グループ化基準として選択した属性の数に基づきます
  • ピボット・キーで選択した値の数の倍数です
  • 集計関数式が変換する属性数の結果です

たとえば、1つのグループ化基準属性と3つのピボット・キー値を選択し、2つの属性を変換する式を追加した場合、出力内の属性の数は:

1 + (3 * 2)

結果のピボット済出力内の属性の合計数は、次のように計算されます:

Number of group by attributes + (Number of pivot key values * Number of attributes that are transformed from expressions)

出力内の新規属性の名前は、式の作成時にターゲット属性に追加したパターンから導出されます。

ピボット演算子で使用する集計関数によって、出力のピボット済値が決まります。データが見つからない場合は、ピボット済値が想定される場所にNULLが挿入されます。

ピボットの例

STORE、PRODUCTおよびSALESの属性が含まれるデータ・エンティティPRODUCT_SALESについて考えてみます。このデータ・エンティティには5つの行があります。SALESに対する集計SUM関数を使用して、属性PRODUCTに対してピボットを作成するとします。

ピボット済行を属性STOREでグループ化するように指定します。STOREの一意値それぞれが、結果出力の1行になります。同じグループ化基準値を含む入力行は、ピボット済出力で同じ行にグループ化されます。グループ化基準属性を指定しないと、すべての入力行が結果出力の1行に変換されます。

PRODUCTをピボット・キーとして指定し、3つの値すべてを結果出力の新規属性にピボットするように選択します。

SALESに対する集計SUM関数式は次のとおりです:

SUM(PIVOT_1_1.PRODUCT_SALES.SALES)

ターゲット属性のパターンは次のとおりです:

%PIVOT_KEY_VALUE%
データ・エンティティPRODUCT_SALES
STOREPRODUCTSALES
AB StoreTelevision2
AB StoreTelevision4
Country-StoreTelevision6
Country-StoreRefrigerator8
E-StoreCoffee maker10
ピボット出力: グループ化基準STORE、ピボット・キーPRODUCT
STORETELEVISIONREFRIGERATORCOFFEE MAKER
AB-Store6--
Country-Store68-
E-Store--10
ピボット出力: グループ化基準なし、ピボット・キーPRODUCT
TELEVISIONREFRIGERATORCOFFEE MAKER
12810
ピボット演算子の追加および構成

ピボット演算子は、ピボット・キーとして指定した属性の1つ以上の値に対して1つ以上の集計関数式を使用して、変換を実行します。

ピボット済行を1つの行にグループ化するか、属性を選択して同じグループ化基準値に基づく複数の出力行を作成するかを選択できます。

  1. 「演算子」パネルから、ピボット演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. ピボット演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. (オプション)「グループ化基準」で、属性を指定します。この個別値が、ピボット済データをグループ化された行に配置するために使用されます。デフォルトでは、行をグループ化する属性を1つ以上指定しないかぎり、すべての受信行は集計されて1行にグループ化されます。
    • 「属性」を選択してから1つ以上の属性を選択し、ピボット済の行を同じ値でグループ化します。たとえば、選択した属性に一意の値が2つある場合、結果出力には2行の集計データが含まれます。
    • 「パターン」を選択し、正規表現パターンを使用して、グループ化基準の属性を選択します。パターンと一致する属性のみが、ピボット済の行を同じ値でグループ化するために使用されます。
  4. 「ピボット・キー」で、ピボット済出力の新規属性として値を使用できる属性を選択します。ピボット・キーとして使用できるのは、VARCHAR、INTEGER、FLOATまたはBOOLEAN型の属性のみです。
  5. 「ピボット・キー値」で、「キー値の追加」をクリックし、出力のピボット済属性にするために、選択したピボット・キーの1つ以上の値を選択します。最大50個の値を選択できます。

    選択したピボット・キー値には別名を使用できます。別名を数字で始めることはできません。使用できる特殊文字は_のみです。

    選択したピボット・キー値に別名を使用するには、そのキー値のアクション・メニューから「編集」を選択します。「ピボット・キー別名の編集」パネルで、キー値の別名を入力します。

    選択したリストからピボット・キー値を削除するには、その横にあるチェック・ボックスを選択し、「削除」をクリックします。または、「アクション」メニューから「削除」を選択することもできます。

  6. 「式」で、「式の追加」をクリックして集計関数式を追加します。ピボット式の追加を参照してください。
  7. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  8. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  9. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
ピボット式の追加

ピボット演算子には1つ以上の集計関数式が必要です。

  1. データ・フロー・キャンバス上でピボット演算子が選択された状態で、プロパティ・パネルの「式」で、「式の追加」をクリックします。

  2. 「式の追加」パネルで、「識別子」フィールドに式の名前を入力するか、名前をそのままにします。

  3. (オプション)パターンを使用して複数のソース属性に式を適用するには、「バルク選択の許可」を選択します。

    たとえば、データ・セット内に2つのDISCOUNT_属性(DISCOUNT_VALUEおよびDISCOUNT_RATE)があり、両方にMAX関数を適用するとします。

    1. 「ソース属性」で、「パターン」を選択し、「パターンの追加」をクリックします。

    2. 「ソース・パターンの追加」パネルで、名前がDISCOUNT_で始まるソース属性のグループを選択するためのパターンを追加します。たとえば、DISCOUNT*と入力し、「追加」をクリックします。次に、データ型を選択します。

    3. 「ターゲット属性」で、結果出力の属性名のパターンを使用します。

      デフォルトでは、パターン%MACRO_INPUT%_%PIVOT_KEY_VALUE%がすでに挿入されています。%MACRO_INPUT%は、追加したパターンで選択されるソース属性の名前に対応します。%PIVOT_KEY_VALUE%は、ピボット・キーの選択された値に対応します。

      たとえば、%PIVOT_KEY_VALUE%がTELEVISIONを示し、%MACRO_INPUT%がDISCOUNT_VALUEおよびDISCOUNT_RATEを示す場合、出力のピボット済属性は<pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION<pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISIONになります。

    4. 「ソース属性データ型の使用」の選択は保持できます。それ以外の場合は、「式データ型」「データ型」を選択し、選択した型に対応するフィールドに入力します。
  4. 「バルク選択の許可」を選択しなかった場合は、「ターゲット属性」で、結果出力の属性名のためにパターンを使用します。

    デフォルトでは、パターン%PIVOT_KEY_VALUE%がすでに挿入されています。%PIVOT_KEY_VALUE%は、ピボット・キーの選択された値に対応します。

    たとえば、%PIVOT_KEY_VALUE%がTELEVISIONとTELEPHONEを示す場合、出力のピボット済属性は<pivot_name>.<expression_name>.TELEVISIONおよび<pivot_name>.<expression_name>.TELEPHONEになります。

    「式データ型」「データ型」を選択し、選択した型に対応するフィールドに入力します。

  5. 「式ビルダー」セクションで、受信属性、パラメータおよび集計関数をダブルクリックするかドラッグ・アンド・ドロップしてエディタに追加し、式を作成します。式を手動で記述して検証することもできます。

    次の表に、ピボット式の作成に使用できる集計関数のリストを示します。

    関数説明
    COUNT(value[, value]*)指定された1つ以上の式がすべてnullでない行の数を返します。COUNT(expr1)
    COUNT(*)取得された行の合計数(nullのある行を含む)を返します。COUNT(*)
    MAX(value)引数の最大値を返します。MAX(expr)
    MIN(value)引数の最小値を返します。MIN(expr)
    SUM(numeric)グループの値から計算された合計を返します。SUM(expr1)

    ピボット式でhigher-order (transform)関数を使用することもできます。

  6. ピボット式を作成するには、属性(1つまたは複数)と集計関数を指定します。

    • 「バルク選択の許可」を選択した場合は、式で%MACRO_INPUT%を使用して、関数を適用する属性を指定します。

      たとえば、ソース属性DISCOUNT_RATEおよびDISCOUNT_VALUEと一致するパターンDISCOUNT*を使用した場合は、SUM(numeric)などの集計関数を指定して、パターンと一致するすべての属性にこの関数を適用できます。%MACRO_INPUT%によってこの関数のnumericプレースホルダを置き換えます:

      SUM(%MACRO_INPUT%)
    • 「バルク選択の許可」を選択しなかった場合は、関数に属性を指定します。

      たとえば、データ・エンティティがPRODUCT_SALESで、SALES属性に対して集計SUM関数を使用します。SUM(numeric)のような関数を指定して、関数のnumericプレースホルダを属性名で置き換えることができます:

      SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
    • ピボット式の集計関数名には式パラメータを使用できます。式パラメータには、名前、タイプおよびデフォルト値があります。

      たとえば、式パラメータP_VARCHARのデフォルト値は型VARCHARおよびMINです。次のように集計関数を指定できます:

      $P_VARCHAR(%MACRO_INPUT%)
      $P_VARCHAR(PIVOT_1_1.PRODUCT_SALES.SALES)
  7. 「式の追加」パネルで「追加」をクリックします。

ルックアップ演算子

ルックアップ演算子は、ルックアップ条件および2つのソース(プライマリ入力ソースとルックアップ入力ソース)からの入力を使用して、問合せと変換を実行します。

問合せ操作では、条件とプライマリ入力の値を使用して、ルックアップ・ソース内で行を探します。変換は、ルックアップ・ソースの属性をプライマリ・ソースに追加します。

ルックアップ問合せによって複数の行が返される場合や行が返されない場合に実行するアクションを指定できます。たとえば、不一致の行をスキップし、複数の一致行があるときは一致する行を1つ返すようにアクションを指定できます。

結果出力では、ルックアップ条件、プライマリ入力の値および実行する優先アクションに基づいて、両方の入力ソースが組み合されます。プライマリ入力によって出力内の属性と行の順序が決まります。プライマリ入力の属性がルックアップ入力の属性より前に配置されます。

ルックアップの例

データ・フロー内にある2つのソース・データ・エンティティを考えてみます。データ・エンティティ1 (PAYMENTS)はプライマリ入力として設定されています。データ・エンティティ2 (CUSTOMERS)はルックアップ入力として設定されています。ルックアップ条件は次のように設定されています:

LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID

結果のルックアップ出力は、2つの入力からのデータをどのように結合および変換するかを示します。ルックアップ・ソースからの属性は、次の動作でプライマリ・ソース属性に追加されます:

  • ルックアップ・ソース内で値と一致するレコードが見つからない場合、ルックアップ属性にnullが挿入されたレコードが返されます。たとえば、CUSTOMER_ID値103、104および105に一致するレコードが見つからなかったとします。この場合、結果の出力では、追加された属性CUSTOMER_IDおよびNAMEにnullが移入されます。
  • ルックアップ・ソース内で値と一致するレコードが複数見つかった場合は、一致するレコードが1つ返されます。
データ・エンティティ1、プライマリ入力ソース
PAYMENT_IDCUSTOMER_IDAMOUNT
11012500
21021110
3103500
4104400
5105150
6102450
データ・エンティティ2、ルックアップ入力ソース
CUSTOMER_IDNAME
101Peter
102Paul
106Mary
102Pauline
ルックアップ出力
PAYMENT_IDCUSTOMER_IDAMOUNTCUSTOMER_IDNAME
11012500101Peter
21021110102Paul
3103500nullnull
4104400nullnull
5105150nullnull
6102450102Paul
ルックアップ演算子の追加および構成

ルックアップ演算子は、データ・フローで2つの入力ソースを使用します。

次の手順では、2つのソース演算子が追加および構成されていることを想定しています。

  1. 「演算子」パネルから、ルックアップ演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. ルックアップ演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. 「プライマリ入力」で、ルックアップ・ソースの1つ以上の行と照合する値を含むソースを選択します。照合は、ステップ5で作成したルックアップ条件に基づいて行われます。
    プライマリ入力によって、結果のルックアップ出力における属性と行の順序も決まります。
  4. 「ルックアップ入力」で、1つ以上の行を照合するためにプライマリ・ソースが参照するソースを選択します。
    ルックアップ入力からの属性は、結果の出力のプライマリ入力属性に追加されます。
  5. 「複数一致」で、プライマリ・ソースとルックアップ・ソースの間で一致する行が複数見つかった場合に実行するアクションを選択します。選択したアクションによって、結果出力で使用する行が決まります。
    • 一致する行を1行返す: デフォルト・アクション。任意の一致行が選択されます。
    • 最初の一致行を返す: 一致行のうち最初の行が選択されます。
    • 最後の一致行を返す: 一致行のうち最後の行が選択されます。
    • エラーを返す: エラーが表示されます。操作は完了しません。
    • 一致する行をすべて返す: すべての一致行が選択されます。
  6. 「一致なし」で、プライマリ・ソースとルックアップ・ソースの間で一致する行が見つからない場合に実行するアクションを選択します。選択したアクションによって、ルックアップ・ソースの行と一致しないプライマリ・ソース行の処理方法が決まります。
    • 一致しない行をスキップ: 一致しない行は結果出力に含まれません。
    • 一致しない行を返す: デフォルト・アクション。一致しない行がnull値とともに結果出力に含まれます。
  7. 「ルックアップ条件」の横にある「作成」をクリックします。
    1. 「ルックアップ条件の作成」パネルの「条件ビルダー」セクションで、属性、パラメータおよび関数をダブルクリックするかドラッグ・アンド・ドロップしてエディタに追加し、条件を作成できます。エディタに条件式を手動で入力し、式を検証することもできます。
      ノート

      エディタでは、関数などの追加された要素にプレースホルダがある場合があります。プレースホルダを別の要素に置き換えるには、プレースホルダを強調表示して、リストから別の要素をダブルクリックします。
    2. 「作成」をクリックします。
  8. (オプション)「パラメータの割当て」をクリックしてパラメータを使用します。こうすることで、データ・フローの公開時にルックアップ条件がコンパイル済コードにバインドされません。パラメータの割当てを参照してください。
  9. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  10. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  11. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
ルックアップ条件の作成

条件ビルダーを使用して要素を視覚的に選択し、ルックアップ条件を作成します。エディタで条件を手動入力することもできます。

ルックアップ条件を使用すると、プライマリ入力ソースの値を使用してルックアップ入力ソースのレコードをルックアップし、一致する行を返すことができます。一致のない行は、null値とともに返されます。

ルックアップ条件で使用できる要素には、受信属性、パラメータおよび関数があります。要素をダブルクリックするか、リストからドラッグ・アンド・ドロップするかしてエディタに追加し、条件を作成できます。条件は作成する前に検証できます。

「受信」には、2つの個別のLOOKUPフォルダ内にアップストリーム入力ポートからの属性が表示されます。各ポートからの属性を表示するには、該当するLOOKUPフォルダを展開または縮小します。たとえば、LOOKUP_1_1がプライマリ入力、LOOKUP_1_2がルックアップ入力の場合、プライマリ入力属性ADDRESS_IDの値に基づくルックアップ条件は:

LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = '2001'
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID

パラメータは、条件ビルダー(フィルタ演算子、結合演算子、ルックアップ演算子および分割演算子)または式ビルダー(式演算子および集計演算子)を使用してデータ・フローに追加された式パラメータです。式パラメータには、名前、タイプおよびデフォルト値があります。式パラメータの追加を参照してください。

特定の銀行の銀行顧客をルックアップするとします。P_LOOK_UPという名前のVARCHARパラメータを作成し、デフォルト値を特定の銀行値である2001に設定できます。その後、次のようにルックアップ条件を作成できます:

LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID AND LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = $P_LOOK_UP

ファンクションデータ統合で使用可能な関数で、条件の中で使用できます。ファンクションは、関数に渡される引数に対して実行される操作です。ファンクションは、引数からデータ値を計算、操作または抽出します。

条件の作成時に追加できる関数のリストを次に示します:

ハッシュ関数
関数説明
MD5(all data types)データ型のMD5チェックサムを計算し、文字列値を返します。 MD5(column_name)
SHA1(all data types)データ型のSHA-1ハッシュ値を計算し、文字列値を返します。 SHA1(column_name)
SHA2(all data types, bitLength)データ型のSHA-2ハッシュ値を計算し、文字列値を返します。bitLengthは整数です。 SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512)
ORA_HASH(expr, [max_bucket], [seed_value])

exprのハッシュ値を計算し、NUMBER値を返します。

exprには、式、列、リテラルを指定できます。

max_bucketは、0から4294967295 (デフォルト)までの返された最大バケット値です。

seed_valueは、0 (デフォルト)から4294967295までの値です。

Oracleは、ハッシュ関数をexprseed_valueの組合せに適用して、同じデータ・セットに対して様々な結果を生成します。

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

算術関数
関数説明
ABS(numeric)numeric値の絶対乗を返します。ABS(-1)
CEIL(numeric)numeric値を超えない最小の整数を返しますCEIL(-1,2)
FLOOR(numeric)numeric値を超えない最大の整数を返します。FLOOR(-1,2)
MOD(numeric1, numeric2)numeric1numeric2で除算した後の剰余を返します。MOD(8,2)
POWER(numeric1, numeric2)numeric1numeric2で累乗します。POWER(2,3)
ROUND(numeric1, numeric2)numeric1を小数点以下numeric2桁に丸めて返します。ROUND(2.5,0)
TRUNC(numeric1, numeric2)numeric1を小数点以下numeric2桁に切り捨てて返します。TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])指定されたformatおよびlocale(オプション)に基づいて、exprを数値に変換します。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされるフォーマット・パターン:

  • 0: 数字
  • #: 数字。ゼロは存在しないことを示します
  • .: 小数点セパレータのプレースホルダ
  • ,: グループ化セパレータのプレースホルダ
  • E: 指数フォーマットの仮数と指数を区切ります
  • -: デフォルトの否定接頭辞
  • ¤: 通貨シンボルで置換される通貨記号。二重の場合、国際通貨記号で置換されます。パターン内に存在する場合は、小数点セパレータのかわりに通貨小数点セパレータが使用されます。

TO_NUMBER('5467.12')5467.12を返します

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US')-45677.7を返します

日付と時間関数
関数 説明
CURRENT_DATE 現在の日付を返します。 CURRENT_DATEは、2023-05-26などの今日の日付を返します
CURRENT_TIMESTAMP セッション・タイムゾーンに対する現在の日付と時刻を返します。 CURRENT_TIMESTAMPは、今日の日付と現在の時刻(2023-05-26 12:34:56など)を返します
DATE_ADD(date, number_of_days) 指定したdateからnumber日後の日付を返します。 DATE_ADD('2017-07-30', 1)2017-07-31を返します
DATE_FORMAT(expr, format[, locale])

指定されたformatおよびlocale(オプション)に基づいて、日付のexprをフォーマットします。デフォルトのロケールはen-USです。サポートされる言語タグ

サポートされる日付フォーマット・パターン:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd')'2020-10-11'を返します。最初の引数は、2020年10月11日を表すDateオブジェクトです。

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES')'2018/junio/17'を返します

DAYOFMONTH(date) 特定の日(月間)を返します。 DAYOFMONTH('2020-12-25')25を返します。
DAYOFWEEK(date) 特定の日(週間)を返します。 DAYOFWEEK('2020-12-25')は、金曜日の6を返します。米国では、日曜日は1、月曜日は2などとみなされます。
DAYOFYEAR(date) 特定の日(年間)を返します。 DAYOFYEAR('2020-12-25')360を返します
WEEKOFYEAR(date) 日付が年内の何番目の週かを返します。

WEEKOFYEAR('2022-07-28')30を返します

WEEKOFYEAR('2022-07-28 13:24:30')30を返します

HOUR(datetime) 日時の時間の値を返します。 HOUR('2020-12-25 15:10:30')15を返します
LAST_DAY(date) 月末の日付を返します。 LAST_DAY('2020-12-25')31を返します
MINUTE(datetime) 日時の分の値を返します。 HOUR('2020-12-25 15:10:30')10を返します
MONTH(date) 日付の月の値を返します。 MONTH('2020-06-25')6を返します。
QUARTER(date) 日付が属する四半期を返します。 QUARTER('2020-12-25')4を返します。
SECOND(datetime) 日時の秒の値を返します。 SECOND('2020-12-25 15:10:30')30を返します
TO_DATE(string, format_string[, localeStr]) format_string式を含む文字列式を日付に解析します。ロケールはオプションです。デフォルトはen-USです。サポートされる言語タグ

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合は、大/小文字を区別する次のフォーマット文字列がサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

TO_DATE('31 December 2016', 'dd MMMM yyyy')は、日付値2016-12-31を返します

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES')は、日付値2018-06-17を返します

TO_TIMESTAMP(expr, format_string[, localeStr]) 指定されたformat_stringおよびlocaleStr(オプション)に基づいて、VARCHARのexprをTIMESTAMPの値に変換します。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次のフォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss')は、11am 10:10 Oct 11th, 2020を表すTIMESTAMPオブジェクトを返します
WEEK(date)

日付の週の値を返します。

WEEK('2020-06-25')4を返します
YEAR(date) 日付の年の値を返します。 YEAR('2020-06-25') returns 2020
ADD_MONTHS(date_expr, number_months) 指定した日付、タイムスタンプまたは文字列(yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマット)に指定した数の月を追加した日付を返します。

ADD_MONTHS('2017-07-30', 1)2017-08-30を返します

ADD_MONTHS('2017-07-30 09:07:21', 1)2017-08-30を返します

MONTHS_BETWEEN(start_date_expr, end_date_expr)

start_date_exprend_date_exprの間の月数を返します。start_date_exprend_date_exprには、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの日付、タイムスタンプまたは文字列を指定できます

整数が返されるのは、両方の日付の日の部分が同じ場合、または両方が月の最終日の場合です。それ以外の場合は、1か月を31日として差が計算されます。

MONTHS_BETWEEN('2022-01-01', '2022-01-31')は1を返します

MONTHS_BETWEEN('2022-07-28', '2020-07-25')は24を返します

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30')は24を返します

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

日付、タイムスタンプまたは文字列をUTC時間として解釈し、その時間を指定したタイムゾーンのタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 03:40:00.0を返します
TO_UTC_TIMESTAMP(time_stamp, time_zone)

指定したタイムゾーンの日付、タイムスタンプまたは文字列をUTCタイムスタンプに変換します。

文字列の場合は、yyyy-MM-ddまたは yyyy-MM-dd HH:mm:ss.SSSのようなフォーマットを使用します

タイム・ゾーンのフォーマットは、リージョンベースのゾーンID(例: 'Asia/Seoul'のような'area/city')またはタイム・ゾーン・オフセット(例: UTC+02)のいずれかです。

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1')2017-07-14 01:40:00.0を返します
FROM_UNIXTIME(unix_time[, fmt])

指定したUnix時間すなわちエポックを、現在のシステム・タイム・ゾーンおよび指定したフォーマットで、その時点のタイムスタンプを表す文字列に変換します。

ノート: Unix時間とは、1970年1月1日00:00:00 UTCから経過した秒数です。

fmtを省略した場合、デフォルトのフォーマットはyyyy-MM-dd HH:mm:ssです

FROM_UNIXTIME(1255033470)'2009-10-08 13:24:30'を返します

FROM_UNIXTIME(1637258854)'2021-11-18 10:07:34'を返します

例のデフォルトのタイムゾーンはPSTです

UNIX_TIMESTAMP([time_expr[, fmt]])

現在時刻または指定した時刻をUnixタイムスタンプ(秒単位)に変換します。

time_exprは、yyyy-MM-ddまたはyyyy-MM-dd HH:mm:ss.SSSのようなフォーマットの、日付、タイムスタンプまたは文字列です

time_exprを指定しないと、現在時刻が変換されます。

time_exprが文字列で、fmtを省略した場合、デフォルトはyyyy-MM-dd HH:mm:ssです

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')28800を返します

この例のデフォルトのタイムゾーンはPSTです

INTERVAL 'year' YEAR[(year_precision)]

期間を年単位で返します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '1' YEARは1年の期間を返します

INTERVAL '200' YEAR(3)は200年の期間を返します

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

期間を年と月の単位で返します。yearおよびmonthフィールドを使用して期間を格納するために使用します。

year_precisionyearフィールドの桁数で、範囲は0から9です。year_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '100-5' YEAR(3) TO MONTHは100年と5か月の期間を返します。先頭の年の精度として3を指定する必要があります。
INTERVAL 'month' MONTH[(month_precision)]

期間を月単位で返します。

month_precisionmonthフィールドの桁数で、範囲は0から9です。month_precisionを省略した場合、デフォルトは2です(100年未満である必要があります)。

INTERVAL '200' MONTH(3)は200か月の期間を返します。月の精度として3を指定する必要があります。
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

日、時、分、秒で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '11 10:09:08.555' DAY TO SECOND(3)は、11日10時間9分8秒555ミリ秒の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

日、時、分で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '11 10:09' DAY TO MINUTEは、11日10時間9分の期間を返します
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

日数と時間数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '100 10' DAY(3) TO HOURは、100日10時間の期間を返します
INTERVAL 'day' DAY[(day_precision)]

日数で期間を返します。

day_precisiondayフィールドの桁数で、範囲は0から9です。デフォルトは2です。

INTERVAL '999' DAY(3)は999日の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

時、分、秒で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7)は、9時間8分7.6666666秒の期間を返します
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

時間と分数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '09:30' HOUR TO MINUTEは、9時間30分の期間を返します
INTERVAL 'hour' HOUR[(hour_precision)]

時間数で期間を返します。

hour_precisionhourフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '40' HOURは40時間の期間を返します
INTERVAL 'minute' MINUTE[(minute_precision)]

分数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

INTERVAL '15' MINUTEは15分間の期間を返します
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

分数と秒数で期間を返します。

minute_precisionminuteフィールドの桁数で、範囲は0から2です。デフォルトは2です。

fractional_seconds_precisionは、timeフィールドの秒の値の分数部分の桁数であり、範囲は0から9です。

INTERVAL '15:30' MINUTE TO SECONDは15分30秒の期間を返します
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

秒数で期間を返します。

fractional_seconds_precisionは、secondフィールドの分数部分の桁数であり、範囲は0から9です。デフォルトは3です。

INTERVAL '15.678' SECONDは15.678秒の期間を返します
分析関数
関数 説明
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) ウィンドウ・フレームの最初の行である行で評価された値を返します。 FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最初の値を返します。
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より前のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC)は、BANK_IDでパーティション化し、BANK_NAMEの降順にしたときの、現在行より2行前のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) ウィンドウ・フレームの最後の行である行で評価された値を返します。 LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)は、現在行とその行の後の1行の間にある行を計算し、BANK_IDでパーティション化し、BANK_NAMEで昇順にしたときの、ウィンドウ内のBANK_IDの最後の値を返します。
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) パーティション内の現在行より後のオフセット行である行で評価された値を返します。そのような行がない場合は、デフォルト値が返されます。現在の行に基づいて、オフセットとデフォルトの両方が評価されます。省略した場合、オフセットは1に設定され、デフォルトはNULLに設定されます。 LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDでパーティション化し、BANK_NAMEの昇順にしたときの、現在行より2行後のBANK_IDの値を返します。そのような値がない場合は、helloが返されます。
RANK() OVER([ partition_clause ] order_by_clause) ギャップを含む現在行のランクを返します(1からカウント)。 RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行のランクをBANK_NAMEの昇順で返します。
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) パーティション内の現在行の一意の番号を返します(1からカウント)。 ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME)は、BANK_IDのパーティション・グループ内の各行の一意の行番号をBANK_NAMEの昇順で返します。
文字列関数
関数説明
CAST(value AS type)指定されたタイプの指定された値を返します。CAST("10" AS INT)10を返します
CONCAT(string, string)文字列または列を結合した値を返しますCONCAT('Oracle','SQL')OracleSQLを返します
CONCAT_WS(separator, expression1, expression2, expression3,...) 指定したセパレータを使用して、文字列または列を結合した値を文字列または列間で返します。

区切り記号は必須であり、文字列である必要があります。

セパレータの後に少なくとも1つの式を指定する必要があります。たとえば: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle')Hello-Oracleを返します

CONCAT_WS(' ', address, city, postal_code)123 MyCity 987654を返します

関数の子が配列である場合、配列はフラット化されます。

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9)1,2,3,4,5,6,7,8,9を返します

INITCAP(string)各単語の最初の文字を大文字、残りの文字をすべて小文字にした文字列を、単語どうしを空白で区切って返します。INITCAP('oRACLE sql')Oracle Sqlを返します
INSTR(string, substring[start_position])stringで最初に出現するsubstringの(1から始まる)索引を返しますINSTR('OracleSQL', 'SQL')7を返します
LOWER(string)すべての文字を小文字に変更して文字列を返します。LOWER('ORACLE')oracleを返します
LENGTH(string)文字列の文字長またはバイナリ・データのバイト数を返します。文字列の長さには末尾のスペースも含まれます。LENGTH('Oracle')6を返します
LTRIM(string)先頭のスペースを左から除去して文字列を返します。LTRIM(' Oracle')
NVL(expr1, epxr2)nullでない引数を返します。NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])入力文字列から正規表現パターンに一致する文字列を検索して抽出します。オプションのキャプチャ・グループ索引が指定されている場合、この関数は特定のグループを抽出します。

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?')https://www.oracle.comを返します

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1)22を返します
REPLACE(string, search, replacement)出現するすべてのsearchreplacementに置換します。

文字列にsearchが見つからない場合、stringがそのまま返されます。

replacementが指定されていない場合、または空の文字列の場合、stringから削除されるsearchは何にも置換されません。

REPLACE('ABCabc', 'abc', 'DEF')ABCDEFを返します
RTRIM(string)先頭のスペースを右から除去して文字列を返します。RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])位置から始まる部分文字列を返します。 SUBSTRING('Oracle SQL' FROM 2 FOR 3)racを返します
数値の場合、TO_CHAR(expr)および日付の場合、TO_CHAR(expr, format[, locale])数字と日付を文字列に変換します。数値の場合、書式は必要ありません。日付の場合は、「日時関数」で説明されているDATE_FORMATと同じ形式を使用します。デフォルトのロケールはen-USです。「サポートされている言語タグ」を参照してください。

パイプライン式では、format_stringstrftimeフォーマット・コードを使用する必要があります。それ以外の場合、次の日付フォーマット・パターンがサポートされます:

  • yy: 2桁の年
  • yyyy: 4桁の年
  • M: 月番号(例: 1月は1)
  • MM: 月番号(例: 1月は01)
  • MMM: 月の略称(例: Jan)
  • MMMM: 月の完全名(例: January)
  • d: 該当月の日を表す数字(例: 6月1日は1)
  • dd: 該当月の日を表す数字(例: 6月1日は01)
  • DDD: 001から366までの年の日(1月2日の場合は002など)
  • F: 月の曜日(6月の第3月曜日の場合は3など)の数値。
  • EEEまたはE: 曜日の略称(例: 日曜日はSun)
  • EEEE: 曜日の名前(例: 日曜日)
  • HH: 24時間フォーマット(00から23まで)
  • H: 24時間フォーマット(0から23まで)
  • hh: 12時間フォーマット(01から12まで)
  • h: 12時間フォーマット(1から12まで)
  • mm: 分(00から59まで)
  • ss: 秒(00から59まで)
  • SSS: 000から999までのミリ秒
  • a: AMまたはPM
  • z: PDTなどのタイムゾーン

数値の例: TO_CHAR(123)123を返します

日付の例: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US')は文字列2020.10.30を返します。最初の引数は、2020年10月30日を表すDateオブジェクトです。

UPPER(string)すべての文字を大文字に変更して文字列を返します。UPPER('oracle')ORACLEを返します
LPAD(str, len[, pad])文字列の左側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。LPAD('ABC', 5, '*')'**ABC'を返します
RPAD(str, len[, pad])文字列の右側に指定した文字を特定の長さまで埋め込んで返します。pad文字を省略した場合、デフォルトは空白です。RPAD('XYZ', 6, '+' )は'XYZ+++'を返します
演算子(比較)関数
関数説明
CASE WHEN condition1 THEN result1 ELSE result2 END条件を満たす値を返します。CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' ENDは、1> 0の場合はABCを返し、それ以外の場合はXYZを返します
AND論理AND演算子。両方のオペランドがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 AND y = 20)は、xが10でyが20の場合、trueを返します。いずれか一方がtrueでない場合は、falseを返します
OR論理OR演算子。いずれかのオペランドがtrueであるか、両方ともtrueである場合はtrueを返し、それ以外の場合はfalseを返します。(x = 10 OR y = 20)は、xが10ではなく、かつyが20でない場合、falseを返します。いずれか一方がtrueの場合は、trueを返します
NOT論理NOT演算子。
LIKEstring1がstring2のパターンに一致するかどうかにかかわらず、文字列パターン・マッチングを実行します。
=等価かどうかをテストします。expr1がexpr2と等しい場合はtrueを返し、それ以外の場合はfalseを返します。x = 10は、xの値が10の場合はtrueを返し、それ以外の場合はfalseを返します
!=非等価かどうかをテストします。expr1がexpr2と等しくない場合はtrueを返し、それ以外の場合はfalseを返します。x != 10は、xの値が10の場合はfalseを返し、それ以外の場合はtrueを返します
>式の大なりをテストします。expr1がexpr2より大きい場合は、trueを返します。x > 10は、xの値が10より大きい場合はtrueを返し、それ以外の場合はfalseを返します
>=式の大なりイコールをテストします。expr1がexpr2以上の場合は、trueを返します。x > =10は、xの値が10以上の場合はtrueを返し、それ以外の場合はfalseを返します
<式の小なりをテストします。expr1がexpr2より小さい場合は、trueを返します。x < 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
<=式の小なりイコールをテストします。expr1がexpr2以下の場合は、trueを返します。x <= 10は、xの値が10より小さい場合はtrueを返し、それ以外の場合はfalseを返します
||2つの文字列を連結します。'XYZ' || 'hello''XYZhello'を返します
BETWEEN範囲を評価します。FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
IN式が値リストと一致するかどうかをテストします。FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
一意ID関数
関数説明
NUMERIC_ID()各行に対して64ビットの数値の汎用一意識別子を生成します。NUMERIC_ID()は、たとえば3458761969522180096および3458762008176885761を返します
ROWID()単調に増加する64ビット数を生成します。ROWID()は、たとえば、012などを返します
UUID()各行に対して128ビットの文字列の汎用一意識別子を生成します。UUID()は、たとえば20d45c2f-0d56-4356-8910-162f4f40fb6dを返します
MONOTONICALLY_INCREASING_ID() 単調に増加する一意の64ビット整数を生成します。連続した数字にはなりません。 MONOTONICALLY_INCREASING_ID()は、たとえば、858993459225769803776を返します
条件付き関数
関数説明
COALESCE(value, value [, value]*)存在する場合は最初のnullでない引数を返し、それ以外の場合はnullを返します。COALESCE(NULL, 1, NULL)1を返します
NULLIF(value, value)2つの値が等しい場合はnullを返し、それ以外の場合は最初の値を返します。NULLIF('ABC','XYZ')ABCを返します
階層関数
関数説明
SCHEMA_OF_JSON(string)JSON文字列を解析し、スキーマのDDLフォーマットを推測します。

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]')'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'を返します

SCHEMA_OF_JSON('[{\"col\":0}]')'ARRAY<STRUCT<col: BIGINT>>'を返します

FROM_JSON(column, string)

JSON文字列を含む列を解析し、指定スキーマを含む次のいずれかの型に解析します。

  • Map (キー・タイプがString)
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>')は、指定スキーマ{704, ORACLE CITY}のStruct型列を返します

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>')は、指定スキーマ{1, 0.8}のStruct型列を返します

TO_JSON(column)StructまたはStruct配列あるいはMapまたはMap配列の型を含む列をJSON文字列に変換します。TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value')))はJSON文字列{"s1":[1,2,3],"s2":{"key":"value"}}を返します
TO_MAP(string,column[,string,column]*)Map型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。入力キー列をNULLにすることはできません。すべて同じデータ型である必要があります。入力値列はすべて同じデータ型である必要があります。

TO_MAP('Ename',Expression_1.attribute1)は、Map型の列{"ENAME" -> 100}を返します

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit)は、Map型の列{"block" -> 1,"unit" -> 1}を返します

TO_STRUCT(string,column[,string,column]*)Struct型の新しい列を作成します。入力列は、キーと値のペアとしてグループ化する必要があります。

TO_STRUCT('Ename',Expression_1.attribute1){100}を返します

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2){100, "John"}を返します

TO_ARRAY(column[,column]*)Array型の新しい列を作成します。入力列はすべて同じデータ型である必要があります。

TO_Array(Expression_1.attribute1)[100]を返します

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3)["John","Friend"]を返します

高順序関数

式および階層データ型の作成をサポートするデータ・フロー演算子では、上位の関数を使用できます。

サポートされている演算子は次のとおりです:

  • 集計

  • フィルタ

  • 結合

  • 検索

  • 分割済

  • ピボット

関数説明
TRANSFORM(column, lambda_function)配列と無名関数を取得し、各要素に関数を適用して結果を出力配列に割り当てることによって、新しい配列を設定します。整数[1, 2, 3]の入力配列の場合、TRANSFORM(array, x -> x + 1)[2, 3, 4]の新しい配列を返します。
TRANSFORM_KEYS(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、キーがラムダ関数の結果のタイプを持ち、値が列マップ値のタイプを持つマップを返します。整数キーおよび文字列値が{1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}の入力マップの場合、TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1){3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}の新しいマップを返します。
TRANSFORM_VALUES(column, lambda_function)2つの引数(キーと値)を持つマップと関数を取得し、値がラムダ関数の結果のタイプを持ち、キーが列マップ・キーのタイプを持つマップを返します。 文字列キーおよび文字列値が{'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}の入力マップの場合、TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v){'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}の新しいマップを返します。
ARRAY_SORT(array(...), lambda_function)

式演算子のみがARRAY_SORTをサポートします。

配列を取得し、2つの引数を取る指定された関数に従ってソートします。

この関数は、最初のエレメントが2番目のエレメントより小さいか、等しいか、または大きいかに応じて-1、0、または1を返す必要があります。

関数を省略すると、配列は昇順にソートされます。

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

返される配列は次のとおりです。

[1,5,6]

ファンクション演算子

ファンクション演算子を使用して、データ統合内からOracle Cloud Infrastructureファンクションを呼び出します。

ノート

Map、ArrayおよびComposite (Struct)などの複雑なデータ構造では、JSONシリアライズ形式のみが現在サポートされています。

データ統合のデータ・フロー内からOCI関数を使用する前に、依存関係を理解し、前提条件のタスクを完了していることを確認してください。

開始する前に

呼び出そうとするファンクションをOCIファンクションにデプロイする必要があります。このファンクションは任意の言語で記述できます。

次のタスク・チェックリストを使用して、ファンクション演算子をOCIファンクションとともに使用するために必要な設定および情報があることを確認します。

タスク要件
OCI Functionsの使用とアクセスのための設定

このトピックでは、テナンシおよび開発環境が、OCIファンクションにファンクションをデプロイできるようにすでに設定されていることを前提としています。

ファンクションの準備を参照してください。

データ統合では、OCIファンクションにデプロイされているファンクションのみを使用できます。

ファンクションの呼出しおよび管理を制御するポリシーを作成します。

このトピックでは、ユーザーまたはテナンシ管理者が、必要なOracle Cloud Infrastructureポリシーをすでに作成していることを前提としています。ネットワークおよびファンクション関連リソースへのアクセスを制御するポリシーの作成を参照してください。

本番環境では、場合によっては、特定のアプリケーションでファンクションを呼び出すように、または特定のファンクションのみを呼び出すようにユーザーを制限する必要があります。

たとえば、特定のワークスペースでファンクションを呼び出すようにユーザーを制限するには、次の形式でポリシー・ステートメントを入力します:

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

ワークスペースで特定の関数を呼び出すようにユーザーを制限するには:

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

ファンクションを呼び出して管理するためのアクセス権の制御を参照してください

OCI Functionsでアプリケーションを作成します。

アプリケーションは、ファンクションの論理グループです。

アプリケーションには、ファンクションを実行するサブネットを1つから3つまで指定します。あるアプリケーションで実行されているファンクションは、別のアプリケーションで実行されているファンクションから分離されます。

「アプリケーションの作成(関数内)」を参照してください。

OCI Functionsへの関数のデプロイ

OCI Functionsのファンクションがデータ・フローのデータ統合ファンクション演算子と連携するためには、このファンクションは空白文字を含む識別子の読取りまたは書込みを行わない必要があります。

Fn Project CLIを使用してOCI関数にデプロイする場合、その関数はDockerイメージとして作成され、指定されたDockerレジストリにプッシュされます。

ファンクションの作成およびデプロイを参照してください

デプロイされたファンクションをファンクション演算子で使用するために必要な情報を収集します。

データ統合データ・フローでファンクション演算子を追加して構成する際に、次を把握している必要があります:

  • OCI Functionsアプリケーションが含まれるコンパートメント(使用するファンクションのデプロイ先)
  • デプロイしたファンクションが含まれるOCIファンクション内のアプリケーション
  • デプロイしたファンクションの名前
  • ファンクションに定義されたフィールド
ファンクション演算子の追加および構成

ファンクション演算子を使用すると、OCIファンクションにデプロイされたファンクションを使用して、入力ソースのデータを処理できます。プリミティブ・データ型および複合データ型がサポートされています。

ファンクションの入力シェイプと、読取りと書込みを行うファンクション演算子の入力属性および出力属性を指定します。次に、手動でソース属性を入力属性にマップします。

現在、JSONシリアライズ形式のみが、Map、ArrayおよびComposite (Struct)などの複雑なデータ構造ではサポートされています。

次の手順では、ファンクションで使用するデータ・エンティティに対して、ソース演算子を追加して構成したことを前提としています。

  1. 「演算子」パネルから、ファンクション演算子をキャンバスにドラッグ・アンド・ドロップします。
  2. ファンクション演算子にフォーカスがある状態で、「プロパティ」パネルの「詳細」タブの「識別子」フィールドに名前を入力するか、名前をそのままにします
  3. この演算子で使用するOCIファンクションを選択します。ファンクションの選択を参照してください。
  4. 「シリアライズ形式」を選択し、ファンクションの入力データおよび出力データを定義します。
  5. 演算子の「入力属性」および「出力属性」の値と、ファンクションの「ファンクション構成」の値を指定します。ファンクション演算子プロパティの追加を参照してください。

    「入力属性」は、ファンクション演算子の入力シェイプを定義します。これは、ファンクションが処理する1つ以上の受信属性です。入力属性は、データ・エンティティ・ソースからの受信属性にマップされます。

    「ファンクション構成」の値は、ファンクションの入力シェイプを定義します。これは、ファンクションに定義された1つ以上のフィールドです。ファンクション・フィールドを名前と値で定義します。フィールドの値は入力属性と一致します。ファンクション構成値はパラメータ化できます。

    「出力属性」は、ファンクション演算子の出力シェイプを定義します。これは、ファンクションが出力を書き込む先の1つ以上の属性です。出力に必要なファンクション・フィールドごとに出力属性を追加します。後続のダウンストリーム演算子が、出力属性を使用できます。

    ノート

    入力属性、出力属性または関数フィールドの識別子名に空白文字を使用しないでください。また、「要素」、「キー」、「値」などの名前は許可されません。
  6. (オプション)「ファンクション・プロパティ」で、「ファンクション構成」を展開してファンクション構成値を確認します。値を変更したりパラメータ化したりすることができます。

    BATCH_SIZEは、ファンクションが一度に処理する行数を表す事前定義済のファンクション構成です。デフォルトは10,000行です。

    ファンクション構成値について、次を行うことができます:

    • アクション・メニューの「編集」を選択して値を変更します。
    • 「パラメータの割当て」をクリックして、値にパラメータを使用します。パラメータの割当てを参照してください。
  7. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、名前パターン*_CODEおよびタイプnumericまたはvarcharでフィルタするには、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用します。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  8. 「マップ」タブで、データ・エンティティ・ソースの属性をファンクションの対応する入力属性にドラッグ・アンド・ドロップして、手動マッピングを作成します。
  9. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    ファンクション出力属性は、データ・セットに追加されます。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  10. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
ファンクションの選択

ファンクション演算子で使用するファンクションは、Oracle Cloud Infrastructureファンクションのアプリケーションにデプロイする必要があります。

  1. キャンバスで、ファンクション演算子を選択します。
  2. 「プロパティ」パネルの「詳細」タブで、「OCIファンクション」について「選択」をクリックします。
  3. パネルで、使用するファンクションがデプロイされているOCIファンクション・アプリケーションがあるコンパートメントを選択します。
  4. デプロイされたファンクションが含まれる、OCIファンクションのアプリケーションを選択します。
  5. 「OCIファンクション」セクションで、ファンクションを選択します。
  6. 「OK」をクリックします。
ファンクション演算子プロパティの追加

デプロイされたファンクションを選択したら、ファンクションが処理する入力データを定義するプロパティ、ファンクション構成のフィールド、およびファンクションが返す出力データを指定します。

ノート

入力属性、出力属性または関数フィールドの識別子名に空白文字を使用しないでください。また、「要素」、「キー」、「値」などの名前は許可されません。
  1. 「ファンクション・プロパティ」で、「プロパティの追加」をクリックします。
  2. パネルで、指定するプロパティの「タイプ」を選択します。
    • 入力属性: 演算子の入力シェイプ。ファンクションで処理する受信属性を表す1つ以上の属性を指定します。入力属性は、データ・エンティティ・ソースからの受信属性にマップされます。
    • ファンクション構成: ファンクションの入力シェイプを定義する1つ以上のファンクション・フィールドを指定します。フィールドには名前と値があります。フィールドの値によって入力属性が指定されます。
    • 出力属性: 演算子の出力シェイプ。データが処理された後のファンクションからの出力を表す0個以上の属性を指定します。出力に必要なファンクション・フィールドごとに出力属性を追加します。後続のダウンストリーム演算子が、出力属性を使用できます。
  3. 「識別子」フィールドにプロパティの名前を入力します。入力属性、出力属性または関数フィールドの名前に空白文字を使用しないでください。
  4. プロパティのデータ型を選択します。
  5. プリミティブ・データ型の場合は、指定するプロパティの「タイプ」および「データ型」に応じて、次のフィールドおよびその他の該当するフィールドを指定します。

    • 長さ: 入力属性または出力属性について長さを入力します。たとえば、numericまたはvarcharデータ型の長さを指定します。
    • : ファンクション・フィールドの場合は、入力属性と一致する値を入力します。
  6. Map複合データ型の場合は、マップ要素のキーと値のペアを指定します。「データ型の追加」をクリックして、キーのデータ型と値のデータ型を選択します。

    • キー: プリミティブ・データ型のみから選択します。
    • : プリミティブ・データ型と複合データ型から選択します。
  7. Array複合データ型の場合は、「データ型の追加」をクリックしてElementデータ型を指定します。プリミティブ・データ型と複合データ型から選択できます。

  8. Composite (Struct)データ型の場合は、スキーマの子(1つまたは複数)を指定します。スキーマの子を追加するには、親スキーマ名の横にある+記号をクリックします。

    スキーマの子の「フィールドの追加」パネルで、「識別子」に入力し、データ型を選択します。プリミティブ・データ型と複合データ型から選択できます。「追加」をクリックして、スキーマの子を追加します。

    複数のスキーマの子を親スキーマに追加する場合は、+記号を再度クリックします。

    スキーマの子を編集または削除するには、行の最後にあるアクション・メニューを使用します。

    親スキーマ要素は削除できません。

  9. 「プロパティの追加」パネルで「追加」をクリックします。
  10. ステップを繰り返して、ファンクション入力、ファンクション・フィールドおよびファンクション出力を定義するために必要なプロパティを追加します。

フラット化演算子

フラット化演算子を使用して、階層データを他のリレーショナル・データで使用するために簡略化された形式に変換します。フラット化プロセスは、非正規化またはネスト解除とも呼ばれます。

非正規化できる階層ファイル形式は次のとおりです。

  • JSONおよび複数行JSON
  • Avro
  • Parquet

現在、ネスト解除できるサポートされている階層データ型はArrayです。フラット化するために選択できる階層データ・セットの配列ノードは1つのみです。データ構造は、ルートから選択した配列ノードにフラット化され、簡略化された形式で表示されます。データ・セットに他の配列ノードがある場合は、それらを文字列に変換するオプションがあります。

「予測プリファレンス」を設定することで、フラット化された出力に含める属性またはフィールドを構成できます。

予測プリファレンスについて

予測プリファレンスは、受信データのフラット化後に出力に含める予測属性のフォーマット、数値およびタイプの設定です。

データ統合では、デフォルトで選択される4つのプロジェクト・プリファレンス設定が提供され、次のような出力が予測されます。

  • 索引配列
  • フラット化用に選択された属性までのすべての属性
  • 後続の配列にない属性のNull値
  • 属性名の親の名前の系統

構成できる投影プリファレンスを理解するには、次のトピックをJSONデータ構造の例とともに使用します。

JSONデータ構造の例
id
vehicle[]
    make
    model
    insurance{}
        company
        policy_number
    maintenance[]
        date
        description[]
        dealerdetails[]
            servicestation1[]
                dealeraddress[]
                    city
                    state
                    contact
                dealername
            servicestation2[]
                dealeraddress[]
                    city
                    state
                    contact
                dealername
配列索引の作成と予測

投影プリファレンス設定の「配列索引の作成およびプロジェクト」では、フラット化された出力に配列の索引属性を含めるかどうかを制御できます。

index属性は、配列の索引を表します。配列が["a","b","c"]で、aの索引が0で、bの索引が1で、cの索引が2であるとします。

デフォルトでは、データ統合によって、データのフラット化先として選択した配列ノードの接尾辞_INDEXを持つ属性が作成されます。配列索引属性のデータ型はIntegerです。

選択した配列ノードの親配列ノードに対しても索引属性が作成されます。フラット化操作は、ルートから選択したノードまでの階層構造内のすべての親配列ノードに影響します。影響を受ける親配列ノードに兄弟配列がある場合、それらの兄弟配列ノードに対して索引属性は作成されません。

JSONデータ構造の例では、フラット化のためにservicestation2の下にある配列dealeraddressを選択すると、データ統合によって5つの配列索引属性が作成されます。1つは選択した配列ノード用、4つはフラット化操作の影響を受ける親ノード用です。

フラット化後、簡易構造の属性は次のようになります。

id
vehicle_INDEX
vehicle_make
vehicle_model
vehicle_insurance
    company
    policy_number
vehicle_maintenance_INDEX
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation1
    dealeraddress
        city
        state
        contact
    dealername
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername

配列ノードは影響を受ける親ノードservicestation2の兄弟であるため、servicestation1の配列索引属性は作成されません。同様に、descriptionの索引属性は作成されません。これは、配列ノードが影響を受ける親ノードdealerdetailsの兄弟であるためです。

投影プリファレンス「配列索引の作成とプロジェクト」を選択しない場合、簡易構造の属性は次のようになります。

id
vehicle_make
vehicle_model
vehicle_insurance
    company
    policy_number
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_servicestation1
    dealeraddress
        city
        state
        contact
    dealername
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
フラット化された配列までのすべての属性を保持します

投影プリファレンス設定の「フラット化された配列までのすべての属性を保持」では、フラット化された配列の一部ではない属性をフラット化された出力に含めるかどうかを制御できます。

デフォルトでは、データ統合には、フラット化の影響を受けない兄弟配列を含め、ルートから選択した配列までのすべての属性が表示されます。

JSONデータ構造の例で、予測プリファレンス「フラット化された配列までのすべての属性を保持」を選択しない場合、簡易構造の属性は次のようになります。

id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
親配列の欠落に対してnull値を含む1つの行を生成します

投影プリファレンスの設定「欠落している親配列に対してNULL値を持つ単一行を生成」では、フラット化の影響を受ける属性を持たない行をスキップするかどうかを制御できます。

「欠落している親配列に対してNULL値を持つ単一行の生成」設定の効果は、「データ」タブにのみ表示されます。デフォルトでは、データ統合は、後続の配列にない属性のnull値を表示します。

たとえば、NULL値を含む予測出力は次のようになります。

|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
|Company3|Bellevue|null |true |[...]|0 |4 |123.34 |null |null |null |
|Company4|Kirkland|null |null |null |null |null |null |null |null |null |

このオプションを選択しない場合、行はスキップされ、予測される出力は次のようになります。

|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
属性名内の親の名前の系統を保持します

投影プリファレンス設定の「属性名に親の名前系統を保持」では、子属性名に親名を含めるかどうかを制御できます。

デフォルトでは、データ統合によって、親ノード名を持つ子ノード名が作成されます。

JSONデータ構造の例では、簡易構造内の親名を持つ属性は次のようになります(フラット化の影響を受けない兄弟配列が出力から除外される場合)。

id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact

投影プリファレンス「属性名に親の名前系統を保持」を選択しない場合、属性は次のようになります。

id
vehicle_INDEX
maintenance_INDEX
dealerdetails_INDEX
servicestation2_INDEX
dealeraddress_INDEX
city
state
contact
フラット化演算子の追加および構成

次の手順では、ソース演算子を追加して、JSONファイルなどの複雑なデータ型を持つオブジェクト・ストレージ・ソースに演算子を構成していることを前提としています。

  1. 「演算子」パネルから、フラット化演算子をキャンバスにドラッグ・アンド・ドロップし、その演算子をソース演算子に接続します。

    フラット化演算子の「詳細」タブが、「プロパティ」パネルに表示されます。

    属性表には、受信データのツリー・データ構造が表示されます。デフォルトでは、すべてのノードが展開されます。各ノードには、データ型とパス(VARCHARや parent1.parent2.node1など)があります。例: vehicle.insurance.company

    検索フィールドでは、最上位レベルのノードのみを検索できます。

  2. フラット化演算子にフォーカスがある状態で、「詳細」タブを使用して次を実行します:
    1. 「識別子」フィールドに演算子の名前を入力するか、名前をそのままにします。
    2. 「予測プリファレンス」で、設定を確認します。デフォルトでは、すべての設定が選択されています。この操作に対して構成しない設定のチェック・ボックスをクリアします。
    3. 属性表で、データ構造をフラット化する配列ノードの横にあるチェックボックスを選択します。次に、「選択した属性へのデータのフラット化」を選択します。

      チェックボックスは1つのみ選択できます。

      フラット化後、選択したフラット化した複合属性のパスが表の上の「フラット化基準」の横に表示されます。たとえば: FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    4. (オプション)フラット構造で適用可能な場合は、表内の配列ノードの横にあるアクション・アイコンを選択し、「配列を文字列に変換」を選択します。配列変換も参照してください。
    5. (オプション)ステップcで選択したフラット化を元に戻すには、「フラット化基準」パスの横にある「クリア」を選択します。「フラット化パスの削除」を参照してください。
  3. 「属性」タブで、受信属性または出力属性を表示するように選択します。受信属性は左側の演算子にリンクします。出力属性は右側の演算子にリンクし、次の演算子に移動します。

    個々の属性を選択するか、フィルタ・アイコンを使用して属性のリストをフィルタできます。次に、選択した属性またはフィルタした属性に一括除外ルールを適用します。

    • 名前パターンで属性をフィルタするには、「名前」列のフィルタ・アイコンをクリックします。フィルタ・フィールドに、単純な正規表現を入力します。正規表現パターンでは、ワイルドカードの?および*を使用できます。
    • データ型で属性をフィルタするには、「タイプ」列のフィルタ・アイコンをクリックします。メニューを使用して、フィルタとして使用するタイプを選択します。
      ノート

      一度に適用できる名前パターン・フィルタは1つのみですが、タイプ・フィルタは複数適用できます。たとえば、1つの名前パターン・フィルタ(*_CODE)と2つのタイプ・フィルタ(numeric、varchar)を適用した場合、属性は名前パターン*_CODEとnumericタイプまたはvarcharタイプでフィルタされます。
    • 「アクション」メニューを使用して、選択した属性またはフィルタした属性に一括除外ルールを適用します。「選択項目で除外」または「適用済フィルタで除外」を選択します。
    • 「ルールの表示」をクリックして、「ルール」パネルを開きます。データ・エンティティに適用されたルールを表示および管理できます。デフォルトでは、「ルール」パネルの最初のルールにすべてが含まれています。

    複合型は、ARRAY (データ型)COMPOSITEまたはMAP (キー・タイプ値タイプ)として表示されます。複合型でサポートされている内容を理解するには、「階層データ型」を参照してください。

  4. 「データ」タブで、演算子の構成および「属性」タブで適用したルールに基づいて、データのサンプリングを表示します。

    複合データ型の属性にはデータ・プロファイルが表示されません。複合データ型属性で、データ構造の階層を簡易構造で表示するには、表示されている複合型データをクリックします。たとえば、[...]または{…}です。

    個々の属性に変換を適用することも、属性のグループに対して一括変換を実行することもできます。

    階層データ型のエンティティの場合は、階層データ型を参照して、何がサポートされているかを理解してください。

  5. 「検証」タブで、データ・フローの失敗の原因となる可能性のある警告またはエラーがないか確認します。
他の配列の文字列への変換

フラット化のために1つの複合属性を選択した後、フラット化構造に他の配列ノードが存在する場合があります。

フラット化された構造体内の他の配列ノードでは、プリミティブ・データ型の配列または構造体の配列を文字列に変換できます。現在、サポートされている変換文字列の形式はJSONです。

データに応じて、変換文字列のデータ型はVARCHARまたはBLOBになります。VARCHARからCLOBへの変換文字列を、逆にCLOBからVARCHARに変換できます。

次の手順では、フラット化演算子を追加し、複合属性を選択してフラット化データ構造を作成することを前提としています。

  1. フラット化演算子がデータ・フロー・キャンバスにフォーカスされている状態で、「プロパティ」パネルの「詳細」タブに移動します。
  2. 属性表で、データ構造がフラット化されていることを確認します。

    「フラット化基準」の横には、フラット化用に選択した複合属性のパスがあります。たとえば: FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    変換用のフラット構造で使用可能な配列ノードには、アクション・アイコン(3つのドット)が表示されます。

  3. 該当する場合は、配列ノードの横にあるアクション・アイコンを選択し、「配列を文字列に変換」を選択します。

    変換された属性の例:

    配列型 変換済属性

    文字列の配列

    "goods": [
        "laptop",
        "charger",
        "chair"
      ]

    ["laptop","charger","chair"]

    数値の配列

    "numbers": [
        234,
        455,
        98
      ]

    [234,455,98] 
配列変換の表示、変更および削除

次の手順では、文字列に変換する配列ノードを選択していることを前提としています(該当する場合)。

  1. フラット化演算子がデータ・フロー・キャンバスにフォーカスされている状態で、「プロパティ」パネルの「詳細」タブに移動します。
  2. 「配列変換の表示」を選択します。
  3. 表示される「配列変換」パネルで、文字列に変換された複合属性を確認します。
  4. 変換文字列のデータ型を変更するには、アクション・アイコンから更新アクションを選択します。データ型に応じて、「データ型をCLOBに更新」または「データ型をVARCHARに更新」を選択します。
  5. 変換を削除するには、次のいずれかを実行します。
    • 単一の変換を削除するには、変換の横にあるチェック・ボックスを選択し、「削除」を選択します。または、変換のアクション・アイコンから「削除」を選択できます。
    • すべての変換を削除するには、リストの上部にあるチェック・ボックス(ヘッダーの配列変換の横)を選択し、「削除」を選択します。

    選択した変換が削除され、以前に変換された属性が元の階層構造およびデータ型に戻されます。

フラット化パスの削除

データ・フローでフラット化演算子を構成する場合、「フラット化基準」パスをクリアしてフラット化を元に戻すことができます。

  1. フラット化演算子がデータ・フロー・キャンバスにフォーカスされている状態で、「プロパティ」パネルの「詳細」タブに移動します。
  2. 属性表の上で、「フラット化基準」パスの横にある「クリア」を選択します。
  3. 表示される「フラット化のクリア」ダイアログで、フラット化を解除する複合属性名を確認し、「クリア」を選択して続行します。

    フラット化を削除すると、フラット化前の元のデータ構造がリストアされます。

    • 作成されると、接尾辞_INDEXを持つ属性は削除されます。
    • 子ノード名から親名を削除すると、親子の名前系統階層が復元されます。
    • 一部の配列が文字列に変換された場合、配列変換は削除され、以前に変換された属性は元の階層構造およびデータ型に戻されます。