プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Serviceデータ処理ガイド

E65369-05
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

増分フラグの構文

このトピックでは、--incrementalUpdateフラグの構文について説明します。

増分更新操作用のDP CLIフラグ構文は次のいずれかです:
./data_processing_CLI --incrementalUpdate <logicalName> <filter>
または
./data_processing_CLI --incrementalUpdate <logicalName> <filter> --table <tableName>
または
./data_processing_CLI --incrementalUpdate <logicalName> <filter> --table <tableName> 
   --database <dbName>
説明:
  • --incrementalUpdate (-incrementalという省略形)は必須であり、更新するデータ・セットのデータ・セット論理名(logicalName)を指定するものです。「フィルタ」は、Hive表から選択するレコードを制限するフィルタ述語です。
  • --table (-tという省略形)はオプションで、ソース・データに使用するHive表を指定します。 このフラグを使用すると、元のデータ・セットの作成に使用されたソースHive表をオーバーライドできます(元のHive表の名前は、データ・セット・メタデータに格納されます)。
  • --database (-dという省略形)はオプションで、--tableフラグで指定されているHive表のデータベースを指定します。 このフラグを使用すると、元のデータ・セットの作成に使用されたデータベースをオーバーライドできます)。 --databaseフラグは、--tableフラグも使用する場合のみ使用できます。

logicalName値は、Studioの「データ・セット論理名」プロパティで使用できます。 詳細は、「データ・セットの論理名の取得」を参照してください。

フィルタ述語の書式

フィルタ述語は必須で、1つの単純なブール式(複合式ではない)です。次のフォーマットが使用されます:
"columnName operator filterValue"
説明:
  • columnNameは、ソースのHive表内の列の名前です。
  • operatorは、次の比較演算子のいずれかです:
    • =
    • <>
    • >
    • >=
    • <
    • <=
  • filterValueはプリミティブ値です。 プリミティブ・データ型のみがサポートされています: 整数(TINYINTSMALLINTINT、およびBIGINT)、浮動小数 (FLOATおよびDOUBLE)、ブール値(BOOLEAN)、および文字列(STRING)。 式(amount +1など)はサポートされていないことに注意してください。

フィルタ述語全体を二重引用符または一重引用符で囲む必要があります。 フィルタの述語で引用符を使用する必要がある場合は、他の引用符形式を使用します。 たとえば、フィルタの述語を二重引用符で囲む場合、述語自体では一重引用符を使用します。

columnNameDATEまたはTIMESTAMPデータ型として構成されている場合、次のいずれかの構文を使用して、unix_timestamp日付関数を使用できます:
columnName operator unix_timestamp(dateValue)

columnName operator unix_timestamp(dateValue, dateFormat)
dateFormatが指定されていない場合、DP CLIは次の2つのデフォルトのデータ書式のいずれかを使用します:
// date-time format:
yyyy-MM-dd HH:mm:ss

// time-only format:
HH:mm:ss

日時書式は、Dgraph mdex:dateTime属性にマップされる列に使用され、時間のみ書式は、Dgraph mdex:time属性にマップされる列に使用されます。

dateFormatが指定されている場合は、ここで説明するパターンを使用してください : http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html

フィルタ述語のデータ型に注意してください

増分更新のフィルタを作成する場合は、比較の結果が異なる可能性があるため、Hive列のデータ型に注意してください。 文字列比較の結果が数値比較の結果と異なるため、これは文字列型の列に対して特に重要です。

たとえば、Hive表のage列を使用するこのフィルタを例として考えてみます:
./data_processing_CLI -incremental 10133:WarrantyClaims "age<18"
age列が文字列列列の場合、フィルタからの結果は、ageがNumber列(Int、Tinyintなど)の場合とは異なります。 結果は次の理由で異なります:
  • ageがNumber列の場合、age < 18は列値が18未満であることを意味します。 たとえば、値6は18未満です。
  • ageが文字列の列の場合、age < 18は列値が18より辞書的に小さい必要があることを意味します。 値6は18より辞書的です。

したがって、フィルタ処理されたレコードの数は、age列のデータ型によって異なります。

また、データ・セットがStudioでのファイルのアップロードを使用して作成された場合、そのデータ・セットの基礎となるHive表には、String型のすべての列が含まれることに注意してください。

例1: Hiveの誕生年列に個人の出生年が含まれている場合、コマンドは次のとおりです:
./data_processing_CLI --incrementalUpdate 10133:WarrantyClaims "claimyear > 1970"
この例では、1970年以降に行われた請求のレコードのみが処理されます。
例2: 指定された日時書式でunix_timestamp関数を使用した場合:
./data_processing_CLI --incrementalUpdate 10133:WarrantyClaims 
 "factsales_shipdatekey_date >= unix_timestamp('2006-01-01 00:00:00', 'yyy-MM-dd HH:mm:ss')"
例3: 指定された日時書式でunix_timestamp関数を使用する別の例:
./data_processing_CLI --incrementalUpdate 10133:WarrantyClaims
"creation_date >= unix_timestamp('2015-06-01 20:00:00', 'yyyy-MM-dd HH:mm:ss')"
例4: 時間を含まない日付とともにunix_timestamp関数を使用する無効な例:
./data_processing_CLI --incrementalUpdate 10133:WarrantyClaims
"claim_date >= unix_timestamp('2000-01-01')"
エラーは次のようになります:
16:41:29.375 main ERROR: Failed to parse date / time value '2000-01-01' using the format 'yyyy-MM-dd HH:mm:ss'