このトピックでは、さまざまな関数のmodeパラメーターの値について説明します。 modeパラメータは、フィールド抽出モードを指定する。
関連機能
次の表に、modeパラメーターを使用する関数と、各関数のmodeパラメーターに使用されるデフォルト値を示します。
カテゴリ | 関数 | モードのデフォルト値 |
値の割り当て関数 | overwrite | |
値抽出関数 | fill-auto | |
fill-auto | ||
fill-auto | ||
fill-auto | ||
fill-auto | ||
overwrite | ||
overwrite | ||
マッピングおよび強化関数 | fill-auto | |
fill-auto |
フィールド抽出チェックと上書きモード
次の表に、modeパラメーターの値を示します。
値 | 説明 |
fill | フィールドが存在しない場合、またはフィールドがすでに存在するが、フィールドの値が空の文字列である場合は、新しいフィールドを設定します。 |
fill-auto | 新しい値が空の文字列ではなく、次のいずれかの条件が満たされている場合は、新しいフィールドを設定します。 フィールドはすでに存在しますが、フィールドの値は空の文字列です。 |
add | フィールドが存在しない場合は、新しいフィールドを設定します。 |
add-auto | 新しい値が空の文字列ではなく、フィールドが存在しない場合は、新しいフィールドを設定します。 |
overwrite | 常に新しいフィールドを設定します。 |
overwrite-auto | 新しい値が空の文字列でない場合は、新しいフィールドを設定します。 |
次の表に、さまざまなモードでの関数の動作例を示します。
生ログ
a: # An empty string b: 100変換の例
モード
変換ルール
結果
add
e_set("c" 、"123" 、mode='add')a:# An empty string b: 100 c: 123e_set("c" 、"" 、mode='add')a:# An empty string b: 100 c:e_set("a" 、"123" 、mode='add')a:# An empty string b: 100add-auto
e_set("c" 、"" 、mode='add-auto')cフィールドは追加されず、生ログは変更されません。fill
e_set("c" 、"123" 、mode='fill')a:# An empty string b: 100 c: 123e_set("c" 、"" 、mode='fill')a:# An empty string b: 100 c:e_set("a" 、"123" 、mode='fill')a: 123 b: 100e_set("b" 、"123" 、mode='fill')bフィールドは
b: 100のままです。fill-auto
e_set("c" 、"" 、mode='fill-auto')cフィールドは追加されず、生ログは変更されません。overwrite
e_set("c" 、"123" 、mode='overwrite')a:# An empty string b: 100 c: 123e_set("c" 、"" 、mode='overwrite')a:# An empty string b: 100 c:e_set("b" 、"200" 、mode='overwrite')a:# An empty string b: 200e_set("b", "", mode='overwrite')a:# An empty string b:overwrite-auto
e_set("b", "", mode='overwrite-auto')bフィールドは
b: 100のままです。
抽出のフィールド名の制限
e_json、e_kv、e_kv_delimit、e_regexなどの関数がサポートされています。
名前が制限に従うフィールドのみを抽出できます。 名前が制限に従わないフィールドは破棄されます。 正規表現u'_*[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\u4e00-\u9fa5\u0800-\u4e00\\w\\.\\-]* 'はサポートされていません。 たとえば、名前が123=abc、__1 __: 100、1k=200、または {"123": "456"} と一致するフィールドは破棄されます。
次の例は、フィールド名に対して関数の既定の制限を使用する方法を示しています。
生ログ
data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }変換ルール
e_json( "data", fmt="parent", sep="@", prefix="__", suffix="__", include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*", mode="fill-auto", )結果
data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } } data@__k1__:100 k2@__k3__:200 k4@__k5__:300