このトピックでは、さまざまな関数の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: 123
e_set("c" 、"" 、mode='add')
a:# An empty string b: 100 c:
e_set("a" 、"123" 、mode='add')
a:# An empty string b: 100
add-auto
e_set("c" 、"" 、mode='add-auto')
c
フィールドは追加されず、生ログは変更されません。fill
e_set("c" 、"123" 、mode='fill')
a:# An empty string b: 100 c: 123
e_set("c" 、"" 、mode='fill')
a:# An empty string b: 100 c:
e_set("a" 、"123" 、mode='fill')
a: 123 b: 100
e_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: 123
e_set("c" 、"" 、mode='overwrite')
a:# An empty string b: 100 c:
e_set("b" 、"200" 、mode='overwrite')
a:# An empty string b: 200
e_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