このトピックでは、--incrementalUpdateフラグの構文について説明します。
./data_processing_CLI --incrementalUpdate <logicalName> <filter>または
./data_processing_CLI --incrementalUpdate <logicalName> <filter> --table <tableName>または
./data_processing_CLI --incrementalUpdate <logicalName> <filter> --table <tableName> --database <dbName>
logicalName値は、Studioの「データ・セット論理名」プロパティで使用できます。 詳細は、「データ・セットの論理名の取得」を参照してください。
フィルタ述語の書式
"columnName operator filterValue"説明:
columnName
は、ソースのHive表内の列の名前です。
operator
は、次の比較演算子のいずれかです:
=
<>
>
>=
<
<=
filterValue
はプリミティブ値です。 プリミティブ・データ型のみがサポートされています: 整数(TINYINT
、SMALLINT
、INT
、およびBIGINT
)、浮動小数 (FLOAT
およびDOUBLE
)、ブール値(BOOLEAN
)、および文字列(STRING
)。 式(amount +1など)はサポートされていないことに注意してください。
フィルタ述語全体を二重引用符または一重引用符で囲む必要があります。 フィルタの述語で引用符を使用する必要がある場合は、他の引用符形式を使用します。 たとえば、フィルタの述語を二重引用符で囲む場合、述語自体では一重引用符を使用します。
columnName
がDATE
またはTIMESTAMP
データ型として構成されている場合、次のいずれかの構文を使用して、unix_timestamp
日付関数を使用できます:
columnName operator unix_timestamp(dateValue) columnName operator unix_timestamp(dateValue, dateFormat)
// 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列のデータ型に注意してください。 文字列比較の結果が数値比較の結果と異なるため、これは文字列型の列に対して特に重要です。
./data_processing_CLI -incremental 10133:WarrantyClaims "age<18"
したがって、フィルタ処理されたレコードの数は、age列のデータ型によって異なります。
また、データ・セットがStudioでのファイルのアップロードを使用して作成された場合、そのデータ・セットの基礎となるHive表には、String型のすべての列が含まれることに注意してください。
例
./data_processing_CLI --incrementalUpdate 10133:WarrantyClaims "claimyear > 1970"この例では、1970年以降に行われた請求のレコードのみが処理されます。
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')"
unix_timestamp
関数を使用する別の例:
./data_processing_CLI --incrementalUpdate 10133:WarrantyClaims "creation_date >= unix_timestamp('2015-06-01 20:00:00', 'yyyy-MM-dd HH:mm:ss')"
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'