From c6abdc1d4b24fdc191aa39ebffed6b6d1cbbe4db Mon Sep 17 00:00:00 2001 From: "locadex-agent[bot]" <217277504+locadex-agent[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:23:03 +0000 Subject: [PATCH 1/5] docs(locadex): update translations --- gt-lock.json | 10590 ++++++++-------- .../table-engines/integrations/azure-queue.md | 45 +- .../integrations/azureBlobStorage.md | 75 +- .../table-engines/integrations/mongodb.md | 122 +- .../engines/table-engines/integrations/s3.md | 253 +- .../table-engines/integrations/s3queue.md | 84 +- .../aggregate_function_combinators/maxMap.md | 17 +- .../quantilesTimingArrayIf.md | 43 +- .../quantilesTimingIf.md | 31 +- .../aggregate_function_combinators/sumMap.md | 26 +- .../current/guides/sre/keeper/index.md | 668 +- .../guides/sre/user-management/index.md | 220 +- .../current/interfaces/formats.md | 15 - .../current/operations/settings/settings.md | 12 +- .../reference/intervalLengthSum.md | 1 - .../current/sql-reference/data-types/time.md | 54 +- .../sql-reference/dictionaries/index.md | 49 +- .../functions/array-functions.md | 1643 +-- .../sql-reference/functions/array-join.md | 46 +- .../sql-reference/functions/hash-functions.md | 711 +- .../functions/ip-address-functions.md | 223 +- .../functions/string-functions.md | 810 +- .../sql-reference/statements/check-table.md | 77 +- .../table-functions/azureBlobStorage.md | 72 +- .../clickstack/deployment/docker-compose.md | 57 +- .../clickstack/example-datasets/local-data.md | 284 +- .../integration-examples/redis-metrics.md | 192 +- .../table-engines/integrations/azure-queue.md | 47 +- .../integrations/azureBlobStorage.md | 54 +- .../table-engines/integrations/mongodb.md | 142 +- .../engines/table-engines/integrations/s3.md | 236 +- .../table-engines/integrations/s3queue.md | 82 +- .../aggregate_function_combinators/maxMap.md | 22 +- .../quantilesTimingArrayIf.md | 25 +- .../quantilesTimingIf.md | 25 +- .../aggregate_function_combinators/sumMap.md | 19 +- .../current/guides/sre/keeper/index.md | 686 +- .../guides/sre/user-management/index.md | 186 +- .../current/interfaces/formats.md | 15 - .../current/operations/settings/settings.md | 12 +- .../reference/intervalLengthSum.md | 1 - .../sql-reference/dictionaries/index.md | 50 +- .../functions/array-functions.md | 1253 +- .../sql-reference/functions/array-join.md | 38 +- .../sql-reference/functions/hash-functions.md | 776 +- .../functions/ip-address-functions.md | 240 +- .../functions/string-functions.md | 792 +- .../sql-reference/statements/check-table.md | 71 +- .../table-functions/azureBlobStorage.md | 85 +- .../clickstack/deployment/docker-compose.md | 61 +- .../clickstack/example-datasets/local-data.md | 284 +- .../table-engines/integrations/azure-queue.md | 49 +- .../integrations/azureBlobStorage.md | 67 +- .../table-engines/integrations/mongodb.md | 128 +- .../engines/table-engines/integrations/s3.md | 210 +- .../table-engines/integrations/s3queue.md | 80 +- .../aggregate_function_combinators/maxMap.md | 30 +- .../quantilesTimingArrayIf.md | 31 +- .../quantilesTimingIf.md | 32 +- .../aggregate_function_combinators/sumMap.md | 24 +- .../current/guides/sre/keeper/index.md | 649 +- .../guides/sre/user-management/index.md | 228 +- .../current/interfaces/formats.md | 15 - .../current/operations/settings/settings.md | 12 +- .../reference/intervalLengthSum.md | 1 - .../sql-reference/dictionaries/index.md | 50 +- .../functions/array-functions.md | 1299 +- .../sql-reference/functions/array-join.md | 30 +- .../sql-reference/functions/hash-functions.md | 862 +- .../functions/ip-address-functions.md | 252 +- .../functions/string-functions.md | 810 +- .../sql-reference/statements/check-table.md | 73 +- .../table-functions/azureBlobStorage.md | 72 +- .../clickstack/deployment/docker-compose.md | 57 +- .../clickstack/example-datasets/local-data.md | 284 +- 75 files changed, 13950 insertions(+), 13017 deletions(-) diff --git a/gt-lock.json b/gt-lock.json index d1f86fde02e..d0e5ba9db32 100644 --- a/gt-lock.json +++ b/gt-lock.json @@ -49,15 +49,15 @@ }, "a8710471f3f4af77c39b30a518f52a8deb6584069b4bfb8e64158f30627b4792": { "zh": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.055Z", "postProcessHash": "dea80e8633a01661415a8f657db721e366107e6372f47980f87efcebec57d84a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.055Z", "postProcessHash": "80b4843e916f7b1e577f8e4b72a589432fbe5af00d6591dc500c49a69d00de25" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "cb5973f7e5a67bc20467cd92ce8a5b231d0fd34ebf05b10d80ea2cde4e65241c" } } @@ -65,15 +65,15 @@ "24bb0ca99917fdfda706556c75c640db16b12f966ea7bd58e1e9a8bdf4be5146": { "40c867ec4bd9ff53ca41f19ef2fb11bce1cd4d6f82211f50a350bacfd56350a1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.020Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "c2b159034204cbe9194f226815c59581e141b4b1d9a0888360d2731c9c4135b6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.020Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "b4503160878c2254ab49f0007d23321ddb2c942c64c94db664bf33828e16dd60" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "0b1764d2530de07a912c6cd1024488b3c16f566eeb57af1c8868eeefc7807027" } } @@ -81,15 +81,15 @@ "2f81498e8b60c281ca710a3a25f611bf79424982fa85bce630e1d4182f252536": { "e5431d96bed4f0f93b507ffa84836d28b1d715ac31c199864a10370ec3b6f040": { "jp": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "3f686d2c47341d014efae7f9d6f33a64509cfb1ba3ca22f872a5c370b6a3a358" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "375db763f436ad6553e921b026e7c0fa04329540ffc9e80499eb82e8c8ea0663" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "7507cfcbed4ebac25a56ae9e0e5a92a886049a5887ffc57eed724ccb32af8ec4" } } @@ -97,15 +97,15 @@ "37e1e1dcfe884bd88e97aa22d6ed7fc14323b326449d12f0a5644f15bd4ba087": { "bd75344d33495d82bb1ddbeeb77d5b1f53a6ecb5f788cb9eadaa606a67b5ba96": { "jp": { - "updatedAt": "2025-12-04T20:16:57.017Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "e5e905d07be28050aa66dd55c4896d833e812f116fe9120eac294829456f1242" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.017Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "14fd8bc4cbc9f61c5655f504fcb346fba3a806f8c548844bcee5bfcd9af0a0d8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.020Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "9612a6ad02b86e775c0c30373bfa9bb267b079c3b296aa1f0e67771a11e06161" } } @@ -113,15 +113,15 @@ "49041ac358e6a0f1cdae73923da607add5f9d37fe3320250b5457924d09bcecc": { "d61c6739096f5de9a1f340500324926cc206fe878ab16df77def05d0ba746d3c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.020Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "149a40e0765161d19187178d9990fd73e946694b6e51ef1bceeb283543a9878d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.017Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "cd0d063215a756503aad7cc467ee44c6563646559dd30c885f70e8bec46f5f9b" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "e699a728dbcdf02df448087277a49c8f5dc1a48548622121ebcb3031f826f9e9" } } @@ -129,15 +129,15 @@ "4abc97ebd23c7b3dacc0e18e77499272b51b908bd0c2a7a823d153d3c00f7613": { "7817d141aff4e4b1ceaca87c554c551bc1add23bd534611e2704fba56223fbfe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.017Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "527ce7cbe58aa319ab05e565a6fe49cb82ea6cd4e17366423cbd60e886732393" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.019Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "983ce7e98f025ebbe40cef5c1c243223acbc01c78d010ead9d3f0320f8a35209" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "42c1f2e1ab6e097cce135c282ebaed5580447772d65fa6a2cf17df13d6c0b4da" } } @@ -145,15 +145,15 @@ "4e7333f7ff430819ccfae5b1f2b2ee97508f58db11c3e67c31430385b0618503": { "1a899ad20af5d3dc3c495e6ddc0c3ff5aacc9df838675e487a6910da0a531675": { "jp": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "22b50687ded9f30d3b3dd7d449be0e485310b09ec26eace2b0a9c83e43e7ce00" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "a5492416744168520dbb0eb9fb77b1d38f8227898a20e1119fbbd9ec5c7ea8fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "463d50cacf516dab41081e1c1ff87fab243ae437c66f1eaf34b5d2666c9f8200" } } @@ -161,15 +161,15 @@ "6f13745927dfcaff0a5b759cdfc9dc47aba26e811ab26776ee363cd821f7d585": { "be6c5629590606c77cd44d60b8cb153a6e8b1ae6d9f710967b3ea692cfc8cb6d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.015Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "41ac3d39aa09bac8cde829d981d3feafcc427ae50b12a5ddab4f526608a02d23" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "049ba85e4c87c348a3e669ed4b331203275570c47be8b31481a7a35435f561a7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.015Z", + "updatedAt": "2025-12-05T15:21:44.061Z", "postProcessHash": "0d87f7d349ae6e58126c41a418eefa79b58acb3ea6d84c86755369bd25696c27" } } @@ -177,15 +177,15 @@ "8ad40f5399ed36401edb12df869b1d441ff2d635581938c63d4f0a611fb977ae": { "16565c6a0928275a3a601a45f18823227dc886a00aad5531244bec633d3e8af4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.071Z", "postProcessHash": "8bcf3ff641396e2d8c5da52dc58e751584d107f6d1d805c90988dec22c114a38" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.071Z", "postProcessHash": "e625c4b6b53d8b1fa5873b15f2f5c571c9d49edf455c2dd316216095bd77654d" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "f170d3dd3162329051742b675cbd0ffe6828303ed835195e7fe76a8adcc5f156" } } @@ -193,15 +193,15 @@ "a3ea3f0c344313a1d3ad7969f1c82ef13af419e6eec98da91153c8735fd46730": { "df3510130e5bdcdacd162718bb228e62987c548fea96f8a9e94123cc6b9a78d5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "2c670901840457d43631271d798d948ad1808ea3e3a0768832448fa5291a14fb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "34866960754235413e8855a940c78ea424a1dcba2dc6cbd96e6a8e4c3a88aef5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "ad7050ee90633a3a2cea8936df2c98ec9f52bde0487b44993cd64636741aa3dd" } } @@ -209,15 +209,15 @@ "b4b7e3ea48cb57c88168d17bf4d4f7d74e58a613803386d3229332939508c542": { "67faf8569421939ba33d4c9fdc3b64f28fcc3bc298cc8c8b43a29bf3499a6898": { "jp": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "9d1fff2335500fea94d3724975766ef29f9d2969dcaa6b1b263acae18dd2a6a4" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "c4560376ecf7b29d362fc413002dcaa4fe08ac89e477221c6ce3d767912d8a1d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "f7be08bff036a4fcae66b8f5cb941e26a0dc9df82fec5705e5f308daf214123a" } } @@ -225,15 +225,15 @@ "bed5256b181dbcf92c02187749ebbf45c60b6bbfdee1789c1848984b6be1d78d": { "614647c380ff18e7b1672f19190809fcf15ba05429ff7f93a33f6c77255ba9ba": { "jp": { - "updatedAt": "2025-12-04T20:16:57.015Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "1ab88928e6d5bd19ba5c78dbc583c3a0f5dd74ef8024b486b6fe7a1b8961794b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.020Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "0bf7b55d68e8c32760083a4f0974e76e1788681abe8d2621dcc0328bf6e01fba" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "9fa6e7df16ec5380e9bc1597b072fdde81dc77cbbbf6923dd05c8c922e4b41e1" } } @@ -241,15 +241,15 @@ "c2811557e4f56ffd6e37b0f9f6558971e9d45005c22c3c19ebaef586f1591687": { "b9aea39ae1b4e63fef7a92d27750dfc746ac0ac174e77a895050ed0d24ff1ea7": { "jp": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "e1b1ce689496d060b5172a3fbdb59cadf7145e23b1e6514e0010d0971196cae4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "edba1c32a4523dbb9c9973228fcc228187dd6bc5987d3e75be5cf6b0c075b62d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "a16d69788eb2d608156b070abd071392f4921ce1d8a8358ed8bf4691082f3cf2" } } @@ -279,15 +279,15 @@ }, "a4c073207b34a9e6e51079c57f0e06190c406d676367e982df527e7379cf105d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.005Z", + "updatedAt": "2025-12-05T15:21:44.054Z", "postProcessHash": "2b5837009e3da50041488124f7177f54786a6875323a348ea17e8786c3156ca5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.005Z", + "updatedAt": "2025-12-05T15:21:44.055Z", "postProcessHash": "99e0f428ecd7fb29b7cf7a2eb9db047a31f6c71041dbbb69678e602e4e19b995" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.005Z", + "updatedAt": "2025-12-05T15:21:44.055Z", "postProcessHash": "d81afbdb3706b5f0a3db2cad06e018bfbd6cba8679de0b94d1130cd60b05bc8b" } } @@ -295,15 +295,15 @@ "d59e7e7594ae44f151cb9c65dc0cf67dc9998af7e3a974cffc3d0f0dabce2e18": { "7f90a5a780c1bb26935f70fb9cdd36714ca975e36d84b530b0b75f565410ba0a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "1da247e74d18cd435ac6aacdc4fdd1bf3360964523a624d93f3ee3243e283723" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "2677a15eafb3267407541742b099d35f807853ba50698ab34c19c2ec970e44c3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "c563990ef0a3d1b09005841332cb571cd67f96f856e0dc395925105b3ab7fe6b" } } @@ -311,15 +311,15 @@ "d89bc73ed23da882f0c45593180a3989cb6844bd38d6496ab6cb5ab328d51083": { "42fe50c1e729beb1bfa14d29e80c4f579a068ebbfa39aa1ffe25b2bb963a815a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "12f93ea3d3825950e2a35a701ba23d5b5980e8037ee63d9b1ff2aa3d53099049" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "b60b4485e60c8f6adc554d776d4af299bd72a7a8d51d6a27533f2e91f527ed1d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "0e9d71f429e1c54a12237acf88146995423cfc66ebb3f75a38f5d87d6affccd0" } } @@ -327,15 +327,15 @@ "e8ae18c3678baf91b2255e5eab22effc78193c605230851316718cfb95063b2c": { "b8eaf5b30dc66a5bf4e27198f07863a95cd60a2e8b15d9fe7e86cc6f6eb603a7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "ba385665bc7c8e1e7c7638d1b5b2387ec5b153e6e0b8ef275ce9b212301ef043" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "9fc70f3ff9c8ad4b4369433925b69776b42e153c032445df547301e9216926be" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "81b02e67e07018e5fd60381abbb70402f7fc8dbabd8c16cdc0ecdf987078434c" } } @@ -343,15 +343,15 @@ "e92405c74b1c19a280775296a5640f2c7646bfabd9d6af48d6359d9a4f09c9d8": { "c9015dfa533bb72f0fe4f1f5a455b0a5497c12b645e908ee88d9686adff07027": { "jp": { - "updatedAt": "2025-12-04T20:16:57.016Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "3e7c51f6cf75f0c9024617ce473a061249536a1e27d3108362f9e644f167a533" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.047Z", "postProcessHash": "65c70bfa5c1066d61400754e3ecc5dd1c4e562f91e8c9218778f1727353a4b95" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.020Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "5a3f0ee08f15587cd66d919be56646cc7b54ff0d7cf1c9649472a45344eac53a" } } @@ -359,15 +359,15 @@ "ea04f6329e37f5487414c9b64a5e1602d705f1fc914807a5e16d95932f4ded16": { "c2794c8cfb2c5d8f3ad408c1a6ee6d92accd0948ff2682cca78897d7cef83daf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "278a28af1f274ab6625dd842747e00021283b5ae861342f04c48c8ba169da45c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "2570c882c0329da070f76c503ff135daf236f53628c8e56655b165f3b6b0258f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "d558af907d6f102c55c61793e4f1b1dc0d4694633689c2e51feec34c3f305282" } } @@ -375,15 +375,15 @@ "ed828a4311942b25614d0fd962b572a6dc329c0d92a3891dce42290c1d8324f1": { "78977a9c19b7aa2ba08361a0d6ca3390d032f6997a67d280a40d8974f768bb52": { "jp": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "3550ec99549bdfc84c6cc828ed70f0ad383d91c7600c157c2506641ba0aa0edb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.006Z", + "updatedAt": "2025-12-05T15:21:44.056Z", "postProcessHash": "5b0c3157e8a4ea3131973c3209e2abe9c6d1d254187df96eaa61a9f45038c69c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "2e3abb38ddf37601a006893161ff5c32d0ad5cf5c0624701b09eb32c43a1fd24" } } @@ -391,15 +391,15 @@ "ef555d903b99c706a7fbc048a6888f3d3743693968bc76912f338d53af846b0c": { "c84825f7cf888bad7b7b5ec57d4a3941f8dc40c7526398600864fd18a77516ef": { "zh": { - "updatedAt": "2025-12-04T20:16:57.016Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "5e8fbc5025e237e43a50093550836e281b05664d90bfc7aca7c95ad3f88f75cd" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.018Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "9de8b7fc3937676407d7db0f252d6cd511a8673a3934d3470e8181db3e3271c9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.015Z", + "updatedAt": "2025-12-05T15:21:44.062Z", "postProcessHash": "c1a2637d3b784bb1961182c0efed5a3e6c20c514f1fcee3d69b6bb993f387238" } } @@ -407,15 +407,15 @@ "fb2a4bdb7f2883fa7ac9878a6d4e978def652c408e4ef95784547eef9e313dbb": { "20e4763f0f7057430907de10bf00a918aa2e762becf34af686b125a9da4fe458": { "jp": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "066c343903fc8f105322a8b7d2482f81cf1d3b4db8c650f4095546602c9998d7" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "b3cb903f920b0efabfd2d2b8989b14439fc616dd236f7385108983931d029bf9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.007Z", + "updatedAt": "2025-12-05T15:21:44.057Z", "postProcessHash": "2447d25dc0f1696c6aaf1c6ae2d72db63375857928f0a721731f9c1facd8b816" } } @@ -423,15 +423,15 @@ "22760d417a52c66f14bee182587d458d0737a616dd14cb09748b4c725fc5809f": { "c6ca08107fa6822548ad3adc5de4b6fdf1d9860224c2cd62047f42bce72b1c12": { "jp": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "f6deea422207d967b6461e97071734f39e34beaf512cd5b27858f885d8645481" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "f2dbb352b7da80b2bc1a94c2977e4417a93f0135b68a7b16bc9af6387847e01d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "be639ec494ec47de6646af8f5303f5a9cb200978f8f07fca02e5557a8a99d9df" } } @@ -439,15 +439,15 @@ "3e38c1623307fe1538f034436996c45b6ce42cebe6a35b146ba34a354e7b226a": { "7d9c49d88230712b6849bcab6640651373295cad7888223291eb46da868626e3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "adbf3470ec4df46143250be3ba2cd128011d0cc073401f47468887ef78f214bb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "e5b3c3f5ea30fa4103f558f85732c4c901802a7b6b272cdd2800d3183e33172a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "42a5cca9d425a028e47cc62bff77488d51a89f7c1aa4217fc17fa7ff4a57d2c6" } } @@ -455,15 +455,15 @@ "434f73c99193146064105db19ce337122de0d78915918472d56f5393dc41a913": { "07acf0a2f2bf2cdedbe6696ce78f98b197df5722eecc5a214cf1d15173619bb2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.142Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "65c42797c8bacabc72143be09683b3ee3d27393d6e7c506507ed5938e1babfff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.107Z", "postProcessHash": "aec977aa13a5a2eb5c23d9e8b2ce1ed9a48327e4b15fe80fb3f7bd7c1a4a374e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.107Z", "postProcessHash": "7a6423ef2bb0984dca8cb73fc2323e4e2714e2a451d85242835158f40e519e66" } } @@ -471,15 +471,15 @@ "4fa6a5d68016ad855e418c2e88b5a37793256913a0caceaf33014edf61107509": { "1ed9748c6ebe33e1898f694a866a318e321540cc9186ac29b7621da0715118c5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "4b28de374793ac2ccec45b9f32a3d9415caa8b274547ca0c9cb4a128aaaabec8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "9fe0d9723b9570ba1b159dd3ca7bb497d138ecb29e10eb2a09663e445b759bdf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "fa14cb3b1b996a1b7c8ac10227955be037bb2067631054e18dd2880e6eb9d045" } } @@ -487,15 +487,15 @@ "5dcaaaf5a4d53dc33da6680731d152b4a88a8d4e9c6058a18e521c7629865fb2": { "11c49d7827257644d730176fb691cb3d9705b0b2caafb1ee0ef7b70e70446275": { "jp": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "98de1fa0f824db18057222b5c3af7114a783cac728dddd4f73421c62d47d6c93" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "5e754240f300dc95396bed0fcf36a5e03b697e79a19e592bbad674b373a2e49e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "7923bc53b3575bb76eb9cae1385c1f78de1e8366a87855a32ba5dc36877f0009" } } @@ -503,15 +503,15 @@ "6687b017941230cd05da5ec3d3b0b3a66c8da07927fdb43f62a2732581460749": { "df9979ccd3ace6a4ab1b704d9d4b233c9092cf3e747331f0d940179f918f015b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.013Z", + "updatedAt": "2025-12-05T15:21:44.061Z", "postProcessHash": "b918e5a07461ebb5820764580d62ebf62353a05901ae7a27cdff1fc07d53ff1a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.012Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "9490f1a5d7e664e812a2cde9c40859a12338b1f8853ae3525c733c62f9b82fda" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.013Z", + "updatedAt": "2025-12-05T15:21:44.061Z", "postProcessHash": "c29bc86f48335dfbc7c483094c8b80b116c4b3c974df4f07a1b8966667f6264b" } } @@ -519,15 +519,15 @@ "69aa1e22d1867f2dd9082998e597234169f92ed3ba4c3d6af26b34ffa82e4a48": { "aea97333102d80bfe523bef5b3932706938c1ab2307337cf20451a0633f0d7a0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "3ca330ec7d12194cd8d43155f7aeb26c13a9b53e3f683fd8a6732f0be0319a76" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.107Z", "postProcessHash": "0756612fabd749f0c52b94a55937f26d5083fc138d02b2c62e504e6281b3aa1e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "0f12b8f141c59d2672d963aa025bede85dba80176b0e9610ebc70db0068ed783" } } @@ -535,15 +535,15 @@ "78ae413a62554c8c5ae5ac8301b68726066573d500bb6c8caabdecefd781bb3f": { "754657766dba43bf89b81e0a5c15e318411e3d1782280b5ae5d185edc97b8e9b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "53a0569a9815ae65ff106f265d782eb6543645c88bf9cabe68b832336d36bc0b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "db12a99a5062b8df14e0c4633c3c17ddf97099362f1147ea64b710385502f58c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "5a0e46753a5fdb69ba0782fe8b2525c81cd7db7c2cd654a9a77a8d3788bc0959" } } @@ -551,15 +551,15 @@ "7c0a1f3dadfd423b5f66993109c1e8bde0a0b4ff555067d9e6cd275bdaa7a391": { "ef65d65a01188f23ada0aa6a4be2fd11257542de621c6ad17c666a4b0b2aabf4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "09086c56127640ebe12e8aa8ad1e2d645bd2e150a27a746af186a02a46b010a6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "5bfd8e6d0803b938007d4729dc649988358f04c7a8442517bdbe1ffafe5005ff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "f3ca08cf06d7795a53250b53a8b2c35e4d5b347cc42ade0c3f97a79e56a158b3" } } @@ -567,15 +567,15 @@ "8d9acd4ed372d08f28519dfb01b6900545df9f42502ac21f0ef6bd86b724c724": { "3ca361084040c6efbaef261b3b4c88e38d022539f3e58645a4023be45b9ed7f2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "6953961a2646a8ba9086b4de8c85bf1675ce1e9fbaa756900ca53568a50b942a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "0d3169e3982c50a1af0140de3dbe66b0a27f9c549609525ea3f3eeca871789db" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.088Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "1ee4ad34a8c447f681641d606c9f7f7cc555af7de87f35a1570190b32797a165" } } @@ -583,15 +583,15 @@ "902fba8b39d6b163ee66698d8bd12433740962a53ec93d756ebdc9d11cc5c531": { "dc72366dcf698c0d7f7b5eed229fd9a7dbb9776362cc9399cf927769376a9098": { "jp": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "1f1ec41d23e63bd76de22c2cf8888b283f10a1b8b787d63b0b9d0495709e9d49" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "69c4f5372057ca46e67c0ffbd84fc38f696c6441ef42b3690952dd20899f8b3c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "ce58780af5fcd724a09d992cdad2a8b119596ea6f092bcadd56d6d3210a87474" } } @@ -599,15 +599,15 @@ "9414d7ed4d45271d4677e8083e81b7732a750c4dcd8dc182b14ce11749a9ec63": { "55348a4fc23db936f15885093540b12ab2d7159c2a91617e4058fef961a3c4ea": { "jp": { - "updatedAt": "2025-12-04T20:16:57.012Z", + "updatedAt": "2025-12-05T15:21:44.061Z", "postProcessHash": "00c3b1540fa6b88c22c04dfbc9e7d2d1f50bffe6a7e3e9f0726ed52aeae6a787" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.012Z", + "updatedAt": "2025-12-05T15:21:44.061Z", "postProcessHash": "5aa56dccdcf822ec62df20d2363b87bf99f276dfbc642ef9bd797b3b7090d6b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.012Z", + "updatedAt": "2025-12-05T15:21:44.061Z", "postProcessHash": "9def9b4b3c4afd8b4109b84d07bdc30cd4f5f72b12a2a3554d059f2000b94be4" } } @@ -615,15 +615,15 @@ "9ac02f1c2289520aeb58725683781053f5ba6bf828b2e8585540596060f1f416": { "ae1a2a308feb0c5c6d10c67047a4b5867fd643296e4e816743b7e2e297fa0f5b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "17bcf1b7b92caa5357895d1fe299a7195e4dcc288cf97e34a16d5c4be926abb3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "77c88ac8a3adf0e84d1e0891ff5f88da4f197d65483428fb9a5c792fae5ef0ec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "e2d5bf177b2d670016e09b59f5c61d8b513761dbc971b8329c0f04a64ee3f5c0" } } @@ -631,15 +631,15 @@ "9c7cf003973e27e4edaecd818b57b1e653cdfc8e936c45c67e314eb7123327be": { "1bca9e04eb1cf2d68b948ebb6ff7b813d50c8faada3f1ee2a8c561e9d96d6882": { "jp": { - "updatedAt": "2025-12-04T20:16:57.018Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "7643936e64d9421b1100b3e03f96f1d86566f298b013156b2294fa0e8090765d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.019Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "9771d7374750e9391c577cc6ab4783afc3355df8bd5cac0e3e6d811fad3c77ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.018Z", + "updatedAt": "2025-12-05T15:21:44.063Z", "postProcessHash": "88267ee69616a7f62783d0cdf785584ff6f8c4d6b4fa617cd7985731fdd30fbd" } } @@ -647,15 +647,15 @@ "9d1a4cd9443c6b88ad09c86205631318b2554cff25df4445681bef27a63f1923": { "6349c4d8161b7c14d291e4b3a1c44b280c0eb9f067739c2cbeccc19c6800a2de": { "ru": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "300e689f73b8a314d09765196d8f22817166c2c0be5d9d474f7c8dcfec8efda6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "da1498753a9d75cb8be1bdcaa4431aee6a9e087dacf436c3075302444831acf4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "7650f2586dc8a669367419b9d6295857d800f3e06528e2d19d40dc6564a0028c" } } @@ -663,15 +663,15 @@ "abe1e09771cc949a765515b0f1ae2d0c4a6ab90fceae133c7ea3efdc49fb65a6": { "3a86b5256b89e144630a5cab1fb1ee8cee76bb30374fd9a861dacc440a7b8bd9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "daf74820f0de47bc47018b5965c3c3e1b9b205b5df0b7d93dc3366562ad94f6f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "0ea3c19c670f88e2ca010fff3a85ad6cf2711580f42e99d7d6f71b2fc0c392a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "5fa2dc4f89cfd91fac4b7d62704897ceddc9e47ff517a3e9a861ab016edb9543" } } @@ -679,15 +679,15 @@ "ad7599fbe857ed33f8231ed240a179e73c2e77cfa5e658ffca7502e66d2eeb8d": { "fadc1396d5e8d2ef81e08c49dd8a08b01468ff70c1b1463a692904b2403b88dc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "ea2263030c46ca417add124667ce70d069b5ab67b2f1061a41caade774a77ba0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "d92c93d69333bb3bc7555b943cf57dfcdefa5f958a6c86775462296fe9a1698e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "030ce23797d2e95f531ec7e07a29de63efc5fb6fbba23c40bfb49efd37ee36b6" } } @@ -695,15 +695,15 @@ "b299c52ac5ef4f3399408a89f700027a4da61547b988cd85ef190b1cd544d809": { "ab3b1379019677d4f056b27b40d79c7a1d368792ecee4e8e04d9224e7f40f825": { "jp": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "124a3e2ef9f22284438c43dadd8d8f66148b610bd88b59533d43ce92b8c23711" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "444d74d94170cb1e152ad87a84dd84afbce8201e1e4c2e6389ce4aae13d84440" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "f9b7a65de0c7b9d0a4fad0b5b6cd6e3d20a42ae97318ac5c3ec1c3be6cfc8995" } } @@ -711,15 +711,15 @@ "b776eb4f7e91ceadeb1cd902e4a72be31912c8f40357421634f01d720427d7cf": { "a157eb7d7ffd46e8626bd3b8ed555fd32deed480e675bf80cec9536c2cc53b70": { "jp": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "8f62360a1333252926b93344e084faf3a2d313d1f86c675edcf721a34d00b4d9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.090Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "0d157bcf10f26887dfd385a982438b02933943ea782b88f143a3ea53b8bcf340" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "96dfbb21076c6bd7e79b4aeefcb9f48571db2fc947d54a63f61d2f146a877ad1" } } @@ -727,15 +727,15 @@ "d294fb78df318396bfabb26180e94ed0286f348799a54a338dbcac4df2d501a8": { "2c1ad0e8f79ff31317243d7b0ba63abc05a794bb4cf50ddf3ab6a05a73136433": { "jp": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "e8e6ab8458fb1da965dc5a46290ef2e645b4a28d79b3f59095615f2a2bfb19fb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "f48414f092c0b0e2d48295cc68d8679eda689bf7d92013346cfc3160c2ad7b9a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "a78267e9d1a30ab7c698f1df3d04b0753a081c2835c79436caf02ff3829e5762" } } @@ -743,15 +743,15 @@ "fb88079d51f44c0605f104c400878c73b1676f5d7360de0915e1f533962516d7": { "83b74506a046cca4bef2d9a75f263d66bc8cbdf6902a726a083fb24ba240c90a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "2ac607a2533a70b8792e43f0a1967f61d5f78f79c31628ec48ea5134914d98c3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "46f61667c4ff4c09edf454cf74c1401a772b97fcfe093dafbbdaa8181583927e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "48581e1edb533b6f96df47a93d6cc56a60dda895f85b0bad2cf5783ce348cb56" } } @@ -759,15 +759,15 @@ "08c0c301774aaa88b81ec6aa095f55e7824eafa1cbace5b623dc7c79a65127d2": { "69fd950d01a73a4628cd2ff26fd88bc864432af7ec9c2a0b214e105e41696130": { "jp": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "e6b95fe15b73769c8c942b025e34bc6c9b796b7e3023974439110c46303b35b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "c2cc203d1b4acc4f016c9abe4519f61634fafa96714c3f0e7b1ee5cee96564c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "283cdfce3f052ca1b4058952ad56aa7bec051d8a2ab543cf07880fd7987ec784" } } @@ -819,15 +819,15 @@ }, "10ec0d04defc231968ae844734eecc3c0222a9f4c3d83e43404e025a224ce4c4": { "zh": { - "updatedAt": "2025-12-04T20:16:57.148Z", + "updatedAt": "2025-12-05T15:21:44.139Z", "postProcessHash": "b3fd8d1b7eee787b31092cdd119ca4f2a73beccc27b59ccbdcd3f460a86ab95d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.090Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "effd6680bcd12f09d304a38a5731f6edeae0ab9624ed1bf0081dc446f3b99426" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.090Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "9a17aa83bd7f4ecb388a30277b06c42ca2f82f9deb94834bcf76f6155e9fc3af" } }, @@ -846,15 +846,15 @@ "3a3e4cf73cd863c0103607437eb8b4f6836337cfd7e83bdd562015c4ed9cdd6d": { "086e3e89b5951923ddf12df84d937ba158991125876b5f6d842de358bbe8b3fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.106Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "fb971b3f7abda0479ca6b446d10fa45e563e53e4b533193cdf47ac7601de08ca" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.106Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "ea00f78ee37041e965faf918712a683b8ffcaa68a84b666531ed38ba7cd8cf1b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.121Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "b2465a5cd96f04ec09cdfeccabc659965d1af02e9db24576f14e357ca80834c8" } } @@ -873,15 +873,15 @@ }, "4d6402165019f36eba8ac335e666c3d5bc688e1cc2afc71d462b4b0a95607cb0": { "zh": { - "updatedAt": "2025-12-04T20:16:57.086Z", + "updatedAt": "2025-12-05T15:21:44.108Z", "postProcessHash": "a38469346493ab3007e1e162d5e194fb2d686a1d88334495f903e002130ebfef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.087Z", + "updatedAt": "2025-12-05T15:21:44.109Z", "postProcessHash": "4d620b86b7816aae52d912ce7829f03c76baa70534045919bf05211460b37d1f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.088Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "f53e1e5a026dbef96c38fafea45bc14c07fe2ad4859a3ad749188b2c3d227c31" } } @@ -889,15 +889,15 @@ "490be0352814516ee6591ee5f8e07875e2139020d864d540140e0fa494298d5d": { "d23d41d10643691da14255ad0f85c7b97475432325af1c17be68df9efc12be5a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "8067b52c02b63003be76e6b33fb7da40b43bc3d4d036161d2059640dd1f7c426" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "a7b6da3a1fae0ce2ab8dba21352ca1f6e76dcea50cc11b69175b377d04c0497a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "a30a1b3a4adccbce7509c49e15ce0ce238efa1f7c4e1bd77864f105717b4c8e3" } } @@ -905,15 +905,15 @@ "55b28fab1ba94c3606d033461bcc70376b43d613080d008d80ef6eeee311b377": { "256a3209f20639b3de6006d270d351fa95df57bd7f581ffda6773fd8eba690c7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.128Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "864a98275b08744b06c98dd96014565189f79d571df205cbf75e2482e49f18f3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.101Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "de4bbf322e2a336a64395c4b9adfd73dc2380b715500e20cbc8d1df8009779bc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.114Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "2b10d06d558ee85575fe42ac6386781077fa938da76da985a80d47c58486843b" } } @@ -921,15 +921,15 @@ "617059ab9b90c50e356730de729f0ae69ee3763a1e279dd764ff91a7fb180dcc": { "d57355b7ce2374ff50888d99d345884771d8478a28a50565e264c7183444541e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.130Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "a2e2c2b5c704ccd6ece06ee9d5de9f716d887648e5d242eb1864757aa7670740" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.122Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "17d04cb1084f646a47034ba5b26f1bc9ee6d5f4c7ea407edacbc763f0ec11189" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.118Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "e709f25f06cf9da27b50f7dae1c6ea0f330312eda3c0f55fa460bc3faa274d5a" } } @@ -937,15 +937,15 @@ "752a92de3795a78c42039024533716b1bebd226dc5c16f6d9e6c32db92868aa9": { "3a70208f4d63a66f6cafa72e823a27c94a0b217c643d65060e75846cf03db29d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.136Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "6e9e6bbb0e0d89d7a1bb04df5588a1c39524ed19ebdcc06119d60b39a0e5dbe8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.140Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "5c7a2e0de6f9562fd9496dcfcece54f6dba9da7b9076282d990354147d737f23" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.141Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "52e53d389359b8b1fcbd073375a4782c90d17150c0edaee3f985ddb1a12b8924" } } @@ -953,15 +953,15 @@ "7c8202b183dd3bd51127bf5cff1d877fc101a710d10076050d3769cec7237315": { "cce8610caf1b6ee18be42bc4b4573a409a2178a60d7e7fdf9aa312bb9a0e96af": { "jp": { - "updatedAt": "2025-12-04T20:16:57.122Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "f942e6305b149dd731e797e01bde5f1ab8e88df370fed65c3d0497890c5516b5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "a19886bf8c9f0c0646ad12adc41bb64d3c7253c6909609d07e0a306d0a96748a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "331e6c38ae2460c3e45d3a23c7cf005cb95fb6ef3424d039d294c25fbdf3f71a" } } @@ -969,15 +969,15 @@ "7d8c9d047aa047d949a0099bf7badab51bf4cbb1242283616136def6a2087241": { "ae00c1636361dff35e6ca1fc517dd76ec664cbc4f992d5bcfebb7e2a76f626c4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "1140797eccd2bdff578f889659f5a7faa9917b5a999010e3f3dbfafc0abad6e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "7c3488ad862fb019112eaf4a05daea9c1795baa8474d66894fbd6a79b0e4c8c4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "cdcef18737de614827b984003f3c66a5a41cae0524bf8474b294737f97151794" } } @@ -985,15 +985,15 @@ "828d49017ac2a72d1fb53055bb4787df9014bcdf6914a82ba88ded05b27ec9d4": { "9d68c2d46ac27369e5a5becf238948336518cad4fd978e7648cd41b1f743b1b1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.145Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "9c5bbd0fe25c8f6740a5b35d9b7938247d54cc72d464c493e5ca7b7b989c5de0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.146Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "28e5606bf2fee21b52036f1b9746ba5db3168e107f14b5de1ed5b86b81f9faa7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.144Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "dd1c221b3a6bc8fdcab0733ea347562aaec1f2d22578317da5d0e391257b95e3" } } @@ -1001,15 +1001,15 @@ "9970d9a6d501f36cf179c0419231b9d795a4c633dddeb9b278e8ba7a601a3f30": { "5509618b18f9e3d905b42bcca3ca87b185e363a986c08a3c7adaa67ea9d4602e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.094Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "88b708b0f77fcec267f2c025dd1c928486bf0b760faf4c69634066d911a0e58d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.095Z", + "updatedAt": "2025-12-05T15:21:44.116Z", "postProcessHash": "2e44e3e9746c2a9b5c84a9a6b1b9220fc6966e84565dfc41889d6ad9341cc42b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.090Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "eb912abd25d2f977b73da0d25660c208c65e77e7a2b652dc80d7a067ed5c83f2" } } @@ -1017,15 +1017,15 @@ "a1bad3f4a716dc84c050e5be3e8486b6c74375173ac25b4b6faa1e07928f68dc": { "2ea331fabd4829ebc7e1af163a669bd7da7ebae75dc79796126ab275fd4d3c95": { "jp": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "15485de315d5836a55c258e03b15354c0613cba0e4b50e218228c71fa8926665" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.113Z", "postProcessHash": "8956ae6ba4a61c654d671ce6ea354ac3327c88d6fd2f32e94a595ced7846e7b4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.124Z", "postProcessHash": "fdb406fd6ef9bae12b9029650e02d374aa31031a8dc29af43b762daa733d58b5" } } @@ -1033,15 +1033,15 @@ "b5fa886fabf17ebc48a6ca47fc6a8992d00da4b99785793543e0d888695a2688": { "259e7cbd211ad2a2649e5a8f0da300650ca51664a447e45289d100bfcdfc34d1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.099Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "392ce7fc8f69851e0b74593ee40d704af892aba27e5cfefc5571bd48a1bab488" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.099Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "dc453455d77c5f0e8af320ec0d4550479d5e38bc253e197679facc75c6115e26" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.134Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "54c2bfdc07afd285cf23a8d05dc8cd24ef11df06708c5904cec766fde88a0025" } } @@ -1049,15 +1049,15 @@ "c1a7d6a20f956b50b1038cee0a820dd57189fc686d14660b023d1fc67ab2e1e9": { "dbc44ae26a03c1b8c3405262a6dd56a831c655163c2cd640d1e27879c8e4aead": { "jp": { - "updatedAt": "2025-12-04T20:16:57.145Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "c3b9a0ba0fb2dcb23f5a30f1b78ebbc26af8e4345e52147c7098140629174cc4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.096Z", + "updatedAt": "2025-12-05T15:21:44.125Z", "postProcessHash": "550637b0d2ab249b59a184a09d12bacfc2c5c02fd356ca1ab78d168cc55bd2cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.145Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "e05ebdd4142296471fe42fc06addf839728917f42325780ede43b7a45d41d6fe" } } @@ -1065,15 +1065,15 @@ "c369c0aa928f8264daf73b2cb8b5d20b0f760cd84c596ca63fb6e80bf182b3ac": { "081e5ae543866b5886ecf7decd8d4a80af7f854626b8b8136631cf04a6c7a9f8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.127Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "970e83a15a6ea3eeacbb8e156d00618857f8824b5ffa4ade4a97f5b2c71dc576" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.117Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "8dd0323d81e8cff6d565d213896df667a459a80ca058470ccb4b010826d9b69e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.117Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "27da05977f37b3b0642b34cd8d30808105faa5a644fc01060797966fc7be5568" } } @@ -1081,15 +1081,15 @@ "c6c433287e0c8c560d8ccfdb9dab1b764948e7aad08d8083787ea5a2ba4ffa25": { "3fa66f5214cb83c0d151b0adefad829fdec772c62100ad8be67b2c2d29a51136": { "jp": { - "updatedAt": "2025-12-04T20:16:57.143Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "8b1398508f10cdeb86c00cb818471954141f01a758d55a57cb17fa3082d4701b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.129Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "5f8b242bba96cd66db0532e53a0a9d959583f49b014ead8057bbbd3e92c54503" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.139Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "c70c64d0ae2c6767c915bfcb7ed4ff4051c915e8030a95fc8923003ad30b873a" } } @@ -1097,15 +1097,15 @@ "cee9dba64ce2a735e188505d45af71b74c5cd69ece6c6e7512832d84898157a2": { "ba71fb39dc5dad8ed0cc9385af226ee8ccfe87b891afdfae44d4b68d6a6800ce": { "jp": { - "updatedAt": "2025-12-04T20:16:57.121Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "f4ad7f6c868b6615ad22f62bc10bc830b03740782c2b55cdf4fe2f7a2c976fad" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.126Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "e2bf1e77d33b8cdc25c733b697ad11ebb0128882f0dbc3e434f8c4e8543d9f48" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.099Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "e804064451ea2242eecfc50247c86f54a7294c78da07731a6cfc77cce90cfdf2" } } @@ -1113,15 +1113,15 @@ "f03ea3286759068addb766b5b98317ea84803343105fd081b75322828bf9d201": { "8049194481456bef5558bf7d7d6cc3b522680055cc050dd06c21001990efaa95": { "jp": { - "updatedAt": "2025-12-04T20:16:57.092Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "578eaff567044b576bfd8e4bab251b77439e84c2038ec37a9981859489b68663" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "7004c9e5a784d3881e88638381c33eac1f1e70b4a183c6efa6640fd1a8185e6c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "39936badc6a3c1a9d3a1c20b66495c2366523a180756d3890407f4c7c3d1aead" } } @@ -1129,15 +1129,15 @@ "f820ad66299aa0044ecdcc3298f5727903d52ea9ce19686054f70d9df707a8ec": { "1c6d8e151f574eb1c808a7932e470939d01ddf3adbd9a088012790d70765d510": { "jp": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "e74f323e0326c245608db3f2977f269016ebc0ad867ad3a7fe42fb8081c1d74e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.115Z", "postProcessHash": "639113873896772a7ce29e932d1c1706206f6f84d81c704584b8f6ce26658ce4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "08b2cccc240dff88ad8696e144fa64727998f5662fc9ed54b39af7050a7dc5c2" } } @@ -1145,15 +1145,15 @@ "fe8dc3e8a42089566aa7dbdc1b163232b94dab755cd8f716e5050a20b9da71be": { "8e5a24d4923c146d3ff29a36c8d08b801a6681568d413d11ee21ab25c5a588ff": { "jp": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "c38419d127f58261f3e08988e08753b83587585af775b381c711ed39c7ec2e0b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.091Z", + "updatedAt": "2025-12-05T15:21:44.112Z", "postProcessHash": "adcdedc2aceff68a729528a8dee3fe66024070cd52de7cdade2f21d1c0e5e64c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.093Z", + "updatedAt": "2025-12-05T15:21:44.114Z", "postProcessHash": "9b922dbb18d534fe3d92fe2d786df964c99b1189e9002fe919f5dadf38737d02" } } @@ -1161,15 +1161,15 @@ "1468ae293b5d12d0ded8668dbb023988cbdb44ac496923a1ef6653864352d921": { "99c4f7270820d4fdcb92c4d24d5487f3eaa377c46e721e913d45645dba75a74f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.105Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "9fd2de53de1f48cd56068767fd1572f66212224c1bcdd71437981e589cda9b49" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.117Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "ecd43e08bc35775fbbd12e8ac1f372595ff680cd108a6b8d4b856e863d413004" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.111Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "56e0652c1236a636df1304de76ccd7d483b65ebd2d106a39a0a4db329b353f6c" } } @@ -1177,15 +1177,15 @@ "1c112808a954d78a709e3ae05703950bc5804f9e55e3e98efd93efb0f0f879e0": { "a0ef058ccb99a1b138a4a98ffca0037cb2b496f227c55108b8beef337ba82d66": { "jp": { - "updatedAt": "2025-12-04T20:16:57.139Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "c51dade10787b3550b39945c4f896b99e4c967418b320eb077d13d6fff71abd5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.127Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "c7f7865cf2cf2b97d1528d8926991bcbd00f38929d3bb038cf583d204a14ff4f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.123Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "ae82e92ca42886e6eabe46821c07a5b219b17885d6847647373603c310bbc5ca" } } @@ -1193,15 +1193,15 @@ "2317505b4b1b1557458b6ec9caf09937e43cf133543d04e2637e9cd6e0693bc2": { "8b6d58a1ca1a770a40180a524a20350aef1a747a1a0f59ef6bd9eb53764a7d1b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.127Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "d8ab4ecb6fe54078f4763fd8850ec52cde8160317f417733f818d874a548596a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.104Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "8e983f50852b2821d89b3751447864cdc10162d51b470ba644d5fbb021696fb7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.126Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "90b00cb44383bba4ee1315d3cac296b62540c822afde78e2dcb60be44fdd5c74" } } @@ -1220,15 +1220,15 @@ }, "8f390179712abdfde1d16a03f079c6ebbbd781d3f020e59b2ef3af3be4bb0205": { "ru": { - "updatedAt": "2025-12-04T20:16:57.149Z", + "updatedAt": "2025-12-05T15:21:44.140Z", "postProcessHash": "2bbd5586bf08f4e6b473d782963fac871a1e0c2d0b6161010580251d99a9a8ac" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.149Z", + "updatedAt": "2025-12-05T15:21:44.140Z", "postProcessHash": "c6fa718553de9e42f3e784658fd2f1e5c3b6a985b20706164fbdf97fbe529803" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.149Z", + "updatedAt": "2025-12-05T15:21:44.140Z", "postProcessHash": "9bb9b50a947f9ee702259aa8b717616c65ca7cf7fa67ed2486d636ff116aa632" } } @@ -1236,15 +1236,15 @@ "3371d95238c92603c162eaed8138395ca44e47b22ad969c5099f7e599ec16c22": { "2a161bba41a266518443feea5a759cf299dbc3fdeb7b00fd74b546abae68dff0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.141Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "1f5febc845026f669bdc79503175f4992a144a463c0d30b4884c3d5c738a6d40" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.143Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "60699833b3145a56fed180989c614e26463ede4b3ada0b655b1a3ee5d5333759" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.140Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "9c615fbf99635f39ce649ca26fd069f9a53ac8b781c8a5fc59a8f62ce58af6d9" } } @@ -1252,15 +1252,15 @@ "34148aef91a7ca42367acb2003b2045d6893d713fd20c6ef4a4a8fe6b505125c": { "0df15707cc19ce74ec40c00d884f8f77eb33786d03f5831e131804575fce02b5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "8dcea106834ae5cf1be4b98a7e844b865a4492e275154f094062238b61149124" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.146Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "f14476558d7aca0830f51e95a7a3b85046650665241343955715c76ce1950c4f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "1daa36adc4b8391fa9e918440cab755f22f2e377e79070a0a0795f9f51bea6ba" } } @@ -1268,15 +1268,15 @@ "5c385581f9c65edaaae75a74b6646a142de547cd3f20a408953b75ba33586e2c": { "8dc4eb869f4a048ed04d5883545cce095cb2df351eba54b486a29c615fe29cb3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.134Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "868bf288f73fd9c330c2a129e0a49ec0e123f0e87d78e00163b314ea885cfcd0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "a70feb21a77120bff840967047fa293b23977599dfb58c8c950c53b6ed941394" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.134Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "400634f79b530331c42717f4122c416a77541de2ec36b6dad36b31594278fd1e" } } @@ -1284,15 +1284,15 @@ "650a560be33079fccc4800a89f7ceabf7333009b1cfb0105d0e77b22a9afd9c8": { "609636eeb62cf3a4bd5ce284becb34bda3b97c2382d2dfd89320e13d69bf22d7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.099Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "11f4d2ca99c385d901022447ea87b600bf427da630599ef9fa49c58fde29ea7d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "f372f100bd225ca674d6ed59531e82c4e6d86bcefe83240f4ca1014ab6651f7c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.145Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "cba45047f1b75cb54924f441db6c4057b9c440dadfcaa13e37bf7e6099b90009" } } @@ -1300,15 +1300,15 @@ "66edaa5c8dc32a1f831593b8a49a8f90c9de66304dbe8e78969217a73f2200c0": { "3a20ac6682c2e8633f0f56d7c381698dc85b1777367c924c9a05d2c329c4fda0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.148Z", + "updatedAt": "2025-12-05T15:21:44.139Z", "postProcessHash": "51b6904d82e3c6c0d79453bc5131557272656270f4b3adcbf25f06431f4e7393" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.128Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "42b4ded2d79f28d4d60b1cf1abfd683ff7afd47089777aeea09279975a3ff67d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.134Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "eee7ebeabe5d1137c48637ce61c45b205c447e17786bfd0ad325c70f01a414f9" } } @@ -1316,15 +1316,15 @@ "67113cbc50d80beb99c25a836c1c97bf312030d10537561666f2d9afcf9f3145": { "bc5d1e200e64a767369cc0ffad68cd1dc62da9a6230b0c00c0c10c90dcbef298": { "jp": { - "updatedAt": "2025-12-04T20:16:57.130Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "f3551ef18bf29175e59380efe0c4b13dfaac38578d2b5462e1f3356ba5d373ca" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.133Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "11f56bfab3f8737fd34feb5c7ecf1ac75a3851e2558892ccf036bddf5caf60d4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.129Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "ff5c17aa24858202338ab317fe23e766b0805af1a9187dfd9c5022fd143d41cb" } } @@ -1332,15 +1332,15 @@ "6986025ddfdb6e69c9d68bae98e09599b7bd5252a433fe1c14839522e57376a7": { "6a07a797478a7c19aa592d19f3fd5211e2bae00db7fd3cef33b175016a1b1b29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.136Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "1016da6c8c867056e7d6033693e4e4fa89b90f0d4ffa1ff47ef25c442a9a23f6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.139Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "d5ac21b59e7710e775098bf87cea59702b80bb383f0c43eadb507cdb37016a44" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.138Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "6c0ccf9d7c01e430b2b8b648bd66962bd5b33a4e91f034124a0534fea515b7f1" } } @@ -1348,15 +1348,15 @@ "8e1acaa9709e95b6354d4bb719b069fee08bc3794641756333aba5003eb9475d": { "e8f0f6277f744012426a53a6027257e33c4b16cb2ca45dda3d90d4b73b3d4c5b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.142Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "737751524ffe0c92aece74373fbcc59c2ce15b687b95a9a41b0fb434c8c49cf6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.137Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "e5a096760ee4b7b14e4a8e4ed8771753e165493fbfd45971d03ec20331c88571" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.130Z", + "updatedAt": "2025-12-05T15:21:44.133Z", "postProcessHash": "b16ea9375be145c8ca13f89ed03601e8dbfdd112d588e5b566432989f3dbc6e7" } } @@ -1364,15 +1364,15 @@ "a5aac8ce0e37bc2df7af5f69708607c2c9b46cbe068e3172847b3191394faffe": { "38d2828e9bd727652c3233af76ea089e954aba2db55328f8cf1f43ca609f19ff": { "jp": { - "updatedAt": "2025-12-04T20:16:57.101Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "b1a5911a91703322d9d3b5a72b5a833d7ee1a016b989b4229fa14ff34190bd6a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.109Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "9670319b7ddd379f085337a31ad61066cdc9669060a88e89f573d71eb30fc4a5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.105Z", + "updatedAt": "2025-12-05T15:21:44.129Z", "postProcessHash": "f7d78abc526a955a9cb24a12823ddab302b52b101c47f6ca76ac2c2175a3f106" } } @@ -1380,15 +1380,15 @@ "af5c9aba153f2323766f5c2833f6dfb1a669b295e319d579f4546ea448e8d7e7": { "0d9634f2d0d51799480d3e5d225d816eb09fdf75e544bf3b04b2fe1385fb9619": { "zh": { - "updatedAt": "2025-12-04T20:16:57.151Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "549861229c41e6730d3fe68f0ca940375b7924a113603ae96cb24fb1ee35219c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.151Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "dca8fc7c0460e90fb3d623a878e1afc9d42a86a4729c272fa9444d7ab400b85e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.150Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "bb8b20123e0604ec76131e06e6087485fe385a69de6f845bf142f2fb2ddf3144" } } @@ -1396,15 +1396,15 @@ "b01e9e50dff0d52b1c86ddcce64d477f77a182599c27ebb6752763a0c4cf1884": { "4bf15471d437e48ecaf706869ad9127730c8b915f392e00ca4b38372ff596b01": { "jp": { - "updatedAt": "2025-12-04T20:16:57.145Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "bb540971c451f21cc686edcfe417cb7661f896b37c7459d1fbf6317c45bf7743" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.144Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "fb4f3b72b7be74c0f52a746cb58187909cdfaab70884701032186d2c635fccce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.144Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "1ae46f504a1ded1d92eddda10817313a8067eae62c3d397374474628d6745048" } } @@ -1412,15 +1412,15 @@ "b721aaf83ea7701a82587311ffcd215fa0fddd0ac9d459193fd26188e0680183": { "906c00a6ef80e7715d21aae24374b2b2d044fcdc7b9d5c6c2c7341ecd0753821": { "jp": { - "updatedAt": "2025-12-04T20:16:57.099Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "f8fccdad4355400866118dde3418a4741e52620861b6c3d527f60d3ba9865414" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.121Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "f0e12311b51ca73e132406cdb80aace0fde45bfb42f8c3c1d3d7b4f193ecbb8c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.121Z", + "updatedAt": "2025-12-05T15:21:44.130Z", "postProcessHash": "6a5c9221d66d6a1175ddaa96d31ee0ce0bc070aefb56cd177cbe7eba92614895" } } @@ -1428,15 +1428,15 @@ "de08ffcb57e92eb891276970020672bdbe190e2ad13861a7a5a14fe04f7eff24": { "b11091547782b23a3e69aa42aa789855dc525b51b00a033b1cffebdd4f69711f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.144Z", + "updatedAt": "2025-12-05T15:21:44.136Z", "postProcessHash": "3fb3e911afa53e08fa65144da6486ede34cbe6ba503f6c7faa7912d44381f4a0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.141Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "2ad58de060ac4af2de3e37cc4916ae4f12bc7e22831b55bdc48e1efd202d18c9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.137Z", + "updatedAt": "2025-12-05T15:21:44.134Z", "postProcessHash": "de158925d12dde6f2142aa7f357c2f179cc9dd982c3280274b0ae26b204d4461" } } @@ -1444,15 +1444,15 @@ "ea2d038b6989e3982d873c583fb3c15212b691b2e747de62d4d28c3e4b11a23d": { "68f32501aba4af446aa28658a6859e797a66b66f975249f4a21ec435c8e2e471": { "jp": { - "updatedAt": "2025-12-04T20:16:57.146Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "f9444e37956cf6f3b52a570c49e5e0d16ff927f05eaede0c6d295c4ce71a6196" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.145Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "b69f6a04ab63dbd1a0f153e1bfc3fe578ef19433882d01c18525bcdc1b6c2cee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.142Z", + "updatedAt": "2025-12-05T15:21:44.135Z", "postProcessHash": "fb49844c0784a68c306942bcb10fac5ce563ed032f48dc8fe2c849bf2267cbf4" } } @@ -1460,15 +1460,15 @@ "f56b183aebaa9c102a1630d41b724bdd0ef7984c2f5be9f15f51bb83994e0265": { "0e4b6a498cb6259a81c3b89b57fc27d109c9f7c4517473e5f6371c0a4d14e7e7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "c176556ad4a151b62d018d6d5b312029f1f14f3b7237a0c7d140505d6b589d51" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "6112a4a4ba935f968ddc8ac9a885a151927d834b0f0eb5abd09dfb1dd582120f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "403a8c7ac0aec29e2b71d08436d381b04fb84264393e14c673169ae8376fcff8" } } @@ -1476,15 +1476,15 @@ "f80606d0e748135944fda4f0b2bd5df8b58807fb2f4c06c85b06e12fca82e935": { "2aa54fbd8a8eef1da3872abeaa7ad8858d0e7a55684ee9afd514540bcb055f29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.146Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "ec7459d80e21533182e82ffc942e9b571fb02a8ffb0d538fd141404ff1048c53" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.146Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "0604b47020a2e62eddd30dde224cee6d77bb6c94335c42fb162b0c622ed8e876" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.146Z", + "updatedAt": "2025-12-05T15:21:44.137Z", "postProcessHash": "653db3a67de9f963efeb42e7abd4dcb57999a2703af29fb865ef8c0fa6206a69" } } @@ -1492,15 +1492,15 @@ "f90130006ab67f0f1f9729094d7e71d602684a6c03306792b40387ebeda24cbd": { "044f9d08748a2a48a556c183ed0bada874cc4ce848cad6b1bf87fba782fe7d9b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.151Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "aa01c7221a2e95022b44dbd371f21586d23683555d375749c61daa4ff195acdd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.149Z", + "updatedAt": "2025-12-05T15:21:44.140Z", "postProcessHash": "4d8f95b6e449ec2a5b0bcb452a03d0fd3ecb4b4db93079982ee11df37415efa6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.150Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "422b789245f141eb48d14e2d8bb7c081181b5229e0661c1abb2ea2e872dda4e4" } } @@ -1508,15 +1508,15 @@ "fff1cff77ce23873924a1766144be6a0a4bc145a4beaf1c7902459c008cbd536": { "6b16dc8b034758efca2a7dec7fe695e186e4ef2f750e4a6ba872d28a906012b3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.127Z", + "updatedAt": "2025-12-05T15:21:44.131Z", "postProcessHash": "f8d1686e959624443c8a39ba2fc187294556dd22492676745e46bf6df0acf308" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.128Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "948d2775b001c3b85aaeef3e6faa353c8fb892076ad921a48b83ca302ae5200f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.127Z", + "updatedAt": "2025-12-05T15:21:44.132Z", "postProcessHash": "46efaaae764138b2b63c17ef9aa23157386b320c7f70b1d24e1a5d1d750a1086" } } @@ -1524,15 +1524,15 @@ "0007ef5eb0fc8520aeab373a05b58e2db16ece5be3074e20646fd984e7bb2153": { "534ae688e369810666e881d18767610a7df7671083edd5debe450d3827e074c5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "92f4b19c5a92f7d812366ce8d236584202ca5f735d0e3ebfe1a15efe403b315d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.148Z", + "updatedAt": "2025-12-05T15:21:44.139Z", "postProcessHash": "6fd15ebfee3832acf1faaa51a5861d21ac0497c5637d1f6d767c7af89b0e01fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "130d9480e1f47edc73846eb99b8c5acc8dbf423dbb4957d2cc591ef6ba100ca8" } } @@ -1540,15 +1540,15 @@ "05fa5078290d9319b91e520b8d624cd018e97d963be0d0e1cd22ca7e37e899e9": { "4a4c4d4b7b75c17db47caabac407cb6678d38f795ad11e688adfe6762b928d79": { "jp": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "76019731d4cdd4d8176d273df256b186999d82ad183ea905a7e5deb828f8e460" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "09269f2c2f312ba4210b07157e3dcdce2c118162e6309e9534f2345233c611f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "1f04e24e98dcb482fbe1af59f1dcbe70346ba26e7e6c21267090188ee0ccf730" } } @@ -1556,15 +1556,15 @@ "16a9baec9aea4c6dd78355c05288783f630be08b0af1a257fb205b45c7adc066": { "b1a72f898456e3c08b49f6f0e73a4fc33fa3bad39fab513c1db89294a3fb923a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "3bb1ce0ee462e950fdad9930985525b75615acf2eb9db4b73fdbe415fd337263" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "bde953bae180e37cd3d4591a46d91dcdf6e5667e1089333f6adbc59e98f8f9cc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.167Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "2e8e1c1206ef52519a54a87a4e3d8fc21493f4ec8cb1d80d5927cecd8af8e2b9" } } @@ -1572,15 +1572,15 @@ "24203d0280dc684588776442ac330a354e834de5789e13b7f7068042627350dc": { "19fc846b48f319f018e4f670ace8976874e318a091bb09940eed158a6c8e8569": { "ru": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "62e7436a79c3071a1a2fe80e3460731e603184e17db6ed0e982a747f053e7906" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "60feead5f1e26c8c8724eab4ddc10e80d2d9c4ce3b22a80ebee6e9960e933cf7" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "91ade27d2cd9d1433a867dabfde1a17107ef9c1be2f98f5f64db35474c18cfa1" } } @@ -1588,15 +1588,15 @@ "2fa693bc37b3a10adc8d79217e3b09168dc83b1d1e169414c8ff196815fec6f9": { "9e33b9e6995d58fab1e0c61f6a5436f2184d7c49af88577359d93f178ead07d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "0969c06e893321491d7e9431c66bba91e0f62a041106124f0c0c44592bd7fc7b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "415b8e2ea42b190c995781c0858c50bb6e62a65c85f9b9ff4fa2b4d29cd856ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "f09f13324ecf40b49df15222b42ee46aab32ac3679e1684085b90177b511bbcb" } } @@ -1604,15 +1604,15 @@ "437aab42be9088c95b44d049c562b541333adb34c7167b0341f25eeb6f1da633": { "673a9dec5d05173b117bf71c194bcbd9250ea1e8e6162c76a5ac07819b4a0314": { "jp": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "9f19c04ba7523eae636b7bab379863d1dd053e51947e12c386129879bbf905af" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "70af063c3d3a53cc274f22beca4893c3a72050e35dd066fc5a745e4ae55b40ff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "83112c13fe296a83b78d78aff6b9a79955661453c41eaa10090581928ffa6ae8" } } @@ -1620,15 +1620,15 @@ "4d14e175d2ad5b7f1f59197782ca672764811be0a7694da0d93c40a71707c218": { "2f6f3975ac07a17d2e6c12809f029b5fcecdc238f96cab5409c924b908db77fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.167Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "f09bc8ee67d610de44e74ae0a1aa2eadd45ccfb7c4d7a83e2728cdacba96c989" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "587029793f5bbc1b9f6d5e77f18133301b36b71b4474e3ad55f0faf2464d09ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "99b0848f9c83e4eb4da4a2a4287e691cc501b449988eb2df9cbacd35d8eed00a" } } @@ -1636,15 +1636,15 @@ "57e4e9dfa0451001fd8054b08c62e1b7e7899bf69d75440b300be4c4a727b99e": { "37f3dda8e8d9a3dd2ccbec3bdd564d2de4200f5a0108f14e3cb3cbe1f05fbe96": { "jp": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "0fbc96092fc9ab88199e3b6799b6aa4c702e8ffabd509f5e3755eb59225f22f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.167Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "d229910f7b06b1d993409bbffb9597ca86056d34e0395b96f32a4787ea302346" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "7d26332b638cc80811279dfb302004d5671ab8b8f4b0118eb4946fba460dc317" } } @@ -1652,15 +1652,15 @@ "60e6b2c95bf2975a8ad16addf92ca2f2b8ef9b6f0267eedb1b1609cf83bd7bf0": { "8b24d0eebf933022f5b7646dbd76005a200ed0eb134c91ef2ce37429b92f838e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "7bee01b2ae04b2649b1d5ca2db06a8faf376e5b1c9a3a0086891396807ef77c6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "8a95e5de4f61495a9fb36a7c0e0ae6b4b5bc067c650d0c6650866312184696f1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "bc0e58cc0fddf4f5be9404da3e736004a2e1bd77f3db4de71e40108505bc0128" } } @@ -1668,15 +1668,15 @@ "666059b00db591c1a56ce4963af6165fb3c9b12689bc7bd2d002ad9f8261acdb": { "60035e65e48fd5fdb3a14661c3ac4811bb8496f2b211e4fe284e3d6b420921c0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "09fe5213c66c05e3a526de2504115c5d6adb8a70827ec04f061bdf06f3139c91" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "cf25e8f2a9c55dca6797ee7b87363615179048099e8738c9c943dfcbc8a65871" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "d45205a9ded23299dba0c78af8974e0f99a5a3c145c4ea2779b9e17b437501ce" } } @@ -1684,15 +1684,15 @@ "7431d11049418c30c908694305424392c5e608ecfdf0bd5bb5e82ff877dd01f3": { "3c1e299227977efd8ca6ccf93ac2673c11fbfdfe441a0d0784400200278822ac": { "jp": { - "updatedAt": "2025-12-04T20:16:57.167Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "f860074eadece8a0f5607c7098565c3d20757a4dfe4c47004f946c59b2a58004" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.167Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "ad1fae46f1320142cc7b57cbc6660819b52d09b873350c8ee5b302a2f812fae1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "5551242ba57397f0238cbbb0a8214d2afb215b7363732b62b562e8c8ba5c451b" } } @@ -1700,15 +1700,15 @@ "7cad50f4cd617547f24613bf26b7d92863268b13a23a167f7afafe1105d9b80d": { "fc4b5c37a2e9cd403b127f9b0e95af107c0815b1c7bb98e1eebae04bc96ad554": { "jp": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "3b2d84b2994f0e8881586477b49df971af42a2312f2dc7dd43f4aed1823a686b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.165Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "55baff9fa41d09a8d92951b2f5740275e0d19de37eb7d2487ea40ef7d3f1c882" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "819bd8a5bfc405a8039cebbf4352ef51f9377a65c02787a374709db39af602b1" } } @@ -1716,15 +1716,15 @@ "8b1e7b5824a25229b63b6cae491572266d76a2f3619bbb37de99f10f9cb281d7": { "b39b1a9501a0d4efe97c7c462447f2f7f762c085e32781115e4e01abed9470bf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "c3fa1e169e46e4b9e09488bf9ad56b86359a945dfba10718ce098c031a4d3bba" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "f67b6bf5423d3540261403b47f2a0c198dd2db8a2daba4052a126b1d21ec0f93" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "9aa180e1301e4a77adf31843f44f6ff7fab1804d67eca7ae5d6fb7a60e1f4799" } } @@ -1732,15 +1732,15 @@ "a3a1fbd31e0aaa187d657bd8045fa61bc9f31995880bcb5d5758a3e184f5ecb5": { "28ea6e40b848e91414d2d23698b6689414783f37c844f3f15e49942c2f8d0f73": { "jp": { - "updatedAt": "2025-12-04T20:16:57.152Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "50fccf4cb7e4166698e0f96044ce330a27c525dc568383947bd4f395409d4bb2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.151Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "393a15f3ce1e8c8b9c4d520c9eca0d069fd7c82418b1690d20bb8eb62c2bdbc4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.151Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "86599b5deff7e14fa07312a47fc6bd5b2be7a5ac1afdc9297f52afa1bffb73f1" } } @@ -1748,15 +1748,15 @@ "adb57f6c330a361767cc8e018fdeac391e70be9310b007ddc867750c55383217": { "6bffe63c913aa6f222b1d3f7660678d89871583dfc5b85a5472e73ccd48f0852": { "jp": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "901b6b6881f9ff3a48e1dfc492d04fc6a98b99b46dc2d5f1d40ed10f3ebcec79" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "1915bdf6c4283c0c5799311e8a2d790c3fbeca8e22a5d828825f2997e13f13ce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "1ba5ec36b27c141d0d9b6b6a51f2fd6ac1cc88d2a2ad8a4cff44ea475f56e424" } } @@ -1764,15 +1764,15 @@ "b0f947d3a4638d92601c813f2511beb5008821e82e066594946d2230ae518888": { "e2d7964de87a21a4f56589f9ef750a5f70e553620f06ce8ed541c52c8e2fd182": { "jp": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "e028264c61e17aafe10d88b807c255caafcbb7d27dfcf5804bf521d513d5f2ad" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.167Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "b6f41d70ed033c489d3e5f2cf51c17ee5a1b0d057600222077ae426956aad6e9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.155Z", "postProcessHash": "d0d8586c653105f5a9de55f434817d0a00c1fc8aa2a06cbde2544cb65810da09" } } @@ -1780,15 +1780,15 @@ "b581e8a0971d1d07fd92c09611201fbc0ec1f2ad10e9a9e9462297b6dbe79f67": { "49ae124d0469e31fa1e3318ed468a02b4e75af99b0ad807441a4e18f29afb644": { "jp": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "b885b782a21fd53e3fd121f5fed4bdb1cccd227b4aa46814c1977053006e2207" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.166Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "3b9337910f6e934135a223ccda9f7a366f2351e0ea2b79f52f3a96b5405afcc3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.150Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "d3e4f0a7ae8538b6020cd27f4c69af03c8858ced178dc40a91dd945e80bebbfc" } } @@ -1796,15 +1796,15 @@ "c5ec668978bc00da55afaed8bf387ab8e40f7e8cc8a5c3c85b6528469658dbac": { "2760c235bba120190e9792afc2791f4b14241f22634e6dcfd806b0f0c8a2f30f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.151Z", + "updatedAt": "2025-12-05T15:21:44.142Z", "postProcessHash": "c7eaa88409c81ed9f3d7579a15e1dd29085d7b536e90e06f2d50fcb29fb822bc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.150Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "1859ee75a3a7f21a9392f99b08b2e1dbf3cd7dd137d1bd122bc30eb75d473966" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.150Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "2726def088c7ec8bc0954a9bff36f0fa7b2a5f3e20f943bb84d0bbb5b655d1dd" } } @@ -1812,15 +1812,15 @@ "d0878e46ea2d9748ef2ef35fa15820d74801d2e823a8c466520717410dca0e30": { "34f3e7285aa8956a7287c85c05fbbc6f82a3d73d51e58594a18dd7c4e673674b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "a6480cafe65e8930e94181be030e63e4cb802780c9edd93fccb9fe016f17f546" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "b12d883ecb54de26c9abb16b819b94f396c7299f1a256324b569b687c8da5e59" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "6d18e38ca4ab2d081b2d36768daf712d7d9c3010dbee8b8ca6ce2228e6447e3b" } } @@ -1828,15 +1828,15 @@ "d84d842f939c18587480808dae2c357d93b19f0503165ffbbb5df5723ed8d18f": { "78c6fc1825dfef395f2920f37ae3b83e7a55e08e381e14e11ade4b0633972ca7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.168Z", + "updatedAt": "2025-12-05T15:21:44.156Z", "postProcessHash": "8f5b076307237de05c86d294a405839a08bfd00c38d41361063fe1e5a1afeb58" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.150Z", + "updatedAt": "2025-12-05T15:21:44.141Z", "postProcessHash": "8304f8302bb20922c073062d269dcb0acf4ed50c8d6e57f87821b87e30800531" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.165Z", + "updatedAt": "2025-12-05T15:21:44.154Z", "postProcessHash": "c3f6a64dcbfef58603a7a2a23e40c5c8cf897992e05615d7d7e7f6a00b384927" } } @@ -1844,15 +1844,15 @@ "e16fa51bab7c52534a6634130d4aa9d5f4eaf5a9199be40465cc25c632091ca6": { "9a45c83991713cae83ff2b9ff52e3fac9bc7cf89dc4ce06aee3062459ba62f83": { "jp": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "4171eae06b1f4fa147b28dac4ef2ccc8f890f5e15c7e7ad69818ea19bcb03772" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "ab858f1fa1e875663cc264595b2a77bcf7c1f7d69173d25b382bedefae1fd423" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "3edc9571c17b0ed268d1fa925e5646d9d3084259c672a71304844c5ae1ea70dd" } } @@ -1860,15 +1860,15 @@ "00385c907824ee916e1d2ab90ec1343952049a30fbb273cd705e54e19e5e54dd": { "a1e228059158c6496d116286e96a0ffb78b193d02679d41dffd889c4ae3f4ae5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "547d41151a1591f7eb4ceb1bd90a8af3ead21ce0a36d9fcc8fdda6c94538637a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "270b3f5b7064698157e218151bf01aa29bc504e4f46446af848a0570211f1b32" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "1a3e57ca469cabc46f638c0071b6db392764bf98c1f3c089fe4b43a6f1ac63b6" } } @@ -1876,15 +1876,15 @@ "2026a346cf904938db3b958bccd4a5998e0f9c3e806206b6a7de6c5a43e41346": { "99e01b88c76b26cea06cf6daf392581a33f358c37c5d4b5081a274912cfb4fdd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "bd5362849b253e6d73d07590fbdf8d5b130c183e47b83cc12c529186979a870b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "af84fa29c0c52dc0230331f8d3e00a03250259a02126f3f7640e0625ed0cc228" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.182Z", + "updatedAt": "2025-12-05T15:21:44.168Z", "postProcessHash": "be7ad39e811b3c0e866bc6c0e8a479863e1742fabfb09317b3b524627e4eadaf" } } @@ -1892,15 +1892,15 @@ "2283119a59e486c7e332715c4be76c78e6606cc8fef66284fa0397e91f6e9842": { "89e926971a9cb3deeda49f638cbf8679ad56a009190bf99db1a5f7d3b55c106e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "2305ab9ffa2742865e60129bbd9d2e696a284cd322aafbfbf56759f9ec12c7c7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "a276804ad226b3742a7909a7ae0832b1b286a6e75198bc7c05c23f4389923988" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "368cba54b9f5dc70d3d26f0cfc08794cfccd517a8e07117e45f7b71fbc02fe0e" } } @@ -1908,15 +1908,15 @@ "3b5e4827235bde4cab69ea0d512c4769c70579291411c713544bf464dec162c8": { "e5ffb2aae3eda69d46997485801b157c3e85f0837446fbd682ac417320b69197": { "jp": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "fe30d11faab6f858072513228ee887e3810f2662fe8d46eb026aba30a88cf095" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "96047ef5ab1a60d859f517abab6f372c705a6e2ee5a52d805ca1df55ea191bd5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "cf67e322f6cc9b9d65a5eaf459d9051e7228796a22efecedfd76ee915781256e" } } @@ -1924,15 +1924,15 @@ "51a4e1d93b002b635941f3a0b969d77f5e76ffcf3ab01cc6c0302553a48f2dea": { "e3cf07cdc5c67cae3f9a9be2ea541fbdda42c2a33f509a3d16926cfb4c4fa296": { "jp": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "d26fbf312f2735cfb47bedcfb3f27df874ec29e91010becf5be9510c38d83eff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "871a7e2c8459ec641ba28eb30007b2dc2a0f62a19923e14c758776372b4b0969" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.182Z", + "updatedAt": "2025-12-05T15:21:44.168Z", "postProcessHash": "709a2f6be3f64d5056ea3473ac104c9305926bf3aa3db4cd8051509d00b6192c" } } @@ -1940,15 +1940,15 @@ "51ffd052b5e18acec3f8c2fc6fc9f2de6d509c5f9b55c4e653df085e2f4cce96": { "e67a2d890c9d442e3c7a7f02a0d5c6afcdb1928ff906f575bbf304c7f7799b2f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "8f1ecf0d944bf9d07743cb1d8d479ac30bc7e2a791bfd93f8860c8bd40732c0f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "d1f8724142e72a23ea4e4715f5154e5596cc6cd575c284a823bc570ab2ab3239" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.188Z", + "updatedAt": "2025-12-05T15:21:44.174Z", "postProcessHash": "d30a889ce8b532a5ee0383b41da491173bd96eed5488ab67e69f49ba76dc382d" } } @@ -1956,15 +1956,15 @@ "58660987b73352ad4963dda3033196dbfd0c791f7ea7184da7b8ed72a70d23c7": { "e6384b2ee9b82af275d9a7823132ca573a701a7955a267deaca2eba7848c0139": { "jp": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "b61149369ef75ddeff990df999cbfb1e47e84e202ec9c3fd58bf0650043ab8d6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "531355f3e5ddc0737d42dbac69698d413b474755828317a5863b60cf43a8d89f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "be2314612b0db55d6b578c6cc33929d71c651141f7558410648133ba1522f056" } } @@ -1972,15 +1972,15 @@ "5ae00fffd365a54fbda628a19a927576375cc455c591c16a26e7ed16b919a10f": { "2c1fe0f08e90b42f0362e7d55eb555bccf6bc9522b4eee5aa410eecb5a6ff63a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "2a7bda1a67d09c09d92ed6a982dc07789eb06b176110bbc4e2458efbb7a61829" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "fd8b047b611e3e0b405cdf7fc6cdb49af8b1027e5d590de7ad138019fa5760de" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "c879d79c735f9663cf3cd3ad8ce7faa7f5a6891d9d1418ea7055b6265463897b" } } @@ -1988,15 +1988,15 @@ "62a28a91cc967d2076cb4a8ae68eb32bb7dc0a91eac1089fc166676f54731dc3": { "4fb613d98fb6ff221944b46d4a102b8b41af0362055b5e31a68dcbedb5e8be6b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.182Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "e707a8ccbdc57b567febde1d27f63f094ff8d99cbe93fc9208f50f21fed5e94c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.168Z", "postProcessHash": "a5ac70c1db3977c93fcba2079aa3b426a804b1e1f39dbb142e52547b66ea2afe" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "add865fc6bcf8e0e67633efde7356433b66407f5cdab059cd27c50bcee069acc" } } @@ -2004,15 +2004,15 @@ "62cac186a0d5d595a384019a8da0f2587e8ec388e9fa723441881ad21746e53e": { "5315f9a99c66f3565ee182e7d8faf811aa2e4a227524f9f573eb826dc8b5c51e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "594368233ac15b6bb9d12060c0be79b8fac35cd848d5bc2dac5ee43d3c35aebf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "b950804ee19b1df5caec99cb36de7b67b4ab56a418e67bb1d5fb49a37962ac6c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "ff32e60cbeaf25870bbd77f110e8edb62c2131e99980c2423701fadc236615d7" } } @@ -2020,15 +2020,15 @@ "64c029683442a95f0d9971d2c2a2f011b21167a916369b96ea20390f74a96eb2": { "27ea13a9d6a87686196565d791a629223843e1c311b9bff9edf44c593e511703": { "jp": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "fba7cd44d2475428e647b400c207e0d4538477cff1e2674691485e487910063d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "eaf81a80ac7da4c844fae6ae87a0d9c868cb16b5bb32924842490d860944ee45" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "35c5fa22d646a35f725d636c55d1b19309e195d458859ef1c1169b4750cb0fdd" } } @@ -2036,15 +2036,15 @@ "812c31122c49b26a28f2af399b63cac7fdb8dbff9b0eccb1a55146b1f53d9141": { "1ebe27a88b5652f04a87609b29cf3e09b5dc4ad9bfe9681936296ff736f2d7ce": { "jp": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "b637b54a861da4db609bfb932c54717e8c7f3bc22685d6b292dcfbc41d21a13b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "acd7e5cf88e541a1e5046cb8ed5dce0c8991135f2ad5a1515bef87e3b5536f69" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.186Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "26e2aff89a6003b0a6d1774d83d35ebbabca584088650a4c2327c11b888d1a3d" } } @@ -2052,15 +2052,15 @@ "8aa6821981ce9839d00fc14d757392848b9750acc4bf8539c334cf2d5871f908": { "a27ad75b9e2993bcfc4ac7d0eda9c06a190e908e4e85725e849767c67999764d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.172Z", "postProcessHash": "1bb565ed7765549b8d6d69ee766a259e97ee6dfb8f00d9b92d1ae0a97f31cc3b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "6b180ae2d17f55172543c8dec4e2cfef6e70e2c665c6a1bc78688501cd4169e3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "590e5dd84759f4f3f06a1a0edd33450e9059694a44758ab933c69d923af97a68" } } @@ -2068,15 +2068,15 @@ "8f6142d5329a13cb865837bf5f90f1676c0ed34132ae0b7413c66ad9fee106c2": { "b5efc55478dd9c26c80dffe9ed741b395f4d2368d8eee6c9c3149cd4fc4eebc1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "91675012a42a61384dcc9e53117fa61e6a9d9cab0d67dd1204d8d38aeb6c097a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "79ee2455f96d14367e4b175db89f42ca1bdc12242115b104d31fbd9a6679a3f9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.187Z", + "updatedAt": "2025-12-05T15:21:44.173Z", "postProcessHash": "220b572e1caf3bab32382617b48d948990c1a0a3ddb27bbc1f12a496fa1f2c3d" } } @@ -2097,15 +2097,15 @@ "afd2f2eebd8416c23bdeb683cdf48c7d32f86769fb59accaa3e0399bedfbc689": { "9b1791199c987e23d27abeedfa5722370720553cfd8a6405ee7112cebcc27c6d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.182Z", + "updatedAt": "2025-12-05T15:21:44.168Z", "postProcessHash": "16cd2ee10c051c017171dad03e2c1eeb07825f45e798c38df1ec50020eafe9e5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "3c4301b438e3efc3a0d341fb9bc174ce83c57eed421693eca9b226fd36aac980" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "ab525f8b57c01f69bb1c21c11d33fc294e3912e3b6362e447f7545fa31bcdac3" } } @@ -2113,15 +2113,15 @@ "b353f551e48bc3b4c88a7db0d857fefd25c028f8d05216430afdb76e3bd832b4": { "6d6603c2d993968e3e2fb68963df1f14bb64c291c769f84522294cc56cd80d73": { "jp": { - "updatedAt": "2025-12-04T20:16:57.182Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "0bb9eec0a41e8870f671b439e9563795a77e4ce5a3906e7b00d5c9fe30e27bfd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.183Z", + "updatedAt": "2025-12-05T15:21:44.169Z", "postProcessHash": "6eb66fdefe85821c25b001b7493b87185ea22f7fade828668e4a36c0c1415b14" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.185Z", + "updatedAt": "2025-12-05T15:21:44.171Z", "postProcessHash": "d7fbf5e47e20ca0de009e9ada5a0b11a364db3196639dd1dc4b0a089ab819092" } } @@ -2129,15 +2129,15 @@ "ba6c4ca640fe7b3f714cda5b21aa83f56d6987a93c06b0f52403fcf16442d4a3": { "73a0749a7a37be27b2b679011c93ceeaf5407fff6130ef17dcbbbc612aee0d5f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "b8a208e0c90196019be73be76f746d64fed2a656a6aab066f7b8955098af39a9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "c20f8d68f01916e7b2ad2934eec8ab53dc236526537b97055abf849d31d1d075" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "c55f96584d853b6f6de857946d8284098568d4f1845a703f6444564d86d24562" } } @@ -2145,15 +2145,15 @@ "c85686859f3f25046db0082f882182fadaaa53c9674e2b8421280d74f206eb40": { "add68d9d7c2384a1f4236b30131c64724392237b73f94a4430f8fd215046f46f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "164ff547e422691ad7cadd85b063b08e83f7fd6557d6e2a9390f429fee192ce8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "509955a867f231ff7dda09eeb249a0f75bfee0cd000a4fdd2af4223d3ab45780" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "50cca8fe9c0272f6b13161923bceaf40c2d251ee8dce94ed1718ae289961434c" } } @@ -2161,15 +2161,15 @@ "e58beba1ecf7893bfe1389d8eb8c6388801ea9f76c74eaadcbaa400a86832dc0": { "80e13888b6bfca7d175470bafcc2e30a1e88dcbbdaa15cac209fa66c4f44bddb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "667bd03bf10b7329b7e8f207e0ab3e046b0e24859249942dc848ff0036f830c2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "376fdac73aa9f3d1f987d062e66c82759fe382172d60ffcaccfdc31d67baf8a7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "c2b4064a9b3342c2360e7985a015d4236c6afe38f602a017ff10fd5a61fab048" } } @@ -2177,15 +2177,15 @@ "f437d5d62e24e71773573d12295d6070b2013b4f10635e752fc5e0c0c6f3d5b6": { "69df1b4df06653852e7ced5d6197d910291dedd2d1b27599cd5608fd1b4a5214": { "jp": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "872602a98938a05ac42d8a6d09fa654af66cebf04e415f18790f3196a4fe0905" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.182Z", + "updatedAt": "2025-12-05T15:21:44.168Z", "postProcessHash": "191ea904ec76a8f2b9af4e7d06620277328ae21307fa13414cab7696f241936c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.184Z", + "updatedAt": "2025-12-05T15:21:44.170Z", "postProcessHash": "54144fccf84826433452738228f0cb80264bb98d3fe9ec5525dc7149e91b3582" } } @@ -2193,15 +2193,15 @@ "03f61172ad909b158589d51b6d4f89a053de0b09127cf415c34413087bd48c4b": { "a5c008c72acddb7fec319268bb5dce0d0fb9a1f10d18c2c90a95d993d9f5a960": { "jp": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "197fef65215e100ab3525bc3caa639b045abe8c605c24d29d809fcba2a6f6b4d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "2928ce8fce88801ea95f7703bd1bb4d2cce9bc0f631238e1a247c86c83f2bd20" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "61c87d3b97ad2d0535c599ff43dd2a29c8a478a5c54417be9e960698b82a64f4" } } @@ -2209,15 +2209,15 @@ "0b7dab5f7a039f1859e3a70738566e228a8859b0025e472a76cd8fa2c67c6c28": { "1d8df38a053cb69ce2a27d4691e5cdfd13a6b160e9a02fa3f683e748d317ea48": { "jp": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "810412dac21458b9d38223c29768fb77fd64c9df38bd44e496dd6f07c9151ace" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "09e410d9887c6d603f357d7e640dcd17c4664fc7a850f5c6a9c828beed149975" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "882c7c8301044b3566bdde00ba4a75df6e282b8b4456c19a3170f3a6ff184296" } } @@ -2225,15 +2225,15 @@ "2864b967eeeaa7eaa2100c52550f0c77a534e954059ecfcc0991f21bc889bda3": { "feaa20d52a8757a137658d5066422bdbf2de0a87efa96000934a084ad78bfddf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "10ad29a8371de33efc365a81d5cb0311eb18b712ab638bf5fc06c621cc315721" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "d9148ec82ef070fbf6110378a9e3539e31be97d011d6c5e32ea6df99561d9f8f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "016e160cd562ff90356dd92b713351549786b6f529048e5fb0bb38c087bc00c9" } } @@ -2241,15 +2241,15 @@ "36663ad730f89d83d4a65b5956ac48db373b0bcfbd0f2bb4062dc5f3bcaf2839": { "8841bb2bfdc1346e286a40346e8503829d958b3bac30b715d775b50f451b49ee": { "jp": { - "updatedAt": "2025-12-04T20:16:57.180Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "e6854ef41d08230a4eb5bc7465ff674139c32cc6c9f3933fb5da4d8f4ba35c11" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.180Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "8e2dae637e725852301f1388b1c655fae3ae43ea4fb1c685ed38a32b821f3a7d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.180Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "a411f0836853e68b849bf041838f625aad7b34bee14224d91b50196094b405b6" } } @@ -2257,15 +2257,15 @@ "374986e8dd5ccd248058ea18a5c0798d535a4a7501a33eff5fd9b80a782b7c15": { "7b0998df0969746e6c19524cb961e7ff6d7e59afe83c51976450a953fc8b3ffa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "2bd00c50ce39d249f39992c4291f6d53f217188545a904543c35b2e60a6e0f55" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.180Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "bd9c1651d0ac8da4771fe3eef2365a2edb53217a15ae37cfae2a2daf6e101a92" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.180Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "e77f797cd9f6716424de500c5262866713ccbf2a174b138a2db0c12b00bcface" } } @@ -2273,15 +2273,15 @@ "3cb23211e097156c0f1a78ad405746a39a30a7fca3e113e221a2bbde60fc5c66": { "30bc5b33601dc47abebcade817fd66b12ac5351751c6ed875945668d80c959b2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "520cc8fdc2e3fdb59b70d3804bbe783b05f415b867c8d8523c44c7440915e429" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "9928f7c2e4e8c99c5a7b64c293ba271067ffe185b63abf7ae5f7d21986a9be45" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "12d276665499634579bf51356792ba4fcf77ddb22a68ad38e6dfec28de8a9e8a" } } @@ -2289,15 +2289,15 @@ "6ce48a90c46614816b7c3a238012b7692f39fa7b3d52104f4f0f92d895004b22": { "7e344ba2b2f6753012aae6adc6fcc5f046670439fd5badb29bee696648c4a317": { "jp": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "e634c6503ee9538504c99a4f4af2d8d79d1f412b4e1d5c048f49db70cce1bea1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "d0c91f522143c3d0261f63d8abcd009a118355edd68b8b91415c73f2d4adf8f1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "6a28d0bbaae743bc0587ae8e1281d1b6f4b7e70dfe12a5e62d01470324a82415" } } @@ -2305,15 +2305,15 @@ "707c0fedc72655fa1c912bcb76b320d66a9ab9c8fe5e939a4df2863fdd7f82b8": { "7c543d5ef5d836f674d6873f133f02c4ab70829715b347650c196ee93273deae": { "zh": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "217101187dac78ae2740489167bafa26f8b04af3d9647ce91a08a7e97d922557" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "228db8a36247e3e727c6175925e76048ea58481a548876d69170d7a7745d865a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "879ca4c5333fbf17f142fb562a5a00b4afceb1d921667c5fee172081db2af522" } } @@ -2321,15 +2321,15 @@ "730dcd6bd51a2d8afa76fc973bedd9b4d7162629dcf690b192df4cac1fc39566": { "ed51d6c3026594d0ef90de441bf36dff57ad4a32048a288a0186952eb2f80596": { "jp": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "5fb6ba7f3883edcd6e80d30e5d88e221524047390f4fcf57d1b4fe45ec3357dc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "6f678e393b47fd6972edab7a65e15740c905b117282aaf8243acc9309fd8fa15" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "aeb8394be71ed1061e83064d537f294b81d7edbf3bf22f408d1b12b885bacd65" } } @@ -2337,15 +2337,15 @@ "8c4b511502097e5142007ba6bf89d86ef9d582ca174f395180742175d5bd4f05": { "f3274830262e5f01f74d8474761446b9f8a9c83ae245d4cee233a6cd17284b39": { "jp": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "7a4697adb34fa9088e45060af9f1e66364dbe2b2afa84e334178bcdeeeb07f98" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "106481d500fd853dd90be3a88b6bd4fab4c4a7d7c9e08ba754a5b0826b3bf6a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "2e8d08e308f4a39a97618bfa8233fb3719ab2ff41dfa5f2e63ce23377bb342a0" } } @@ -2353,15 +2353,15 @@ "8eeb2d38e63485d3f399d528cce00b3fa0310df2d513c8b5aed0077ee217c69c": { "87d6c2b8c54e666cd98b21f88f6b978a41ee92fbde390f5a595aae7d2c59164f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "9b50a119ae36cbec5ae0bd44d8ed43396a0c663abd7b4c63fd1b0f1bfc618c11" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "638300c10fb7bb0bfc1e23d13db8c79793bc22d06712afd94a11afd240300ae4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "aa539caf9c592ffd6ad3d27244ea6598ef1b858b1b5913498a92e8c84dc94f74" } } @@ -2369,15 +2369,15 @@ "8efa94c2eaa8cf8e3ca888069c1494fbfe5679752549f9d0a41d641f2aad43da": { "481fbe7fef11ec970a0109b0e44e9a8165cf0e73e56a0466f038d0efcf74f657": { "jp": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "ce93dfd31636439571655b2e413be87782ce3f0776341f3316c2dec8cfd44fe7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "7818cc6c258112a23d68a6031b0892b2536564fd60983b98ab7aece821ec9b1f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "499d2dc3246a0dc7f70d0c679d0f38bf81aff02a572d3dacae7939d3fb5a7dfb" } } @@ -2385,15 +2385,15 @@ "94747a3cb7498dd41f7f7aaed2f670f003087b3543cf7752be3b39b62c021927": { "f7bca2db0af5de7e2c67ebc1c65c226c309288e7f073d34318c2747b6d1e9327": { "jp": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "303f063c889027de70b5be2e04aa27b1d58e67dbeeb65152fc3a4cbc92f0ef6e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "a0ed8ed6ca3f93d905ebb6e605f938f1b831bfa26344bb00cd76939e641f8e15" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "9b9052479db603ccd58855fbfa676e70b60c36a04e17aa0a91896a1c86de0341" } } @@ -2401,15 +2401,15 @@ "9be36d6e2bdbfee1f50c6de39175a6e538f2d986429211ef53b12ab0e0031ef0": { "1dee3abbec10bfa0b3995067899a721e47f20ee051715db74e0ac726fa434d54": { "jp": { - "updatedAt": "2025-12-04T20:16:57.180Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "ad922c4821c8a7d91ca0aa0bcbe2effc3a5150297c3095fc70c8ced6448fd6a7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "55e35c86a84eeb5ec620c5995fadda557662f06240dce5d68f8299663cf207fb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "5fe54738c1df7dc17a400875b05a5686202448ea249927a95bcae62aef324b0a" } } @@ -2417,15 +2417,15 @@ "ba0db243d349404c81abcb5ac1b3df54c29742957ec4ab33b24830ddab68f7a2": { "1f879e7772ed8e095b07f85578bd401df3a64cd4e5498296092756cccd875121": { "jp": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.186Z", "postProcessHash": "f9afae0926a14c77b3928769b0c3c8c03774da75c824aea4256ecf7608468f64" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "26705e56e63a25acfc85bf50b4861ef27a61e47fc75c98ce0b81d96d9ffbeafc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "9b271e677db8a214cf45ad39fb0b08a2ad10d221eea598f3a8acdddf4e38f21c" } } @@ -2433,15 +2433,15 @@ "cb8f8c1219ce7a92277d5329ae659c90b78edb06139fda7cb67e9143f6a4f1a8": { "708faeaebbf5c4dabd6c9a9eb715cafd5178cbb6ceacc376b982a574ba6496b0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.178Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "98d606493baa4f0810cc5013d19c5bfabadf8c2e8e618d3eb9ce4afd2f9a22eb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.179Z", + "updatedAt": "2025-12-05T15:21:44.166Z", "postProcessHash": "6a1915d2f4e2a7a3e6fc21fd9a5e4570a9ee769604cdeb01b6266d2537fe608a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.181Z", + "updatedAt": "2025-12-05T15:21:44.167Z", "postProcessHash": "8a9fd17dc0c4d50254cd9b02dde416aacef804448349c3c573f3af3350fd6f25" } } @@ -2449,15 +2449,15 @@ "cf42c21f80f60055d0087c0e795d8976b1d91223e0fe30f342746b23878b6c6d": { "6d3f845905f3f2b2a1be610957281c22628e8585866ee195f1e005cecbd69e88": { "jp": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "f7d25aa2f57de1b7e84f637a05fe53266e2ce7545ed5dc5bd4fb6f70fc140709" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "ff8c59b8c9260147d422ff8f4a17a1aa8e6d403af10a0afe1dd71699f9f898e8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "ce6adb9ac2bc5b92b02c5a9e468e7d6aa70efdbb1443b87d4af6f1ac47e39eb9" } } @@ -2465,15 +2465,15 @@ "d0e7cc516637ef8ff263a061c7c16bafdf014cfae7ce60448c7e0fcce8c6dfd7": { "e57a30777e558c8d76cfdd0c7355a7d8d9e150e93787b8eaedcd4f95150f489f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "88613d2fecfc9fdedfde36b7bd7a80c5db8d5a235e24d0809d74c91eb3087c71" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "95b3bb841d07fb0aa712851c4a28bcd5045dc9fe7a0388bbeffe4a876ac547fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "a7a1fcb6a4c71625bbbfeac8692166d9be5eac005d1b161d8f7788f133ac7467" } } @@ -2481,15 +2481,15 @@ "dc560181da04dee98b254f616102cfdbf1969c4c794080bd3b5dd88e33f63287": { "f7b3da6309249ba57146453a20fb02f1da444cc9f6b9ff15796e49d19986d9d8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "baf7da290aa03a202779b7470f9cbf74ac69e3a03974e1153a7ebae29b22578a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.202Z", + "updatedAt": "2025-12-05T15:21:44.188Z", "postProcessHash": "1cb0afdc3e2a428ba2a455f4b03af394775ec059c9dea426c41324cd13f692b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.200Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "22aed73b4ece0d68aa29da67e65725c4f351373dce550bbf7e207a6a727e289c" } } @@ -2497,15 +2497,15 @@ "e390b76711ccf2a7eb5d962d037354b40ec5f4bd6b5e88c7a59d4fe98d2af88f": { "959a1807df034b8088bb146f4b89e2d5ea2dea86233fa18c9a28c35bbea95719": { "jp": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "e187b8d43b8784eb2466aeae72d77458ff16b5960c20e01176f0b47a4cb49606" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "9f4a120dcd58e31068122d02e2a45d6c8b7b2189e26d5c4821b84bbc9d8cc307" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "3fa1a834c43512f8f726f7064ce89b46f72612e2fab94e44a048549b8756f9a0" } } @@ -2513,15 +2513,15 @@ "f362b87c61313b355b28fda5f77765651cb599066809f44030b3c1010865fa5c": { "498198cf31ab4d64e31b4a2d37da8c4597bed364756e0feb2aad51f2859ac1fb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "33d5a00e241c526b0a1e1309d496ea54f083f35b002f9d28ab3b85f2327aea58" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.185Z", "postProcessHash": "d0adaab362b9530944d514a397bdac0ca0638ba7032eecbd9dac6d0bdb71fa65" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.199Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "0eb06e1385a90f669877f0239605b43cdefc42579e0eb2c2817c3e19fd6d9baf" } } @@ -2529,15 +2529,15 @@ "f5a9bb73dfebbd60d3ebe96194e16c204bbf24a1a4ad7b46bb262a754dac54b2": { "e78c91e1856bb6bb61d73c20e01d2f69ad12b8495c3f0d7fef84e1558681ea40": { "jp": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "6a2cb13df82f390ac14f43d55257aac639857710f9cfbbbaafcf47e93ef858f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "e18356622d3214d0578fd97e929297d6e64106138f33632dba8455299977fedd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "9bf47aba74c02c9f8ef363b0305be4c926bf034d26f0ad957d84abc679bd2fe8" } } @@ -2545,15 +2545,15 @@ "1370f12b87482a2e8d057a8b41e9ea94795da80127f778fde4628181bbdcc429": { "f8146d175696fd61b1124db8aa052124a23329de9472ab05df373240407f0ecd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "399b593d592298dbd81b939fa80b0daddbd00eb08b41d95e3ea619f754b842b5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "0fa46e5a4480fb1370598fc0a8c43c26189a7a31bc68c0cac629706a63250b28" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "4a885d72e2e9d7e2d05b1ca201f552f1467baeb1fd35f7fe058917317e7a2eb0" } } @@ -2561,15 +2561,15 @@ "25e58c45c99cdd21fc20a817b3bc1c4d1448cfd9024cc4ed56ae9462032d790b": { "6bb9f7de8fea38f23bfe3fefc31fa9cf8d67d55bb09bb2f9a1806c8d39795f52": { "jp": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.182Z", "postProcessHash": "ef0c86093b0ee7c49f11ca2ab74c264205bf2d59a0945626343eccc69235594b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.198Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "68a085eaa2820abfce4525eb9476d9ef33c2be8e6b43348f385a32849bd1618a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.198Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "5ffa8bf3e2384cc20367f30a52132d1734bdd6fc0c2f08c6048cc37c2c188d54" } } @@ -2588,15 +2588,15 @@ }, "873620fff6c9ec3e37e3a93a410aa979617a1bdd7bcfd454702003458cbb9c7f": { "zh": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "91c792009e657549f8108a39cfe3a78a2814555d93b8bc1cad5ce3e2bab6f85a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "80cedd74b31e3cd8753f05174474e32fe79019593c063da26ef9770b4b6e63e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "65e295fb9e6248269c5537940fe6e779e6f5502f360e3ce8c453848ceb555928" } } @@ -2604,15 +2604,15 @@ "376f1f3d79070d024492b0852fcc46275cc6894795ef5c9378fe6a8039d04b64": { "57d1e9d86f14ce94f3b9606be0c45891a1cddf024b0cd28892082e2bebf224ff": { "jp": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "fc3a7680cf93457c6d6d572d68d7e8442882ffe7ef2c50a838bbbfdd7a96fc90" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "9186675f7581f6e4ee67a3e56524218ccc49f1654dbd5415669184a0af1c5686" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "120b764e495cc4ba8984e25e38bf3cba8edebad60a8d9ea9a4c8da3b8b5724f0" } } @@ -2620,15 +2620,15 @@ "3b20b82fd209471b97a1109eecaadcd504d69c6421631143f81852d506036bfa": { "deab720ce649678d8772ed32576b254176937947561eccdb5dd266ddcf5b5d50": { "jp": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "2548024e02fc54bfc850c38dbc8f2965464ce10069dfe07c44325bb41f7e47c4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "277a6b63249f5cbb9c903235b961cc8d5e38c77274e50428081fcd731b4fb737" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "5fa27923fea48899a4996dc8d83063e01f748492289534bfdf3c1987849b7ef2" } } @@ -2636,15 +2636,15 @@ "5315751710a23b80f9bf1ed7f31831d089dbe93c3c8fb90d20b7744073d0bf57": { "a66560c3d607504cdffd12261e02d0e673e576056f78a84ca9ecdf329603c56d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "2d91055199ad458ab9998515d84fc64b795d54c34f77ebfee67bc1bd3b605a4a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "783e679441cb8e210f1f2b98ba7ee67906603f49c675b96b9e4d192268233926" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "eef5a6d5f3fc62ee6c7758ea304a57b78fe21f83580d10543e3b6beab0a849b6" } } @@ -2652,15 +2652,15 @@ "8d92e8b825b034ea42c644cd23567811b46adb33b6d540b842b64c0196ff3b53": { "292f22bc13c3bd83386dc5ae82bec9ed457e6f79b25efab444ce03844d88e825": { "jp": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "a88c03365c0ae60de8251c932664091084b3e4c0365c5f2db102bec02cc9ce61" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "6cbc5e3acdfe96ca0c70a2fc41b097e715aad5a3cb1ff2eb4f4be0a3611bdbe2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "f002f5709e43c8cef9e73c4a26ec58efee6dfec186d5b7eed1d7c46fba6965c1" } } @@ -2668,15 +2668,15 @@ "9845c4be459de6543c79bb52ebef31089a7b6dde5c4bcbf294e6b614cb8b73ef": { "f7ab2f792dc532d79e54d2172ab842ea8bb45d24fbea3c48d921219d21bb9a5d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "5b3a70b4d7758eefae4657a96cac98cd1e9b43ff1f90c2f879b23e57655b1fc5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "e0d7d986a6a30948f3745311ec17a64ab8be68899af22ea0b814094698850d24" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "214ed830ac5a2a2ac5d1d441457bd9acca05234b597fad83a98222ac59c20f36" } } @@ -2684,15 +2684,15 @@ "994f995f28518f9032c149f031eb9e817c8a85f3b0139de3abda3966eec97f40": { "0299673d875da310e70873db6a17323b8be0705c8b4b17c562c9e797b225acf4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "af1c7c78c249901e9762caf3101b52e3cbb1f6e1639615ec21d5f2c30691ddae" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.203Z", + "updatedAt": "2025-12-05T15:21:44.189Z", "postProcessHash": "69b8f7bf089ed2d5ec42dfe1b9b23d322572e8c644d6fa50a13750a55f8b7cf5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.204Z", + "updatedAt": "2025-12-05T15:21:44.190Z", "postProcessHash": "842bb114376151a7c65fbcbd1a3446c4460a0a7f51c536ce8375a958d2c6f457" } } @@ -2700,15 +2700,15 @@ "9e812084882765188d8e23b9cfcbf9a3edeb29e9461a1cec110df416342b0289": { "e16e8324972fb51ec759f18c31f84b12438b5b468badc9732e3a35eecb40c277": { "jp": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "d0535810116d72f9d9268d65aa2defdd65a954cf8208e6fc413c1795832c239c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "b956046f8cdba0ead8f1d0f4af703a50123478e2338b4c055a428bb6023d548f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "803d155db64feaf954d1b39658fdbe0c8809546e24287aa3eb630206041978bf" } } @@ -2727,15 +2727,15 @@ }, "c1ad37c48321ab74d0fa77243447624e6c987f44ca3469a08d251c3e5a869de0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.197Z", + "updatedAt": "2025-12-05T15:21:44.182Z", "postProcessHash": "a082d7006c68eb44c1d29612d124044c9635217b93001b62be9bc398f6680424" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.197Z", + "updatedAt": "2025-12-05T15:21:44.183Z", "postProcessHash": "ed19b21fb4f97b147703bdcd255a81d9c70d42cddecc7f54eccda0b68f715912" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "eef6eb61a40b4aaf0e681df662c5d9d2df9394b24409cb0dd086053c788958bf" } } @@ -2743,15 +2743,15 @@ "a9a515c52dba44d2cbab844922d2f769a5af11a34775d83c1bd8d9c97e4bb6f3": { "85a2a4117446131c96b792674a9cf5594566bfe0b7f1098d2210537e80d0fb0d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "97c5e83da201bdbd88ca53cff0cd24aabc1b119fbaea16458def25f7d8582445" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "53e792551a9b58f2fe60ca7b1f2b6e6df80166963835af1a441aef4358668c66" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "6ccd96ce98b3124a3db092f6c167dd689cb282711ef0140eab94d960db5cb592" } } @@ -2759,15 +2759,15 @@ "af360983b516284a69f939f103f1882eaf99d33139f9033142ae3561946f32c7": { "33be4cf9c98cef60c81c9a896da5f27cad1a7e71f69e85818494ce4b7ec03b2b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.198Z", + "updatedAt": "2025-12-05T15:21:44.184Z", "postProcessHash": "868f65e60121162e5042e9e1567f9c3da49d79913abcb57370ec50c4909aa9de" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.198Z", + "updatedAt": "2025-12-05T15:21:44.183Z", "postProcessHash": "32873aa90d277e851cbac6f46674b81d26e29cce9e772649cc2c810f3bd0e729" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.182Z", "postProcessHash": "0b9db8a4a5f5df0540252e6c605a3c5c55cb5fa342e15743de5c21541d34c82e" } } @@ -2775,15 +2775,15 @@ "b204fb8610ce0fe2a5504ac8ae74eb658b2c80f1a1d885dc2b85d71bc34129bb": { "0aee55116dc7c452f61e8eb411e60595d3f877d5ebfa1d1c034f028155bf44bd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "db3fbf849e09af5b41ad9139a6bb2aba6e4c110b74acfac871eab46f4d472f34" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.201Z", + "updatedAt": "2025-12-05T15:21:44.187Z", "postProcessHash": "5ae09d5813e635c42f104119750babc531046477d15717a4a72a5dfec65f89b4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.180Z", "postProcessHash": "647dccac25440fe8f86e174ea4fdb2b4cd409066fdf6dc9eecefe5b7f12a5b12" } } @@ -2791,15 +2791,15 @@ "bf09040d678e6760987c57861f7d46d0c83dc84b582441fa87e7ac9756c76f6b": { "ee66bac04fe1df0381e777810c8adb5c9d16229f663ce7ef30a2a0506899ac5c": { "ru": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "a0a3116863abb7321953681d369eda91e11b116fe6a6f8279931e8f18a39a4a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "a96a4a118d83763271bf412a3f140df4147dbad391f5b509ed3601694c82692c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "92afdbda10617e06cbb0a51772f671b50d2140aa0c73a78dc3a858510c519ee1" } } @@ -2807,15 +2807,15 @@ "c50d8bd0ecc6ee24b7f928b73255956cae71fabfe25096539cdb974c7f167191": { "f1fb2f5d8ab4009a1d0458d1d0604ea822a372927443fb49fae37168711e0dc8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "c8324bf39509d4de4d79961d53dd226e40fbd57459d26e84bba066e95973c793" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "26bd9bb3beeb731f770c853811590069620043bd4e78206d08e493f059b789a3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.200Z", "postProcessHash": "65fc9427f9f052772688a94ebc42e2fe40df78194989707dcbe0f02f14be4960" } } @@ -2823,15 +2823,15 @@ "cabd7d221b503f016f6d425976074155c6ab65f9918739e83cc1d703e06ce9c9": { "7ca705d224c1a2bae3bf661451d8d9ee2d0404abce117b56dcde2161981ea1cb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "ffdaddcf9cf35030db1d344c4c75f4e09df5b84697f9b6881a2a43ce2b28d891" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "49a63179fb70de44d514df59885d44792071c336f3d8e695ca1fb2fde0117924" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "4c7fe8ef21478a5bef73957366de1464bbd557e00813bad8c482b6b8902e6e90" } } @@ -2850,15 +2850,15 @@ }, "ef2a79c4910a450c4d299109576b26b3e4d3c1f0d7cbf8aec0cb3af68cf84848": { "zh": { - "updatedAt": "2025-12-04T20:16:57.197Z", + "updatedAt": "2025-12-05T15:21:44.182Z", "postProcessHash": "f2c37b79f639dbf853f58e993676039efdd7d33fb24ccb9694b2c75b91a2b5c8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.197Z", + "updatedAt": "2025-12-05T15:21:44.183Z", "postProcessHash": "98d325377b8a4e0d34a07446edcc9ba4b99bef9588b09074fe3500218efbe058" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.197Z", + "updatedAt": "2025-12-05T15:21:44.183Z", "postProcessHash": "053326caf4fa83ee851a1b981b56aa428b12363ea35d944cb3b4c035ba51e780" } } @@ -2866,15 +2866,15 @@ "d6382580d57e06e3adb4f63249975c1e63e439afb1528089085bb16be9e0bfd5": { "e66f44bf486dac3ec176125edd9a39b1b6741ccec945cdd42e270d60579a2194": { "jp": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "cb3dfef3c3edf276fa8d6a64edb71039adfa31645e8c8fcde85d8f149afa3274" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "1dea620a93fb863956febff0c6224cf341fbc90bf22d478eed936b0d1acbf5f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "4a17f65ce520d06d713a5a7f00a80075c15bc970b32d978dd0bab1d8a0ff340b" } } @@ -2882,15 +2882,15 @@ "dcbbbc894548f52a28f1dbe2761c66552c70c361ecde98f969015dcee3764a48": { "626e208c3631b5c7c63439845c92c76d534c35cdc0c557b51aac33578683ffb8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.212Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "eaf2bea7278242d8f184d99fed664af4f25cd6c3cf76bb05ffe273b82fc95606" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "2f173c1478e79d4d92fe856d4157a6515f327fa84b6793597978ec24b3d34aa2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "06aeda8693c0eaba941244a7af3251d0527d2cbe3b63bb86b66492dec1de9c73" } } @@ -2898,15 +2898,15 @@ "e3d2222cd9a6fac9acbf681cd3446dfd1fc4c2866524e4195206634d0d76acc6": { "7dd41862d4380d06fce8d5aee44728bdd5365a42f0ef1ef5d0a91b55cde5c29f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.198Z", + "updatedAt": "2025-12-05T15:21:44.183Z", "postProcessHash": "0a9445819b71d8003219b862dc13d03825d681dcaf396818325a1152bf6b5fa2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.198Z", + "updatedAt": "2025-12-05T15:21:44.183Z", "postProcessHash": "f1befe69ca2ce586078f07672678baa8935d1bf27dcd892dc5917dd8e6e68468" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.182Z", "postProcessHash": "d530cb3a92456e006d9314813d3c4da19bd80f41b59081118c764ee577738ad0" } } @@ -2914,15 +2914,15 @@ "02291322e0d8f494b80f9d8e9c482282d8b548c6ae56afa37d022b164b99b054": { "14c2feb63b9f987820db166804e40ef404c44c5a695f647c2463bc6c7919d96e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "1b9c2045d79decebd7e84621988d394bb18209f300616bdcced8f6a227175240" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "91d892d9f4045ec334acc06af9b01ea0a21531ac2d7c9ac9fc93d13b4a9b7c71" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "977ada528c20d1a91a73dd65a516e9e2de2669eeb12610a294c43c9c6155868d" } } @@ -2930,15 +2930,15 @@ "13dade465ba8d6e7014eb44c3923f9c834a481123903922ddf6e33bb4ee775db": { "d6e6aa07741897774555a1f0eac0954dd331322344f830c9f304dbdca6fc532c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "eae8724bc6492c203f7fe53589161bb84e977bf08a9726a85b849ef4a5d01cf8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "bc740155ccf1d06436def6a858d3e846ed55f577579b9fa8a168a1db830ef03e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "03f66c4a1053b288fe6ad458e6ea707f3c2ed7c7c100fa49d948651d70763adc" } } @@ -2946,15 +2946,15 @@ "1e6a9268be90fc10ba5ab851817ae61b0167c3ce6990f2a5d9ebdb1ee6eec11d": { "986717639b58978e5f1cc565ca5bcaef17e4babedbaaace23e272cc8c401372c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "f0fcb724b94055e56d02ab8f15f4c39fa0836c9f52e9f77300612ce5994a7d47" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "38a433ab93e32dfe963ce0635a9efcaf2cde7fe057c6be3b49c71f6a2285861e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "9e0e7e2a11edd86bd73829ec8abd39d69d080c6890d8cd2aa2a5ee0b1ddf2d25" } } @@ -2962,15 +2962,15 @@ "290372a9e8da36b9b0dbc38f3a77bf8307b785738d5ba00a31fddfd12681d63a": { "435164419830229ab742e3ae11858464c9c8878bcf4a2bb3d6166ec4642f545e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "b5fb8d1d6ace877d02e1831cf1ac2cb7ddce0ce29ed2f983643bcd639e6bd3fe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "e46630ff15a9f9566d2b490cbc0052d0f6351436a9e701123f09b579ebcb88df" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "7fcacc055f2cb07364b5d1c2675b812a446527a5459e9768e0c6954797bab0bd" } } @@ -2978,15 +2978,15 @@ "2aca9c20ab8bbeb98fd4fbb9f62e8ae777bccbfb6417cbddb786afea95af4499": { "866097183364ceafca0351ea2755c4d597ff856cbd6ea28946d96c0d30d28ff7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "989e525057f778a0694f0cf12bd1ba67c83e7ee0538b8edd211e26f6c7c244fa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "34447010903c8011ec00cf83a3e7568c4143543f655940d76d90eda9b97d75f9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "33bd305c8d90c6ab8accc14a06792fb037c8bc7fa461eaf3ddb8d641a2263c57" } } @@ -2994,15 +2994,15 @@ "381da73f1de48015917a484d7c2e45bb2557d1a326b8ff4560cb55a72d1de6ce": { "58f15d2dfce6c37907b066f99ba2b6b1bad2cefdd56e52bb79e7839fed922624": { "jp": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "796b9f3aaa34a8f6a731a0d9c198105bdde4e478999393ff3ece9b310724fa72" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "7a58759a71149c2e9a86b209f1880797fb5de0a6d4b347308f70d185b25b6fa3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "aa917a6ed2b6f2f770a6cb59bb30f2f860c4aab75eaa3cb48b5ed1a711072f55" } } @@ -3010,15 +3010,15 @@ "40b25bc5f9906b1b6c1e3fb64539dfc6d270a427153142c668cd16a039ebcb00": { "957d995119871468184ae861bc8fb42689e205013b5a1a037710ce22110de58f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "5c48e115d13af8d4beb2204a59d8677b3bff2be59136fc087b1587585b6674e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "bbb1bc0d13b0a8b8336feb4d65e32bf17f738d337180d7827ed15717f7cec085" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "8b4876f5c660482c109726e836c28aff0b2b1afe67dc1e388f60784fb8e76859" } } @@ -3026,15 +3026,15 @@ "52853976e012785457c250daee6b0280f9e8e88fcbc6a4a02eaf7315f2758fc9": { "35936f5dd5b5ed9baf260d39b24862296fecf4c8c909f41e2a0999a8db0a3772": { "jp": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "eea3af9e9f4f0c0ff213ed2168a050baf9d943d7090558c4842c8e8514c0b613" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "3910decc269bd763aee0e58e42339797ce7c71807f729845859bf5b7288cbfec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "ef0b0cda94669d91706fd44f7ccab9e41122e147f5dadc5922e6f29f6b4af28d" } } @@ -3042,15 +3042,15 @@ "5a2a174332bfb9a0cdf7cfe65d8e91568153937327d15d632b2c09aba2aba728": { "e8ae2af14396db3064dca28b82c864d44d320c9ce456d8e334f9b158902bf4fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "62a4741cba839ad90336aab023c016dd099fb8d6361930cd4d4a865e6ee25d23" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "c4382049f37998315a9a77f41fc76511d28dba2adaf66df0df663b1c24c7cdca" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "8123f3855a4e9f6708c46e7a31581ca6c76c216976da6c0bb71e5e2eacaa89ca" } } @@ -3058,15 +3058,15 @@ "5f3d913c7a8c4ceda7fa835ce07f7441c4f601788cc68210c993d3dda60335e4": { "758768db465ee7223ab470e594b649587b038bfaa85fe340aea1e4aa3c4bd92a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "91fce01437c5d0399e391bd71bcfbd7122e0280d445bb2734ebbf1b385c13e74" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "597c2dcff65fb8e265b84d862f258b11624dd3704fd19edc800ea3bfbc1dc2d1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "7255b4aa91f1ca505ef55113a8c5720bcb2be262e9038aeab1f553568e7d7167" } } @@ -3074,15 +3074,15 @@ "6312de56aa12f4e18450ee81ed026306d225a603f4e118425c63d475b267e36f": { "05a0d0bd2cfc6068766a3aeeefe69b1d78a4b4f120052aeaeddd00b384c6828c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "5e771ad5fb53a6560d0b44e8a8c721b603c809e7fc96545bcbba8cb79d4d8d02" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.213Z", "postProcessHash": "d4afa9908fd5ea80fe1779cfaf9795a67dc432458dc362ec542bd84778e18666" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "fb83d58432cc0900411b4e136853b178eb2008c58c9f26b7532be07546418b24" } } @@ -3090,15 +3090,15 @@ "6439efcca906a994e35faf64afc92947e6ce60d7db71c07200375b94c1ec08a0": { "b590592b2b9abba8d294cbb837fba6f0bf9ec95a8c5f2d979542c7f80d2cae21": { "jp": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "ac8181a258f48b83c3738d3ab0108d6fecdfad8b707490e025dce49b86ec2280" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "e1f199e8ed0c47463892eddaa9bc897420292ba94cba6da3f54e87a7162980d7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "1fc67c6caab479bcf9d9eb5e80d1609540a7a3993db8cddd777350d2374a8b4f" } } @@ -3106,15 +3106,15 @@ "645c6b21a98f21e01e529f7978413fd1fd62c80916d3b27f0533877e73361460": { "9190dd15a568419dc8f69602836e2291f52c2c494b8a21b5d535f8100ce666fd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "000ee1b52989989bec3ce9333d1115d8abc7b87dad08f976ed20e4974c58cbbc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.196Z", "postProcessHash": "ae981a940a84fe8533c9822cd10b0ea42512ae9bbf278401aacd7b1443808a53" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "9a787fc54f01631465d69f7d5deb10f3e172fb8a35fed8996c2938cb19944870" } } @@ -3122,15 +3122,15 @@ "81e55d728a63e9d9620a0aa9a0f3152c86d8f4228a2480791e9cad5a8de39a05": { "0a7dd0ec6b5989e1b77f3754697c20347971441c557b816d890bf2b9648ca561": { "jp": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "8033643e3d7fd14e6bf2f9fde05016f75df55da8da55ae75c80782aabad53775" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.196Z", "postProcessHash": "78a73c41ac58b791b78bb7aa641114e81719f2d845ec2579b7e38a6e75331156" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "fe4c3778fc8f5117e94f336f4ec8e6a609a3163c6431e5c6e941de7f0ae99c2e" } } @@ -3138,15 +3138,15 @@ "99dad4c2046d97de9c9a10225dad41defe9ab46dd46ee1ebf18685fa87671a2e": { "06b367fa8b09d7fd9415ccb9f2fa0fb03df266adda026a80d2f81729bad14302": { "jp": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "4efaee3c2895f3144147a20511fab2b231bd58fb13be041ecfc61bc285ab2c30" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "f9f0e8be358dbde188f65c3650d2b3dce4282c677cb97af76c87999fa93331b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.214Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "d3437fee45fa0f3d05a4cb222f48a72b35c9691dd087cb65f097c70414b12115" } } @@ -3154,15 +3154,15 @@ "9d3e2980fe828b01727089a5b229444dc083a28f187a3ec09ad16a7eb1eb6d78": { "27aa4e4f10c34b32aa528db752d7176b33e61894bc9750f14367f23ebacba5e8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "96d17fef877404df6be39caabd0a12bd1f475055d06c0c50736e71422678501f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.215Z", + "updatedAt": "2025-12-05T15:21:44.202Z", "postProcessHash": "cb0f4ab7cc351f4eba587e45da704844243c1caae2b584c50424e12051972f40" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.213Z", + "updatedAt": "2025-12-05T15:21:44.201Z", "postProcessHash": "11d9696b25361972371f2850d9f7807142d205ba818a4a2d9e44184bb1ef6d3c" } } @@ -3170,15 +3170,15 @@ "c491de2fc423ab10dbad66f7c1ced660f15c3f92d3220edeb2ccd84ee9575232": { "6fd80c5323889b79422bdbfe9fd8a32fb4bc56870affd9f018e096ec38fde0cd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.226Z", "postProcessHash": "e673ff8e48c6a00069377dc3b18c5873f1424dcef402c99c4d7c06618db7fac8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "5fb6b53499cfee7f625e98e404782fba10ec68baa2001239369adb2c805339cf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.228Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "52bdc1744a33308963c277c44e4387a2e4d630960765a5594be1e3ae49125022" } } @@ -3186,15 +3186,15 @@ "cd73972a4d037347d81b6309d5ebdd4973e65b4708a5a1c61e961a7e349f0783": { "9206b8172e5adaad17f8c6eb0cded1360735c838b0a3363c600dce6cc6abbcef": { "jp": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "231b918692e1d5db71f260e7cb27b5dde0342fee7b2e6b219b6beb1980893d08" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.196Z", "postProcessHash": "dc4abfe8129f668194b56786d71970bcace56c5f6f564f33a71e5747156177fe" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.196Z", "postProcessHash": "0d5afb5c9c1f0d813dc363b3bb3b0a6012df0ed762878d131ba7b202fe978df4" } } @@ -3202,15 +3202,15 @@ "cd764deae766f8c6f6cfe6b576e74bb1f602bfacbb3821340a5850510d57a818": { "b6693ed657d428f4853a8fcd97aaa704f7a982e5e86c5fb8e5ce372b12c11e69": { "jp": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "232cc5b52ffae01c50a8d6fa29b654eb80ec3e2a107592684aec0ac4479ce7ad" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "c7e74f0c064864ba151efe4ec18afe94834ea6c7b301d4a102c210f43e79441a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "6db3b0749adcb6166faf927e0f50730412600d2d81b9c99d07f8592d714b1f6a" } } @@ -3218,15 +3218,15 @@ "fd4807eb1e777b66ccc79335d7b822af7ba8bb6dcbbf18e3ae8c53f548f20928": { "455e4d7b70315644264125e3a1e3a329d14b945c29bd48454b379b5247f97bdd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "5d850433c8150c58df8a0bffa285b0fe654ed668bb354194b4c9ad0a5bf2712e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "c50dcfbd225d31d4d35dafd7fb80fa49b4cf1096552a0d711f948fb54455b4bc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "cc4fc729026fb36966fbee46e5ab858a282cc0cb5e4411b461faa3a81df69aff" } } @@ -3234,15 +3234,15 @@ "fdc92b085b658968ee987d63323feb976df8a0ac7995cde6f13318c84abd0c59": { "7843455825f9c1828f408c376329311aba7d3c1e14b345e73ef9ad5b93e5b005": { "jp": { - "updatedAt": "2025-12-04T20:16:57.227Z", + "updatedAt": "2025-12-05T15:21:44.225Z", "postProcessHash": "bef558f38d37b85dd1ad162a9ba0801ce028318f5893d82f16b4fa4502b41997" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.226Z", + "updatedAt": "2025-12-05T15:21:44.224Z", "postProcessHash": "0ee197a6f083f473108b471d7cf5b18fdcf8fda76a223924ca93c66a2c4ca177" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.225Z", + "updatedAt": "2025-12-05T15:21:44.213Z", "postProcessHash": "be759f33e06f4393f58409ec5b7b5c2fdb5e760e37dee12c99083dabbc0793e5" } } @@ -3250,15 +3250,15 @@ "07722b6c1b943ed20bf3ff6d22b1b257d5a8695ae4b4553850f4bd4af3c5d2c7": { "2dcd7f352db514064395ba3b8d67b798124850b8ab716d08d01b773649c588b0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.223Z", + "updatedAt": "2025-12-05T15:21:44.211Z", "postProcessHash": "6424627ee5485a25a7e3e0a085e601f56baa9ee105994a7f910556eddd58f39e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.211Z", "postProcessHash": "b032ea710313baa7a02a0cb3490cb1d59b4d9d13ae66625e913e16ad63c36fae" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "57f7a7d4d7dc6a29af8191afaecd149b3051b6e211e2558aff5e7a0fa4b9e224" } } @@ -3266,15 +3266,15 @@ "1777f3ba683ace75433dd34468539a9e9d67ef87d9f67a65737e86954611e774": { "3acf5735b7405bf65c0204cd16078ddc21713f4e46ed2d0238fb8871eb19b84c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "16ec1d348ae7be163da6a4634f2572410cc5fc5877cd0486ea665aff58bc092b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "5658038603c3f67f7631ab654b672bf51bcdc6424ab231e7142bbfd3aee834a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "6bbaa3390f2a5ea479c355ed22bcf13c16b1680bb505bbf469c78876ca307c7d" } } @@ -3282,15 +3282,15 @@ "1d262ab176214afd2615461f6d7dcbc00bf893bd453c8cad2f9b625f5b34ed8e": { "2ba14b7281983a683a98e1fb919f7ee7317f7cf3b6fce775f1d12a76ea1e67e6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "e7f30522af3fd2472599fbae5522503864ddc353b2227dadcb976c85469dbff7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "a8366e24176f5e93922ad9b6c9e1cb44bd9d847f832e7d213f122c3b54c001a5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "39ffbdf82dae7b9f7b32c501dd75559c55a3618a3e5ce35bce5de62b4e138b95" } } @@ -3298,15 +3298,15 @@ "34dd8a3ad912132054af7846a7af1d6c6f27c8de9f83f63c9354d5a326b6a82c": { "8e8980f8eff31a76117d3215f17a1cba9a0ee6234c2cce918781f484742ac397": { "jp": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "f7c22e3452f4740e0630686505021bad6827b8d8e981986195840a341b567c93" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "61000294eb8a839ac95cc389da8aa3171092d87ffbbbc76f97f4b9a7372b9f78" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.223Z", + "updatedAt": "2025-12-05T15:21:44.210Z", "postProcessHash": "360e939f63807e786665f6ecc0b26d3c6e709728b30d8f011f4752f0bbffc608" } } @@ -3314,15 +3314,15 @@ "3e5df6c1938919084ef3c24cc3aa0a9f834e4dc5475270adb64943fc1f2c818e": { "a27fbee07ebfb6548a8a222874fceb3def1e176c740f36e8bb3fa452c9d32b53": { "jp": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.227Z", "postProcessHash": "afc17f58ccbb5928670ccb7001086276470c8c3ac782832e6326a7adebf956e5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.223Z", + "updatedAt": "2025-12-05T15:21:44.210Z", "postProcessHash": "4ae1ba52733afd62e305311f0662b5f9863c76b8182170fe037779d9000d0d42" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.210Z", "postProcessHash": "ad7855d0ae8ba12a5990bdf7bf14ba59e681fbeed460707349f1efb8f3fbbb7d" } } @@ -3330,15 +3330,15 @@ "44b3f5422fc4c4f447ece76e0f8066bb34f3affc30e7419ca74089bfa8055925": { "b2e193e55be108c5582fcb93204b7255923583e86eda8e23c2ec5a7fb530f958": { "jp": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "c7e691a28edb674f2adaa1e365cce55f51cfdaaed040ddcc76ff0b5fd1eb057a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "58f74551fe99693f2d2584ec891bb5946be8831cfa5f6fcb08709d6c56112241" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "10da1772efc4f97a3c93ae6dd1e74b262a69be8803cad9d676c411ca94f56916" } } @@ -3346,15 +3346,15 @@ "4e56f5a34b33c4d6df45c30f812200b60d80663863d11d65cf1450dcca806457": { "4705c821297fd380138640ab626f9d4f597a2b1853b0c84c3688cc33f5d4dd5e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.212Z", "postProcessHash": "1c35941a5748d64b79a38bcdd5ee336f45031ee985c27dd81719150ef23a6583" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "7f81800708f741e006a64e3f6eeef19d911b1e725146e96e97a14337b2cefd2d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "dda9429f06cd7134d8d759fb295897ec5c37329b3710eb73134d63ace122732c" } } @@ -3362,15 +3362,15 @@ "80d3d6543dd83a7957930d9045025b4815c1307c41a15c290f7acf0eae734cda": { "41c8219de2e81a989c9aa442e0f7b45929280d651e3c0f00f28c5e946e5b9487": { "jp": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "ddf735b955d8d39f8941e68fc16267eeb80f2acfb46f85e5460d2786d2ca3577" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "2fffbd146cfe0b38a1ccf73814539b3a0fced9d346b461cd1d19484406937020" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "6773a0b784363c8b4dc2de40f7601a607bcf651a0574dc0634fe83151ea7712d" } } @@ -3378,15 +3378,15 @@ "92105bab40be708ce10315bc6e1bb96fe7701142a5cccef12ac85e9bd6c2ad0a": { "f2e5adfccb04fbdb23894f4f9466bac4d65302edaa3ab747b455eca21fec899a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.250Z", + "updatedAt": "2025-12-05T15:21:44.241Z", "postProcessHash": "8ffb152b361ee8708d500d67c309729ba9586abf98f09ead9be9686df3b7bddc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "7ded3088147f57b29350aed9ee402515ac05116c3849018ce2170eb9e190a51c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.250Z", + "updatedAt": "2025-12-05T15:21:44.240Z", "postProcessHash": "04b59a155ff0ad872389970258b78e46f8a951d26536e0e102a008aeaba2172c" } } @@ -3394,15 +3394,15 @@ "98c24f1533f177815a78f76de8765482cd98558271c182e9ea70175821ff82db": { "59cffa3acd22af2478ea31099f73412223d91eb1301172207a61ac51e8cba72d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "e2fe867f931a09f40fa8b95c2ccd54bd4aa14a93bd9ed3f85ceeb0a19e77d0f8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "3db95998a0178d92b1dcc743da63e048a86682ec5a0090f4ec5bdc47dcdbae4d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.195Z", "postProcessHash": "ac7269cd92033aab6942857f08992b23567f65f5f6d7e42d2d630fd54645929c" } } @@ -3410,15 +3410,15 @@ "99393522afef2d07d814a10cdd78d55ffbbf63cbc84caf67a25cbbb6702d7b29": { "df2e38e726ad5701168a107a3233f7e582b27aaddc17196034ab06c247a2cbb1": { "zh": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "583fce10592418ca22bb016c6a0a88b97a849fd001dcce9b51bc568ff38caa1c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "b063f92d009833c9db1f5d43368d42d80f8250096f0bcd9659500b5fa1553545" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.223Z", + "updatedAt": "2025-12-05T15:21:44.210Z", "postProcessHash": "eda49adff09d99bc79202c10653856e7511b5c535ad5ccc2e27e87d5dc7ecb5c" } } @@ -3426,15 +3426,15 @@ "9c36f42318908cee7394ac7bdffe1f0b4dc78d18dafbeff49083e3a25b9a0c0d": { "e03b65e2958329c1310e8961f72be96a59122375e8ea0f5d7d4a488588e62cf4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "9c96c70490e687d2aa5fcf28f084776204787208f402de3584443af31e149626" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.211Z", "postProcessHash": "453b9e628bea20f52063d6f3edc12b7c8d6db9e8b4a722dc7f42cfc42b52bde8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.223Z", + "updatedAt": "2025-12-05T15:21:44.210Z", "postProcessHash": "6a5b767aa81f1561ff5d2550d1ef3f7e14f7be546a96918df580a3edb0a90ba1" } } @@ -3442,15 +3442,15 @@ "a017ed6c9e204f49a926704a46e850a434a064d54ab74c5196dcbbbbf095a5f5": { "a2adde35cfc427e42fa09ac65d97536a831e1059c7400f85820e2263a1b87c36": { "jp": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.195Z", "postProcessHash": "2ea24afc4c6643c7b04b3bb5df169e3886146c6d8e215bd3357b0910e749a72c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "dc74999e4a714b2dbf62512ecc22160e7a0ad7a0cd984b5a130b9bca76fc296d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.210Z", "postProcessHash": "afb705de65ffafe1724be435528c1d0a5eb478bf7b9c2e0e5701271eabf88ce7" } } @@ -3458,15 +3458,15 @@ "a02c9804673e90df5f360bc1d48dc4d9b7a2120b7b838de45da8f0bd5dcc7bfb": { "6dba5895ccf72ae7b5a8b301d42e25be067755be6a3b1a5bcb26acdc5cb58138": { "jp": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.196Z", "postProcessHash": "ec25d832ca1df4de8324d24a82fda16015db33878447126427fbae622340cd40" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.209Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "0345664667b4b741d47e5d8bbd8a961da2fff2cf731ab77ca9d3a6fc39b9268d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "5f181b39879f69ca2f57055c45deb36bfb81b89cb58c7e1523e12010f9012d8a" } } @@ -3474,15 +3474,15 @@ "ae924afae0c519cbcd8b9677316f11c74c707cb0d60447e3f16db759e6be95d7": { "10c1fb6d0471791e0662f2e4888a314601486dae17ed953b398d3ded8b18d82c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.250Z", + "updatedAt": "2025-12-05T15:21:44.241Z", "postProcessHash": "31a2bee6969c8c9f5b8a43070e80f46d173c31f565fce71937c4f6c941625b9d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.223Z", + "updatedAt": "2025-12-05T15:21:44.211Z", "postProcessHash": "37d196e5119c8d380fc6844594dbd69586c08d20a5f26bc41ca8a4421dedee54" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "f689c37ad31b4fd10d1ced2d5cff6b59f363be56013d323f7fd7b82da936f16e" } } @@ -3490,15 +3490,15 @@ "bdf6a99d4e97b12fb653dbfa5271fb1f3f759447def3b014fa132fc4a51905e8": { "70ae38ea604bbab68a53eb544cbd0f2cdbeea7e09ac7cd839c84eef1978dec29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.228Z", "postProcessHash": "8f7d621523b898fb6809b9798efd0e575cd6007e608e357213b4404b43dede81" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "71c24d13a0467ee125bbabb9471ab9c8a5e94d3dd9ec4f2cf83a2819808bbdc1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.224Z", + "updatedAt": "2025-12-05T15:21:44.211Z", "postProcessHash": "2f489f01dbf43aa947d0e7dc1f24c95541dff3beb80a229ec234b069e7d4ef53" } } @@ -3517,15 +3517,15 @@ }, "c658b35c333a9b84fce26b6d52d08ee2316bee590e65f60012410d5d45a42663": { "jp": { - "updatedAt": "2025-12-04T20:16:57.249Z", + "updatedAt": "2025-12-05T15:21:44.240Z", "postProcessHash": "f96a6a01956b16a4ede2343d360e0052433b512babf20358f98d274c70cce8c5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.250Z", + "updatedAt": "2025-12-05T15:21:44.240Z", "postProcessHash": "30e391222a4793b0c194336bb1566115986b340051d955cb376833d76b706fb5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.250Z", + "updatedAt": "2025-12-05T15:21:44.241Z", "postProcessHash": "fd3f4445c0baecea01ff164acd46bd59d67e10c1f990f083ea1f68ac3e916ac7" } } @@ -3533,15 +3533,15 @@ "e0a0f58749dbc99214f8d73d23e3e103bb972d6cb973f80440fb3b9b4b81c305": { "0f27725ca1d515bacca9b8aa1e23bb35c69b895c1d9563452e075aee634e4939": { "jp": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "7091684c1020bc4f3285af7993469c520f68c1c5bb01014a41fb714610be8530" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.222Z", + "updatedAt": "2025-12-05T15:21:44.209Z", "postProcessHash": "1dfd050fc86164290fbf1dfb794ff2dfb75be6c0992a5d0077ccd86dce4d3f99" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "dee208244f32bcc71c0912d9c3e459a917f4154e5fa861089731837fe901ec50" } } @@ -3549,15 +3549,15 @@ "e1027f068c086d68bcd19c94e1c760c747883dda4912d769a49634e99a298bf2": { "327dfaab66de7353575183e0fe7d40b596436f7254ab77cbe35383223ad4ff3a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "5a3b24873410fa96553328b72e9eeaad61bd7e71c7fd1178570e0ab3ffd3ab80" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.249Z", + "updatedAt": "2025-12-05T15:21:44.240Z", "postProcessHash": "9bbc8b35677cdd0313da0538e2210c50dd162896b821bdd59fa1bacf0ddba348" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "529518f34ca28cad7f5ee7e61eabfed1fd8fff351361ed4a381743f9241f8210" } } @@ -3565,15 +3565,15 @@ "ea52d1bf57d6eca260482d6e9db0b3e4ba187ca46f787a3ec41ccbabccdafc29": { "7792c45b9f12363c758a86312cea564fda8789130772fc2a238a348aa77232bb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.195Z", "postProcessHash": "67cb1bf38bf4f68a98a027ec428c9f5cb650b88e09886da54a10b52d8b691caa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.195Z", "postProcessHash": "511a63c44b7f0d3cd3751db19efc8ff1198754ee03149dd785a74d144f384e4a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.210Z", + "updatedAt": "2025-12-05T15:21:44.197Z", "postProcessHash": "c5fdceb61a73106218b9fafae029ad625690e7063b490206cb8da29c53877bdd" } } @@ -3581,15 +3581,15 @@ "f2dd481c53ba67e19f970889ce242cd474c9da5ed1571b9d4f5878551ed45889": { "70876690558307749f06728cb6ac14fce7075dc54a6e8cf0695beae2917c50cb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "45adb49ec2feaffee808af764e78732fd85d0f6b6d4cfc13bbe73903cc7d5f32" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.195Z", "postProcessHash": "0929fa32d4338a72d75cc10aa9ec92ed4d024f858b1038709f7e54cffd860e4c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.221Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "b705b6bde5ae196e277481cd5a1d093a71367bf37706aded2aeca80823b6ae9b" } } @@ -3597,15 +3597,15 @@ "f4deb9d37929966d7a5d1040cf9c1132679840850e80dd91a4e56e059568b817": { "e1dc787a6d679d3f64b0e02ce3b61001ea2f9d7a3aab736ee5ae17d2bc4a4c63": { "jp": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "fc060eecead4677c35c0262dc3e6ebee823fcef982dd5c3b71b12a0cc3ab26d9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "29524baa856f194fff0a4eb876abb055c440bb40372470633b15a1d08f23f709" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.205Z", "postProcessHash": "ac9391d176c936dc61a50050b4f540970dee2bcc6df2ec0a9128a1429251db8a" } } @@ -3613,15 +3613,15 @@ "046cf4465fa1fb7186678766ac47cbd78704f28064400523e5b59a245d53c970": { "b13281a5fbb00f880845872b5516d8f9e9039198c4bf031942d0ceec737def68": { "jp": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "d048601ebc083f130a666e195fc2e15bef8b4208d033c7e3ba2f579774dfcce2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "355168d1b10fa59e286971b001d0f8c84494736354652c15211efdd4f1aa0672" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "bcabb8c382ea4d19d3b7323129a2446dfee3a100ce1b1e85272e7e846a9a396c" } } @@ -3629,15 +3629,15 @@ "0cdb3f54f81ff077472e66fb0a57247ee5bf3d2a93abeb493538e948840b724c": { "2beff12ea84429b1b15d3cd9ba939104aa74a91c9770800974ecc16582d6d010": { "jp": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "f6f1e41c2670ae8d50cdea7d15d969a3daac0f0bfa8426b1d685b0c73e220470" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "196d86037310e9c6ec330f5a320ad193ac920fcbce51dee60b65c98097a77777" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "93d98f792a702a2d0dd159956e3b86c06f6a772a66caefd147b37d9fd90d95c2" } } @@ -3645,15 +3645,15 @@ "1ac7bdd9222c1e2ffa17fc544f1241b28da0cad7f185b619d29ac27e0aa8c077": { "3f8afe531fdd885aba914642b81b85afea758c6f849a7250bfeebc09887cc894": { "jp": { - "updatedAt": "2025-12-04T20:16:57.230Z", + "updatedAt": "2025-12-05T15:21:44.229Z", "postProcessHash": "93b7801f2b13a5e9fd205722df4d47dc46240039a5f6a00c321dcf1b2a09c0ab" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.230Z", + "updatedAt": "2025-12-05T15:21:44.229Z", "postProcessHash": "67ba2ce9bc3818dc25aa39804e9bfb92d1d2f8f981a0b27d74bb557d4faab11f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.208Z", "postProcessHash": "c9398f904d21f07a3cf924ea12a56a1f09004c6be82bfbe7a69364be959db5df" } } @@ -3661,15 +3661,15 @@ "2a7b92dadf95743e702b18a30f74eb67e67fef5ea4124220e608f258c6950c9e": { "c66b9e2d0f4d5e382ea43aee7020fd1c7ff170725159ddc185d674bc64b0d24b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "afc108898171185e56cc785a491d1b7fb5963544aff304a7c9234298446d28b7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "14ba3e5e781aac133077f908c553b87ffebe4ed5fcbd38ffb86aff0533132881" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "33fd046aa0df0dad145c1f0b7ed950393fe0947d1a092df8f639bf15048029a3" } } @@ -3677,15 +3677,15 @@ "2f0873b2704cad58fd2172ec86c842a8262cb2a7c1e6cfbf1e9851fa843f4357": { "d4282945578d91a5ae49277f6ca146ca130e3b3df3c0341a5de3414625c2c903": { "jp": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "f57539ecf926d81785496f6d8ca44c294b3245e06d7ed8769f8df77b64e40bc1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "ba70038e8c9b42cb918cd17ba65c187adc7f6582d0696ce412b0e41e616a8e83" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "f162187a1b711095ce7647c7eff0aa4de0d2add53b0aef67e6a2b2ee24ff8d94" } } @@ -3693,15 +3693,15 @@ "583a274e308afe89671f40f27b3be757e2c9e98eeb513765c802185f5ec14e29": { "17f1e539b1b6e7759a4aa628833db4667a7e74444abb42880111b4568a28ffe6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "f1d4084294e021000c02574dfe7b76a8d0d86cf77c794678450c270db6f9d3d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "22f383300e6fc8457e445bccf094a34a8d19b5d70a66032c2fa808b3407ef1b9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "73965d355e4b340404b97ff3e107e6b5bfb90ef69ffb72f1d7e51532c54c115e" } } @@ -3709,15 +3709,15 @@ "60a5d6b5624fc995f6807d15e66c5a5b6bc86dc212e1745ef8bef3f5dc15c3df": { "c3d809b05c72707e6bb1947b6db7f23f641f83155cd0f83a5e6deedee8d07adc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "e88f7f99394e8a814600d55fab7b7cb28f91cc3288b88e611d9a79fdfe947ff5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "20bdcc381d83b27f0cd36eeeb114197041262306f5582ac43b80c16bb3041d53" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "1665fd8e8be66e5286e7e3730b43cd1e965b44b65b2abb2b8df647143a1df4c1" } } @@ -3725,15 +3725,15 @@ "65c3d5357d49f1617e6e959d8e29071102eaf8d0d9e4d1c2fb7cad70b6173a35": { "4cc1991c7b87b22d25ccb176e3b79b021cdde65ce0a2f2e4414efe519cc65f89": { "jp": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "33adf94e8cc69d92d9719ff335e01947080998abec1114506be8adc1821c0e24" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "75618e441b5cba42230dc889bb71d42822df9ce1c732c6588fc63bfd987f4a84" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "bae812e33f6ea4027c2253022a50d998bd59bebb0bc5c9fe5509e14ed331c864" } } @@ -3741,15 +3741,15 @@ "6e5e66ee5bbbba58fcfeffbe0603dfd55d38dd278fbff14d70aa5595ee971bd7": { "c4a33214adceb28be9e704611bd58cf7f2b17ce705ec29ba0ffd552d82a3d73f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "7934894812ab8dd37af9fda996912f128d15b5ef4974832153a9e5734e8a723e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "aa6c58538c24ad5230c56e2539ca3b47a4c02753be3c3df8bcb0252b301c7388" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "ae5911f0723bcd9c07a8be53f50176547b8064aec1e21158a03b40fd1918cf7d" } } @@ -3757,15 +3757,15 @@ "823e98e23e42535697ba133dc5c2d8b57c41a87124d772a59a7bbf545ac0dd84": { "d6ac975393106fe00f3edd51a065ab64a5e99a9aad622632a08705ff68ad4b36": { "ru": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "677687d65299252d2326a45ac7ee190bac323ce7c21940c3507cd5643e7b88de" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "956439ca0f5a1b664ca5a25e09dd1c7d8c9f10494fbc1c38a83fef1c6f827e3e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "2e2f471bc233a5126e1c297b055bca3439de25a3282808f31900448b1b566a7e" } } @@ -3773,15 +3773,15 @@ "907c6e7bab21d938402f694e7407939915297c82eafd1730100c830df4918778": { "c3a2fac6bf16acdaf76f1ef65dc3317e37696c35df4e8526e1bb887fa5cfdeb2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "aa78ebda4b74f413aea7558aa44924094f6130ccf074966e72a9fbef35639e67" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "d686717d86bd8df1da7b8e8a51015db018b7f39af96a32de178ffd0fd48b91aa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "444956a8bc2aaf6d366dd649c4aae26166db62a77e0fd05ddb1be3e80d6828ce" } } @@ -3789,15 +3789,15 @@ "9840f3c84ffc8a8f881de9eca8454a7e8de6c5bd5c30b6a27784816805453183": { "491cb45d3cfae94c2b0cdeaaaf82b4ad9d2198ed681060717d4f79378fc92714": { "jp": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "94db1353c16cb1af7e481e37d53606c66deadf6ce21d885f493ecf19416cd601" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "e8d8735c23e9f38886189fe5e7406e5127e9ec027759c969ab66864c7dc124b1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "7b3a5a9e929fcafc336f7ae5f7a409b5cb2917b782d57c99fada20da41d666e2" } } @@ -3805,15 +3805,15 @@ "acee1d54d44425817e527bc2a3215f623d6ebd68804cdb7f18541efb76fb830f": { "53b8019634b145bda892aa14cca4d68066dd9ed1223e68c1450a60c3d6af3368": { "jp": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "72972c6ecf003db1d4784ae9ef4696cc86677e0ea8dc40467b07246f6bdf6d39" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "a0a20793419c07b3555fbef9c0561eb1132fb3868f1f894452027d54b65f1491" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "85ac1bb864fd45919f48fdf26181cc62e85e7aaec4d55a3dbcecde7bd0aeb101" } } @@ -3821,15 +3821,15 @@ "b66cad86246e7e672bea77de5487ab3238a0cbd0d829ebb54fd0e68f3cbcee09": { "9cf089c5df430ee74bddf608da84394fafc963e1bd03cd0e94fe2c6c179ecce7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "19d2a099f9a5950aa401e46fbd7e7e967ebce0c3b42817bfe21ea033cd251490" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "36328d3e8561914a8d70fc1b9b899f3a15866373c51ea3ad15ee8c9519f0cd1a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.238Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "1a4de4bea2534121914e1c65cd6f6f2902f347742d4fa521459c060565945cc4" } } @@ -3837,15 +3837,15 @@ "bc72b7a9222edd97db763cb5ebbf3a678bd9d11ef3bc3a2c28fd6797dd845434": { "ab1bcc3128e7fca61edfa8cb48cc7969450a097b52da47b30b191820f3c2d949": { "jp": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "fd5c48a4fb1e8f99f54eee38c2dadf9a04b318d0c7d32a82475d96768fe293ab" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "4f3cd4c563071cdbeb11b6ef1ad5aa419abc9b80cabd41d282db0f132964dedf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "92c098cc673075b9d834057671192b12ec3a8c29fffe60cb46b37d1e98e168d9" } } @@ -3853,15 +3853,15 @@ "cbf8d771d3e60af84970fcb0a9a3b216e9fa9d6604d8b59222876988a0f9a23c": { "05073dfddb68903600de4505e9ef4203c4b4f5979a1ad1001059a7e6a6c36293": { "jp": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "ffe5981ebc4444742f75e8412d4025ab7b6f6853d036f1f165a538af6def4921" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.232Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "27d157dc9febd4e16ba59231ddfd3fb2c108f6d1e9a808cefb7455ae687f2cb5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "33fa33056cc431f63461f682fe3fdeac57034d57df18236716afd96e19f2c6e1" } } @@ -3869,15 +3869,15 @@ "d259b209c3435b62d81021240a05134c0eea6d95e4ac914c175f7122e5bcdbb9": { "2336e34b998efec4cc83f0643bbd8fc97a4fb0afa00c3343a22139925e777a12": { "jp": { - "updatedAt": "2025-12-04T20:16:57.217Z", + "updatedAt": "2025-12-05T15:21:44.204Z", "postProcessHash": "4065bd0bbdfc75bdfb96c6dec7f78c1e4e79feb9f1a6fa8d43890e6e35effd23" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.249Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "1fe3a00133f5cbf685126b236afff76b470c83319856c44dabd2b6437731a737" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "abbefbeeadc704e0b94af64d2dd86fc69890fd2410c3b48d9960bc50c88519c8" } } @@ -3885,15 +3885,15 @@ "e01a6937e1ad5b11af43515d1a1e66db9e6168b75b5528ca1b7b9d7f3c195868": { "2c6fc2afd47aebe8d703b5147ab0245326aebcd6663db747fdeae29badcd7caa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "fd6e046a02f99277a22ac1cc7ba3954c8ce3ca711c98c848aa32b8c07ddf65a2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "4af45f28d313ac11ecb81fa239202733771cbba4bb4d394387174630084eab47" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.248Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "c0516279736a75deb1a07f71db6ebb1318c4c1b261cb537d25551fd2e1cc09f8" } } @@ -3901,15 +3901,15 @@ "eac642db564baa4ce1f75ca03dc5a23f44db2e588ad4390c7c3cb746e81f695a": { "4bcedeede08560e01db76c1f8f3c871bd8e8aebd281853aeef86bbc3841fd68e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "1b2f8d66e7ae16772e969f1037ff20fb84172e15604299d73707346fc0a48560" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "0c9ab96dae93b6505e17cd7c22f6750b075c72d405547b841789eaee04edb086" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "99f9557e87f09bd2946feefefc7f5bad26452348453cfb0b9cc2af9f7d495f36" } } @@ -3917,15 +3917,15 @@ "f5ec5f1c0bd0776f9a2a7bff868a443e7cbb090161004e7da40277d9999a5e0f": { "1d3bbb34461ec824f8f745ff89fbbe7930bf3ca75ffcf25386fa8e097845e074": { "jp": { - "updatedAt": "2025-12-04T20:16:57.232Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "276a47a8cea0773d7ab1b7faf852327042c190cd29494d2b5f11815c2abb2eca" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "4af16cef9597591b53ec296dc5ff9c0c72d9356aa144fbf32f1501d21e27e890" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "8a01efac34375649fb0f6a70803cc5e4fead16bce8971298a9aa4015c15564ac" } } @@ -3933,15 +3933,15 @@ "faf7c1208ac6cebd805f74b867ef0352238bb675f4e78c25744706e43a0bbf35": { "067bee4f308eb8fb0ee42187bb88647c1df461930299cda269dae6be1e92e2b2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.218Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "f938803cbe858f13e1e3c804babe5a470022286a8ba78fb3df063111308f3ff1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.219Z", + "updatedAt": "2025-12-05T15:21:44.206Z", "postProcessHash": "523f310d175f1ab9fa687562729f8d30eb2e3cb0a282bcf4ada6c0f97c6ac6e0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.220Z", + "updatedAt": "2025-12-05T15:21:44.207Z", "postProcessHash": "3c06dee87ac93a95d760285d044f458ab0f18382e3a7720ae8013912c7d07198" } } @@ -3949,15 +3949,15 @@ "010f8d66bb60666d0d358628411eeb2b1df5cd86161855532ace6b686750bb2f": { "0feb62388a935eebc64bf1d2d0c742a3b9d17f4ae18ff4e0ed9f4fe6e68ce776": { "jp": { - "updatedAt": "2025-12-04T20:16:57.232Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "d50e1f7ca87935d7223cb7ea930e78e3653488d8d740d443efcb180688dfa89c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.231Z", + "updatedAt": "2025-12-05T15:21:44.230Z", "postProcessHash": "c43f725d9f7e869b97d6a43557c9a2cc6de8a62347f1cf93669a0e6a1ff06ce1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.232Z", + "updatedAt": "2025-12-05T15:21:44.230Z", "postProcessHash": "00048b446415a086b97e1d6dd8b898b89fbec371f044d79b5b67b4aa0b2d2616" } } @@ -3965,15 +3965,15 @@ "050352a11ca817f5bab4911101cd95e7ae7dc5d8954cd551028380c728411a57": { "6cc2916b976989ba2663dd50f541fbe9751c56f179ac300fc3381ca3479e452b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "c88638e893d5ad1bc29c4d49f4de3de01f1a63223782c910ebf58fbf54af178c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.238Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "44dececa7198dc3d0911bca5daec67ae7b2590570f6d71e38529f73172fbac31" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "bdee9f435b9ec3bef606a664dbf0f5e8a3a858394fb4348d0c807606a04c8271" } } @@ -3981,15 +3981,15 @@ "09a42960aa106a95a5cbe49be7b12f9120aefe3ef067ddb1c1b026342239f3be": { "eb1dc019fb90478f30509956caa9e4f342a6e2b031332733edb6a6b927bc71e8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "5e9c0943fd0fbd8c76d30a8bc627ac2c230a612d30c370759f6231aeae30d4ec" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "fadfce066fd576a2db9608e65c1dabb71cec5cfd7ed9792107e42b51073c16b6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "0a8c2b6c9429fee97a046b8833986f5a2022e41da004f3d892cbf07b0805d1e5" } } @@ -3997,15 +3997,15 @@ "12be1e0f0e04bb9eee1f814b983cb24150e4b9b4f2e86f8c6cf33f7dd28edf16": { "25966e125c5b0d0e09bfbe0bb6c4eced38f8afae86050666be245c00bb7f240c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.231Z", + "updatedAt": "2025-12-05T15:21:44.229Z", "postProcessHash": "d4f07af17b92e59af2540d7be1ef3b690266bf147dd26548c2249dfea421fee9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.230Z", + "updatedAt": "2025-12-05T15:21:44.228Z", "postProcessHash": "2402447a6648dfc155775d180bfa13a2d7815d7128e10343566ed1224184cb1c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.231Z", + "updatedAt": "2025-12-05T15:21:44.229Z", "postProcessHash": "e880bc07ae90ecdb6ca8de4cd21fb76de5261feaef2fc32daad0cc3fcd27033c" } } @@ -4013,15 +4013,15 @@ "130f0cbb1d6c82f8ae457bc5d3dfde8dafaeebcec17cebf6c1ec40eb99cd1392": { "4b5db766a70f9027101f584180002e5dd6f63ed99aa3d036eafd61435ddb4812": { "jp": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "ed3b539371fdd4a64001a5062440ea039a5dff748eb1e0abd4dc065b71dd67aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.259Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "1596457814a5ef0ea5aae0856d5915254d42eb2411a596d0bbd279c1f98e73cc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.230Z", + "updatedAt": "2025-12-05T15:21:44.228Z", "postProcessHash": "901054cbf8e0cb89290be6a18d2ea782c3f86718dd507f99d5de23a7ba41c69b" } } @@ -4029,15 +4029,15 @@ "30c2729724c6bee568ae40c9d3da452323fc101c8c757841c99647d3bf63f057": { "4eb3058a8a2fa3f5f9687fb24c64b384670b5101c5582da6a348ce515411116b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.264Z", + "updatedAt": "2025-12-05T15:21:44.262Z", "postProcessHash": "13b9c4f9faccdd980af2a4f1a67105ac6afa9127ed8b12301c472a9618495dbf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.263Z", + "updatedAt": "2025-12-05T15:21:44.262Z", "postProcessHash": "99a3b4d44b328f0c47671b75a7e756ab98e8779e71c0ee14023089677dab295a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.262Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "eee4034255d872ab4b5002e4d502d14a43f882b4a0c39aa9c5152d94ba603887" } } @@ -4045,15 +4045,15 @@ "377591bbd1fd99159d49074a1492a22294d47fb29e338af9ccb456a44f4a181c": { "79d09c5dbf435fb10ca29153a98d5b635aee732c2aa61594fcc2f065989ce327": { "jp": { - "updatedAt": "2025-12-04T20:16:57.259Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "b226493ff8d6f51f9e0d63f6e0dc625a9c446190401b56b83d6565987693e975" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.255Z", "postProcessHash": "bb260852dcec4e537fa1808e3b89d61dbfbc1435aea44bd9e05081437a4611ce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.228Z", "postProcessHash": "c1e4dd82c4214a1037e81e2702ecd87af9e6cf33c836b02873ccddaf88f78ff3" } } @@ -4061,15 +4061,15 @@ "40a262fc5e1c5d47aaac955e5d56710c58b184834fced0236175665ec187d93f": { "d9751428d997f059562f26e9bd7ac68c276f0bbf0c513551408f0513601e3d16": { "jp": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.254Z", "postProcessHash": "335674181cc56907dfbbd944fa2b0bbd9bf3e6944669c333fb7f96195b45c96a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.257Z", "postProcessHash": "a77cc700167153235d1ea2b6cc99feb1ae7daf924ae602aa1fdaa581b7089186" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.254Z", "postProcessHash": "1ad24121fb591ef287a7c856a6d30ae02d05bfd9242ae37980ce61770f7fd1b1" } } @@ -4077,15 +4077,15 @@ "46dbee6938843b18fe050245cf7379885770dc6f9f8ed8013ccf5222d1c306d9": { "1c26addde8215daf58446cd375e5e150c2d5ceeefaa8b2acfdb9c9c8afb9953d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "323f08c92f947e72571a009a9233f56518863ba11c6cd5d9dd898b9cd23be5e9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "86592071e80f8b766ae09c676ab51c3265fb0919fbdf379581fce9e2591edf3d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "ac2e40f9260fc567245862c2594cbfe54d95f16f442b558d58f28d9a69378e03" } } @@ -4093,15 +4093,15 @@ "4c1ad3942b4184430a7d30de866388373d48c1a27718ee8712e351668b5b2c7b": { "7f0ff3de1f2f3ef36f7c5bcbadc179455a3ae55c4a9e388b8148b18a4dfe6b7b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.246Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "568d913b347d3ded050107be12417cd4f0962e2e542e644ae87dee951209f03c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "fe07f4fc961f04f82e80f5add48b5fafa9d01fc3ed87117ad8c247a9ac9a8f15" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.247Z", + "updatedAt": "2025-12-05T15:21:44.238Z", "postProcessHash": "742103106ac76367d32835e0eca4b38af12823dcf7906ec04c897fd65b026d2f" } } @@ -4109,15 +4109,15 @@ "8d0001685270931055d17a8eb50155f983dcec73c892d71e3bffe9004c1cacd4": { "c26606f99e8098f4ed8f1e29ccce89dec0e9cca96fa2536b375d31a3b9fb8036": { "jp": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.257Z", "postProcessHash": "b44273e11f67943672ce36a3b04b3c51e3b9f0a1dc88cd8979c79d7c55cf3ee6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.238Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "aef07e8400202fd1faae12221f0b80f927ed5d397e006cbeb42f9f59bf18d5e6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "54d10413eb6dd938c65b2855428b63c5b51fbe331f4f3ded2a1f4bd73a5d2fcb" } } @@ -4125,15 +4125,15 @@ "ac35f8f55935d4ecd0e3d7d6c02b398d04b18c830570d65f6551b9b4ff45bb74": { "09c8a0f7de8fedbc086a20b8603b6ad2439fbb800e29c34ecc840908cfa41148": { "jp": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "90f2c4922a7f86a0fd024dbe4bb3dbb6482f25b7f08f94137e4b69dae26e131d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "53079436557cce2b97757a30e5615dabf3a0aed3dff0ef70f5e4229ad32f8c8f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.246Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "4f0559149c4057d0830afc58da4ee78644deb51f97a1afe4423ee45c04971872" } } @@ -4141,15 +4141,15 @@ "b949b99783c59002d6d1611f53562639a71143cfb90e027a848ef13b70877e4d": { "65ed1ef87fa32188d6b83d9345586ca7be9701ab437946eec188e8d638e56014": { "jp": { - "updatedAt": "2025-12-04T20:16:57.261Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "a7341a4650c58ecd83f1069f4174e31d1f0c5580c7e082fa99433ae4aaeb4214" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.262Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "f7bfc9e343fea89d15c10f57ef4dc22a8e795aa1c05a7486a4e5ccce29556765" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.259Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "9a8671217a31fc1e826c9a84d693264321610b6e84e532a28d60821d296b2c27" } } @@ -4157,15 +4157,15 @@ "cba0abc4ab65e9d030139163304a053ef5b1fe651a26215e77c9e551fe3b8191": { "62328876676efd5312772f4062f7342ab3fbcced0fec39177d7de554d93c9005": { "jp": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.232Z", "postProcessHash": "f46a0be96af319e5c6ba45db98bb06c87c070f23f00ca363341afe0d287ea871" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.234Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "65d62d010947a43a854c0a51814366547f7d9955f8fc0cb1366f39b894f6fc6d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.233Z", "postProcessHash": "e89140cc0ad6b29daf0caa2fa47312aa32e8115460c78513f1b9727d4203bbff" } } @@ -4173,15 +4173,15 @@ "cbf50a3e7f149ed504ecfb70077f07ab9e2fed847c539a9e27d5aa88c015e5f3": { "2db80f4884390b5613f02ed18bdd9194f0f0ca4c9123aaf5b1a68e1c52e263f2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.249Z", + "updatedAt": "2025-12-05T15:21:44.239Z", "postProcessHash": "b309fe63dd499dbc2b5e53a02528e10c06f80b04acacdf0b277c2298f9f02dec" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.249Z", + "updatedAt": "2025-12-05T15:21:44.240Z", "postProcessHash": "9e5386ba1b2472082d953cd9366a0820a30c6a63d5de227e78f69c86a4b47a8f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.249Z", + "updatedAt": "2025-12-05T15:21:44.240Z", "postProcessHash": "c7df439546742fb72650a2a46343be4fcc234a9bebcfeb5ba54cd24b3c09531b" } } @@ -4189,15 +4189,15 @@ "cc4204c3e95911221d74a7265dd2e67515e9b01a1b9394863f065398c955594d": { "9538d72bcd29de25ee9a900cfa42747f8ab0f5767963a08a3028ab7f3b189a13": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.255Z", "postProcessHash": "5f1c665b37c3e50ff775ee713881a4117d9997c9150f8bea4196acb9709161bb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "019f914cd7fd0eeb6c4723831071171db725465b955476778c500bf2f10f2cee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "81ea8535aa2c732a871f8a1549b18890cb3be1f722161837c490853d63f4e2c0" } } @@ -4205,15 +4205,15 @@ "e15247f6690c752be9eb052c65d6188bf83aa3aa12e45c3969ebd294c52787ad": { "e8049a4edea61ad5f86939e7938566c1c4db909e94409eedf5fec35ac6d46e8c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "5167abcd9a2eb17ab9b0f2f641ce3e99221e0a07d56739dfc1bcd52679ff82fe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.230Z", + "updatedAt": "2025-12-05T15:21:44.228Z", "postProcessHash": "3224d1eb56a5303623abd5d8d51e83d6921d050ee3c24bb21b21400fb1198e68" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "fd3d743b9545f23e5e052a68a8e3c0b6384298c3a2cffa4a5daefd131c2dd9d9" } } @@ -4221,15 +4221,15 @@ "e979381df042f92438f9f485ef68a9901f7ebe9aae3e09ec14dd65b67c2d842d": { "67bbc03e619fab0b6f99efec8b0f2fb38df1395be3d50b3ed225f0da4b3f4452": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.256Z", "postProcessHash": "494cf58aa1b97ff95ae9b33bd6ce4d92e4d2ca882adf8d3cad0f0bc68695d627" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.255Z", "postProcessHash": "c1b8bc968a1beb176529c0932c7f6a227cb64cf48edb59c5938e5135d037c7ca" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.246Z", + "updatedAt": "2025-12-05T15:21:44.237Z", "postProcessHash": "0bb52dc208d0e4ad82b5c43943a23c54bf900d614e4f0a1b54711a1e52da03cd" } } @@ -4237,15 +4237,15 @@ "edbc39ef9c56e581bb84c8896ac7b1374e3d19f83b554328b6e8d3d38fe01125": { "1f975f6dea1c15645a72a9eac157d5d94cb767124fa4ad2e367bc8233d6b225f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "f0c1f8731711410b0dedaaebe4d0e0410e2a7d59c08045410d7e9c55ef2c362d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.229Z", + "updatedAt": "2025-12-05T15:21:44.228Z", "postProcessHash": "eb2de7b75beb7c2cc68c4395815aa53c8b0a5fb7a2e862439b36d9414cf6a713" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.256Z", "postProcessHash": "34fe39d1074c8d7834ec69eb9782e23ab725e0878166cff190a18ab2d602e593" } } @@ -4253,15 +4253,15 @@ "fbe0f20b7a71a4be3f802731a84f0eda5afbf565f744180f030a4474dd0b950a": { "acb4ae581b304b32468cac562d7016a47f6ce4fe713075ab12bd276f5d04a0cc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.254Z", "postProcessHash": "fa1537fb5d23d3b0217839d785c2663cd21a95c33c65ed888df46738ba6e5d8d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.237Z", + "updatedAt": "2025-12-05T15:21:44.236Z", "postProcessHash": "3d928a3c66b7d878755fce4ce44d10ab4629339407faa2524f7e60ff884247b4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.235Z", + "updatedAt": "2025-12-05T15:21:44.234Z", "postProcessHash": "530c753422a5c814ffca67d47fca97502b949106eb2dd75bbbd63be8737cfe79" } } @@ -4269,15 +4269,15 @@ "fee41c1b851550b4068c1cdd9e5a18a829a2d27697fe22a9678a8c0d0e87836f": { "5d6d7dab6e54977464b77d2be0fe3967209334b0d1e2cf141000a53098cdb64e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.256Z", "postProcessHash": "3f06fa43f8aebcadd6b8eea081651bdf6b5d4ee71ab3d70b72e08933c87d7bf8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.261Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "ef722adcbff7349ac8c1cade0aa739f7ca0ad853d3014f7b36c10a932b489db5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "673053edd746ceb7a82487294606d047bc48675f3a5c70456da16632c696c62e" } } @@ -4285,15 +4285,15 @@ "00f878a9534e344ca38d2f13a2d0b58a40257c9f7c696adfbc337ee5148c5894": { "d7ae2149e8a1eca5c76f2e499f9ddf19c90a2c840a153acd2e820b96f79c4e3d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.264Z", + "updatedAt": "2025-12-05T15:21:44.262Z", "postProcessHash": "df40770c860afeaae645be9cdeda2147700d277ea96056e7ba11f71036cc0b11" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.264Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "87ac07fe1abb689e3f5b0353d74e0c1ef063fbd05922fe724542aceb96d83845" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.264Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "08d0f6dea2bde99c1b7660082a73cb0134c55f3b1d972aa88a6cb3204f2de193" } } @@ -4301,15 +4301,15 @@ "262ef21ffee6eb3348b7484a2cb16afdc22c4c02ce86edaa851cad0979d13067": { "5e4f687928ed10c1ab9ee1e070abf78ab7adc2bce9345de9158ca65c8a403093": { "zh": { - "updatedAt": "2025-12-04T20:16:57.262Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "d5ac1f3a2d7dbc1af61903b641a3fe9128808603cbee3fa8a93c5edf5aa0da23" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.261Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "237a256cd5ce4b0b7d9495d12b2d7ad32b89d71432cd4b5c5b4d9d587b4e95d9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.261Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "ee0150b4d0c1ec84384f69ff4eff6a9c78f634f8a11b57430f953d356de6a028" } } @@ -4317,15 +4317,15 @@ "42014f03b2e5e17b4e9d8b4cd80cfebbf2e3bca570177e4a0f46c977d992d00b": { "1713044e3cccefd79213a1fea6cb08cc00fcb5a3cdf023fa1b265af8ff27f097": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.255Z", "postProcessHash": "860ffc7cef6e14995e9d34d344354cbb41eb050b047bc49ac229263ae4c74a2d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "99a46ea682373599f8cea5b2681a91c891467248eb7ffae4aa0407640ddb40ab" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.259Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "633d85a864c7ece89638e85962f5f3162e2e6a0103261aa6d6549153c4e1f1bd" } } @@ -4333,15 +4333,15 @@ "4c05567fa33cc5dc9787df23810bac6451ac3a0fea9f57dbfe51135476f2af9a": { "539aa35729dd5eb9f1172afd319421d880ea5ac2efe1aac243083236a1389aa5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.263Z", + "updatedAt": "2025-12-05T15:21:44.262Z", "postProcessHash": "0bbe07c3c7de97a38d1596a38cc6cbd7f986b9dd5d454f13f7683dcbde628f89" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.263Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "e97d9316a112e473b3a3062fe3146b0517dab09cc40d705233d2a3218783ce30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.263Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "d8aaff67b5b895c07da4251c71c08a6be15abf0eb870315bb8800896439e1774" } } @@ -4349,15 +4349,15 @@ "4ec20679bc9c3514801ed7e21c4718d82ab75932df1a07eb0572f662a5730d98": { "86d2c497abf25c94fa112b01bc6df68914ef1bdec7669aac57b740da912b33d9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "ce1327955038b91ccac97eecac51643a6711d6be23ba6a68f595a0b5019cc121" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.232Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "8d8a6d055d9c476b2a373ba0019500e56f90e11c7ba4c1e799fe8d94238d3078" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "f788a8c8038a4f8a85e8ca4676dd899a73f9aaa2edd08d98f869ed80e9ba2964" } } @@ -4365,15 +4365,15 @@ "5a79d1e559ea1ad9f3ddadfdb2a43b047724a8158973368a06de949a009e4a82": { "f10bce44ecc97a7f7fbb9e4dd3135a3443539faf27799c8357608d1f78f0ea0d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.257Z", + "updatedAt": "2025-12-05T15:21:44.256Z", "postProcessHash": "d6d9a1cca7ba3b8a4871bae1af9511d6911b9e328ec9b31b42bf3a0420233da7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "614309a3f126d35921127863c8b35082290f78be3c229cedbb1f5e8a39d309c0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "4e8fb172161fef82ec53f20d1f60843639451c46db2fdece12f9c9ff3d431ea0" } } @@ -4381,15 +4381,15 @@ "5ea715da4571fccc329fc033348aeecf183417b55c28bbdac60956aa1debf704": { "2a8b05277ff4a9cbe8def769d30fe9965fd38e380148a45171afc696a707de97": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.256Z", "postProcessHash": "31f2183901a97ce7ee8de6ba71af576afe2f8f7ff35b214bd874181c76aed3db" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "f3edb56226e3441c0d545e063c73c412257daf41916cac0e5e3aa479c2ef9ce8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.257Z", "postProcessHash": "8fa117406f9827c64376e61898a01c68df2b92027462590b7e0b97085429ecc1" } } @@ -4397,15 +4397,15 @@ "6577565180fdc2dd6b58e525087f761a4a641e5fcccec17b8d198f112e8867a2": { "457a7fd8ab504d03ed723c9475bd87417db7fa6b8d538f336eab293e7c2db492": { "jp": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "a5b6a76266ac3f54703cafb4ea761e30db6c257186aa2cd8a67dda4ddb6b3384" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "556aa2964b881428f3a6e9121aefcf9fa122756b90612c8903172c8f35741194" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "22d078c82140e2aa58e9b0ac8b3511f3e7cf1b81884feb9cbe62ec00575e18c0" } } @@ -4413,15 +4413,15 @@ "65f86c7c3a06da5be6ca7c02d2ebc67707b92772d464e19a9f17a4ed1f5068e0": { "816a9dda53486f2f740142aa953a0c567c672d1d673898a9ad9493dd248c9c0b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "7e11ed0c5dcb0c6e76dc391775ef3e9c74d1a5e48a5004f371dda96f913e9623" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "62edd7029884c10ee1282b11c818559ead4e77f96745f0fd1259fec0c4fd795e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "0b8436350b4cb1bc60cf44ffc071f14e2b4bee8eebf50f09a600c52cbd6b8171" } } @@ -4429,15 +4429,15 @@ "69e3ba4ff50b5b7c3475f46f967bf675b4e5a81f02e3546d810018e6a3fe12c7": { "d64fa7ded50ab81c30dff31ff460cf6ba0811be8f95127b0bbec04487a124039": { "jp": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.254Z", "postProcessHash": "c25931352a601b17751ee0e0b869c2cecd731aabde88b7281bd74ffccb06fd3a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "19690bd7c6617c2fcebf8298314f3925da5f66d4acdd09e01a0e8c2d6a10fa22" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.259Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "8f42b6b78c9b882d30aad93dae1ee8dbb24deaea4bf8632faf4f88718b3fc8a5" } } @@ -4445,15 +4445,15 @@ "741985413cbcc54cd08f4f04379dfece525dc97edf44e2f8df78b544f7dd91e9": { "2bd4eecf6148d08318f581143d8ed2830a034f2bd9d72c70252b27c1cf3654bc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "1c7d7fa3357a33cf274acf245f314c2d7287f602fc8ef13c33d17a28cd61aebe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "90a4eab0ae92aa4fab9a2cc0d94e53763e7eab70104038936e5f63fa6fc2c742" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.253Z", "postProcessHash": "8595f00982e0133c1b7fdf88a7899a84ee3db48a306a467da9e7cb1cbe70b27a" } } @@ -4461,15 +4461,15 @@ "8679a4ec12ab69d4d68a5bb2c5cea4b7f0881bbdd39e33ed0dbce1f7a96a02b2": { "6dafd0d4cd13c07a59291f74e30693ff78bc11afb76dbd58ffb368da7e83a065": { "jp": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "e2588bc8df242d24a9e9123fbaa25ef5448dada1857a06307a26e43aaf575be8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "4a215f44d9f5d4b22c0f15a94a5227c3439468eb0991139874aabe8b822f708b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.233Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "ed9bf78f4ff71ccb8b0ffc750837338e74ddc2e0616c57d9cf2063f8be003e4f" } } @@ -4477,15 +4477,15 @@ "8a737109d61aff4ff62c3cea1b972f0a7863c8fef9c1f3658e42f4cb31df1392": { "132aab96d1afacf12308b65ac1af9345cb2b097664b24dcf5c773ca74a90c659": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.256Z", "postProcessHash": "3f7a168e74a7627fc7daab807134475e80e96c53ff165d65bed7d12a4331d8fc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "381fe7370fec56a1bb9ab42191478dd19ba64518aebc902c30129732651162f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "383953701791a4c96b05846f7afca38e4f4a482c11a35ee1f48aacf559ddcb2f" } } @@ -4493,15 +4493,15 @@ "8b22e50ae696d72046531764b190a2ea3daa28284aebf2f2f2721e1db7b9a752": { "a3ec1a8f31c388fb6d343bd343994dbc83607b4c1aa74c136db042c2472a32d0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.244Z", "postProcessHash": "61de05c7fe1074510583fce78b558195758a907e68445598af306170f280f244" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "c5d24e5cce7d1a076e86ebe9526a32b1b39dde402a5f629f466e319f4b3a9d23" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "3480b21d7e3185bf61195477ac8c7352998fc1ce5e667847ae3339e2441571a0" } } @@ -4509,15 +4509,15 @@ "8cf48a0bc486c9b8e497ecc604e48b940db90a9be71802444fc6568bc64fd85a": { "2204d84ab0794f79cb34e93c0671da7bbce325d19d8d5bbb80030251d39917ee": { "jp": { - "updatedAt": "2025-12-04T20:16:57.261Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "967848d1bc240410f03fb19997c166bba46a963075853b34290e1299feeeafa8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.261Z", + "updatedAt": "2025-12-05T15:21:44.260Z", "postProcessHash": "2e9691deafa16504f2a9bde91237094d4e60a6367b7560c35cd998fcb5a14df3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.262Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "509bcbd6a29f27bf6380c4f72b68d339cefb869799273cbc9610bcb2f838c3b1" } } @@ -4525,15 +4525,15 @@ "8f767913276b5f3417959156454a31c70c834a5c7093a2081510ef83903f4795": { "bce52080edbc2ef28e9154b8f007ec28a5e436114ad9041d55ab9bd299d603f2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "787ed5d133591e18248e5182186fe828cc27cac4965580f752d1cbace5e13b76" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.257Z", "postProcessHash": "f8d45cb76eb6d35f1246cb455f3dab0210640cd811c22f0e3ecd8b21071fac6c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.259Z", + "updatedAt": "2025-12-05T15:21:44.258Z", "postProcessHash": "1f70d8cd03dcd5c0f1a184581b78c7be1d4565d0820271ce5ab75982361ca6ae" } } @@ -4541,15 +4541,15 @@ "961e4fd08064e39aa2526ab854951754ce9cab815f42e5e159992babeeaa5b0f": { "cf7f511889edff19a30680bf294dfbeedaefa3ea56faf9de40db511b5d58efdd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.264Z", + "updatedAt": "2025-12-05T15:21:44.262Z", "postProcessHash": "eb14db603ab301dd02b41ed1725a597e778dc7fdb9fca79c4952eddc92cdebdf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.263Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "3bff82a8abc3056195ed787256b4711852970cf4149236930a8a1a3b4e4fbfbf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.263Z", + "updatedAt": "2025-12-05T15:21:44.262Z", "postProcessHash": "c0dbf2c8ae7a18c26631da5e9e69e70711c8116f2517e3043865035dc00f9f5c" } } @@ -4557,15 +4557,15 @@ "c237b65e74a71bfcdfb33228aa085209a607cb0227f57e434c617a7ced16d975": { "cab8ecccbc0fcc08ad057ca251274b94773a36f8f2f5c0968c4007592472503d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.262Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "17fa12384afdb76ac251b9f9f1cee64b6d74f75643bca20c95d0a1fc0f6cac70" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.262Z", + "updatedAt": "2025-12-05T15:21:44.261Z", "postProcessHash": "3593d01d6bb41384406832a83eab47afa3e5da9d1c6e6444bbe36c4ca83d91b3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.260Z", + "updatedAt": "2025-12-05T15:21:44.259Z", "postProcessHash": "285b3f9f94fad9b553a0e41825e6579bb26373d911b46eb92b7c244ff0c67bda" } } @@ -4573,15 +4573,15 @@ "c3bbfaf5ba432f3383f9213e2c564cedcf64baf52ca43663bcd031fc79f65fad": { "46c4379cf36fa439d614c84a7b1f2a6e319d2f3a5e352e7f3079aa72e1634e3c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "3ee2490201e7ee7efcdf4899b5b94420d7ce7cd1ec057a192d5f662bb0708694" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "1c4d27caf301ee4cba8c032a7875259f280fb9c7fb439a99b05ccb924bb89a0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "9e0569b4f60f6f14fa85751dab508908f84ae3a0bc6c637fd33a761ac410a39f" } } @@ -4589,15 +4589,15 @@ "ca7eb037869880c9ebb1a34c0000cdbfc8fdc9225de1f230ad67b8fceeb858de": { "fb2d804909b58e74a6d190031cfb86ce2cfa560d0444d3bb3d0a0af94da23268": { "jp": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "7adef56a9c57f6616e24ecc290ec66d9f28864107431a78bd3ea2b6bb9ea3f5a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "dabab5f1aed2bba71dea04c8cc1cc80dfdb1699c28c6f5c07b7e0233740a008c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.252Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "8d2d028a04d16d36af130415b78c5c5d2ebe46b83066a3a72d02de41d65081d0" } } @@ -4605,15 +4605,15 @@ "d6a2aef23a40b1f742ecc4bbf44e21b915daaca32e6106a813cece2855459b4a": { "c2bbc1291a1d9794a9a8424dacda644c27086e3d431d4f0bb25b88182d583c5f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "68f6672d84d00f6148cf616a2890807ddef5a59fabad96fbf06e03f7b0ad782f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "5ff3bc6b75c810def93dab90fd441b4bccb7312ca8117493dd21a8593d76d297" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.236Z", + "updatedAt": "2025-12-05T15:21:44.235Z", "postProcessHash": "d4f5decd8f3967064084da71c0ce542f01685c58980adfd8012ee7d4358241de" } } @@ -4621,15 +4621,15 @@ "ddcf8dfb6b1a4d5a1ed98c2017cdd7ae1fe774db2009725b2bf3d5ca4a50b322": { "4f4dfdc7521283f8c0348d0878aa061e186e3e3aad4e92d55841f1902f00e3d3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.256Z", + "updatedAt": "2025-12-05T15:21:44.255Z", "postProcessHash": "91b5d02f7e9dbdf53ebf4d708a1a26990acc1ad859b03d431c28e3f579d24ef4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.254Z", "postProcessHash": "078d802f99a6ed6241a5793679ae6c4284d860921b892052bb9415b782b43810" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.255Z", + "updatedAt": "2025-12-05T15:21:44.254Z", "postProcessHash": "3dd670a2f49e0f9fbcf97709325a2e1031f46f2b86f6282bfe7b24498e98230c" } } @@ -4637,15 +4637,15 @@ "059de09a546e5fd7f343688a18f5ae23fe63e31ccd72bd1d8e0ef1ccff248e9e": { "e0133670b30030462807054fabd8948f4d58d68bda6f5fc806435ba96fdc2531": { "jp": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "0fbd94cc312492ee425010f3ed9c2c7d77fcf6a10401b34e4d16fdbb0ff4ef01" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "5e57577ed1946c3a638dec31e504c9c8ac89a0941df460750e15c46a8d4721d6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.272Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "2093e1e4aa6180daf296333a4470d3e198f3ac03bdb479eea24245eed63fd9c6" } } @@ -4653,15 +4653,15 @@ "0e59ff691e81e6bb5df727b7bb1a30005ab315602d293b41cb391ed4b5409e8e": { "ab3c2315a32f46dcd77506c38fcb11173ad15a3ad7597e20a3af0f8b3c8e1c02": { "jp": { - "updatedAt": "2025-12-04T20:16:57.269Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "f39c6e7c8d34a1390b11e5d68c442de0b8b1b2089c19362b727f7941d4f21a32" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.268Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "d8b40c770fc344df04c79d376257959210b3033d37ecce0c32fd62f93034309d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.268Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "f172f6267e6d06e65e3a58d1519f2f960746d8a5b752d3fc9d843960050d636b" } } @@ -4669,15 +4669,15 @@ "1be2e6251cf6bfefceeb9a1d2a2cdfcbca4f3dc24d4303c2a666b520ce7dbc5e": { "79ae2db2ede93c3db9f3aa10741077dfe47e966f67fbb578af090bc05ef54683": { "jp": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "2b32dcc52e6a1846728161a3e60c3090f9a51c0f1d9446fe0abea2358547b235" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "fe44b860fd0b2b54b523f751c72a34e6003b713d8d0039111077c667ba26f9b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "9a1a5296f0907306e40953ae2fe5e4d19d06607b1ffaa1ffa216606d81c403c6" } } @@ -4685,15 +4685,15 @@ "240885d8a55bf641313a779462f9d5afe9dc23030aa7263fae65179e8d79b9cf": { "0f3c6f532be1ff66173a6f491090bc401c5f5ad396a065d669cf8be23b790fbd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.272Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "e446cffee4246edd6798b4c6d223fa61ceef5af5df95defc73a801f82f52b633" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "72ea8b48152c271b676be5c6da6eb3c1b28ad640ffdb423237beb8f61499e2ab" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.272Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "f6b1f228ca410c974ef0b29fc8d4a5c1878e4260aa61af060de96a09c061829b" } } @@ -4701,15 +4701,15 @@ "327d9de85dcf4e9908ef639e81f0b4c26211261cdc7427d31c00d57a68f9ea57": { "defbbc0826e47d88fbafb696aa0613a205a13036670b5b16d9f7262852215ad4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.267Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "c35e838171d6f8927304173cf11acbb921e9d6fe2f451e4bd9539ff840cc6dc9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "f7cf6ff7bd9c0508a73382cb2f5d508f2d9245464d6fa68e4f208e14a5b8c26b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.269Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "8249e2a0ac5d4177647b1f0e4612ece5dfcfea3681fca1db5d8cf5455066ce18" } } @@ -4717,15 +4717,15 @@ "34fc130494be0d69639ef51384f698c85712275c82f72ea0884fc912c61fdf98": { "92c9764efaeac8ae2150358dd44c1bb27f41eb7fecfcbaeaa5223b274ca6abf2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.269Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "b6426b1f6b4d7e1731282e09a35c0d786e2ba4ebfc0ed95c48c3fddbbedc52d8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "addb883ee2a47a66e9aae4ade848f7d69c138cb1e4224ec11abdd678b3c99211" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.269Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "26a4cc9b0310ff3d3728b584968165b870dfa236383b90ff4a9c334cc2aa3d02" } } @@ -4733,15 +4733,15 @@ "3d292af39191f27d31948c49e58c34422323914d2d835dd3b8be63d271aafaeb": { "6c24a188e7d85e8dc525f5000fb2f41b08e17a821ce60ddfa9341db9802fcdb2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "7ba94ff82df3fd481e47e74ead3c76c5b21456f9b96dc44e07f0dadd9f6b12a8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "07ef180689940db1efb0b9721afa2688e89c5f3c99c21c79ed95b6e52954eb0d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "de9de58d102888d28d2f04f8a0221d1b9db3d576517ce310aa595a017161b8d6" } } @@ -4749,15 +4749,15 @@ "4b025a8d2616c548c48183c20f38fd63b3419b7d2754a037d1a3a71de57c5a3b": { "ff303dcd7cec8ced40bda437d563bc42f245742fe9f5d04eda4a24a951b0a458": { "jp": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "60a5a813f3e2cdef5729ea46b7065b976faaf1ba451cc2f76460a130cb21b80b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "afd39e5a2051777e8d94216f23f57929dea339dfb5e610afa75d389b0fcdfbe6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "35f67d1be6c8f34be4e5024002d8820c52d34036f60a08d59e89c8c5b200d3e3" } } @@ -4765,15 +4765,15 @@ "4be2dfff7ee7eb8ba7e00bea4338d4b73e59739bd67763683573c2c8a87c9e3d": { "37c83798ddd19c1e72b3674657a3635ca49e5d5bf74e74f2fa7bab5c89d58316": { "jp": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "80e06d059e5a825bddd8ff633ffc01a75aeb4fbe540892e2c4709524204d2441" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.279Z", "postProcessHash": "457212cb126bf31d9a7e694300aeba62b29fd2d10a0b9a53a8c390c0b324c5b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.279Z", "postProcessHash": "4e67bb3786189cf1091fe9fa60691376e297ce68bd3c6a5eaaf8482dabc22659" } } @@ -4781,15 +4781,15 @@ "508c2be06359376eba3e09eb266a71fd1a64aba5ea5c127642c386bdcf720d00": { "32a1e97aa76cb271770dca75fd904e715623cf504f26d889bcb51a382ae083e8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "a870d833e74e0f129af622db38767046af780c048455d60e7a7db1ee78bbfb0b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "de9bc4c3c41808a0ca598e689736d24aec0eec7ecd0be16c7baacbfbf8807edc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "2f4638e32f0897552dfed7797b01d3bd9eff67a0d2beb3c6dcdc5c640b1754f8" } } @@ -4797,15 +4797,15 @@ "6547aef5926a6b2487f43dbec05e0957fe924c3749b2e7aeeb9c8724921310c6": { "d72d4d5d1769fb68537cb2b0120c647b9e45e7282fdf4303b4b3b3ba33eb151f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.251Z", + "updatedAt": "2025-12-05T15:21:44.242Z", "postProcessHash": "06c0e21a89d105292d9779c5d5198cf75c097502b1bbbf76868255fd0b1821eb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "c7735914915c26fe7fde985367727fc418e33b5d7355723213757ad9aa249300" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "c428a425a82691e88852192b639382b6f69e6ba8eb0638bcf78764bfc8e1a902" } } @@ -4813,15 +4813,15 @@ "742de82015fab9560f32bc67cc0f07a9ca9e1ed3e7aeb11eb4303fa8a580185f": { "e8e388627f1d46545b74abb196d0b01e87cea3cc02063cec9c7cf6835a4f7d7b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.267Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "340d61541e72a53f9289c87a2813288a6dafe8460e3577d74b53328bc6f4c850" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.268Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "b4fc8a886062a73c95553fa76149f8457042ea6a864c0a39cf156d6e87325e4a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.267Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "06f9a98ca9d574acfe00c99c9c2ebaa8171aa830a3bda2e4f4bb487d9fcc697c" } } @@ -4829,15 +4829,15 @@ "77a9c51767cd665f3dd2df3d7ddefaa1effd2f1271cde0211ccbb68de9869a6c": { "1c1de24396b6e6f16f0f9b41c9ee154414738e50d2c294ceeedb57d2b780396f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "f389febda1e33d88219d0c8ba5e84e83296e19921003b47e43c8b19a2be77f08" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "8f2b884f51b22232ccd3a1ea29169bfef31aa0ed3444da9ced558d4627cffc73" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "0f83f72abc4a035386f84aae8680706600d9e2c577847610cf0c9a9af8316348" } } @@ -4845,15 +4845,15 @@ "90aeecc84affbe1a94ebd79e7e3236a66f9c627e327fbaeb50f05aa43d716a7a": { "a7b61a1bd22ae77b9b4f8fe2bc248f5fb8a900c9c853a0f4b28e2114edba6edb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "fa6ef185860d86f9e7fc90c6ba73e18521c3761d6bdd8c653db6c4642ab19342" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "69a42f71f08b83e17475d1355991a0ad552b105140a0f5ff6869eea202b77dea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.277Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "57dcb313a572f055a1e7a7c2e0ee7c27e9687c38fe743a348e879ed9f0837b94" } } @@ -4861,15 +4861,15 @@ "9815f463df07221f4071a1a1bca594afe93b27adf83236c69b1a77b1ebe508a0": { "007c21ba67676302542c1fff75925930501f8226edd684ec93ea8a9d480c18c1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.277Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "c8672af7f37b95b4f8dd97c0e0977c7b38180eb1b0f70838227ae77bc73ba99b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.277Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "c5c7f9898cad8fbfbfdcbe642ef47f5d0657c2283464fb81a43c1b910f9eaeee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.277Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "442f53bf6416e654c589e99c3cac07e12e88fbabbe6b09159e685ba578d2582d" } } @@ -4888,15 +4888,15 @@ }, "471cf465239242ec9f9d784205ced7fc1640f6da4c8228d46163e7757979aa8a": { "ru": { - "updatedAt": "2025-12-04T20:16:57.269Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "aac03e7c8b683a70452d02041b909911380e4f5e31c90880e22c76a3ca347d4e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.268Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "73e241a031ff4974f5050a7dd51c18832110554a9fcde411512fbd31be8e9f90" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.268Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "2f72a35e2ff8f8d4cf477a8bb155aa3c2d26e05cbe70a55c9fc7554440032e5c" } } @@ -4904,15 +4904,15 @@ "af79bbae5029e0964764673ad906f12ea5d0cbd9f6358c69ef5ef5e1e2abf9c8": { "2ac53c6a243d501aa141cc7a46939a9b6d8d89958a13b73f7e3def4acf386114": { "jp": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "d5d32fb2e9d73e0610beda9187d540c75d9b748cd530fd9d70865755dc54eafe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "a1e2e2e5101fad0e049165f91a12221da6b863c86c816dc94570be8f47ae9366" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "63994e3a304f549a9ed93f964ae6b7ca924c8d0c92f551cce7ddbe01d48cf9e7" } } @@ -4920,15 +4920,15 @@ "c26d90fc85acd6879286c1468a93acb164acd86eea2a927516015902a9a832be": { "7cecd0f5d3861eb201c695566fbb8efba35f90080e6ff53cfb99227a455a7433": { "jp": { - "updatedAt": "2025-12-04T20:16:57.273Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "e0adf9887529ba419e856dcbcc8eb6ad6d3df49d9a855d6fbb207bf23de0b168" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.270Z", "postProcessHash": "99e46e5fe0861758a4d3dd40541c2552312940650e5f487eda2a13b0c11bcd3f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.274Z", + "updatedAt": "2025-12-05T15:21:44.271Z", "postProcessHash": "5dbfef12f8ff14cc2e9df89828a3ddf0b1a82675edc3f08b81447ae715ee3845" } } @@ -4936,15 +4936,15 @@ "c8e894dbaf5047cc3cabc950a4a8ff475057f2bc769f6e66960185717ec18b52": { "53f949f10b8d348067c1f595ef08a9cee2ae03679b3e38fbfe1a67bd2cf12eef": { "jp": { - "updatedAt": "2025-12-04T20:16:57.276Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "69239bf07804c5566d1f13e076a4033a7b8ae5f11ff9cc242a94e1301a7264d3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.275Z", + "updatedAt": "2025-12-05T15:21:44.272Z", "postProcessHash": "627010be4c4e17a0f55706ce9e9c831365aaf89ba5567e80c3bf20b5e8991ec9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.258Z", + "updatedAt": "2025-12-05T15:21:44.257Z", "postProcessHash": "e163dcc9e7ba43a1e3354a882c7f0cfe268965b70346a299f209cff89774df6b" } } @@ -4952,15 +4952,15 @@ "d6b97ab54d7597109de2eeed733aaedaf2f8744ebeed7ec1031b8460e9c545c2": { "60328591af08fa91508ef8597f7a9b54e083806e1906b2740d4ec5802abe7ecd": { "ru": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "58ed6d4b2fe0f9eb55c232029e6a49a6c23d04543a13ac9d54f91c1175e59086" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "df1a38a3bd599ff26d7acb6ef4c9651eec66f69bffcafbe8b6dbb1724fcfdbcb" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "4b8ada8aeee40d487d325b3c7b309908f162aa5ac09d18c22b0dfbefb9b8f63c" } } @@ -4968,15 +4968,15 @@ "dc33a2eb5786282387491dfbb49c8ff622ea41f11b3278436c7f82ab857f0228": { "6d34c7aa55a8fa5def4e3f2bff389c666852c48291ebab26dbe11069e1977d67": { "jp": { - "updatedAt": "2025-12-04T20:16:57.257Z", + "updatedAt": "2025-12-05T15:21:44.257Z", "postProcessHash": "81155067880a75c3a21cd90f228cc9e8274dbf04631922f87ce9ee62220d2f80" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.253Z", + "updatedAt": "2025-12-05T15:21:44.243Z", "postProcessHash": "cc6cc272208fa7d4e48a5739f0c24cb49276ba0f4aea94320ad57d0b99e9300a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.254Z", + "updatedAt": "2025-12-05T15:21:44.245Z", "postProcessHash": "3f2e9b48e55fc63e3099ec176dcddb9287c29130128d89447c493cc52349c208" } } @@ -4984,15 +4984,15 @@ "0b6d9c8bcd38a3dcf622f85a9b9f97289107d754955596db63086c5a1f0de013": { "62bc03adcac1853c2ff1d41eab5ec55613571c9634311e2e305ff20b78db334b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.672Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "d63768dc574036d586b509666102bc4745b550eb4a0916ad09aa46bc6ea918ef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.671Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "a4b63a05e9dbb382444b46e66794b45bfa7f18aff144a2987da110c0da901655" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.672Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "f6e11e5dc1b3d69c4608f269b827bc958a2df181020fa06708fb118b686b85f9" } } @@ -5000,15 +5000,15 @@ "13e624cf649963b0430c85b33066c42e9a463e53696049fdef557841854d666d": { "81c2903aa8b7c3295234e5c1b7fdf2be7dbc55fdc9edac19c3d4675fd1215205": { "jp": { - "updatedAt": "2025-12-04T20:16:57.673Z", + "updatedAt": "2025-12-05T15:21:44.442Z", "postProcessHash": "ccb05d4cc992719509f6d42cef212e5d5593b15ad0e40768ff151d3d044452c0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.673Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "6d82e0b4e9bf4bfb513cc54c67a06ca222ec37d019eee3a1a759264705ee37d5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "4c039f012a14136b8a242ceeef17b68fc0b1246a1a6fa38f5a4d8f3bb7f88a80" } } @@ -5016,15 +5016,15 @@ "2ed1c4bf7fd0d1e9a3aa0e5f13e3c86bcaa77e12c79c9d2fd35be9b8cb485fdb": { "042d7dbf05f1c54ecb628a3aec1b03eb4e2b6e21cb8aa57b9ada88ffcae4f8df": { "jp": { - "updatedAt": "2025-12-04T20:16:57.381Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "56261aebde53698c90f498d37ab3c7667f606de2377fdef5e7ecba384c4654b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.383Z", + "updatedAt": "2025-12-05T15:21:44.352Z", "postProcessHash": "4595e89695bb69359f51c3f0d5d2e38b191b0638208c28cefc01ac68079db161" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.382Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "3d03b37953de6db506edafad47eaa287a296c877f037ba1f99c4c8eb4c589438" } } @@ -5032,15 +5032,15 @@ "3d2059239ad6af1a2ddfd59349dac15c70518ae11885267fd488f16281699791": { "bb8598cd736f9055ff9d8ee57cfbaf381f8b9b7dd5b8bedf4b973dba8c441a2a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.447Z", "postProcessHash": "90f309ceb199a2f2ddc2ec44f1f2bc226425453040c9639c353d640224ccf740" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "63a9796e38eeaf27b7ba737d34a9446507bcb45127a2b0e45da40215331b1dd9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "d711fe36633b65f9b271de1bf928ecc7be26588d8ad9006a06322c2a40c29106" } } @@ -5048,15 +5048,15 @@ "3ea83a8ef84ec6bbe25f2090619db1abe347ff2b73bca590d6c93d68a42e4e64": { "d03f731b06fef8fcaf928f6e3faf509894d47eaf5b4921a111e9884783dfaf7d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "29bfdeb6f8b8d9626b56ed0dd1002a69382f9832c11210a5a353cbc4f00ae182" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "04e7d21c0b19dd7c87eb122f09988abae82651e90a37a63c348255976a065c46" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "c687841c890738f20980479ed2c471361080d6e22b9e8ed68e6181c069232e60" } } @@ -5064,15 +5064,15 @@ "4ac2aa31459a0a92af805200fec9ac7d528d83083a8813c71176539ce30a55d5": { "47965995534ac0fbc4b623464960445019f4dbe230323078f5ba06347fc0188f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "34f0590751305c02af97c01a30afae21dc10aaac698deb67985a2b92441cd34d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.447Z", "postProcessHash": "dac8fdd892da3f718c90b217cf5abd4061b152a240d487baabea529320ee8a61" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "7d9619ac94c55d448b77dcbc34c6e821b7e3a67a6de1fd17c669e5664198738a" } } @@ -5080,15 +5080,15 @@ "4ada93142f1fa23e960fcf0c89e6d17aa2696229485742f034de4ee6593c2071": { "2f19a7e891dd293775fe6638aa903e735c6029210bbf3a17860c69e6f1f6bb6b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.754Z", + "updatedAt": "2025-12-05T15:21:44.482Z", "postProcessHash": "132bb84090bb36450086ca1f8703d230d2e964a71abe9b6c7b57faeba8a29ec3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.671Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "2624aae6459465a88507479c09cd51ddad295c05d799969fcea3e58990721b3e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.755Z", + "updatedAt": "2025-12-05T15:21:44.482Z", "postProcessHash": "da0ff42e3c9ff6c18ccf7424379c5e6d5956cefee625e8397562add05eb3c657" } } @@ -5096,15 +5096,15 @@ "5e4520555f04067ffa7eb5af85e61960bb9ef0b5e53db65b7b0471c0eb67e3ca": { "7bb096151a00169df14ef9af359bf6d8949aae217704606f9a6b10a44d8ed7c0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.673Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "464eb882a62ab3b54c71dfa1ea9d4f4a4c458a796d299720ee5933a2a7f2b5c4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "4c3ec37b945f383ca2a46d93b78ea2d04d15164262222bae00a0f045ff94970b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "d375efc434797b3c906f84e8307ff848d8cb9d6fdab32280e89f5070b20029c6" } } @@ -5112,15 +5112,15 @@ "736bf0149d53b024ca3bd9e7977f0bc63d265b1f25ebfb6dfdefeb025d67a838": { "dea965238a83d73269b02031548818dad6e76024fdd545d4ebfad71b6ea7f2f6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "2da733158d1d9653ee99e70a11076f3d3066f7170b50f297bf84260adef16fc1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "4224c6191b8670ede654cc0530f4a6848a95cc399af16795d2dd0b585c87cc61" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "f40b1b8336f00d8a5fabb74209d38fc06de3ac1780ea286af5409ccf1f2be251" } } @@ -5128,15 +5128,15 @@ "78374142cbe93e8f6c7c78c21fae25fb7304d36492b6bf841f120cb0b757622b": { "8c65e21fe9e7b63afe26dee2f144ad334fde661179f2df54cde98ef19f746770": { "jp": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "33bbf26be7963ff5ddd789b9725c63d08099ae3b7ef66d9ee77d5e19d7bf3974" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.284Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "60fecb25094c9d568e17efad847ccc1d5e2132c5a78ce0e9646d77d4eaf9d0cf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.284Z", + "updatedAt": "2025-12-05T15:21:44.279Z", "postProcessHash": "49af3737faf0124ef76846a69709213ec5ecf0f816f7b54c9ec7e57e4d3f6e58" } } @@ -5144,15 +5144,15 @@ "7d77ec1ad6a5f022e0b46f5c3c3ce2c3fea37ff042d1b5dc03023407e067e3da": { "a014826091cc7de6ffe26de700b6870df49479656119a1c4582ab3ba9f32f66c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.380Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "28d30e9ffd86c777116434fd09c1629c7fe6760bd1be9c1feb114446b3645f02" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.380Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "9bfaf77c9c05cb01587424baa181998b9b298c0ead28103145c47ec050f3954c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.381Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "78881d3fe7b7645d68b001022dbf922aa6d7d61ab02601b61a52ddf5c63d43b9" } } @@ -5160,15 +5160,15 @@ "8c7d4f3fdba3bb4edd06686b726948493ddc13a3c70be44e45a5101013e47060": { "e1a3f32eec379181f97de3483a7955652a71670ed2c2d3ea34c65b17fdc5961d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.382Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "3ede0328568d5c7549d9135b096e63504ae324d43f655b78e433d31f9f02ec38" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.381Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "b410556e30ea38efe6a7546c4b1b0d4bf3539c25600d7c451e3588b5cb8713f2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.382Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "21e2fbcb8ff9f7faf8f73f4ebd03dd476bd7e3f02bc8fa5563fff168733f75ff" } } @@ -5176,15 +5176,15 @@ "98ee65248863652e985d674cf1372dd020bd6094b7f3998ae6f4a646d94892b6": { "1bd995b679039ca6bce9ee0b09736ef8f967620b8b89d51a62c70a4d312caa42": { "jp": { - "updatedAt": "2025-12-04T20:16:57.740Z", + "updatedAt": "2025-12-05T15:21:44.473Z", "postProcessHash": "952c2578817d6143f9333e2d974cc637be4542c4479f8542630326a702a0cd58" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.733Z", + "updatedAt": "2025-12-05T15:21:44.465Z", "postProcessHash": "8f418d3e7abc10c5f5ed18dca3bf288cae45918be3ec843feeedee51f5254281" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.447Z", "postProcessHash": "cba25ce3dfab609ad1e0eb64a60da67e05f180463c53a7a69022d248f0819139" } } @@ -5192,15 +5192,15 @@ "995a2e3a8b7d9f74a6263555c02ac239faad9cd474831a38bb8fbe02a8eb4930": { "9cf1d6f4f93a189585be6125df675ba7e1d73f8db3dbffd354c683519bf24dc5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "2b9861eae4ddc4340b80806d6c313fd9fc21e594f73c149f8f697ebda363543d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.711Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "10280c4a4174b1aa7fb6417542338c1795c88b4bf74441c2d00f22c3e4b9707d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "89c96dde19e437b03567189ec01de2a24f8f45c24f263f4307b45009b5ccdfd3" } } @@ -5208,15 +5208,15 @@ "a0768d64d8480213582b5d2b019ac82a6fe9572e3115c707079ccd2a6665834f": { "f53e89f4c4f5f43c018862a8bcb2458cf38a59a2eed7d3a2bac21d2ed57cd772": { "jp": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "718d1ae7160166c76cea94595a70f98ea6ca4c34ba4f6918de0671db7752b826" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "1f4ec45a75555ae0d49dce761ec601476ca56330cc4d4118aa04bc6fc38ed4e9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "02158904b5aed39ebe7a322467d08919b7b9c279b9657356373f602741797bea" } } @@ -5224,15 +5224,15 @@ "b5acaeeec7ee7e0b3d8c363ae84792dfc90953fe82cb345bd9a76003f6857008": { "becf724869353de9ac0fbdf72d34274bf02c4477ca8efc26bf383f25cab477b9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.383Z", + "updatedAt": "2025-12-05T15:21:44.352Z", "postProcessHash": "66cf8ae473c72b5984076baa34bc6de21e5ca231d47e40668893fb146f19f105" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.381Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "28574569d4d4ae029a38b95ca1874b842ac81591cadc343c9990bca75b2b219b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.381Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "4cba74ae40a9e36a1e876b5426115438c9620d304ae7bcce9d8988314ecc999e" } } @@ -5240,15 +5240,15 @@ "b6cd16941758ca4a1cd018e80e59496c19b7711675f9eec3946a989810da8301": { "def5f58d34f9e59ee3bc906fda67f3a9ea90982c852224c86d9d02f3eb4daa81": { "jp": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "76654743b8c2031b48266de69042939cb5da8a35a74f43220695da25e1912391" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.672Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "b90e392ed93a10dea2f13b745b19f17b23364bf0e35842e80b20dfdb88357e76" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "6daac5156a28b9705ac73531c827550da5ec3bc90c976987d85ce85fab784897" } } @@ -5256,15 +5256,15 @@ "c5c9fb1e01e8fd89820000126b65de13c1b1aa7723a21af8dd6a22b0c6ce61ab": { "f0bcc513afa858c10cd2907f4b418305889e8287702cf9cdb050972831c885a7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.709Z", + "updatedAt": "2025-12-05T15:21:44.443Z", "postProcessHash": "56c494f24c8b34e87403cc08eda3b9dd5d88aedbb868c529c8e17ec0ca2596b9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.673Z", + "updatedAt": "2025-12-05T15:21:44.442Z", "postProcessHash": "cf0c2d23b569ebedba23d6efdc413951cd38e3e0bdeac0783cccd71e378c1ac7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.444Z", "postProcessHash": "690f32c52d5a4afd0dd5ed556ede05032d8381f53c384057896f17294b2ab8fd" } } @@ -5272,15 +5272,15 @@ "ced886ccae611b5ba4d14770da1f424b55ef56a32ab309f10b5ba3de061a0cbe": { "4c6f8e2e7974ca1e44a92dea680f0fe4823cb3dbd478d406583065fef1965c83": { "jp": { - "updatedAt": "2025-12-04T20:16:57.382Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "60567fb4e88224ce31b26131b5c3b0a55331a1b70eaecd7416925ce95e2a7164" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.382Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "415cce49b09b29fccff8f53b3105d49e87898984c7c95c410f110caf8c562401" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.382Z", + "updatedAt": "2025-12-05T15:21:44.351Z", "postProcessHash": "31434d9f0cdbc11e43199356a6a425ce513faafeea1e29a61c5f0c716be36538" } } @@ -5288,15 +5288,15 @@ "f3dfcb7d93e8daf7246f1d7b55aef72c87092941f169ec834a03a5094039d22f": { "30c8a47e6bcddf07ce86164218209c750f1bf6a65eaa190202477bb3b35f8686": { "jp": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "75ebe3318240c961e11223e2c2b60c794a9c54492e8945538b9a69ec841a06de" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "cd55a933196f62d521be4253f50f7b4dbdc020fe26175c2ecacbd57a47246c40" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.279Z", "postProcessHash": "31e5ab17c42dcc91a4c269282fe5a0973ab5ea969e773ab571cf961640e9342d" } } @@ -5304,15 +5304,15 @@ "f84c373cff7dbac798db4f00e0218085b87659f099e72d499856efa42972f195": { "4b9492d3cf50402946edb0019de92a07ebf67ee41426a0a31d7cd82149581a9e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.755Z", + "updatedAt": "2025-12-05T15:21:44.482Z", "postProcessHash": "8b230ca6e317fdf487921d90a7f84e7bd3b2811aed8b8f83b7879b27044e1532" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.755Z", + "updatedAt": "2025-12-05T15:21:44.482Z", "postProcessHash": "f594c8ea938be6d309592e6c7235d773b9cb6e16bd76ed1bc9b424061c358471" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.755Z", + "updatedAt": "2025-12-05T15:21:44.482Z", "postProcessHash": "ceb098422d10e1279b85584eab707498f575ce38dba744d87620f14fc4fd2b44" } } @@ -5320,15 +5320,15 @@ "018a46e784f4216bc572797ae4cfd925900c11b01082ddf5a2c9b5ed08891d85": { "0d31eaa79270bc25ade146c9f275b342537708966bfbae7622a921d0c569a2ee": { "jp": { - "updatedAt": "2025-12-04T20:16:57.733Z", + "updatedAt": "2025-12-05T15:21:44.465Z", "postProcessHash": "c2a397e5603c9423289529856ac763ee13508dd183c4b255420becb66b0eae6a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.716Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "269f4ff65e0e1648dd13e5a5986723bff0c357374b9733aa1cbd5aab742e68b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.740Z", + "updatedAt": "2025-12-05T15:21:44.473Z", "postProcessHash": "bc6429377c2e8829c7d2c7e1d5645435be56a68550e5f58e1a40ef097de7b28e" } } @@ -5336,15 +5336,15 @@ "171b148b39ffa6bfa68154f7f794bc9828036c905ec6ea0ed3ab52ea0ab68098": { "9b71315bfc1a5504ea574514ec21f8d0b8c75e646482a4fa10456513e23ec3be": { "jp": { - "updatedAt": "2025-12-04T20:16:57.731Z", + "updatedAt": "2025-12-05T15:21:44.463Z", "postProcessHash": "4e59e66c763f3d06c7ea50e08f94012f9aaa063d17198ae60d15499a5b07ae17" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.740Z", + "updatedAt": "2025-12-05T15:21:44.473Z", "postProcessHash": "c6c5fd1d5d904b0f23762de97c50cd298a07d123f9c4b7d0a4fa2d6e0227cf88" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.732Z", + "updatedAt": "2025-12-05T15:21:44.464Z", "postProcessHash": "cfaef766331426d2260975d7dadd74beb0486acc4dca437face48cf974de6eeb" } } @@ -5352,15 +5352,15 @@ "24ff6950696e941c133754804fa0f7502ed10e3f273f7828f34d0ec98cc69169": { "9ffff4baa30bb8aedc5b7c4bed60c32432037227f50854a8cf0a554ca74b6742": { "jp": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.461Z", "postProcessHash": "f9156cd7d2cf3d4383bfe4314afe034e17dcc1ccf116dd50a7286d4b9825ff8a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "c13bf08f6631f982d63fa7aee0e8ff0013c4cc7ccd01e2b0ae2a50337f7ee99c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "fce984b5b91f401ec3f5f8fee69e1f7991461d5e41bf875ee0f855c3b981dd61" } } @@ -5368,15 +5368,15 @@ "2de6c7cb85bc8ce6037011a7cb84ceda700e54852ad5f8048c1b021e9505cfe2": { "cffde22dd20a99321b2469fa4c5f889ab0623f7597c7318cb5c82cc569be15bf": { "zh": { - "updatedAt": "2025-12-04T20:16:57.728Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "ebc0ae10fe844f57518d1641ffd20e384e6699e1c2adaa16fec9a7ddbb26f947" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.729Z", + "updatedAt": "2025-12-05T15:21:44.461Z", "postProcessHash": "d55948e87e9ae186de04c866a6d93cb7ed4060b1feb8542762e672e5521f3caa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.729Z", + "updatedAt": "2025-12-05T15:21:44.461Z", "postProcessHash": "b01a14b85ce48cb59ddc61c78956184b3f7816e2951e0e6600f18403087d5a69" } } @@ -5384,15 +5384,15 @@ "34539b13bc46ae1ff86399ed0b4beced83470a47c23ade3688d97729e239c69b": { "1227956927c2e159479174df3466808d9bd9a1f2cdd1dba3233e8d80391d27c2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.461Z", "postProcessHash": "4acabeccf21450b694e514783504da857b9ac4aa4d52aa8a2aba696a46e9c72c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.729Z", + "updatedAt": "2025-12-05T15:21:44.461Z", "postProcessHash": "77b0c4b0ccd715ea1bc59290f69aeeff11f08da9617d42acc4c6191b8d5280bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "ef26676c7850bbde87bbfbb5e15ae5cb366a196963f67f8aebc6dd700c436b75" } } @@ -5400,15 +5400,15 @@ "397adfde7a860a0707618fd95e8f1f4db83c3ecc2e6141f24b64af0162bec70a": { "fa85899ec41f9998773c9e4dcae84709a75245ca0e0e75850cdc76516b7fd66b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.741Z", + "updatedAt": "2025-12-05T15:21:44.474Z", "postProcessHash": "03469566aedf2758ac82634219206e64323421de66ac761066d2c77733ec12fd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.744Z", + "updatedAt": "2025-12-05T15:21:44.476Z", "postProcessHash": "2718f96cfd9cdaa98a238ea6385c70acd0d4ae0fa9fe012375da30dbb9426647" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.738Z", + "updatedAt": "2025-12-05T15:21:44.471Z", "postProcessHash": "fcf83b9c2e4e1b52b0c3a713a8425c0c29cfa532267739cbc12bb7f9edc1bcad" } } @@ -5416,15 +5416,15 @@ "439776d4466dd70e3c5608271d0bffbce0782915faaf2fea75fff7b8e7835bee": { "eb302a76d12c1319056a47c6302ef68febf3a0648e4ce4f94b2b9cfe7bec8c8e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.732Z", + "updatedAt": "2025-12-05T15:21:44.464Z", "postProcessHash": "53e6eb523453312137fbebfddc6c9ce4d1b162744d0937fe108bb31e342ceaef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.731Z", + "updatedAt": "2025-12-05T15:21:44.463Z", "postProcessHash": "c7dbc0b5293505002645a5939689f1b8f547dc98a59b35d7f1254a57be88a66c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.732Z", + "updatedAt": "2025-12-05T15:21:44.464Z", "postProcessHash": "2eb6c36a382fef34bdbe99f9c2e1f67127ad1c9f02c338c154f05f37e4e35422" } } @@ -5432,15 +5432,15 @@ "5efbb4c7ed17158323437048f6f32b54a1665e8008c3b499bc27160f7cbf02df": { "06c63df1edaffeb10cb0def08a755d71c765dda9e99144cb3ca1eda2e783c187": { "jp": { - "updatedAt": "2025-12-04T20:16:57.731Z", + "updatedAt": "2025-12-05T15:21:44.463Z", "postProcessHash": "46399582b55922d21fc46c5ce10455ddfa0cd1d288ff082e2a56fbfb6e8e7bc0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.731Z", + "updatedAt": "2025-12-05T15:21:44.463Z", "postProcessHash": "67b7c49cc91c4ece2061e15254556ace6a33748e64f629b90c52a7a18a9354d0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.732Z", + "updatedAt": "2025-12-05T15:21:44.464Z", "postProcessHash": "0605b745ad2d4f5330f0141d05fb37dd36644282724d42bfb4ff284d4c653cb9" } } @@ -5448,15 +5448,15 @@ "61b82c455342cbc02f4a1d8651204017609b443fce1a7cb57a4831730d7fc050": { "1d27a882dcff09d3f22870a4f6707da298747c547d36d3db2d61ebb22253f91e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.737Z", + "updatedAt": "2025-12-05T15:21:44.470Z", "postProcessHash": "1caf3d357e377e68ee2b7484c6cf04c67c0dc197f63c72c2b061e2fba309f05a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.754Z", + "updatedAt": "2025-12-05T15:21:44.481Z", "postProcessHash": "6c704a1e287e96b7febc179264f1c33c55ffc9b0e5d138c95223c9efd93c4d49" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.734Z", + "updatedAt": "2025-12-05T15:21:44.466Z", "postProcessHash": "ff93a1b7b178edae5ea8cb18e9357c1a3c3a507f238a54ba084d4608093bd03d" } } @@ -5464,15 +5464,15 @@ "65514e61688950cbfdfadc40744ab73dd695de039206e57d83d48b00a2982161": { "c8edcf2ff1eff165beb006860951dfee61d76b4197857f2fbc085e60726d3e38": { "jp": { - "updatedAt": "2025-12-04T20:16:57.748Z", + "updatedAt": "2025-12-05T15:21:44.480Z", "postProcessHash": "6b1f599cd11f6cf72e928578da9f1a92f900adee557b37fa4ab93d4680d9522c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.740Z", + "updatedAt": "2025-12-05T15:21:44.472Z", "postProcessHash": "eedeaffd11a002f6757a3b70ccced0fbbedd1a55e84302f608615ebae6d3907b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.744Z", + "updatedAt": "2025-12-05T15:21:44.477Z", "postProcessHash": "2b3ba7a5437b6cc88ff330026a483142b7821b88af7aea50cff6b8d9611caf4c" } } @@ -5480,15 +5480,15 @@ "745a92a844b6497c0310ad16eb03df90d655cde8d7482e58f32d1af9a9c6e68c": { "ed4640fd150472b99b01119068e79ab5dce8af8145d98d8e1f847e482439180c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.447Z", "postProcessHash": "7c9001407975102ced5c1345f3bf64e8ad4c3eeeb1708e714f7029b23b2dfcfa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "cd12faa8e5058beb0098f3e5a8fac428ceeff324a2a4e474b83a7a0cad2c94a0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "bac63525c759ab6dc482bc680de30a0f5331e2df2ebc6a2a8cf41ccf152b532e" } } @@ -5496,15 +5496,15 @@ "7ca5e1494be65fba41fe95ee7a3461cd0844038fb74f44098aa4e3f88607c562": { "ac68f255dfedba5a9d7fc4021983a5c3dfb83430f46eefe29bc3204cdf2720ec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "525f89d9b72f31c2e2449c1fcefeb50f42c9fa2a939b31601516f8a61431cf3b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "ec5d427dbeb4afda48d454aaa5a456bb7ceac286527227d9e49847c54882a0cc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "5cf7a054f8284a87e5465e5e839b97d2ba3516788dc21c2b6ddac3d6e6b0aede" } } @@ -5512,15 +5512,15 @@ "8bd7dd424981003d655b71b52a223cd72ca57102e28da0b8baca6e8ed3256122": { "8c69f1a1f0d38fc584fc63dfbf0111f2d94d9ce8ad28c47314863119988ad693": { "jp": { - "updatedAt": "2025-12-04T20:16:57.708Z", + "updatedAt": "2025-12-05T15:21:44.442Z", "postProcessHash": "8fc071f831870c447b6203ed57bf80545f512603df190f406adc9c590efce4cb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.736Z", + "updatedAt": "2025-12-05T15:21:44.469Z", "postProcessHash": "546915db3fdd023e342cf7eccd8537022a2fd3ee6198545e55b97170fec610f0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.747Z", + "updatedAt": "2025-12-05T15:21:44.479Z", "postProcessHash": "e897cb37d1a6f7ea6978ddc3355666bc02d184b4eaf24a51611497e981926695" } } @@ -5550,15 +5550,15 @@ }, "32f79342fda1521b32c3cbd5194d1c9682d16a53ade8cb05571f8a298e7705d3": { "zh": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.456Z", "postProcessHash": "43165b0e2305143d9d03f96a1bb7aecd68bde56b2442a506345193fb42398568" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.758Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "2c5df05e4fb1a57ccc9da9cb753b4bf655a0b850eefa7399e94aa65ad10bc0ee" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.756Z", + "updatedAt": "2025-12-05T15:21:44.483Z", "postProcessHash": "d66a4f670d1a8b2b0b80904427db2c20eae3ba718b11dd09f2a6219975e589fe" } } @@ -5566,15 +5566,15 @@ "9b90a0dfa5536d6059d87dc8f5e817097c8b7bb53db517bff51a83c3e4c282ee": { "3e080983011ca5e98fc432fd4170067d4807f3aaa1e1114b8ec36d58af28fa38": { "jp": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "7a2d10b335f63f31da6436e0466a182ff1f46d5d9a10152f358f31a78c990b59" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "954476987ebe6486ae39e25a4411783b3726e7b0185ae8529a7bfcb76b036efd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "0f1c58beb60a440c3ed1de4fe1ee386ad4391dd0cdb2b7bbd6dffd0a6535052b" } } @@ -5582,15 +5582,15 @@ "9fe1ae047d397e67707e74c6e97afdec367a2fb4cf27a1ade86e3e2bebd7c4a1": { "9bf44240bd8b0398201f8cc05ed363d4bfa70d08d267473203007c092efe5287": { "jp": { - "updatedAt": "2025-12-04T20:16:57.704Z", + "updatedAt": "2025-12-05T15:21:44.440Z", "postProcessHash": "d6e3d358e68f9920cfb99ae8d7afb6feaa9e15602ab9297349c53e7750673e6c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.699Z", + "updatedAt": "2025-12-05T15:21:44.439Z", "postProcessHash": "b2ff77590897e0aea5d563943b9f75af20a4c11e6ab8f67aaefb6628c4a29507" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.729Z", + "updatedAt": "2025-12-05T15:21:44.461Z", "postProcessHash": "6807687624100356fc61f4e68174487eaa755d701791f8f35cae36212a08c629" } } @@ -5598,15 +5598,15 @@ "b12e51a32d37bb2fb10917322e67f8c70cee8f595c143cd1b629cbf918f6b7b1": { "5014ad055f5a140206335e375c472557e174c690fe089774a9aa8c6d57d28567": { "jp": { - "updatedAt": "2025-12-04T20:16:57.706Z", + "updatedAt": "2025-12-05T15:21:44.440Z", "postProcessHash": "579839d5cd4438a2180c05dbf9f1af6398402e150dee85b91892a796f60245d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.733Z", + "updatedAt": "2025-12-05T15:21:44.465Z", "postProcessHash": "214d0a0e8fbec74074dc7e0a10b2fc88b41f8b4addf44a1ddb1126064707ba02" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.742Z", + "updatedAt": "2025-12-05T15:21:44.474Z", "postProcessHash": "8e21fda480ccde5dbcc93c1044a819b0147d798e8e60097d9b1f51da75766d10" } } @@ -5614,15 +5614,15 @@ "bb0a1d7136d43d7b6bb4fa9a54f344ca0e81896a5eaf9cc6ef57b8c3aa682779": { "399cd03c18db8759846f978c253d288ef4caab87adb1838ee5aed970412744bb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "1169f4ff5cdcb958e87e03dcc679ed282348f080a1e996b389c1eb55594d031f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "91b3864ebfb901b02158f7f6bfb0dce51fca72935a0a5356ff418eaba28612b9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.728Z", + "updatedAt": "2025-12-05T15:21:44.460Z", "postProcessHash": "82fdcc1ddd7ab988467dc457dd3c7f76bea931c2dc375cb86e55eb1b92606ffc" } } @@ -5630,15 +5630,15 @@ "c9bb01545754a986ab5cb4d637d8745f995e8c5243183cf90e72563584cc924f": { "efe17e7594347ac3238decf2b1daf336a87a883f6d30bf4a916bc5ae75b80dc6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "942b77d5cdcbb48a1962cef607bb00aad19bab18c13fad40a65e49052a7a6425" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "a365d9d0c4ef42abd2226a87b858f2f2226373eb037530a6a152e0390e489587" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "6c1452b831fc4f08167519de9ee7a195a4bcca7cab15d3befbac87bca0ad87e1" } } @@ -5646,15 +5646,15 @@ "e814a9ccad02d86ef7c915fb695045529731c882788157b39795b3d624875c39": { "e078c263c4a0f84949c189cd1b90be6b54b0117004a43d0171ca1e7dbbab8fa6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.447Z", "postProcessHash": "f1463a2521bcc9d0cf8811cc498e91a33ce3236444436bf0af76585cce09b93b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.714Z", + "updatedAt": "2025-12-05T15:21:44.447Z", "postProcessHash": "b6daa627bf73308af87e6a5a14c9a4061ef04187da792b2ac1efd8bc2b1d6077" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "1a3c532363f7cde26299d5ebaf455caa84ca603dded3e9e08e4179f766989811" } } @@ -5662,15 +5662,15 @@ "f4614a808acf58ed3907dbc80a1d159bc107dde839623cbee9705514996e1fc7": { "ad253066ead1dba2ae292160fbbd6c6d76963231fdc98e27296a51ffab627b05": { "jp": { - "updatedAt": "2025-12-04T20:16:57.713Z", + "updatedAt": "2025-12-05T15:21:44.446Z", "postProcessHash": "a53d4fbcc3b815037ae072a6ed4e5561f75416003951ab8e784817a6b31d3d57" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "f3686ac5c4c89bb95381d8fe75f283f0b666ca9f5ae03f35419e74c248e6e81c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.712Z", + "updatedAt": "2025-12-05T15:21:44.445Z", "postProcessHash": "48adb87b68132b026afda0d2b4932b98a40461a913d16e32e3afd2124a3121a9" } } @@ -5678,15 +5678,15 @@ "fb63ffa66c1f033c420fc44f068aac3712f16d06effcb9b76446564d05a24f47": { "1f15e6976c3b57e0c74fc54faa9674d3ad5afb9a87efa0a5368573923ad33611": { "jp": { - "updatedAt": "2025-12-04T20:16:57.728Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "4971fe48c27713c0e4f17ebb2c37911d17d6d7dccf3286db8ebef3d06c992bed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "c44367768829bb039d676193b3daabd89874f2c7ffdad0c3cad90460ba5e34bc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.728Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "92cae3fab6f8fc7680c0eca36bf3bbbc658ba8bd8824fb71f57eaf182a2c3ad9" } } @@ -5694,15 +5694,15 @@ "168f630aa6a5caf3759f0040f89a49b660bf997cba3f9bb07f93ceae7eaaf55a": { "3b9ccf775a7eb6ed27d87bbe61d94bd4d43913c00f26010a4b8706daf4a6a956": { "jp": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "f55625885db810ff25d8e67c86f59a168f03c086bceffd2ff346efe3c274f50a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.708Z", + "updatedAt": "2025-12-05T15:21:44.442Z", "postProcessHash": "24b14bd0a0e6cf075514013fcf46631c8c10e98e9063df19da933510002e0e37" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "986278938d56d16b8aa1932a58cb4e70921ef0d657a0e2f6ff5e0fb2ec7214e5" } } @@ -5710,15 +5710,15 @@ "23e27d61b6423512c41b26e6c3b22921e93b5b301057fe1f453a2c0d3c1d15fa": { "7a7f792ff342a20689f60f0f265171128a171dee6f6e5a078ebb83a2cdf6ed03": { "jp": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.455Z", "postProcessHash": "e84c38d402c6c425faa56ead5613ddb9a256cce9064a8bc9fededc004337a1c5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.455Z", "postProcessHash": "fdb17d682f1962bd7e0384b6efa6254036a7528a6083797281e28c6c09e993a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.773Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "3f58bfe16f4d0c62aa900ae6ed08413adc4cfb6578317affdd6e3cdbd08e11b3" } } @@ -5726,15 +5726,15 @@ "296596880e307a8996c1b3d2f22b414f048332caf4d2083980ef5b77a8a5fdba": { "8891345d058983824a4006d332ff1e3d458871da85894bef04abd4b4a563fce5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.764Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "4d7d1537e85fd65498526329315f0a0ad52722a6017a0f1cd3ab8c687de48ff2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.764Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "eccb713fef59ca6d42473fea02a0edbb15930dc08d935cda2925286242fd9b67" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.764Z", + "updatedAt": "2025-12-05T15:21:44.491Z", "postProcessHash": "33ed2606ee8c2f54ce72e71a3ba5890d79e79b45fc1254790063d9b8e2423ddc" } } @@ -5742,15 +5742,15 @@ "3147fdc69c8941ecf865e47d9d8db4472067857ced28a4db9f1732ab44a9e898": { "89c5c15673bafb792cce9d30449c0c07581ad4fc443060edb182f1287d36112c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.462Z", "postProcessHash": "53055f95a0e726b2aa61d1f11bd9d6db9204068e483890c1fd56f6b98207986c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.708Z", + "updatedAt": "2025-12-05T15:21:44.454Z", "postProcessHash": "1bff8b81e2cfe0013dddfba5728d6bc99cfabcbfae37048b7b9cd791acb3bf8f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.728Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "fa39ea06d2762387a6b6b9d6a196b2e286ac3c0a30c8d2369733808e7378b717" } } @@ -5769,15 +5769,15 @@ }, "5db8938ef552c8ae84a16d6794b1f42e0311f9de424256966572b9563b1ef3cc": { "zh": { - "updatedAt": "2025-12-04T20:16:57.772Z", + "updatedAt": "2025-12-05T15:21:44.497Z", "postProcessHash": "637dc4d08d7301012a9378bff8632e8ae44e2da2042c9ded22f59ee94d175eed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.773Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "00f8bbec065c2b1a93e29dc9bb900b48cbd89b43b788fe644b01c8229c7129e3" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.773Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "483478a9518b2ded58f2a8cce0fd779cd9da40fc3ddecd8e02ab999e47495072" } } @@ -5785,15 +5785,15 @@ "4088be7256afa16e0829b465fbe851d2600d3bbb21c2610210c4075f713ee668": { "5263f7887931f9fbf63f2e9b15b7ccdd2c7157a7fd13cb67ba7bb5a4724f5c9f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "efd6669ce81cf16cb972400b3312d74bd68921265d6fa38eea04516f95cc059f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "d3efb7c9f4b81afced913e57bec6c93a3291d3ef6eeb30e1785ed170d83c57cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "b0b2f3b1468df01a7b6593f89aa2db47b669a1f4b00c44980e8c918002dd4b97" } } @@ -5801,15 +5801,15 @@ "434c8c6575a1c96da70aa7b25b8f2386d3813854c5fc71c4731982bf93c5b551": { "33868413cbf230f1914b6622c0fa2f639a7ea45c3142a4368aa173e8a03fc411": { "jp": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "9f18250dac4a95b0b4598ef83c15f0caee43068a8ff02a8c9ee3cc3da5b714d9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "e848c56ac1efbd4ca32666091d39b46b7f4860c4a4cf048e4457f83b661d0fba" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.764Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "43f66fc674f5d1a1b01087b3dbedc92153888572310d40f8c15d8ea23f64b22e" } } @@ -5817,15 +5817,15 @@ "5199e54b28e8b206af31f52654ebdf21657caebae6cfe9e8a655ac120217243a": { "cce5c749f00809c0ebd64bf0b902ba923e07ffe3f6cf94b3e416613a539be455": { "jp": { - "updatedAt": "2025-12-04T20:16:57.772Z", + "updatedAt": "2025-12-05T15:21:44.497Z", "postProcessHash": "ed9974b325e5df91bf2c35de43340f71e8a546760f61b53ee7cf74c6c21f6e15" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.724Z", + "updatedAt": "2025-12-05T15:21:44.455Z", "postProcessHash": "ca7568fe00bffa738ba75cba865ae4979dd1180efac0ecdc08f05966aa7ea45b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.773Z", + "updatedAt": "2025-12-05T15:21:44.497Z", "postProcessHash": "fd5d3a9436d49a764675f59e48355eda5d74581979286de1d3f75d62efa33789" } } @@ -5844,15 +5844,15 @@ }, "1eb91aaf2bc2576cd6efb9874122c0f7605ac4248fbdacbded71fbd2fa6cf73b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.773Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "11d8ad4dc4b44cc92dd20b330ab18a43adeb99078d3abc69ff74b4f15b98ed89" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "8123803c9414d62fcbb7ebec2a77b6c6275bba96ae5453ec43706ff21ecce293" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "7995fbdae8db58a5e8234ada2ad833403e3639be53eee52fb8fc3b73f3744d62" } } @@ -5860,15 +5860,15 @@ "7e14895b92e515a566c49df3e172fa8ef0794a3911f227fc4a71c6dba5f490d7": { "99b76fc928beec586c17a5cc43f58eacac997ef5729cc011bbfca37d37c70a79": { "jp": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "63da98a9eeb5851d127538ef59ed7542b1b0cca28b2b3d5de4dfe4274fe2c7dd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "67c8a0a8c9ec592c1ef47d654d418bf00842779e6f2e49d11dfe4fbed22938fe" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.759Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "9ccd5aa3156902f635306922a059f18e804327d40a0ee88e0a66ed6fe82b3b7a" } } @@ -5876,15 +5876,15 @@ "818f1c114e04624a9ce346e723231683afc9efb77f488e698cfae3f76123798c": { "7802fce1dd531f1d9274394e1014f26f608015405f1fca427d28159a91303ceb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "314e76c3e76e5cacfa2c47795ead57344aab199343600fbbfed5c98ae997faeb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "a46aea925c8aa3c2954ea5771b744811d5adff38c432f1f5c8a4c88ad528a3c8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.723Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "a38c04f6b4ebde36ced2e3255381ce7e02bafa6affe24a29aa8688f9e7eddec8" } } @@ -5892,15 +5892,15 @@ "89be4ef20c9e5fe95e7e9565ff5aa903eef3eacf9ef5bbff1fa371c4ce7dca62": { "a6c4756c4f81974e9497aa328cf4f067d2e218a364817e6b3353285d9d897dbf": { "ru": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "830d8110363df93dd710c28c0cf9af48e051141c818e171f42741f104c20e21a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "72ef369911e700b098d6ddea992e3115676ca2988a8ecd028bf93fe364a4e82b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "4a1c82afe39eb440e3df274d6c3952d494de5ea09541b3ccaf686ea2581753d2" } } @@ -5908,15 +5908,15 @@ "92e7d4855f47bd7172f2143c5bf24c013dcd99fd681ef3d53e75a588365ef40f": { "4aba2abdc8ba16a13f0e130fc8a1c260887158a147901de0d5f87498741d53f4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "176a4e84c63da6afbf21f97fc63746b71d600d981b7de07b422d63c053307750" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "eccf21c1d86f089fe6c6fa7f19907aa7fd8f6973b249141c515952045af8d10a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.763Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "c448e145128557ff7413d26f1d4ad758da772985638d3dee80f50ffcc5c7793c" } } @@ -5924,15 +5924,15 @@ "b82ca3ae71e7ca0bff5a8a1a958e415791b51606240790fabac0a24e99e5a8e5": { "4ed62ba9027cfba50a02993f949860b2fbf583b0d2272c93d49202621bd1c2b9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.764Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "7494cf2868ca0bd6fe8e5a2bbf39695b30da17a41f04289b24642e959df5a2d4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.724Z", + "updatedAt": "2025-12-05T15:21:44.454Z", "postProcessHash": "f7911af939a3555784c78a6e4740cf749d90963ebdda1713c10dcea34fe6201d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.764Z", + "updatedAt": "2025-12-05T15:21:44.490Z", "postProcessHash": "664f7d7880628c9a67c211d3e4e7d579786c9e2be498e43cdb130e439ab1bbeb" } } @@ -5940,15 +5940,15 @@ "bfa678e1e376ec015ac9221d88b1803ce7811869f141b22241c78abacbd547fe": { "8a6e9f00b55f3b0576f01c6ef20c5163ebaa186d9ca2ba3a241ee00d1040de72": { "jp": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.462Z", "postProcessHash": "0e7389ac59c195cd404acf24ef5a8a4b2752ce520dd526056e782e71b293b34b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.463Z", "postProcessHash": "32365a072051e80c4812d403f0e04b9b32d6ccc22e17db81a2e3482d232b7639" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.731Z", + "updatedAt": "2025-12-05T15:21:44.464Z", "postProcessHash": "b6f9739211048690f28ae0326c65dcc8d2501061ee68b8ead85c2e6d1cda8ac5" } } @@ -5956,15 +5956,15 @@ "c0113692c1b839bd1d0b553b8a746fd8e901fea18a0365874a7d57b5c47410d1": { "fba4fb769bf604e65c2e862ea128a3429d4692c33e0b8ca43bea57e16c6781c6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.754Z", + "updatedAt": "2025-12-05T15:21:44.482Z", "postProcessHash": "0df0401fa181f6afcb825f74f1c26dcbd74f83b3dc02c48442c81695a41a575f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.754Z", + "updatedAt": "2025-12-05T15:21:44.481Z", "postProcessHash": "f57432b62ce4f74269795b4abfad56deccc8bbdf639be2e59dcb756cedb3fcc9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.710Z", + "updatedAt": "2025-12-05T15:21:44.455Z", "postProcessHash": "296792f900c37a72bdb30cebb9b088b5151c013476ed49537b54273a784604ce" } } @@ -5972,15 +5972,15 @@ "c2fb7179016e62efedb581c777d5b3e618da9208a31a2d9a164ea0308a1143c8": { "795fa89dca9c3b26ee3aeaa8be7c8410b0abd1d329f364f1777a29c3bf6ae7de": { "jp": { - "updatedAt": "2025-12-04T20:16:57.731Z", + "updatedAt": "2025-12-05T15:21:44.463Z", "postProcessHash": "58e1bc9663390143be137836371fc8e0c112aef769b2f0221574a0c3e31f138a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.462Z", "postProcessHash": "34596e88c96336374ceec16557a905a7f42d56d61dca8b29c4821c31ac081429" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.730Z", + "updatedAt": "2025-12-05T15:21:44.462Z", "postProcessHash": "530c202bad522f80d735bd60e3f9cbd73bb1fb1a5354bd53af94c7ecb304b1fb" } } @@ -5988,15 +5988,15 @@ "d853a1e0bc487c020a87d920028e6165d0cb3cc395e7fffd09047dee78720588": { "adec2ea632fca207a13f7608230126d9fa9e97108c03848018e30859a7144104": { "jp": { - "updatedAt": "2025-12-04T20:16:57.727Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "2776f6b854f6dd8092ff41a8d1c9a9f4fd65a9a1b9bd7b29abfc8ed8c232a8df" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.458Z", "postProcessHash": "b1f3b2d8a196bb3690e13d3843097b3a9483874c47a73e00583efc5009679bb9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.728Z", + "updatedAt": "2025-12-05T15:21:44.459Z", "postProcessHash": "bfac1f60c2f0563b91b7e8fca47f55d047ea174b46652a1491b33cbf80162b37" } } @@ -6015,15 +6015,15 @@ }, "2e9fd2d3c490bc28c36a5d0ec21cb93e844dfdd34f2eb187c7f84f44c2e7cfbe": { "ru": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "9ed534ba4eb3bf9ac332f25994d4c539afe66d30e2df432bcc554f84aa735e11" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "258b0979315293ad7f19d9c708a86d326969f505de98a96ebef6b2213ff67633" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "2be4eb38cb42cbb50c742ac3df2abc4ee2a8e97c9056b06e1e8c4aab88d0ef2a" } } @@ -6031,15 +6031,15 @@ "ed8b9299efe36240a44450f98875fb20ad838d0c4a97a4d6b56749d87a6c69aa": { "64421077253a2367928552f8ecfca1500ab1a3aa6470e26d805f6aae81b107b2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.723Z", + "updatedAt": "2025-12-05T15:21:44.454Z", "postProcessHash": "430adc72e4482e0a77929fea628937f249f6ab5585a6e328198f3a61731ef996" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "1853e4481c6d5b8c840c9da1bb0e5b242f034824d6b6cc8ea574031d04cf7b3d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.724Z", + "updatedAt": "2025-12-05T15:21:44.455Z", "postProcessHash": "7ae40617119c7a2a069089889358cd6b14074fb9c482141fd5cf7a31e29434b6" } } @@ -6058,15 +6058,15 @@ }, "66279b676a09e82d63bf92aedd7dd90d5d48d13d70786aa3d162976e96a2bf21": { "ru": { - "updatedAt": "2025-12-04T20:16:57.723Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "a716ae47586ae04fee13d615fa31ccc85bea240cb6bd7a5eba8faffd1e9797e4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.723Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "ae967363a40d0d0bae739efd4e74a401c21947e1d75813899f3ca2765335b68f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.723Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "7ad81b640660878b8583d183c4f46dbbd7c0afc910aecc49e24550cab4ad76b1" } } @@ -6074,15 +6074,15 @@ "072403da5aaa82666ec2ac55aba2660e421b6711c6cb70c42b4eb6038b58554a": { "aa38bbbb12b1ed94ca667358f90437e09046357f71a6d1e0f8a508d57a4b5568": { "jp": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "6efc374a7a7ee2b4f19d1ea4c26f944732777c8e76c062fd13185bf2c4cd2e5d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "88c3068751766bce370033fbe160668b8f0cdbc7f8547c840b31261e3961b3ce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "08d8b574fbbea1f629a024e0c36f6826462859b57a4f74bf6492a7a234ac3bd6" } } @@ -6090,15 +6090,15 @@ "242c81539a7d39347e31852ff01c14ca7481b428f62ec2a9a8ef8923e319fd70": { "ff718abf7b9337cb72f9728d2ee59f8366fc732135cec35be718b34d911ff036": { "jp": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "f5c4fefb3a92417306cf2838611df0be166b2fd73ce3f64891868c22694a4af9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.774Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "575d484e36e64b500016548ec18db0a2b6aaf082ed913f64ea5a917b2f5eae1b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "455e257c1e8dd6bb0e6f9c94fc33c55a966384a641367936988c1473d768c54a" } } @@ -6106,15 +6106,15 @@ "2ca1f06020b55585ef361cf2b43c9aa9e23ed32e9d0a80f58141cb6b357e2508": { "e8f70f164f2c79a05e20f2ea7598ea71abec4dd9a196fd990cb3b9f5f5250252": { "jp": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "9c046930bcdb3eb58b3c68abe4ebe3f87f515eb645ca504c504b1ccf98563141" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "cc1ff01dbd89f5dc8a0bbe3f96c37b52e1d23486fdbdcaaf925c242159f855d2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "5dfb84272f507920b5200a07873956c67182107c9c67adff79c1025ae991e091" } } @@ -6133,15 +6133,15 @@ }, "6e3e04cc7119c0602d04810abb60bd15340766476b6dd90c89c802891040b74f": { "ru": { - "updatedAt": "2025-12-04T20:16:57.766Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "6f582c607f5e3e6c3b253b0a49c3c865bf577f2ebfab4fddf3df621e1cdf9c30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.766Z", + "updatedAt": "2025-12-05T15:21:44.492Z", "postProcessHash": "d08b5c0cbb0d64af9ba6ace71d113321dc9f9f935ae6d33f21b121a65c52cd49" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.765Z", + "updatedAt": "2025-12-05T15:21:44.491Z", "postProcessHash": "e76b19cd589d7eaea35fab6ebb0e931a2b858d9bd5c1b1ab20ddc8fae160752a" } } @@ -6149,15 +6149,15 @@ "516b68aad0c74f76c3c12fe30d1f7258569a0b66643da4924fd24d791f072074": { "55acd998caff6e952b47ceb372ae02d24533c50e2c2a2d341e32d84c2b4a01b1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "fa1e89ee79f093c28e5710c61c24c3fe986a8e6163e282558d99e7a49cda4770" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "13b12ff37d0b28766eecf1e934c1bc3d1faeab6131a64272dd3791ab6b40f10c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.792Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "ad2fa5cf65dd28932c96d23d588d084588e3a7615bad4d73088e7e524acdfe86" } } @@ -6165,15 +6165,15 @@ "52d9303d908cc54e70744ee1b1e2e09e4cf8cb226c9925cebd341f9cac387001": { "71eaa12db00dcad81d12c60186209b5ab377404a70d4a18ee7d26b6ece5ff741": { "jp": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "46bf7aa9cc03453e2ea4e249b150bd73d4492d803ae3feec3da81f7c17ddff33" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "4aa644cd56806028a1ce4b55234106b470d76f7fefb2264d4df53b209bb2b919" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "85fa7d7b4e4bf105d56081b2287c12ec43dfeb8660cb59e6b674391eae101369" } } @@ -6181,15 +6181,15 @@ "576d725e93d552fa1d974e38954e0acf96bd1d7bdb7ce394aea881a846161589": { "5d83a7ec0232591623da4893b116014b1e37aa25bdbbedda273544d85805f34d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.772Z", + "updatedAt": "2025-12-05T15:21:44.497Z", "postProcessHash": "f6c255a09fad65d52434d6a0d67748812d83c4c0278e6f74fde23d82b9dd9875" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.765Z", + "updatedAt": "2025-12-05T15:21:44.491Z", "postProcessHash": "f6e8197e65e1ae7b3271d9b92b860e2e7f3cb2134283cb00aeeccbbabb39e87b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.765Z", + "updatedAt": "2025-12-05T15:21:44.491Z", "postProcessHash": "9ec426ad1ba9e635f5c52ee3eac06dc87f747cb492de1e42e04f959fbe3b3eef" } } @@ -6197,15 +6197,15 @@ "59eee6beba7ef7f4b2b1ab657b188c2ad938982b20b45febf1c21c4c7b23d916": { "379215258832c5b1b0beefd2f0012d327e4907cdb0e2564650bdb42214e2e265": { "jp": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "4629db550ef0332b1f95eb14ed6df1587316cf43fe6447308ed2ae3a6fa285bb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "b8259b37a4380cb569be22929d39880fb53372f4ea6c3bf7496757672285e557" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "e059281585a2d761113c8af4d6f0cadf7a8784203fe8b6b2dd6dc080d1a4f435" } } @@ -6213,15 +6213,15 @@ "671c3c038f46cc2a350b67ff548f3064f3440f0912e1cada9cdbe60cb9c2971b": { "35a6b4b0da582ffce53ec6d62ecfa840b3fd54894bd3063441a0fb637cfcebb0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "9c7684a372ef9d36f9de20b17407405e2b6d6d8059d3010feb6ada3ebcf17d23" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "f19aae74ee22a58fb368b4eb8450470ba4a0338914c79f7a4175de54eaeeca5b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "8a6974dd1361db06762535627d14c703b89035b5276dc6b11b84a6a2dd6a889c" } } @@ -6229,15 +6229,15 @@ "6baf2f9dc91a3aafdaf603aa070b6d303e0ca43f60c45975bd126c795f51bf6c": { "21159c4739b98c5874cd3f6e95850d863ba6be6c3a8978b327a9bef2d0bbda5b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.793Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "5e210530a3890b2360d0f33798f6c0e6ddaf389848bc0f76f0faaae6bf21f81c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.774Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "144489e400516735f7f643e48c2b1df82f1943958c364d596aa7449beac78aaa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "f62345fa5033815ece4f56f0820886f5222c3b62911fa1cfdc14e3d6c83618be" } } @@ -6245,15 +6245,15 @@ "85b69398b5611cad0ed97b26cf9ee7ab54989a0ec7615bc3aaabc2e0ae3c33ba": { "3069fe2c05efa1690a8fd9f6e9519528b8d09fe75d6fe914e613400f223a3e0c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "de16ab6e2f0b3e205e3794008af5450b551ae9eb8df24ba5d67b5c86240bfe93" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.792Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "f8b5e93b88fe40262a1abaf7a1e1f738787ecea40c64acb4a34ef76496888848" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "4bf86d36e9bf3cb46e4b3c142145a051773d06e12cba5067b14a3e469adb224d" } } @@ -6261,15 +6261,15 @@ "8d4d7b2200cef950ad1bc09f8c982ee5def76cb7de03b7265ce2ab6d4a48fc07": { "782ddff0f1b9ecab869f6fba2c946f9fc98a65b12620a1eeeb09e7adfbdef623": { "jp": { - "updatedAt": "2025-12-04T20:16:57.759Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "b6e3b6d51ba16da15146614051dec9022ce0aaa430f48016aab45a2da14e069f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "b006a5b8a36a0d1775cc8cd000e999e51b020936d56b2e9f850f9f120dccb83d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "bd16f7acc549d16bb785d62410c3511f58688dcf153f415b9c7880567ebf4319" } } @@ -6288,15 +6288,15 @@ }, "f82d62c4dc19a5c31661c04d7a069bfa0d236fd3870382dd08d9cdbb13e02b93": { "ru": { - "updatedAt": "2025-12-04T20:16:57.766Z", + "updatedAt": "2025-12-05T15:21:44.492Z", "postProcessHash": "c24328a3a91fd3e5e4c5957e6eb54b12034a8184fd182c3c6a956a4b2dc6f943" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.766Z", + "updatedAt": "2025-12-05T15:21:44.492Z", "postProcessHash": "c0a127138127dce3f86f43658af8a4b4d9412e84f256c8312042cb1579876287" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.765Z", + "updatedAt": "2025-12-05T15:21:44.491Z", "postProcessHash": "a45c9d32c2f7c96027583f2d4828a6f41b06edf7b235dd46d4e71b8053e6a994" } } @@ -6304,15 +6304,15 @@ "b326d89975e77fc4fe5e09c43f7d7dd72353ad2de4c76604cfa709d60f39cee1": { "41f6f44d6560ff4b7b4a8919ea06169035e1ab5f00669a7875013466734ef23e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.793Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "8609ce1e482a7a9e2c5f261130770a4dc0ee885bbde49b76fca7f5212e9366f4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "bb56e86935b03bcebe54cce84ca66a87745cb917234e1425b54d1d2e7f04b700" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.792Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "350dbebe3bcf8c4267e10721bc589a52846ca3ec1323f9c3b74ca6a32338988c" } } @@ -6320,15 +6320,15 @@ "c0388925c5cbd757f80d526185840b27148d3d9f44442adba2d651d360e9f8f2": { "fe663d93e8ac7ca2bac8f4753fad3eb0d0150631ba2d2c4e3a85eb5fdd27dcf5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "99c7dc120b57856939c44dab24531054d323df80cfa6002e597d30524596bf15" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.762Z", + "updatedAt": "2025-12-05T15:21:44.489Z", "postProcessHash": "a7f0c44743066b576425ef08cef1079baa68333ec5c053cbba667d6b34d04ade" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "ed3d60f9d1678751b9d26b507197a9dfa360709b59aa0e942779d0d6514cc18c" } } @@ -6336,15 +6336,15 @@ "c8f7fa8f88301edf51171572623222cac00927836c2b38e0b936dc6808969163": { "0bdde8ad92c2b56e1260138b52e278dda8cd06b984643902593d0d0cd7fb1ef3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.789Z", + "updatedAt": "2025-12-05T15:21:44.510Z", "postProcessHash": "0f61441a74fc98c8042e6363eddd6587dee1ece680c4d9d6e53fa779a0e3c9d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "13cf207240e17c6d07e0d85f9129cba11c0320fead216950dfb405721b8eb40b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.488Z", "postProcessHash": "80c833d8b95443723d2990d6fc87edff760c1040b9fe4d43c9de42d60b02384c" } } @@ -6352,15 +6352,15 @@ "cafe8a479283375a185399d18cc4d2444fa4afed320fccd79e4b21ccc00756f3": { "9b037a637113b68681c5e24a1691633df3e7e4ab645c3430fdfbded768ba8392": { "jp": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "d5c91c0c8e927fe7d30d1e0c4588fbf57e0b53161b30a89598e2def5c932860e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.793Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "b2853e06b9718024224ba399502cd1e1c2c0576e3859cee411f765dd8e3a54a5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.774Z", + "updatedAt": "2025-12-05T15:21:44.499Z", "postProcessHash": "a2e95c01e72f0c0a68efc6549f89df195751b18efbb28da0302e7a01508ef3f9" } } @@ -6368,15 +6368,15 @@ "d66c9f0b5bf68d56ccdb239450a2def7e044ee7dbb38a6df724002e0578ee93a": { "b17e684424dd7e3c1032466ae89d5b4b0753b2b11488a3c5480069b467bdfcd1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.760Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "be92473bee0493da18c3c62bccad4fa00f84235089c933c2ae2be778ba7e1225" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "a451fa05ecb55892e5c9ca94e49886c53d626c99c62d7b0da119bba06a3c5b85" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.761Z", + "updatedAt": "2025-12-05T15:21:44.487Z", "postProcessHash": "94b2196e63141e50f76f735236063bf0387783a8f55fa282a2bc00194ef40406" } } @@ -6384,15 +6384,15 @@ "dfb826f61e2d3065b29aed9473793d5e9482ca0064907298ee886dcc849a2f30": { "095ffff652d364d8d2d207b5c2495c8f89b149222bdc9348bc26c7785dc49095": { "jp": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "808a18c391b1fc8086a00a797eb0077442969ec840b597e35ccd6ac021cc3467" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "b2d4b92064264c41b06011776bcda44ede3ef34654b11b0125e701adbd34ea03" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "6086916e3335c10e607ed6652c0f38cfa7b02967990de9e59b89f93083132cf9" } } @@ -6400,15 +6400,15 @@ "f7ee1a75569ad87e689d0ebfbbc64afa80e4517625c27676aefe4a63952637ab": { "62283411a070bd19b48c75ef32990fea3d01df15e6ce74c1ef8474a50f977cdc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "d3c3273ae9aa730beb390168d1853e6e7b823f8536294b88733be9541b300b53" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.518Z", "postProcessHash": "7b62d589122531f49409966ea78932a183cbba68a17b4fa7ef9c2c3548f8fa84" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "64230584138634617c4ec8237f10e07703550d3b3135edb0dcecc4fc13a63834" } } @@ -6416,15 +6416,15 @@ "fbf74a86f665ee9aea4f220700429c38da217030a00f7a905ec8171cb63a5f49": { "379c9b448d13ae5617010e62fc925030e206c603b76eb2ab7ab83dddade8d46a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "12798d4740bc2ee11f08161d50d416fea78511ad94e5c2d44891793083780398" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "6c0432058f1ae8bc36419626b2f02e47347a5292dd4a751efa69db28eddd5820" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "e3955804863d02d0f6cfaa240645b703f1e3a6922cf09ea661aa202f00516a67" } } @@ -6432,15 +6432,15 @@ "1204bfc3bd6e857b87b1b5a9dd1156c45498c5d9e64e68cdce6f8dfe4987ecfd": { "373f45a715a82081f8e2a3779cc63f874936a6ff999e1d2ee5daf6d9f720ace1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "27ec89edfbb0d60a895de4e165a9625439b2328cafda49ef9858437bbac1b247" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.540Z", "postProcessHash": "0a5819182019f2909c49203a9a679fda272098694a500048064279ef34799636" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.537Z", "postProcessHash": "069f0549d309db113c832004774cfcdf3f0cb52b84c7d598c6f04492c2874ed9" } } @@ -6448,15 +6448,15 @@ "24ceb06f47cf82806e35ac32dfe18ca24087b06cffbe5021739286a56c793b1d": { "4ace68b0458a094405f4c0fd1dc60a5ef026a1a8639846623e86fdff84ae8507": { "zh": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.540Z", "postProcessHash": "cf4eadf4274504ddb027b5ce919b33665d3b9ca66efc1063e490ca763943b921" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "0d5868ddb14d7ff9e73bcff7f5b0e7ae52c65069ec00100ee64a8d54dd5bca5b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.534Z", "postProcessHash": "ff42fa37e91791f69485b088cd2a2348a8cbfd5310c3d47e31b5b00f61d0c59f" } } @@ -6464,15 +6464,15 @@ "28e0a4a4c7b2f5abc28938acf55ed73d8388d95376bfa8dd13fdecd6bd439e52": { "7b5571b023d676e2979970ede929e965221ec27898362e89cfb8519c41cf3898": { "jp": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "94662b4cc992b10485c204ffcdfe1bde2ec58ebf9eca1784d5603f6396293c78" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "4470d5d63f9bd72f6536ba7d492bade661899d10fd7115b0e7aaf74504f8bc79" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "887b2c0434d1ad9b8c826e773e6f12732a836ae3591b6f0cf3a27a0c6bc2b577" } } @@ -6480,15 +6480,15 @@ "4a932aa16f4947c7ef17e42150e4a316f1ffcde90dd8415e4c6bf929ba835846": { "49a5dd5634212d8130c73ae1cd817b3917e322d14b3c96754d53df3d228cd836": { "jp": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "c57d4fd3de2ce83762d28b055b4397b88592068f685dde8be30d1ec295e51405" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "06d7c8a543d5b7cd0770ab4bf5cfd4b374d059842a9044110f4f0c81c77739e2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "4eeff5e9fe2b7dfc26077d64812cda6635ca0b06dd0c4f0ec16a33e8b4808807" } } @@ -6496,15 +6496,15 @@ "4ca74029aba5db691ad0ec824ca43ed7d92a4d5b9aa1573bc7116ad308b92cde": { "f97238d94d5bdc95a6129e0715198e8a6b955a58fbaa7da4e12e9dfa1348f135": { "jp": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.535Z", "postProcessHash": "6db15ccf93c170a68d2d7fb97325c9f02e6d8c38256bf24ea1e1618eddd27bb2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.535Z", "postProcessHash": "fb9d524d8f302d5744f6924e6f70909ecf01999cb9307b95490e63a271bf1849" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.537Z", "postProcessHash": "a9c99ce98b568f56538bcfbc01de595e4720590293a8ea630e12ba0f5c21592c" } } @@ -6512,15 +6512,15 @@ "4dec7d00a7f493694d866154c843363d42ed6db4abc5dfbd010fdd90bfcaf67d": { "97c6b3e272815f6b0861c69df01e35d4daeb9dd3a1b81af896dc36740a178f9c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.797Z", + "updatedAt": "2025-12-05T15:21:44.517Z", "postProcessHash": "0f953e37be295890b936167c16a6f61ab270d65246fd01c8f69c516acf4c6d10" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "f44cba54c25e585af4a2b0fd2cc07ed4b8606c8299d4a02ac0e4105c1d2414c6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.793Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "2ffc4a18b03d3a7fa614ec7ecab6ec4ba411a7e668df48f9856c8249653f24e0" } } @@ -6528,15 +6528,15 @@ "51e35897aeb6c746cdd097c39d7d3d876e62dfc0623f6a3c97974b88226b3a00": { "07eab7fc4983c7ac1da23e4f9c0e0aaefbcbbf2c5cf96b5e1af6a93d9eab9a6e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "67f9a9ac8336a3232c299cff604e0b2065cff81bb1a7954eac3232bd1f7a0134" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.542Z", "postProcessHash": "40cff747897729697852d9835a5f6a78eb60e1fc50f9072e3b866ae10bfc0097" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.539Z", "postProcessHash": "0e1a4150dd08f690a0e20b9703fca1ee6c6352964858fbb6258c3d5ad9efecb5" } } @@ -6544,15 +6544,15 @@ "6faa2072fc3d3a3770d528540726e0fbdb421fa84e62c668a817741883d26440": { "579c8415475bba272d86e61362d88b8f1304de7a7411591652572d7da45590c2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.814Z", + "updatedAt": "2025-12-05T15:21:44.544Z", "postProcessHash": "dc7a3dabadd92a63a0721665bad5222b4b32a77af72fd6098a361e52519b05b9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.814Z", + "updatedAt": "2025-12-05T15:21:44.544Z", "postProcessHash": "feedaa4bb1579aa8d22550566c4f5ae896f40fd7894444e136a1752d8f888f90" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.790Z", + "updatedAt": "2025-12-05T15:21:44.512Z", "postProcessHash": "e0e7a270febbfaf21159b73368294667deb532c86c16b000923a5c6e90fcbb19" } } @@ -6560,15 +6560,15 @@ "765183c2f979cd15300174a6cbeab761c53e4a2b979f9c1c628c55c69015ae5b": { "aaedfcb72829b8339998ff9e62eb6e54a69755858854804557b9efc3496e73f9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.542Z", "postProcessHash": "f8dedb56834ea2b98f3b8fd0c76103240a76053b01fc1f47443b4936679bfc37" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.535Z", "postProcessHash": "996a2c3e9c26a1ae8527ff38d66665c0fdfd6943f31983e2781bda9518914f99" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.541Z", "postProcessHash": "c33622690e8cd37e14eabe01b30fb09445ca812293f1cfa1046c8df754012e6e" } } @@ -6576,15 +6576,15 @@ "9bd2367031f4ad3ccaa40d2eab23421bb90a176c87631c89d0565908c1c8129d": { "a3d661f00c76cbebde5bfa666feb5af47a4620862c09e2ad2d7ea88d84d8c98d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.793Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "14b01515ba3282ae4daf0953b2a020ceb4ee7b2ee01112b956a19b66ad292744" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "9ec4e2dd8c0f4624cc3c804e8db8842d6b74cf7935fbae167fea6ef1524fe394" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.792Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "1e23f767f676ff5f4481e2738dd3e81eb5d56e2a62d9d5df1da27042639c7994" } } @@ -6592,47 +6592,47 @@ "a61623fa5c7f672b85c730754446bc1a65a53fbfc1fa7eb64e0779690ac3049a": { "e82d7f23954deebeb66e19daaed4363f0e28569d3a42d1de12ffdce2ad3976fb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.814Z", - "postProcessHash": "d554d6aa39310155aec0aec70df863857016b5bcc8ac58c2b099ebb0cccf7525" + "updatedAt": "2025-12-05T15:21:44.543Z", + "postProcessHash": "479ebe5f70fd5c8dcd0dcc1d8325bb10bba9cb1870503170ba740cda7cb31314" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.813Z", - "postProcessHash": "ccad1ec6d1f3bb4238a1426b34c1b780295ba8faf1543d5719747cb98bb0b223" + "updatedAt": "2025-12-05T15:21:44.543Z", + "postProcessHash": "feda8261841c853b7b484fffb0a8c5dbf114657137c68e2fdbc897e434cf499d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.811Z", - "postProcessHash": "1e3934ef3bda61bc7e47c9e48d3f06d8b7a348383fc21856a20aa3fc03fe0d70" + "updatedAt": "2025-12-05T15:21:44.540Z", + "postProcessHash": "0f9f7d9324bdc5ff3fe150a387cede1eb33096190c35778578f4a2591fe51fa0" } } }, "b0c4a6145c3f1c781d51adb03f8e4996331d1159cb14cba9c81b851b728253ee": { "d161896a6a88f3dc7f188f95f5ef37b65e50579afa43c7f21b1656e07c5010a7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.812Z", - "postProcessHash": "61326e5ebb9299ed045fb3fc171c1f992e7163405029b7248bfc060dfe03133f" + "updatedAt": "2025-12-05T15:21:44.540Z", + "postProcessHash": "bc0177e5bb03cc9eaead9af9703485281c5eea851940ffb0bd2e5a9dae75d86e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.813Z", - "postProcessHash": "185624aed3489bc61c9491585b4bd1d500bd71cf89d5482d76217f69b1581bd8" + "updatedAt": "2025-12-05T15:21:44.542Z", + "postProcessHash": "6215d1754b0877952f7d850c0662ef624c6b63e09d85fd95c9b0c6607f43b7de" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.814Z", - "postProcessHash": "5e808829a64a5bcb551d24b513cfaf49db170e10bc8f163be9e44a20714de97e" + "updatedAt": "2025-12-05T15:21:44.543Z", + "postProcessHash": "71b031581382844adf8b1752e99ab5f5aa4e8c404b3e9d656c0fccfc5a2f26ee" } } }, "b6071010708dd9f91932364b3060488201176aeb008d6ba6dceaee25a82a0a2d": { "2007a45c3bc14f5333a4866ed3de37e1c4ce663c0e2b1fd31fbf2030fed127e0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.543Z", "postProcessHash": "8e735a33e9cdd78760897cdefbb03fa17d2710cc9616d3d1176ae3a0f4bc20e2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.541Z", "postProcessHash": "8e6be21e098b427436efaeeae4e4d54974cc94c20cf0d730b32e7c9f0a8b1486" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.539Z", "postProcessHash": "0ceb18478272458fd1047439c98e2942f67ec98a45e48c5b8fd64f1ca461e134" } } @@ -6640,15 +6640,15 @@ "bf4425dd6cb86116b19753768a5420c28985c1fcb442ecd1b5e1d37e6ca2f98f": { "e1eae6052323b0cc1ddca82febd2af06bef603d4809bc06fe09b3e2b0880ed2e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "bfcb15514a3ff17f895f6545ca7c317e52d0cd2fbe60c47ba5cbe3f1524eae57" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "44a0d94b92cb2ed3e8d309f03ee4c73d4e4dbad12f1b0ad8805ee7df534cb38e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.793Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "86838d77a3e717ad7566ddba5260ff9102bd38bd43ccfc4a751ddb01ee81739a" } } @@ -6656,15 +6656,15 @@ "cdab7bf0d8c24f10d2d5dc375305c22f728e0f36fa1e29fdd04c99781fbc6cd5": { "083150d2c3def0d0736d5dbb6a695b7ea5c691ce94fcb5f5e84487727895f4ff": { "jp": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.512Z", "postProcessHash": "ceae7246c2187ed1be1f7ceb6706e90deca51df4b079b0cbd0f92ea96e06f63b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "5a19d6e38de7414aafc8f826fa62a9616a328df87c1bdc1d15698b3adb504020" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "25f6a3b1f2d104c61dddf49b4aef6a8a9f13f1343a563c0750648082d2c930f5" } } @@ -6672,15 +6672,15 @@ "e93967fcdbac2bba7b89b4164ea987452cd09d1070238a59a238036fd94e8618": { "94a465a749cb716926a6ad2a66382c7591719aa2f9d792d5910f48efdc1e20e5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.790Z", + "updatedAt": "2025-12-05T15:21:44.531Z", "postProcessHash": "a415ecb0d90f5d45912eea53a70d10089614f790c5198ba3b83afabf543db6c1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.539Z", "postProcessHash": "93f603fb205943e6ff8322e06981bc8d513c052bee3d63a77615d7f6ee853f41" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "03b027335a5c298b34474a73c7979fb6e050c9939dbf17b293062c4fb25f4982" } } @@ -6688,15 +6688,15 @@ "f0e219e3fb45c878fc0c3bc00fdeef1c5dd9c6ab75d1a093efffa9a0a6f002d6": { "f70bbeacf6050f44afacc1a4872c5eb1d3c4e9df491f0c452fdbd869057adb57": { "jp": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "b49c00bb658d6d8a5ceb45c70a0968288448ffda4b6c9852e3c5fa01182ec5a7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "1c47320ac4f8b4bad86e679725757cc62d0cb4224c96f4073ea3ca3ea40f1044" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "193f5623396d261e09af713cb45cc7cf2ac6d58d7b1502844f09a484119639ff" } } @@ -6704,15 +6704,15 @@ "f39b12efbc001a35d87891fb78f7cc37fe27f3e15abe1f7329d97a2afc1e55dc": { "abf20812398c31c2895cbc7f3902a957857e45b0abdb831d7765f7268fac0928": { "jp": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "eab9c6910ce0be64bfc7df81ad4b5e64c16e1bb9790c4ec0a02508e38a630e68" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "24aac98e1dd31fdb358f6bdb97f40ebad5864d418099f31a5d82318727a49cfd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.535Z", "postProcessHash": "75fbdd7dc724a4be4f1dda91f3e1200a31e9daf9bfd2422d4a0b2b60f5e3b76f" } } @@ -6720,47 +6720,47 @@ "f44395a43048118c7fe3d4525c225cb5397a7fe3c98ed8d8b8fcfa08e86d5620": { "9d5c04c8e9de527ab629ee91b9ebf0d572f7863c4f88f5651c671a5fff9df8fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.812Z", - "postProcessHash": "783d7c7b38688607623f7bb7e245d85b1e30199f891f937bf2c4542941ce0a07" + "updatedAt": "2025-12-05T15:21:44.541Z", + "postProcessHash": "5cb77b00ad45d275f6b074c1b7d6d9b032b74df233317207107ea4c228c859fe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.811Z", - "postProcessHash": "8af3b533ee89648e3e85b141b02e9fd3374f206db0d862b6a9decc31d01a7bb3" + "updatedAt": "2025-12-05T15:21:44.539Z", + "postProcessHash": "b2529331c3cd6d787860ff9b6bf5e73416698b6243ad41845bdefc8d1e90544f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.791Z", - "postProcessHash": "566eae6386254cf5527bcc35904b216cf2cbaa4b852fb5b5715278925a1679ff" + "updatedAt": "2025-12-05T15:21:44.532Z", + "postProcessHash": "f7c1ebbc9c99c8814e907f54b6989b546a782ff3b6872a0d5fa072a2c6f24603" } } }, "f646fb33e6fccf32e79c0ff130a3e33907e8822e1555b98aa42e7679988ce2ef": { "9c48604413e046bab5cde9bba416d6f9bcc6a7ded493b091e329a27c18ad8b0a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.807Z", - "postProcessHash": "9f064dff2af6148c5e475eccfbabc4fb0649293553c9ea7f7af79b8f846799bc" + "updatedAt": "2025-12-05T15:21:44.534Z", + "postProcessHash": "702a97cdfec860409ee837246312cbf03d577211ef1d20d4e1ace9dd6c1db7cc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.810Z", - "postProcessHash": "9363482dcabaf3e2d5ab55237f5834c87c3b866577927091090ace393ad3e2cc" + "updatedAt": "2025-12-05T15:21:44.538Z", + "postProcessHash": "a0ecccdebcb49fafd43954d473528142cf9571f7509ecdf6ebef9e786422a8f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.808Z", - "postProcessHash": "fa07674eb334a11efbce76dea7f4efadda21b5493369a220c4feaeac6526c757" + "updatedAt": "2025-12-05T15:21:44.535Z", + "postProcessHash": "bb9d16e2ec3a385dcc274bcb92fefcb22b3643c44283cbae03a49591260e4d45" } } }, "fb8e6138536700f07eca78b5f157d45b6036f77f52782711c91ba183897b4c9a": { "85d1f9adecaf2dd9004cd1e79d1ecdd61c68f65285973b86e6e2ba31e2eadf2f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.794Z", + "updatedAt": "2025-12-05T15:21:44.514Z", "postProcessHash": "3d49f7c879bba344b9910bd797d0d8abd81da97bf1f33950cec906b11543c4b5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.795Z", + "updatedAt": "2025-12-05T15:21:44.515Z", "postProcessHash": "0dfbf9c1c588ff4886c27ce6455b099b6660567d13f570dba78d6c7b885d5d50" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.796Z", + "updatedAt": "2025-12-05T15:21:44.516Z", "postProcessHash": "1184aba183ab0a693b4bd8f72ded7b727a9316a2c85cf2be1f3a25e0436ca582" } } @@ -6768,15 +6768,15 @@ "fd9477b10ed7d16ef2358b8d1e49ae2377cc94b7a2aa1d03cbf8e6ee55954611": { "36f5cb32c3341f1b52d0987870b8e971b48d9b4ccb72422d895a8e8de42aa565": { "jp": { - "updatedAt": "2025-12-04T20:16:57.789Z", + "updatedAt": "2025-12-05T15:21:44.511Z", "postProcessHash": "fe58283bf606f6a70bdf020c22dab04955e5d73a8277923d3926a20b60f3f91d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.791Z", + "updatedAt": "2025-12-05T15:21:44.513Z", "postProcessHash": "e408dc3f6f959f05b321cf04e158e29bb05da7d1e968a67a4d5e8bd2872dcb1f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.774Z", + "updatedAt": "2025-12-05T15:21:44.499Z", "postProcessHash": "d7b30c48e6ed6a6aead9a4dac7a1d910419e72f7d950b2a65b35d8820f9ac430" } } @@ -6784,31 +6784,31 @@ "0a48452290eff051d5083217a35dc08044c6070e028523f7cac12162494649d9": { "007d16df56ba8d29945ba611a8ebd52c915dfd07a9959101cb56729201855baa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.815Z", - "postProcessHash": "335c820f4c34b70622e1abced18586cc5609eca03e4b761a02a3445ab9cccf35" + "updatedAt": "2025-12-05T15:21:44.544Z", + "postProcessHash": "a4d99cf098f6a16e680c5532ca2c0a5955a5029c7212ef8e94025dcb9f3f6bb4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.790Z", - "postProcessHash": "684353425b1ed54452dbee3826f0df5f4567f73d29d27e1700f642b077fe310e" + "updatedAt": "2025-12-05T15:21:44.512Z", + "postProcessHash": "af381a9816867b681d399aaa3223233a7df003ebabf16998483ca430d4e3b403" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.813Z", - "postProcessHash": "f34fb0dc1133201699fcaa00bac781d11f523d1f6aeb53e85d359b10ab34ee59" + "updatedAt": "2025-12-05T15:21:44.542Z", + "postProcessHash": "d0d8c1f59294ca1ebba620295ce3784f569581af5647d39f7b092b2d08a81fe3" } } }, "1166fa0e4a8285a06447a2c810faea5954a70f41dac027f9312ad41f58d7980c": { "b55b582f39fbb6b1a9a83d90ec6685c4218c3e70536c2a445ad09c9e3380e0e1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.824Z", + "updatedAt": "2025-12-05T15:21:44.556Z", "postProcessHash": "6d3bbd48328025b028a39a48687db13fd68b90529e3a3e85e0d7b4b7fdd7c625" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.541Z", "postProcessHash": "a91468dbc48c7e39e651932d3db72e71886a92ede0e542e9763ac9cdbb3590db" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.829Z", + "updatedAt": "2025-12-05T15:21:44.562Z", "postProcessHash": "b103884a4bd4a1c4dcd6b6099c9012d409f4c287658f57e8f7c82d40e06e3f19" } } @@ -6816,15 +6816,15 @@ "1cc5dc60c755c1b33090726793f332fef7bb57174bac81be1fd840360abec0a9": { "0b2d9a2f1a1de345b24bb2aed0e200731bba362c09de9a98ae9041f3e9312321": { "jp": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.534Z", "postProcessHash": "24001167b5ca7506c2657a010e12d3bc391d2a28a56f660bc099abdd8be07a8c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.532Z", "postProcessHash": "32d833d4303e4e7ff711aa7104b65a863598974c37286ce7f1a5615cd8125e15" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.533Z", "postProcessHash": "c5864d2478a54d3b8a96b757c78432726745ddb13afb0cad3922331b51c83b6a" } } @@ -6832,15 +6832,15 @@ "1fa73f7fb3f17cb73adf9d2fd3672fb7b1bcea959cdfa4cc1cebebf9783e8493": { "68781891b0d87b8b7fc619dd4fa0e041668116f49851eeb31c8f510173e044b5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "78b42a032a73bc3bc7e94ea927c1c116e336b52a4e1a2fdf9e7f41581db6fb0b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "87d0f93e8bc24cd227c518ec9d92ed04bd75e894d3eb89c45b4caf812b75c755" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "56ef85dd5f0d272c52d44ad5c7ad42d19c0458a9e4e5fb8bf1057789fcbf569c" } } @@ -6848,15 +6848,15 @@ "277327bc5d1f24036dfcf5127459029b84745c17df9cdbee699b92b7fa8c244a": { "edea05c97af2e9b00969299f942cd800726b3f980c4ecc738e093ae93dac3c2f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.557Z", "postProcessHash": "711711c7d902a9008aff116db69619dc1176eadc3115f848d7efff90412e46cb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.554Z", "postProcessHash": "60399b1e8ab19f098014b005bd6ebf0f90d701723aca157cacf744eeaf54b1d3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.826Z", + "updatedAt": "2025-12-05T15:21:44.559Z", "postProcessHash": "537299c200b7179ded1307f1d1a582577ff7a14b03729c061dfed9b7698d4e3a" } } @@ -6864,15 +6864,15 @@ "2fa7a8042be873e4594c45fc4aa944580ac9957f07dba893bd079f9bd6831739": { "d53dbb06ce9443dcb0eff1d6d827440cd3f32c6995b1495a014f731eb03474e6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.541Z", "postProcessHash": "ee7fd108b4701e522a247784add8081bcdeae6f363b76a5ce969920076aa921c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.804Z", + "updatedAt": "2025-12-05T15:21:44.529Z", "postProcessHash": "c7d845789d6e7d12875cba5a2d9d131c1d16c05331a54b4d29c51efcf2ad9214" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.542Z", "postProcessHash": "19c2cf64b483619b4bda64d0922db871ae04c9ca69549f4812b2e17e1f465c89" } } @@ -6891,15 +6891,15 @@ }, "43bb5d1fec0dd25484222ab1ef9501d17f60d2e4855ac7772a74068bf02aada5": { "zh": { - "updatedAt": "2025-12-04T20:16:57.789Z", + "updatedAt": "2025-12-05T15:21:44.511Z", "postProcessHash": "8d42fee832d7ed55f6f025ee8df35d84f398a338da3de39dc863826c1460224f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.789Z", + "updatedAt": "2025-12-05T15:21:44.512Z", "postProcessHash": "93d86db03956f54342aeb553bab5923a6cc70e52247814abebbb2e6824ac96b4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.790Z", + "updatedAt": "2025-12-05T15:21:44.512Z", "postProcessHash": "d3344e54c37a79b9d1ab3113c9fe8cc618b3a45d5f521914f809158316f29692" } } @@ -6907,31 +6907,31 @@ "3cbdf684e4132d36432757c5b2479a68267eb108858510d7f118f4f80e1fe430": { "02a6cbb43f399b26f891350cfb238c12040d0543f4f79b9119f782c965160d27": { "jp": { - "updatedAt": "2025-12-04T20:16:57.815Z", - "postProcessHash": "76c4fc54d3d893c37b66c7f37483b442258488b5de800232c9276ab8b1a4e474" + "updatedAt": "2025-12-05T15:21:44.545Z", + "postProcessHash": "270f3de161a89ce697e70be10aecbe370161b0fa6fde450bd7e322716ce35b5a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.815Z", - "postProcessHash": "30d92aa07115634a7526165c576976d43183b1cce4d4deb4fc2f8bd522e08a24" + "updatedAt": "2025-12-05T15:21:44.545Z", + "postProcessHash": "b3a09d0400e20f8e9929e5919bcc4c496d18a99f7d992a9d82638f3b9ede0342" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.814Z", - "postProcessHash": "448ef3899ab73ac73e503b1bcbfac18a42b7369fa7d1d2f6bccfa9a4dfd47c97" + "updatedAt": "2025-12-05T15:21:44.544Z", + "postProcessHash": "934bac5ee9c127691a4e9d1b28fe9e35e90c788da6dc8bb4c61839bfa1368835" } } }, "4efac6c6f465c7a572c85feacf0f06b43a4e0c32c6c920019621529593011d4a": { "90716f5cd329825964992e1323d48a1be73c0b4afe6438deb2f5faa6947cb686": { "jp": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.533Z", "postProcessHash": "a530575675adf563e3e0cce3571720caa7650a7035bbff0a155d8d09c7c6ff85" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.532Z", "postProcessHash": "f45817debdf6cf37b18522a175833a519d18655dec56ff8ffce226e4699e3b87" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.533Z", "postProcessHash": "08cb609350f19c036029cef6cb794869fe77b00e04e195132af816ef05de1d08" } } @@ -6939,15 +6939,15 @@ "593efc50139609f8ecd70340a6cf0d42b4647499a51d8026ed014bda5df9c3be": { "d22863b43cc42cb50748f21dbf3ca52aa023402a9fd5fe4d478b8ad89b656234": { "jp": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "2ff863a106d738786b0e55e5128a630db8bed34a7afafc78f7b6a73308455c09" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.537Z", "postProcessHash": "e072ac9e851d7454bb8d1ef2a3f39c1ea52f9b4151f56d7488e438d6a53d9cee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.539Z", "postProcessHash": "1ad074691fc77a6a085e358797dad7efed1b0ddb505c2831791c0b2af3c64826" } } @@ -6955,15 +6955,15 @@ "64b5024b5182bfc45a505634c61271260ae40641e132a126b98fdb77fb6a7c95": { "4407c0820a47caebe5b1dfe9eff3d5de80d013db89f0925feb173cff9741369f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.826Z", + "updatedAt": "2025-12-05T15:21:44.558Z", "postProcessHash": "c3c2562ea2943f5a93b44f176a81ab3dbea3c23743680b1e15bb00d7f453a9c0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.829Z", + "updatedAt": "2025-12-05T15:21:44.561Z", "postProcessHash": "bd0737410ec88352ca0bf155d8df05bb59cd63c87aa398e2845f677a61c97017" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.828Z", + "updatedAt": "2025-12-05T15:21:44.560Z", "postProcessHash": "f3f3ecbd6680f78b0c452609257bd6126e4610fa7a6720bf90c3723e0fbb248b" } } @@ -6971,15 +6971,15 @@ "803a744763b2e971d43427be40f1173beef9290f8152a79e7047ef5f514f42d2": { "bc19380cbc2e01ee6357dbd1150e6424d9856ad286e39cddde352bb68470ab78": { "jp": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.537Z", "postProcessHash": "1849d0d085b7e5dee098aaaa5b952389e5688e44283574f41a11433fb9c7cde2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.540Z", "postProcessHash": "0c3ee1016d28d625247ceff477fe66ebeb4d51fd7c719b3ea166add1053cb1cf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.534Z", "postProcessHash": "89507f123626d2863e77d16dab2aadf8f4c61781e98f570d20c888ccee5e1904" } } @@ -6987,15 +6987,15 @@ "81b00d2254d3e49a8edabeaf9d9461d8fb19914c8abfef93d05c71270dbf3786": { "96a507a0b8ed5c5846b4d8f6ffced106a8f7d73ccb668fa851fed8b3be3dbee2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.532Z", "postProcessHash": "ea8a9e32c03b1e6147c121e09d92b3cfa27c68aaaa997722e8f1978e907e0fba" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.534Z", "postProcessHash": "0bd054c3b017005ea784d5584dd9d73be430ec8bc79df219820132415ef8fd77" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.532Z", "postProcessHash": "e0369bbe18f431323222995b88a2e73f31fac3250a69d6dc7c8aa1e98a5c768f" } } @@ -7003,15 +7003,15 @@ "81cc4a22f5345ef537b81bda612b5e1b5de5d2fb5b7d6563d33ccac4c53d47c0": { "2264f2a7ed8ccbf74a72e2d8d69d0a56cc35d7bce6b065e30464315bdeee546d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.829Z", + "updatedAt": "2025-12-05T15:21:44.561Z", "postProcessHash": "37fcca6fa4e5d0d7fa77ae3ce4e8b19c51f45a940f1280e5133f2185a8b8c7a4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "415e14807d345956b756c7f9a0d503d5a2513b34ce88fc309805971ff1de9443" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.804Z", + "updatedAt": "2025-12-05T15:21:44.529Z", "postProcessHash": "2181ca4c700be3b0793536fd24ac63c9197757e335acf8473574b31de5e47ed6" } } @@ -7019,15 +7019,15 @@ "9229ae8ebb059ce61a183f4129a3e0da801e0d4717a314a296909aa6035f7d9e": { "fea4e84293c545f2207f795fa4b98c049df1c2de4dd7351a04e3cfb8dc162c2a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.555Z", "postProcessHash": "db721945dd076c72ee725409aa33836bd3da5a529be828e140ed43cf1f3a8c52" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.557Z", "postProcessHash": "caf684af1e3f4cb28b6118b87ce0ccfc7e7636ff7368873f7d09d3eca6c5fe0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.558Z", "postProcessHash": "6dd0fa286083cabba9a7302c8fad068caa9d128665e6595fadcb31484fc4e079" } } @@ -7035,15 +7035,15 @@ "a9c6646ed9b12fe5c1578c74e0f8408353fc82448e8041b1c1d96f9c46e78dea": { "9cf8633b74ca4ae563d8b6514b6ee95e035b912752b8937b25e1ea6d00d6332e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "5e2d05795c43aff4941456417837b8a04a697fece8314b0d952444cd7d79e680" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.537Z", "postProcessHash": "217ec8ec61df156ec4679f1fefc782cb160913de8e5c3f0580055273fc6b5388" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.557Z", "postProcessHash": "4fc35b8d35ead9e83ae2eae75edec8bf13d335c957aa10b142422412699c81de" } } @@ -7051,15 +7051,15 @@ "b464890125efe481177f12e2f3c00a28cae107b65627ec59bb17ef93cf157e35": { "4a59992606ccfde9022f21ac63edbdf9bc3e1e8100eaeef04c372952f8c27195": { "jp": { - "updatedAt": "2025-12-04T20:16:57.829Z", + "updatedAt": "2025-12-05T15:21:44.562Z", "postProcessHash": "3f888647e63d4b0fa04c22fd4beb8fa943f074c8c6e0c8a97010075bfc04dd8b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.829Z", + "updatedAt": "2025-12-05T15:21:44.562Z", "postProcessHash": "97733c73027b8a36ee9bb9a623d88bb3ba214b0f9bc0a3a4e548c73eeb860de8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.829Z", + "updatedAt": "2025-12-05T15:21:44.562Z", "postProcessHash": "3c87d8117db775972f739762492df949e862f44170ba4f49a130af0fe8d6046b" } } @@ -7067,15 +7067,15 @@ "b676683ed68be73eb9635273495e9731122ee184bb63d7293df2bdf22ebad7d0": { "81117b826442551d1cf5856c822f3d1c75ce597cd1faec68ca4ca0233ff5b395": { "jp": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.542Z", "postProcessHash": "9fcdb907f3cb3af44d1ae3a2105dea85b5c296c22017281987c13e4598f4e55d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.541Z", "postProcessHash": "396dccdfcc6752b3f1c18d3dc9a25cc3169f80720bbf27f7190b41b89cacbeb0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.537Z", "postProcessHash": "4170df1337056f5883650514a04b43892495b76e81f27f201f48b677d8b7a72e" } } @@ -7083,15 +7083,15 @@ "ca8c63318081185dadfc8f0c999b2cbe8002743aa40d511bc0efe186e20e334d": { "d058a230016b4adc22efb36e3b3ae2fb018e4b84cf33b6862fd4f520d9e7d3c1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.538Z", "postProcessHash": "ae699f8adf60390f7ffc7c0c2b8a7737f6f0d6fe1304795799cfabbba14c88f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.790Z", + "updatedAt": "2025-12-05T15:21:44.512Z", "postProcessHash": "86bf82798d29c81f584988536503e3142d872ab02397d201bf70d72945eaa1ed" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.814Z", + "updatedAt": "2025-12-05T15:21:44.543Z", "postProcessHash": "fc769f280c04ec7e7a734902562930c304838c6a2dc8dce44c136c731442674e" } } @@ -7099,15 +7099,15 @@ "eb036cf7d16bf188b666a24b079c499f0e91022203931f813a7708c77c75046a": { "d269d0ef9030cc0accc4626f57a4a0fc9fa917b10cf282d13fa57388c6603e4e": { "ru": { - "updatedAt": "2025-12-04T20:16:57.804Z", + "updatedAt": "2025-12-05T15:21:44.530Z", "postProcessHash": "248827366b8ffa6cd7485b2faa44cbbc155d86ed59314b1d1aa67b0da1bedeb8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.533Z", "postProcessHash": "a959e3aa0c75d0d268a540bbcd529a36e36c1e3cc1f0a203580e3f0558749d91" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.809Z", + "updatedAt": "2025-12-05T15:21:44.536Z", "postProcessHash": "f8ceec422a170e15ba66107a18f0f032cf5f5099e129b8769bcbba2a08609c1b" } } @@ -7115,15 +7115,15 @@ "f63b4898f4bc0778b3cf11bb85aa91a674b602d4005b001e2977ffa70c3be27a": { "dd2ba17bbdc49a7afba06862b9e2f43e39bf834aefeb4fadb52775d8db69d988": { "jp": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.543Z", "postProcessHash": "901f6e9b827e2d23a38a538220a9c0b19a1d6ae3f0f813c5152f10613842fb56" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.814Z", + "updatedAt": "2025-12-05T15:21:44.543Z", "postProcessHash": "7dddd03d3660b3dbbd7c08f2f5a9a142ca47d66b145212136652fb09fbbabb9a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.814Z", + "updatedAt": "2025-12-05T15:21:44.544Z", "postProcessHash": "2f50eb01b965bd8aae23c9c0a585b631dc98d81caee6b43758a3b6b9e65eadc4" } } @@ -7131,15 +7131,15 @@ "0850d83ea9ff1a00088e3d64a210fcd073b48986df51234fb69582c6b7fb76d6": { "9a43156c05a1578fda8031ad1f1e9faf8e97b4816647d44bffd71e1f15c3647d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.827Z", + "updatedAt": "2025-12-05T15:21:44.560Z", "postProcessHash": "7d69ebf90c196c4c0ae51d7f5d8f129fb8600fd01592c70c6eb4a7e95e0c44b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.828Z", + "updatedAt": "2025-12-05T15:21:44.560Z", "postProcessHash": "3358257da327d34c84a48179192a067be14f8e6dd2085fa730600404bb825e14" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.824Z", + "updatedAt": "2025-12-05T15:21:44.556Z", "postProcessHash": "fc6b5f2a5fb9cc8e4ec25e7802c5c6ed5cc10eddf30ce7edfbbdca375d87dca1" } } @@ -7147,15 +7147,15 @@ "1bb238eff17ee95c127a21dd293881a980bb8f3b0aff1bdd7ecd004fafe3764b": { "d005d0fdfdc2a2469851a9a7d27374e5fcf68c97518463c6aec7498e165ace83": { "jp": { - "updatedAt": "2025-12-04T20:16:57.824Z", + "updatedAt": "2025-12-05T15:21:44.555Z", "postProcessHash": "40ddb76e47e82d9610b0b1bd5dad9aa8ee5f9e032fc01b25ea84f368fa4c3b2a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.804Z", + "updatedAt": "2025-12-05T15:21:44.529Z", "postProcessHash": "0f84d35dea04bacd65be6c5675c8f2220109b80e1a02d2f37a60aa18179a94d7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.804Z", + "updatedAt": "2025-12-05T15:21:44.529Z", "postProcessHash": "5adc0206edc029f7788bac1296f29205936d1f1a133e1b8294f0cef7bd9b32a3" } } @@ -7163,15 +7163,15 @@ "23d2246026762ae3494ced9af104cea91f1482d8c7dae1149b7bfa3441618283": { "0e016f2ab261e197b48540cb3d3091ab6d3af62d1c883dcd3281cb2e578a1bfa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.554Z", "postProcessHash": "de013d4f8ca12b69dd2dea0c22148d2cf20ed2d30faa67df1533a74e3e9af571" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.824Z", + "updatedAt": "2025-12-05T15:21:44.556Z", "postProcessHash": "633e784e81fd73025bbebf829798f4e39177b4f98845f099761a0443c55b52e1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.555Z", "postProcessHash": "6dd74d93c5b6e48dd54b3a2e8482061d7ea5f0517523311d04de6b46c9aeeed7" } } @@ -7179,15 +7179,15 @@ "29f7d7e079a392736f8e8414574847d7fc12094c29074c197529b77eafd97a46": { "ee468e104feb8b3c7b0aa6d6f466b62ccd0c40d76c88efce2ee623e95b1737ef": { "jp": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.554Z", "postProcessHash": "ba39f1e1196b566b55aa060578667b58ff01ccbef8dc2865f88c196930a87768" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.540Z", "postProcessHash": "37b86aa7ef9ae71573bb9f29bbaa1286b4a487fda93a53d189c05b49ce7657d2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.812Z", + "updatedAt": "2025-12-05T15:21:44.541Z", "postProcessHash": "5949d8f4c68ded9b2c74cd7de9a57e1231514b97df3e6f371ff6f3b41c72512b" } } @@ -7195,15 +7195,15 @@ "3096aa4bb7832bb2f54010d3c5b6a248f9ebf6a366fb879f82c0eab244f815ae": { "fa532e7e71ef2e3585f03d9f864f4c524338db82a3098d4d46e1abc74f06c4fa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.557Z", "postProcessHash": "95e996fa7d7ad229042d2dbfc6aac7a53e026a506b3836bebca96892118eed86" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.824Z", + "updatedAt": "2025-12-05T15:21:44.556Z", "postProcessHash": "cd353730494bac53336fb437c98d8b698c53f483c7e59ed8775dbd1e069e46f2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.554Z", "postProcessHash": "bd63efbd88155f701ff4607fcef206ac92f29656a73cffd03a8a51989d27b564" } } @@ -7211,15 +7211,15 @@ "3f380b9290fe7c7d901aac0cb526ca3d522c42c21bc64b85c2e00fbdc953e794": { "e0c1c8cc04e2a4ba817680c61c7923693919ed48ab52a53f3ddf5094909767fb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.555Z", "postProcessHash": "034b9ed035e57206a0f3f5f02fb9cc7c412f759f8abf6c14c3aee969080fed2e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "d770e5fce3e42407482ac763427254bfc7e534356f42200e6b566bbbf6dd1698" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.554Z", "postProcessHash": "b9f75d94f1c7feb3a942e10c2e9e7cd102a0529dba3d524dc150265f896260ea" } } @@ -7227,15 +7227,15 @@ "492356529ca75008f683673b06635e91f3cb2d7f1097826262a7957c6cd78136": { "ea6eed1ae135ae1362375bc54a6abf4d9bda82f9cd56e95b97e329d6dfceb889": { "jp": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.535Z", "postProcessHash": "47f46c611e32146b063b051a7e99ae05c53ac308dd834473ac9a101d9c628e99" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.534Z", "postProcessHash": "d1c53671e7bc184e3a2d90ef304de2f0dbb12dbb3485c2114925d51b9e4b33ba" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.810Z", + "updatedAt": "2025-12-05T15:21:44.539Z", "postProcessHash": "b22cf8cede992225f6f5aee94367aaa34e88d0b045f80653340b25306eb74442" } } @@ -7243,15 +7243,15 @@ "576c74bc00a8723ea19c093ffe6b3a472b9236e8f3bfcb0b95955083f9cadb86": { "351824c23a3d30665651f9a8eb9f4b521f17129ca1d202c38cbde960046a5d97": { "jp": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "5c2f77e55745f08f6d991accb5736498ec4fb0717c231d6e86f28fb173350395" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.551Z", "postProcessHash": "faf16c6b6203c24ae4989f9f8b5cf1b59902ef35939886f246c468adcd9c4c66" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.551Z", "postProcessHash": "483c5516febe66c27aad2d3a3d0129fbcea8edb0d7eb74d9c903496ff4ee64c5" } } @@ -7259,15 +7259,15 @@ "57e03de44d901875fb5eb2401640aba105efc70cc184f0f23ff04489b548b151": { "3f8e85fe2d0ca94113aa748a9047c9553cec059c087362ec30bf90a68567a495": { "jp": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.532Z", "postProcessHash": "84e0ea61d4fd004367dd7fd023867512e437a20e748a921a0dbba0f4886d67a1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "c5c28b58ef6bd96ade4670216e61d3055aac54f1b1e3e582e9e29f2dbe6942e5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "2b2c84889ebacfe1fc673351faf9b5913206af8992033fde6fed2c6de698723d" } } @@ -7275,15 +7275,15 @@ "82d75c46385806468ea3f9bb89ec325a34f8717e9925511cf3f746c6793c4178": { "56b23f6722a4743f7d9412ba74c3c4701d0fd1018ab3474c5dceb16bef9ca1c1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "0c722f38b166dfee4767f5b6d80b515ef1add5b4d5e5c7f45ba128b2f398f74a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "6cf7ae547770625189ff4c711ee46f5e292917f66b7c1db1f9a16efe23e3fd5e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "1db2c34d5b2c9dc94aef1fb9cd059c1ae1cc613891c8fea69eff0e57e8918315" } } @@ -7291,15 +7291,15 @@ "835fedb5cc4f200a51753e009ebccb9c5c2703128ecfce3dc53168f68570dd22": { "24e239e6ee1d39ee0ec39c0ebaf4dff703bef48fabe9d4ad32d9fcb51008866a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.530Z", "postProcessHash": "29d7d4ae6d00c0ab35168f729bbc94db2248085ad8ecc172dc169c906d7aea5a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "675813b7bcb03e4db418ba19c673fa4efcb2f2f475538809eddc09237bc5c01b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "e054de8a63560fb65c2e7fcb7053e3c9a676ecc2dec75219f4e60c91dc0f8b0d" } } @@ -7307,15 +7307,15 @@ "a218ff0160f1afb6fd940e4797a2159d55a8dbac410f179f5727b567999eaebf": { "aad6f9838da5dc15d37d5f9d16b53754eb0d3ff68a7cf73064f05eaa3669c05b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "a9ea1c82cb9bccf14ed8b21c0ba0d5c8f90c24fd814aa3666f6051b1ede44784" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.552Z", "postProcessHash": "71e8564b7a04093161ba33e1dc2eeb34832a84e319f4cdbd834a3a0792fa492a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "df677fb973776083da15b2bae773829585c8e9544e866e7583404b83d5048e5e" } } @@ -7323,15 +7323,15 @@ "a47af53023e5932aef2db5b77a0ef7cd04c45474a2fe93ea211914667b44e5ec": { "4ff7d90419a50527c3757c649b6725b0da711648246268bc520c1dae8ad9ef97": { "jp": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.555Z", "postProcessHash": "75d1109fc9cfa1b73f1363abfb7a5802697dc1433c36e6d6202c04e483ef0975" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "517c9ac5758f86ebfedff4e688965240148ba4a33a098cd77723485229b62ac1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.551Z", "postProcessHash": "068fc1a3aec4ef27f5c475879dba4a938df2c3ddd29d92c8816a9956db8c964c" } } @@ -7339,15 +7339,15 @@ "ab35a5ab8729c47c7175e9c6cc67e42aba43c58b1e1f2c291dcda4c3977b06bd": { "02d5a608d6ee630f001b827a8fa1c5cad477766220949ac58c83c9ea965c69c2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.554Z", "postProcessHash": "0e81313e1c0f3f626afbd2fa279669dc19d3780f6504738d5755bc21350b0931" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.557Z", "postProcessHash": "f1a89204176eccc01737ec656ec0e00ec0df9c43d0d68e34799da8da89a4d15b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.552Z", "postProcessHash": "dfcc2755db6c33b506df5df7aac7794ac31e06de0b7bb93ce05673d7b7ce9161" } } @@ -7355,15 +7355,15 @@ "cd604eef1633b62d027e3e7d70856d9553f233ca6e0180381c2120985643a86d": { "e37d6318a1605b8e2ec28a6a7b49ca74444391f022f98dec4ac9cf1024c821ed": { "jp": { - "updatedAt": "2025-12-04T20:16:57.824Z", + "updatedAt": "2025-12-05T15:21:44.556Z", "postProcessHash": "62faaff4c984727f67c4ab6c83661b4ef8e9def27a79b627f522012e2da228ce" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.557Z", "postProcessHash": "9929b05497285247412e109396e4d54da0986b005a4f88dde4716550dd61579a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.823Z", + "updatedAt": "2025-12-05T15:21:44.555Z", "postProcessHash": "4f50e8db171c009360ebf4bb380b2c1b8a5d659a005793dfb08e17ee17a56aa9" } } @@ -7371,15 +7371,15 @@ "cfd6efb64f516235ee2ecb43e9da90a4a4f49b69cd47dbfe06c9e1586fb606bd": { "dc206b93eb4f37283d194fc3cd04163bee67e631f232560183ec516accced4b0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.828Z", + "updatedAt": "2025-12-05T15:21:44.561Z", "postProcessHash": "0e9024ce0229e303bf791bf1ea8a090edf82d926f01815cbac846000236178bc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.531Z", "postProcessHash": "5f8e52765be279706e3ff3d3b7ee2d9cf59a7b604218491346cefc11d1adc36c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.827Z", + "updatedAt": "2025-12-05T15:21:44.560Z", "postProcessHash": "25623d0e671c3c24282497703fd7e6ddcc5e27601b4d20662a26e958d8bea571" } } @@ -7387,15 +7387,15 @@ "daf8b3e4dde89158cbc831962f60de0ec14cecabcbd44a418f78eb071c12b0c4": { "436bd3437c6e83fc88999652218e47ef4afe3bd262aa9052fd9fbf8900aa176f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.539Z", "postProcessHash": "f89763be70e530d88318512773aaa3a63e8cfd3bbd776e7638f3a88694f5a774" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.808Z", + "updatedAt": "2025-12-05T15:21:44.535Z", "postProcessHash": "effa2ac764ea8fd6d51144743b787e4f72c4f6ba9be2abfa7a5d81f8469aa70d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.807Z", + "updatedAt": "2025-12-05T15:21:44.534Z", "postProcessHash": "75440acf4ce7ec49bc4e4d50b86b7c27c932f7c15e7dfc59fef4e6738421ca14" } } @@ -7403,15 +7403,15 @@ "df45da7290d6edcd7b6391995f5058013634a6732cc0faaa6bd01d42b9804678": { "b184369e5f189b858945955301721885510add73fe070525f5c066569add5a01": { "jp": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.551Z", "postProcessHash": "4fc25542d773c3e8e6a87b485d1e5e66b11fc14704efb6b9df440880381894bc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.552Z", "postProcessHash": "da65249b659065a39862d8194ed89186500eb5355fcc5b3270132db04da72ddb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.551Z", "postProcessHash": "ce87a037fcd3cbf50049df567b5c60d071905f8ee1edd1ec1ff96635b48f24c4" } } @@ -7419,15 +7419,15 @@ "e303e41ebcb2d5160248ecceb8943f82399ebc3323390c33a1d6a724c28354fd": { "28a231f853bc9e6425c97ca1c14dcd50898db661a90b51a9e9ef2aaf5c7c2f43": { "jp": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "7dcfa70c80e70d78a9f25052fac77bcb74b4173796a6db3e37b34d7ec0735f2c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.813Z", + "updatedAt": "2025-12-05T15:21:44.542Z", "postProcessHash": "fd093a380e67a6a7a163d3cbaec15bb33f3ed3db815b21d009d31a5b3281b98e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.811Z", + "updatedAt": "2025-12-05T15:21:44.540Z", "postProcessHash": "a4a7f94bfc88648400f0cad49bf80d6a58e589301666f5e73a836da0db30f80c" } } @@ -7435,15 +7435,15 @@ "f1754d0c92d25ed65027ccc750febdcca2e7101c72a0eece6697b959d9971621": { "d2cbc57bddda71b0ca36a00fdc52702ffaecf753190fb6095d4a92fca38701f1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.804Z", + "updatedAt": "2025-12-05T15:21:44.529Z", "postProcessHash": "8fe51ce28fd7b63c809f0c85fe65f2c9a918f7e5218c8c113cfd32c29f7b7797" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.825Z", + "updatedAt": "2025-12-05T15:21:44.558Z", "postProcessHash": "cdc116f2781ce49a5beb20c7096091a53044bc9df24df147f3efed636357025e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.828Z", + "updatedAt": "2025-12-05T15:21:44.561Z", "postProcessHash": "3e1d0c8a4d52dcc2fa28c7fba4adbcf2d1fa2e18d8ff985a42661d35a2ea26c3" } } @@ -7451,15 +7451,15 @@ "ff2e4c3baefa9017265684effd06b1ae64d9d7d79efa83110c92a11de95d2c62": { "7e68dd457179debb6b3b8c9690002e92f3cfcc5539913ccfbd1d0632617d6548": { "jp": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.532Z", "postProcessHash": "670638f0db36abcc26e40752d17cd0fc06808867b51d7c21268141107c12ba75" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.533Z", "postProcessHash": "7b1ab48913e7836765f80eb6197b420128724839e375281c593a06ec4e41adbe" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.806Z", + "updatedAt": "2025-12-05T15:21:44.533Z", "postProcessHash": "98fdc5cc9cf4cd68d69372c9e94b2e1bb9f7450a4d7b170ab1e2ce56400caf18" } } @@ -7467,15 +7467,15 @@ "10b704f16a650f1802b52736d2c823bd454d8b3dabb76ac91bdcc408b62420cb": { "2d4e7acb59df283f228e25658e527a973db16f341efce41e1ce84944cffa1fae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "ec5a388a9a1019eebe54bcfa4362a37332e3118d38e5e531aad97124e7b363c2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.574Z", "postProcessHash": "e357ad302cc375a5de742a47c67c9a544efba2a5cb5ef04024094598cabe6cd1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "b2ebf45cdc5c0448b913c2d846fe223ef444bf10eb3d63a8ea326e1e4f9917c4" } } @@ -7483,15 +7483,15 @@ "1e8eecebd2a4e411fc3037074c79ba054debc70b7a76bf53100577ec14359aee": { "5e448cd743d25dd9d490161805e048c3c2f4696c9f46b52a466a1bba220a5eae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "067c9037555a589aae2754e4d4d2945c352e03ce2eecc76d470b4cf05ac2a174" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.569Z", "postProcessHash": "c4ec7224a06aa1c3a774c04b82dd773327b92cf3266dfbabf213510ef92edc9e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "2f03f5e9859788c62eff0d8e7cc79cd12d1b5904eff0df739a65aa785b7dd1d5" } } @@ -7499,15 +7499,15 @@ "3e8e050e4d3fc2dc532df4dd8556aae0bea35f5ab73c2aade8efe957930a412a": { "e8f4b7568afc6590d5203c133ee8873acbea759acf50b34794af4e2cd6b43ad1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "26fcdf44abcb4ff5dca61fbc132863181fb5f33b8572c7f112bbabe38ab93590" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "08b2f1347140478e1a3c2c8cf97de527be30d258e273c19b210fdfb517d932ac" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.569Z", "postProcessHash": "b51fac697a79212d4e245ae4680e4347503944d65a611c3e01a9d45ea323b09f" } } @@ -7515,15 +7515,15 @@ "47bec243b816f1aff8d7f27262d59edcdc28cb3ec78a655071e9178290bb0578": { "880617a38544a545b4906c62f9009009c13a7ff3ccc2a60fe2e475bb26b6f55c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "b8734adeb424423881ca71a7522caec8fc46f242cb824c950b259474b686f36c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "ff8f8b3cc5a0a4f5e8fcd2ebceaab1481082f6868bd2d2cf699989a65221eb98" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "5facfb97e8ad27ef14877a9bdb2ae2422a9cd04ec48af2b5a60aeb2b7e0cdd55" } } @@ -7531,15 +7531,15 @@ "48ff5e21581a18794244e74d86a13a93c0401d4d23c46f267ead336c36e91cce": { "42db135883af584da69bdb891c2f149df97603eb1cabc3853355aeccb9eef199": { "zh": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.574Z", "postProcessHash": "e4f5bf58628c842da49578fb49824877dcad388e8b9e3da0ac3f365ea73c5933" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "2ae090a569bd03ad7ccbc3f9ba3d06e6bbe9c035529a2743caebdbb375954606" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "949cdd4353ae80c9bf1c3538594afe6f48c2f268ba969c369f1b7e61b5356ba7" } } @@ -7547,15 +7547,15 @@ "4b0ee48c4cbb9020c49cc55e309e9d7f69e89a9ed3a55e9c47bc013ae4ef6d56": { "2ed3bcd79fd5d4e72d74ac905059dc5e77bee95124595bde24fabd5f207ff65d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "2a726d7c5191145fd8dfb2770956b646271368f9f3863b1ac31a030ed9222c43" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "d15b845bdc5c9b6926f7d8d538bc67f315048a8c2c6b294bb97f9a2f60449ff7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "26e9e5adcb4e725dcf04c98f07e8a1974512d7eb462e2f98546dcc5cbee063d2" } } @@ -7563,15 +7563,15 @@ "58026ac4a257b8fe268cb77f7d9da3eab8cee812a5e1d5152bab8b3250885ea9": { "75ab9ab8699432a23f95f427a4d59951ffca9690508f2d181e017be2846fba14": { "jp": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.569Z", "postProcessHash": "a40fbf0ca91f87e2703d439f2cfe716b76265b771d6ff4c96d65fda3890349eb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "3b7701fd6912750b27d3a3227ee0167937c1b453014a0fe5966521e86de235fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "0148b882b720db288b5e8f56c98a469e4918505cab8f844f690e4708ba019919" } } @@ -7579,15 +7579,15 @@ "5879b7ee9c3de048a317f9526d9961edba8038230a7d5244320ca051c3377577": { "0a90ec2dd8b2f3498aaafcb347dfa3cda2f9f6da12d64b79f5d5404b53325b70": { "jp": { - "updatedAt": "2025-12-04T20:16:57.828Z", + "updatedAt": "2025-12-05T15:21:44.561Z", "postProcessHash": "fc0cca9610a48e22430985f36838ba2a2be0ec4fa6e3d01beaa783fc98f625e2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.826Z", + "updatedAt": "2025-12-05T15:21:44.558Z", "postProcessHash": "adf11be6a82f43988148ce7fba598460e6dd07972bad2fa5216d33d5418fce78" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.826Z", + "updatedAt": "2025-12-05T15:21:44.558Z", "postProcessHash": "327490e0e16a9e73e955ecb7ee16d45f23f4e79895bb9c2c16aefbcf261c12dd" } } @@ -7595,15 +7595,15 @@ "6381d5f736372e0e12418c5b0941665dfa5912b8121475ef968a4b5174f7afda": { "ca830a516bc4a6a4064bd19e68294d34a903114ae0c72112077306844ab37161": { "jp": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "d6bcafe292aace49e709b9d6e06fbeddabdae5b658cbff05351edda634d94b31" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "63c59dfe378147d0e7e475aaba4fce312ab0c8f2c0762bf6f80bc5d0556d129c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.547Z", "postProcessHash": "2aa6e46d71d25e8e0b3c4838c5d454bbc854031d89d307a3956155a1af049a95" } } @@ -7611,15 +7611,15 @@ "6391f6957c5f75a61373810ad0f0c8f36e0c6ab5b4e5a0f3c373ec2ec25c7f10": { "70a6df8beb04de853a1e2f9d42065e9eafda493219744deb6b08634115f9a498": { "jp": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "f93083cfe7d983e4958818138035052e14445b13a21a105193c9ce76133f6946" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "95b875741bc695b9cc0c7e9c45a4e61f6dd8eb626630fba5c597ad5e5a86c062" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.569Z", "postProcessHash": "2d4cacc8f6d3fe525f0028583c5c45c596362142e1d919868fd5a97db2cf3e93" } } @@ -7627,15 +7627,15 @@ "65aa83e28c6b450bc0daadd14828a7677fb27a998ea9f59faacc7187462718e2": { "3c0cab0fe63f1d762905d3d204e44dff7666b23009b55e1447c9939e7032e82c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.828Z", + "updatedAt": "2025-12-05T15:21:44.561Z", "postProcessHash": "a72aaaacb836268ddaf282e21d0947d1131493dd98efc0f6f548d86517733b18" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.827Z", + "updatedAt": "2025-12-05T15:21:44.559Z", "postProcessHash": "d39b02e59a6961396019b601f4605be7b9ffd562206db0628317c9219d0b6fa8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.805Z", + "updatedAt": "2025-12-05T15:21:44.531Z", "postProcessHash": "635f3d5f0352a5088770352f2fb1eeb2f51d9a5d4d0796752b6c7430673d3658" } } @@ -7643,15 +7643,15 @@ "70c04f43190f497d5a2f8677cdc4ca3f609afb464cf98a219e9b600b7d989cf6": { "59c021fe8605f9f4ff5a62d7b51c4f5a7a05acc380d02368ad906c909dd5fa17": { "jp": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "19bda45cea88ea318f6a214db431ab42c076830fe125ec15f6993508e5f7c856" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "cdcf95bf8179c11d24c6ab57f00d681901ee2010fa6d73548b9e22c45ae656d3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.822Z", + "updatedAt": "2025-12-05T15:21:44.553Z", "postProcessHash": "f896dd90f255977f242c6f50f21867c2b782b2f12be0cde2bbc7504d1ffecec2" } } @@ -7659,15 +7659,15 @@ "7ce6270ebd8e598a5ae3c7e63c99571a865d9289e493233222d36600b8ce255b": { "56a7fab051640f56124193c10c43bab0f0b30eb6b3b43860f813e4335dc69d61": { "jp": { - "updatedAt": "2025-12-04T20:16:57.827Z", + "updatedAt": "2025-12-05T15:21:44.559Z", "postProcessHash": "b1214e4ed0daa0331b4992abd122ab53f4dffca0be63a120bee17e6b9b4b780d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.826Z", + "updatedAt": "2025-12-05T15:21:44.559Z", "postProcessHash": "44e0bd8228616bc81a461e2592cc02182a8c4967fcb941ef3b1c6d056990f5aa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.551Z", "postProcessHash": "72a8a886424ff10f3bd54b7b2cc37f433818448b40ae212c19dc85e97a870bbc" } } @@ -7675,15 +7675,15 @@ "9c1e3cb41e28946be991ff74f6b0fea3622f21ccd94c4e6553aa990de1a4f6b3": { "8fec74d1546ec055cc9bbebd756641fa7e4a28ffd600d29eaf8d88dcf521d25a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "4092e6083bc9a38392e5526f5899d286d3825436aa951396b1b837286e147af0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "9a43e4279d456a9f474335be7b6be73c830efa0a7950104cc53ca16e2b1d0b9e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.547Z", "postProcessHash": "85212af18b894e6d1ed5de84b9f992aa9243e19668d8eb029cabc206ee8e8bfb" } } @@ -7691,15 +7691,15 @@ "a82c339e6ec19dbf4bf88470d923d48a3cc71cf65c7bae8180edcebcbdffedf7": { "82e1205914218a950a532221e194e1c9da469a4477d36097b83d2a9c2fab0a25": { "jp": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "2caa3c15e8e361a2bf4ef0ded4ddf1a1907e4f489d0be35848ab749d83ada28e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "3baeb332d51470db6349cabf483f54a909081cf0be7c0b4902d3bd3f2337908f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.549Z", "postProcessHash": "32fe8184cbb4c3c0f151d03a771285778215b54c64be643ffb9f3e691a094086" } } @@ -7707,15 +7707,15 @@ "ab7133a925d3667ab21eedcaa7493b04d2a7453fa0b3dd6c1545ec18333f6c93": { "3cd87edf3b014d3bf39e15bb926affe5a7484f6efe0143fd80de32aa3bf31d8a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "693ffd2b556c6592712d04045aaeff85126a4a6801a8eb0e61ede5c041d4cb2a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "b40a4f317adb1b2f90e5954fce0afdf284d8d368241d4ae7cdf4dc38aac12fb6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.818Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "c04102c60ea4c4729cca3f1eecb0a8e340ec8699ecab28f3d6b8eb8be0e0a04f" } } @@ -7723,15 +7723,15 @@ "abe38b651cd9f44a9de790429c92f0c07d5d279e5dae34af1329f362738d3a6a": { "0700f00685f173628dfa175ef2fa960a245c5094b60de40155456bae0cf0bece": { "jp": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "0b1c17f95bbfe2fc00f19e3d6a88cda33ed6166a6a8ff707cf6ed09902f8a2f2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "18b6fdbc507a326e594eea7c54d3b8c6d209fda9ba841699c465ac1f3d96cccf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "440d8a4a07590b06106c27b61eab79600d31c82795448b584452b4099de8ed50" } } @@ -7739,15 +7739,15 @@ "b0af6145fc6e254fe1ec86adc9d2e005a2c78ca57a92cfbbcb204f22d2b0b206": { "ae6b07939de76cbcba1cb55d37c6d5d3944edcd60cd443a0ae6aad40a42ce5ae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.547Z", "postProcessHash": "04c3e9ffc178e33ceee00252604edd871a30da1e7c972c86659e60f1a3f4fa7c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "af2ed936e67732758da49f156f53eee218a24f90349f8102923fe0b992e56788" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.819Z", + "updatedAt": "2025-12-05T15:21:44.550Z", "postProcessHash": "37cd7772aaef74a9505377ecb3857f3868e49bd090167703d69bda624ab68866" } } @@ -7755,15 +7755,15 @@ "ced28404e4ce6c34312f58e0fa21dc44dc32726f8881c1adb6ed189087c1b289": { "946529a7ef15a484b25d74b9a9f179b04a186b82780a2ea1059020ee8785a2e4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.552Z", "postProcessHash": "908fffad4e6a30e48d2c3ca0814549cbfec99d6e478d2a9011a891d0286277b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.820Z", + "updatedAt": "2025-12-05T15:21:44.552Z", "postProcessHash": "2afec09a3065d848d506e29de76656f02acbb3e3db1d88712a9c1e6e795dccaa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.821Z", + "updatedAt": "2025-12-05T15:21:44.552Z", "postProcessHash": "b2076b1f65034c86c05c85790e2096f9eab1754783a69b11727bc1765286ae3f" } } @@ -7771,15 +7771,15 @@ "dd5f0d309844443578b1e477b78c685d87f106d689eab41fab33f12709affeef": { "d85b73cbceb154602514bc5dd5ccb07827a65d84bacf59d65c5ddc95c14947c5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.842Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "6cdc869bd01efb1e22a34cf1fe454486875574c6a5039c0a12ab6eec29112fc1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "b5d6cbbef3f4a762cbda9f0e244fd2790a2cae46ae927cba7f02bd29ee70a9a7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.842Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "ba5e103e708d614f7daec7ae50494fbd1ec55d7ee2f87cb0a81a61722fb8c4de" } } @@ -7787,15 +7787,15 @@ "e03641b78328c61b637195e74814fe2a13a4f8b55b01fc7b32ac725dd77f1098": { "d7e329d38854c95abf0c4ec667157d6c9e812a6ee76245d01dba66336ccd0ee2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "8db18d88a5218de2f298fae5c7bd37b7d0f1e340c9d67d14068e0ed22eb24e5c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.548Z", "postProcessHash": "e9f407b390581178141036ed7eaade9d9b5a4890f9a9889a9afe91696f7f570d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.569Z", "postProcessHash": "54394a69a77b3ddc3f45bbc279725575f72e2a8c094013e4d835f12fae23f3c4" } } @@ -7803,15 +7803,15 @@ "e1f66fca49c6ff453d4e8a35fdefe650bc1596acc41c176c3c186db3c6b32dcf": { "a953eb312c126bbe30b57606749cd07b7c2b0214177b48b7f6c98c70a8a245ab": { "jp": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "d1291f80b57d183dee13751337046e3b67b98db7f91ebe3936192c971024b50c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "7c23bde16b3be1b47398a0f22a36c4f9faee797260051b8f7bda022de73f5c56" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.574Z", "postProcessHash": "243056d8d550192c5f744a2a1443c15c74ecc6db02b6a823e1bf13b97f4eccac" } } @@ -7819,15 +7819,15 @@ "028aa3b50c80d12c1dff7886165e9713acd5da0e4c292ec8d74a396e6acb2825": { "1ba8e423cea5af1505e244428a4e315c1ec5b32bcf1289058189844c5da6dc2c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "1dc546cf019aa54cafef2f026aacaba4e919710066d77e70553828a4cb4b6599" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.838Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "52bfc9ffc4cc464436115db8d899d596e78b2225b56503d730b1c60ebeed4d16" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "0f1238f6dc917b0b31d83c0c5161200b664d3f21c661f6eb5013940aac3abb97" } } @@ -7835,15 +7835,15 @@ "0ae49380ec7f5d307e31d7b631f7f0bf275d679b03f17eb67c5359b37b5242f5": { "f8739620d7524e796b898c8c185a92bf25c2ecbf9cc3893754ede05bce45736b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.843Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "8ebf4365b33ce841e5b1f9ca49a4dda5927bb8f7c63e6f1c1773e3487a8f33ee" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.547Z", "postProcessHash": "525ef6ab46fe1e22493861f8be1a9b879731dfab81b51019d716baf63aeca1e9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.816Z", + "updatedAt": "2025-12-05T15:21:44.546Z", "postProcessHash": "b0fb2a22a9181d90154b1f93dcc49226a2da664f92cde24cad39544d8cb83330" } } @@ -7851,15 +7851,15 @@ "15fced5932ede7e35f56539b143eb9b8d0d01a97412450e147ef43084abe420c": { "ec90df838c140604af32f15594fffcd4af40335ecac6a833f13e0158156b0cbc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.574Z", "postProcessHash": "797aa66fa55398cf84a49805d5c84894fd0f93e29214b8e9cc46fa79cfb29d12" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.836Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "66ded0a2c4647ff3b715e79fd87df9f658827b2b9aaf7da37675a486fead569c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "82f962d4df3eecd726b8d00ee3924b1a666aaf27f6cb5a2138e48dea4f5f50b4" } } @@ -7867,15 +7867,15 @@ "16db9b76d16ef49e77f68158117027a4829a5968943ae93a509257b7c447f23b": { "04685109a89dab0b5bb34aa000e61426caa176d6790eefce0141144402762ae5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "3aa18332b4a56316ffafc563dcfdb3c345a240171708860e261c2a79788d4761" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "a9866a0e023d0994af53532dd9d69b6f24aac826ef76aa0e6c4373fa115f0c7d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "25e891ff56541fcac7400581db3bc58813cbb2600f517cd24b0ccd102589734f" } } @@ -7883,15 +7883,15 @@ "23eb3656e923d758ff491460d9d1bbec7009131392de09276848be0db41fd269": { "3625b1be463613c8fb56424fd4d91f2d85ae950ebd8adce02c7683e4fd11be26": { "jp": { - "updatedAt": "2025-12-04T20:16:57.842Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "9a9204413e431de603ca51b5d454cbac824143dcc61f7ef1b9630a45127cfc44" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.842Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "46c4b6b233b61d9e359449770bd38bce8932e6d461a5122d892f61ae8af29751" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "46842ab88b260ac933fb10cae9c98c723d1e91e6b557d5d18e17ba6f8d24a9f1" } } @@ -7899,15 +7899,15 @@ "2f2ef25f504a5d8ae76cc6b6b38d72e25aa06fb601145bf8c4555defd3b22c9c": { "3045e21be62572632384525c8e68ac94c74ae489c9d3787b9b86c295740ce2e0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.832Z", + "updatedAt": "2025-12-05T15:21:44.565Z", "postProcessHash": "2a41f968fde03f86b608add131e0a268e01cf72e24feb92a075445cc584bbef4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.856Z", + "updatedAt": "2025-12-05T15:21:44.624Z", "postProcessHash": "f3778954fa3dd24ba49a88880689a4877ceb35c67c20af208ce66bad79dfb266" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.563Z", "postProcessHash": "a1220828e984a7844acc83f320b8edbabf7528a5eef95a89acaa487cf2aac575" } } @@ -7915,15 +7915,15 @@ "30adceead0e8f58341843c20ba7a1cfc58638b613d0457a74d610123f740dbae": { "e6bcf77b5129d316d4e7eeba39c108e94d974c9844395d380a2ef4f6b5f57283": { "jp": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "6e85204fde0f00f0749a40dc846cacb681fc8609b8ec314623d47b8feaa0581e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "02e5291007f6b55b99e18f619f7a8218ca50fbdcf98e60b88eced5e6bb543488" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "adc71062acad530bb66571cb5e117135da00f9d0ad0b62c8373835be3a1abf24" } } @@ -7931,15 +7931,15 @@ "32d271131b76c30bee10004cc36afd1cc48e48b098944d731a875840a3e1520b": { "483a6ba5cfe7e35e8bd7361dfddd53f126ccf034f9f7e6b101dfc108419b0192": { "jp": { - "updatedAt": "2025-12-04T20:16:57.857Z", + "updatedAt": "2025-12-05T15:21:44.625Z", "postProcessHash": "833a9c51d11609a18d659e163cb8582e7f4eef0ee53d3aaa558906da3174e4cd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.856Z", + "updatedAt": "2025-12-05T15:21:44.625Z", "postProcessHash": "7cc743ca97871391aa370332524b3244ce1bbcd767689f566c76b15fa979923f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.563Z", "postProcessHash": "719fc23da0294be92fd199c239a16acbb21c3b0254928f58ad6d8dfabbd3525a" } } @@ -7947,15 +7947,15 @@ "384bbc8a5c6f8f4fd3947610412c719d2877f712b2afbd35874807dc5bf37b5d": { "56a53674a355d521b64bc7d05698ba4051acdbeaca6a3c46a2fda8b450c719e9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.816Z", + "updatedAt": "2025-12-05T15:21:44.546Z", "postProcessHash": "6ab23281dd6bf07489b397eb2efc86141ffab20de0d7aab6b40c9f387bf669f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.856Z", + "updatedAt": "2025-12-05T15:21:44.624Z", "postProcessHash": "e72433aa6643fb7640b533e1b45179d129b3bcb371ce68dd11c9c07183f323c9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "c1c510663369b56818fd7c6f4dd46321e8fbdf804476964d30e1ae10a6ab7505" } } @@ -7963,15 +7963,15 @@ "50e45c22e7e591fcbe4d61812d7d7a9d9626a7f94961516e9f2b08e27d3c36ca": { "4159f227f4e6ff08833e89755d03d3cec73f09d3e9171623e581edcd063d2833": { "jp": { - "updatedAt": "2025-12-04T20:16:57.815Z", + "updatedAt": "2025-12-05T15:21:44.545Z", "postProcessHash": "daeea312ef47ea56cf97d61a50f6675edb0a5e03d42a588be832bf722f519bd2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.574Z", "postProcessHash": "747cb3fa4a8d9767a17f5127e46bdc89bc3c72607a21c44380ae1c5c62b73c30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "00c681ad796b7676775ed4653a1eb5c093fedeeae9b99345992a6026a2771a6c" } } @@ -7979,15 +7979,15 @@ "8b151a1a26b18205c264eb291e0e0442ddc0a8d5f8b81948e11a1cdd09758259": { "10f61a5bfa1bfc18d47b09dfd27319b441a25e084aea415d11bbbcb64e2a6c0c": { "ru": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.563Z", "postProcessHash": "ae095380b3cce693b87a385fd99416d4cd0156cdd413a0a10656861e01010960" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.815Z", + "updatedAt": "2025-12-05T15:21:44.545Z", "postProcessHash": "af24d4d203068acd33f91fccc37eff9c618e2effb8e8e9604536f11fd3e4e9e6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.563Z", "postProcessHash": "f1ab57bc7f20318d39d216da4fafac6d5235ab4ced6057f7dfa42c510274e14d" } } @@ -7995,15 +7995,15 @@ "b2f66c32f59c426c83078d6b24b7186f54172727a996adce08872051de770134": { "0c794fe311b38eedc683c36f0c611835c85822c536fff3e7f51e45a39493a848": { "jp": { - "updatedAt": "2025-12-04T20:16:57.843Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "839a4b3205cf958d315e163b29fbc6b1d8ea621c8431a9c22d437c3f49c15fc3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.595Z", "postProcessHash": "0b1de2d6f41539ea7f85e66dfc11e27a1b74db6afb5a71186f330a2929841d1f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.842Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "179527139848e8f24e4ad556ee4a29c07f6acb5cd72100acd114b70776f63173" } } @@ -8011,15 +8011,15 @@ "b3581e0b617b1029663a70e779bab6aabd1b97807b23afe26b42a5bb82a2618a": { "38f348198e164923854caf2d5fb911a3b03dff8e5f682f59a476694465af9bd5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.832Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "445b75979d28df84d2972a9a6d57713f9cd3372c1c21ad38d2e47e97d1d0a203" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.858Z", + "updatedAt": "2025-12-05T15:21:44.626Z", "postProcessHash": "e12372c5d9a197996f7a9e1ddb3a1b9d321aee82f0df2b8c1049979eac5e50aa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.832Z", + "updatedAt": "2025-12-05T15:21:44.565Z", "postProcessHash": "925b0c50f902a4ec0b3d1d58fa46300b814a56236934ec1ac966302528c50369" } } @@ -8027,15 +8027,15 @@ "b54c21849674b2f133d9a7587a54bf895f7b1a8384d344c53348c14c442b2644": { "ddce74d3907de04d0a9af32787564ecd6b5cba8d6c36159e1e227746999b1540": { "jp": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "9567c10778d97bd9efb4e46c3079c9b5dad2b8a030e30a935b89af10e1adb674" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "d4643ba1e588471108496653806f1ceac51f5b4fd32ae156109dba7cba03064d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.572Z", "postProcessHash": "992fc9bd0cdc364a811b860e1815bbdc5474e705a528781093b9f09d9a21b1ca" } } @@ -8043,15 +8043,15 @@ "bf6da61b91d435b98dbe4fcfd84c30e4661211a55093b7bd5294d05df5d9018f": { "8df18a3ed0cebffed7ef2a16c2c1feed24d08b38743943e1639bf2e1e83ad9cd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.843Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "9ea7f8d6c8c20c5a2dc95983972ad75693dd120c6081fbf8344ae5bf6ed8546f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.843Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "e7917f798ec4fb2b17b5ee34cf9e21e4d882ed1bbd7112e4a7aeb164a669c10c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.842Z", + "updatedAt": "2025-12-05T15:21:44.576Z", "postProcessHash": "86945358d0fe7af7475872c0c29161df46893b85a51de2b04629f61ceb089c8f" } } @@ -8059,15 +8059,15 @@ "c600219b9f55bdfcea82201926bfe9e4cabf53497d2110e11a6a97d3a6de16d1": { "879e570e6a755b5436d4b4e3e5ee02f6ef2f2b1b56d5e30a0d8ad6d11079deec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.831Z", + "updatedAt": "2025-12-05T15:21:44.564Z", "postProcessHash": "388831467293f4147c75c40d7d4a767f3a6de316e243b18b5df7bdb7a7e7ae31" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.831Z", + "updatedAt": "2025-12-05T15:21:44.564Z", "postProcessHash": "074f636982c45d05441864e0bb8f9d8b6a5bcfb7379d7682c3ce6ad365d33573" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.816Z", + "updatedAt": "2025-12-05T15:21:44.546Z", "postProcessHash": "08deb063d39e55969d8d1286b9d836e70d0b404f6f73ee3a29b9f877d4bdf960" } } @@ -8075,15 +8075,15 @@ "d20c2004eff27206aa611fa47101376ca27b19c79a7c22fef935d90c8c7ee0b7": { "31528a8c4089ac02ac4c5cae45bfcf8375faba7dbb39d635e3082a39955f5a65": { "jp": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "092bac32ef2276bcf182aa04e275cf9c5cd96ed39e09d6571aa6f9162ae9f7a6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.841Z", + "updatedAt": "2025-12-05T15:21:44.575Z", "postProcessHash": "023231102310f58f0752ab79be2181161af384799434cd9f19680e5f8f23c4d0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.840Z", + "updatedAt": "2025-12-05T15:21:44.574Z", "postProcessHash": "1ddbc1e222434e19c2ecd79f69b8e9577477722bbbacd697a95bfd2bbb6aa80d" } } @@ -8091,15 +8091,15 @@ "d42c8393402232b95f473bddaaa33ac9663e18e070bfb5225b9240cded76bd36": { "469a531fc6c1dbbcdaf79cbc24df46624ad5a44a7c52da48e4665690d6de2002": { "jp": { - "updatedAt": "2025-12-04T20:16:57.859Z", + "updatedAt": "2025-12-05T15:21:44.627Z", "postProcessHash": "b2658d9a508ab0181e3c6c459a20bd226d31a12ef40cb4179ca2c86c924d9309" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.832Z", + "updatedAt": "2025-12-05T15:21:44.565Z", "postProcessHash": "69cd30c847e81d943f0b473c6140ae7af3642ecc1a61d226bc8deabdc394f7d8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.816Z", + "updatedAt": "2025-12-05T15:21:44.546Z", "postProcessHash": "9575ad76e15f8fbc570eaa9fd1fa2f63ff2e9bc3aceb1fc19aa2f48fe301ebe0" } } @@ -8107,15 +8107,15 @@ "d55ab4d59e8e430728299d153babb7440fdf1524f75ae30ac017602a393f72f2": { "e946a51dbbf49a6bb72dfb7320ddc89e75e9bca19562498770b9375217a83d34": { "jp": { - "updatedAt": "2025-12-04T20:16:57.815Z", + "updatedAt": "2025-12-05T15:21:44.545Z", "postProcessHash": "4aed084dae37b96108b1b1a9171357a95478753bedf4bc07fd4752574d075c86" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.563Z", "postProcessHash": "73049f2c4787e37b1c51efcdec91d134b3c91e93bcd1b9d5b6a3ad2ae67013c2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.817Z", + "updatedAt": "2025-12-05T15:21:44.562Z", "postProcessHash": "7cbf89718feb0b6ea4f33c063d78763a00be2a7a265a7d336e10fe2be1f6848c" } } @@ -8123,15 +8123,15 @@ "e9e6900149061b39fd6dd6fa53d0c99f28ffac38d503ec961dd94dce5ebac808": { "aef65ce3391d03e363f980b73f3fa71276203fc5f77a1d75edec615250031f8e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.839Z", + "updatedAt": "2025-12-05T15:21:44.573Z", "postProcessHash": "19ea0796e5e1e4d20077d406d584c2d709993077f56543db5e282e487e265be4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.570Z", "postProcessHash": "5c75bb3a5ac1617d96cc105c4206a114b94dff8f04edb8e0c14e83224927c730" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.837Z", + "updatedAt": "2025-12-05T15:21:44.571Z", "postProcessHash": "e479ef0dec8be72e1c7774e8d8d3980c8d190c02130509bd864449fc4359d88e" } } @@ -8139,15 +8139,15 @@ "f5e923aaae110b8d3ec030f52c1731f515c0ed1b9a0e41490e863bb6395bd23b": { "c81f4b30001e6233066eddc0f7a5c166b4369eee24cb505fee91004bc16f3b48": { "jp": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.624Z", "postProcessHash": "b7767fac7e969ae0e2462d0b7c449b035c8dda931a535c4a41194e8bda95a788" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.624Z", "postProcessHash": "130bed6241843acbd316ee9c3cc264afe7afe10fbe5f9a2bc290894f19203f1e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.843Z", + "updatedAt": "2025-12-05T15:21:44.577Z", "postProcessHash": "fc904a42d5f92b851e7c7a7c64cb4730fde3d0cf4d1d282e8795643d52eea3aa" } } @@ -8155,15 +8155,15 @@ "1d0e04973f4a7a2726ce086465182e22cfc8de26b7036f67bf3246dcdcab5c87": { "31f058ab67c32c0251f087188700872a277440d4f0ff0bd41cdc2a390207f441": { "jp": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "feeaa4eacc76e2e243446248328bccede723fa7e6088148ec4506da3659ecdf1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "d7d82650cd7173611493e2613d5c2400462664b0664da08d137ca50ba5918bd4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "1d307483c16ce70b8509ecb945e1ce32102014b64337aacdb4f823a4cee3344d" } } @@ -8171,15 +8171,15 @@ "1d411ae967753b5d27acfdc77c2f68fa873d228cea6cf769ee2c85f10b38628f": { "8c9d1bbb63ac91b1a18b930594b6d354536b4a42a4cefa28e167390053f64f41": { "jp": { - "updatedAt": "2025-12-04T20:16:57.986Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "cbe84bc7bc634a325affa06db273569bed5c8ecea5d9534afab3963ccdf58099" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.987Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "53bd37ad85ab38fac7c4b0a742137aad5ff2afa8e6e8dcf721cd66cf7deb0a97" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "282509301533f527c92fb3f52809a58101782730d3fc53a620fb819d5e70eac2" } } @@ -8187,15 +8187,15 @@ "32a2dfa24b35817a5fedbfc4895185da11ba73834f024a8c145cb60b3ee324a3": { "8f13f0e888bb91b30f7b56131bf3728f2950f55c2375b05eab6a6c9cabcab037": { "jp": { - "updatedAt": "2025-12-04T20:16:57.965Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "dddfae5b863f652a3db02b52444375066317b925dffed51e3a730fd909d3b624" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.988Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "65db24e8f1f902c5b4fc82af9c0021c8e90c3ae535de4cac9b10dba8fd3b9d97" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.987Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "3f53090f027053cd48fa57cabd00239d1611fd5792d44f409f7a48a870c3bd06" } } @@ -8203,15 +8203,15 @@ "34fe9aa819ffc70ef68be0505c66c5cb60f94370bfce6edd29d0ef846b1eb245": { "7ef9c6e569280d6e03a986898ccf237a939f4581319206934f40b7e910987b98": { "jp": { - "updatedAt": "2025-12-04T20:16:57.988Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "facd2130b91a0e927658674dfe90551cb72b7de9af6c09c67eea8baa4f9bd913" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.988Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "b7e47e3bdcd010f851494bc9d1f82bb009a6f743c320b0c3083e349a8b62e6b9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.989Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "974b35258c12208b262261f21223705447c42f5593de0ad8644d0b55532ba829" } } @@ -8219,15 +8219,15 @@ "5a1049606d2ddeb908a3f87e08c53c766115a2d5315cd4e891c852fa240471ed": { "4340b6e9c5ca9bb508ff61e1f7de601fd3ee092842be32670cf541dd9fe5b76c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.985Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "9b4fcd9777a63c27dbf02da2f7b40edad1c4f81f4628c5d08ab35fd8617d39d1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.987Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "ada6b69ab8b50646671a2bc5c903a7de89e64f496cdf5db6138275e98e1a209f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.985Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "65b7063043f8dd596ce71b2e1f76f6bf94cdda6c46334462c0780323245c4fd0" } } @@ -8235,15 +8235,15 @@ "6c930d7e263cee0da201aeb82b5afa15d7a0492edd3f17b70d744502c7da16c8": { "2c78d1148a39342c324f60ab8fd48891049dd3af4b2e04e98d60136cac22dac8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "df3b6a46d61232202de613cd76fb25c414f87feff5949e1652dcf29cb36c5885" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "bc574dba311329752d5704578502238ab936a72460c5ec72dde612934745181b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "b6ddd50e1fd8808aec2cd503c37af600139a7a90b0ba8ec31b8e39f0f1d8b1b0" } } @@ -8251,15 +8251,15 @@ "7997000584a74b3a4893e2d952e3e74901f5c48d13d2477040f08510ce7fb94a": { "f3a543f784ce343388875d80bf6932364452e41d5c499c0fcdb6193cbc18d2ac": { "jp": { - "updatedAt": "2025-12-04T20:16:57.858Z", + "updatedAt": "2025-12-05T15:21:44.626Z", "postProcessHash": "2345340a4803b1b3b510ea7dd2bc13e07950e29dc1739f8a2ebf7d10b10fe135" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.857Z", + "updatedAt": "2025-12-05T15:21:44.625Z", "postProcessHash": "d4ee6c97f9fae4dad53ae5dd3cf01df5bbe11269d2d09c070758ab5f03692e54" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.624Z", "postProcessHash": "2d3cc3051651652b7e3b8970c47a93204e4bbf2f821dabdcbfbca4c291ed1f51" } } @@ -8267,15 +8267,15 @@ "7aeb5a3c848c3ac6401e3621b9731a411c3ffe53b1ec386f511089c819780c4c": { "1f0a4b693ba5e0ec268fafbbe5f0a583b29cfd716f04abb61d43c5813b6ad612": { "jp": { - "updatedAt": "2025-12-04T20:16:57.985Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "65e6bc5cc8fb35caca398553725c133b41f659e859ecd2a73a0721666110d09a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.983Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "3dfe1418ec9ca42909feaa349b051d9dc6827fcc4ac4f64823ffe39814675884" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "ac8834bd2928cb375e7af315d432ab7dd6b3c24a69cfb4c3af55cc287e3be37c" } } @@ -8283,15 +8283,15 @@ "7af81b34b1f80a6579a084fc3f8d1ecb9f0315e228a3b01eca34abc4e963fda6": { "c20825094b802738f9e5eb45bd5ac1dadaadc926f348ad24d8c06cc4e5157994": { "jp": { - "updatedAt": "2025-12-04T20:16:57.983Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "fa4f6d64eb02fdca7ae84416c143210081874cbad432a19c0e6e096f2a6bec50" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.983Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "fe1a5a5fc5b2caa8c79017d0ef1a26047d3f9d05a1f6a916d8530be67d35fde2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.983Z", + "updatedAt": "2025-12-05T15:21:44.714Z", "postProcessHash": "b8a7c94e68c716af693abb992be85f6926f865c19a6a9418052670d00c61384d" } } @@ -8299,15 +8299,15 @@ "83eab82a7ad67622f732d278303fd5a55d015c462467d35a81a97662bdec853e": { "2d649e303741fd66ea1aa56354d590ebd300f6ec9c2b2ef22c28c636be7a29cc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.832Z", + "updatedAt": "2025-12-05T15:21:44.565Z", "postProcessHash": "56e20a651c79062b49a50e9d06331d2622820b5433b5bbb6e7c7d62c90db3f5b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.816Z", + "updatedAt": "2025-12-05T15:21:44.546Z", "postProcessHash": "4b423573553eed62fabb7e9a34dfb87d800ca3a7181e247f18373e321fae6935" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.856Z", + "updatedAt": "2025-12-05T15:21:44.625Z", "postProcessHash": "8df3afcd3831e70809b0e2bc47a1f9ab56a63409536927051a0328a684c6120d" } } @@ -8315,15 +8315,15 @@ "8aef57a5d0702946541ef4bc66a35386c47ef94c0fbc0f60abf1cf7cff964601": { "1de18ab03988e32b892f506405ca6a01d5a611302a852d3f5e7de174a37be78b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.831Z", + "updatedAt": "2025-12-05T15:21:44.564Z", "postProcessHash": "8a5b5fb037cee88794114c430668c80425a62de1efafd335474a9f0e69b1c58d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.857Z", + "updatedAt": "2025-12-05T15:21:44.626Z", "postProcessHash": "e420ed3cb39b9fabd135a8816f518a9a768da2f173edc047a78f21914bf61ec5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.858Z", + "updatedAt": "2025-12-05T15:21:44.626Z", "postProcessHash": "82545cd051c079ad3d6d731e0553d734e28906c0f03bca8d730e3c2c8c8f7eca" } } @@ -8331,15 +8331,15 @@ "a2ec760009faa1e1eff2c135a3d4deb7afa6a079dda0c6d9f99db627647062d5": { "4f03a97491bdbb54d341d453335aff270c60976e7c3ad96cb719e9003ee5ad0c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.987Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "c3fe8dc15da469b3b690316ee0f3dac05e111e967b6be92392e1a8cce1891e35" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.983Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "2b9be65425f6fb6a6894a8cb9c986437b826a97e0c630ba76f60138fd89d22d3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "c4f53d9adabe2759254b7751848ed5fe13bfb181dcf69b90c360a700063dbcfb" } } @@ -8347,15 +8347,15 @@ "a81ad531cd4308314f95a3bc7ee7518076cb8b225330a76bdebb309de6c07d84": { "eb1a10c317b4f12f9023e3b4899a6403eac245683d867b105338963ab1df00ca": { "jp": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "fe4cf16635e1597f0c20aa0526a3fd5833c4ca197e6a60ad21898e04cdc12328" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "cb2fb376e0e4badce6893f4c2b8abda0bdbbda55a4b5b4f53719b919fb29f861" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "32c0daeb591f374f52690f80c6485d2aac9da4d908b1cdb118fe5df773609f91" } } @@ -8363,15 +8363,15 @@ "a8b3a4c7be16228ce7b50cb870cc58cfe39f8c34bd28a3aca5822b90b0f42830": { "f2435d45557de24d303d66a742aeff55e64e2f4b580432c1d1d9f8eaeb1f5d17": { "jp": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.568Z", "postProcessHash": "0d6d7e0d668ce04f563064673db30f6c32df98005397e269ea32ac4b3d07fe34" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.835Z", + "updatedAt": "2025-12-05T15:21:44.569Z", "postProcessHash": "9b28f7b97438e6854a99f6d9e59fb91a86520c705a1aa9ccdfb1d99819e8a6b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "8378dcb5c2fd0fa57802506a14885033d1179e8f0e8a69aee4cfdf25f9a23eab" } } @@ -8379,15 +8379,15 @@ "b2dcbd4e41cb07eefcbc269f5df931324f8744a9483f6b145243bbc5673c42c1": { "5890daa9787c7983a0d917f5622f02d272e85c52daeee1444ef64b42ce8108d7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "8bf966f95f83df3353b4f4504b7d076db0d140564487961648b907622b240848" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "8d5ac4031ed12646e123652cf9180e6a5d09296d67e19869321aa68f3bd92c64" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "c95bda606288a251008f1de6b5cf48b7b6aa8992082a10e2dbb00a93f44c948d" } } @@ -8395,15 +8395,15 @@ "db411e0514092e58a10e4b885faa2126f95d2bd39dace283d1e44cbc9831e3dd": { "527580835a672b74a709bacb51a246aba1c88246216cdba2db279817225f4044": { "jp": { - "updatedAt": "2025-12-04T20:16:57.863Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "2abbecba252e94f0c55744fe25304ed6807282ffd3903da19aa1378f16f39830" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "478c4fe843d5de646fe3274986973e4b11df6da8b848453d6795199962c079f3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.863Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "467f052dd9a64090155c457ccd46c20d7c67eee3bcdf9fce08fba4249b798462" } } @@ -8411,15 +8411,15 @@ "dc3682d31d860920c0027dc94b51e1f197c5a38ca754f403922910b9b8ba3903": { "668b968f7ffa7b6faf894697548c553b64afd08c5b62258b0eb445aab83c7d88": { "jp": { - "updatedAt": "2025-12-04T20:16:57.986Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "223f4d2ee1fe7b0d11e985284e637caab9f6023cfde4f5b6e789b896f9240b22" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.988Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "bf1f6d785fbdb04697affef21b8a1c90ac8f11cfdd3add261371ac0e2115a0bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.985Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "70418adf7b770a1d094cf90038c37f450b94d3df392eede922505fa9e4462c38" } } @@ -8427,15 +8427,15 @@ "e72fb86764359e026d92c8940ee6175f5febdbd710006033850bb2ad8aa43023": { "10e1df69f27be8e1de4c2159ec11f7a83395eb9a20a7b729e0fbe4c2bc8bb473": { "jp": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "97cd79eaade532dc187f6cabcebe985d6464a405fa314376e5d4b1972609b9c5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "33985d10f9132cd808f9b80ec91d3818bd61fb7b3f0d26ae536fe0c8294e3d2b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.986Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "9978cf30035ec8d2edfeb3e43b85314dc351f4b455fdfda21f4787ad677f90ea" } } @@ -8443,15 +8443,15 @@ "ea7e5e311ec73e96e57ec3343b5c4d7cd8d2c758deae9104dffeb15243a22097": { "a6b1a10073ba1bedb61ae0ed5088f394cf79fd30feddaa919ee25e9e0f4c991c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.988Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "917b95c03d87c84f7df491087db2acde0257f59b563b978b825ca81000d3b4e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.987Z", + "updatedAt": "2025-12-05T15:21:44.727Z", "postProcessHash": "615fee4d31ee39e962f41b92d084178755d9b7964a1df16f5c56f98c2179e99b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.988Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "f7ff32107cb05e5339930f87c93d73cf7c840b8c44323ad7ed8b9f933c8fb898" } } @@ -8459,15 +8459,15 @@ "f46404d0d2b932ed24233530122a903e98fd0ad2e866b50bb50ad16e35006e6f": { "ce6bd20ee80f6f7df45c614920f103f5eb64699dca884aa2e9a55c8adbfcc913": { "jp": { - "updatedAt": "2025-12-04T20:16:57.986Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "afd7c3e617ccd4545d3f8ddfe29a733f1d93de18fb8e45726795a3bf8f60eda3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.985Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "1545c0cbf11f952e0dd4722849716292ae8319e22aa74d93e015451584fb12df" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.985Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "a05915be53793d8e461fc19905133e0e3540bbfe005d6cf0db1091a558b05a22" } } @@ -8475,15 +8475,15 @@ "f6103a7698b24fef604602086936cf148c11df516f6f84bf99b48971614c717b": { "2934cd253b5a2e39a317ce455fc2c1d9f94f60e9c0af926ce756c8e2261a0354": { "jp": { - "updatedAt": "2025-12-04T20:16:57.987Z", + "updatedAt": "2025-12-05T15:21:44.726Z", "postProcessHash": "b488148dd618dde2959c80d89e468a7e8ef0b2b525d5f02e72336b6907d0f4f3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.724Z", "postProcessHash": "92f7da0b2dca0564d02c0836aeb4ceffe3240c3ccd2a7dadd3984428b74df8e1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.984Z", + "updatedAt": "2025-12-05T15:21:44.725Z", "postProcessHash": "6938d08752491a6eaca3e91914c910f81b1a4a12fb37bfaeb387c87d6be254ef" } } @@ -8491,15 +8491,15 @@ "05f8d1acdb9d8a92c6735e4d5dcf8080fa8ee6512cc13dbf3b840c999a094c71": { "97638cef9fdf5d6328f466c856175463ac017bac4780f1d817b5d4729a88aa08": { "jp": { - "updatedAt": "2025-12-04T20:16:58.005Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "26e3e972a78081ead6f4659b8d06349d7c613bf59e4c01daf27fb87cc7af4303" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.003Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "d39ae869b3d015a5467ae902c50734d1d590d0ee81dacb2beb15caecf68b822e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.005Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "8cd6536cf8791ee0a9479e59fadb1d0762214d2ee2832b8b40b7612c3568cd4b" } } @@ -8507,15 +8507,15 @@ "0c936deece1cfa87a5970fb553569967ce05687698de65a98ef0315477967bbd": { "a922d6b0d8e112391f7d053fc7058eb1d5659b44c4a9dfa835485d17fbead31d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.737Z", "postProcessHash": "db6b1f767b4c8f08c08ec0a6aaedc59f6a2f5b77a0d2d85190c30fc30f7b6aaa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.981Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "4535db3daa76fb09cf88d0348eae6e0a50ad3a4ce0be94e8938fff9ab1319343" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.982Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "cfb4a5a3a53b2077a26313cbc472e7d949648ad27f0e0ee4b26d0612df691c50" } } @@ -8523,15 +8523,15 @@ "1582ff8ea3fdbeb1dad986160d1b0999795a555f6d89e98dd145b6f49dfb08eb": { "5e343ab5ab03d0e1fa46bf003992f1eb136b9a12bfad77828128edf71d3afe32": { "jp": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.737Z", "postProcessHash": "2771d0d0f9101bffac6122e94593a50ca733a6f00d64a69623445d6a17bed774" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.981Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "e494919c5bc805844ca85f11b025b851ddaf7dbac10999cc5346bcb837742d97" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.737Z", "postProcessHash": "7305029317105944b6cdc328e4906951d26ad1968e8e341fa57511a297af8618" } } @@ -8539,15 +8539,15 @@ "179dbf5bb80545989b2913aca22d0861999dba14106d2380864014877de3c93b": { "114ef0735c99933d93e4c6a570fccf1ca3ef45aed471b8a4eccb902e87cb5043": { "jp": { - "updatedAt": "2025-12-04T20:16:57.967Z", + "updatedAt": "2025-12-05T15:21:44.714Z", "postProcessHash": "b775a45ea5c6ffb9f9719c5d31c4db3d4f7cb6ee3aaaab4b9ab4e557def73152" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.966Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "d8656e4bc881c4730403917bcb3d27c610d3368c0472ec411d55015251093aaa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.966Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "c902ab48fed3fe0735d29ab5fcd4448350902e99c7802dc07102c10903d0d931" } } @@ -8555,15 +8555,15 @@ "1dccccf586631074a6cd966272c09df3578cce225321b7df5ebc807acd0dcdfb": { "b435aec19ff6ecbb9d88c6d1f945636177e245c9c227442437f370098f0f3e09": { "jp": { - "updatedAt": "2025-12-04T20:16:58.014Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "6b63f1aabb032ad9be9836b988524a01647691de338dc49223effeb343351c33" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.014Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "c461526f8cf773e6470cdc1782d9a3f835f6b54eb60dde92f635ec62bbedbcf7" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.014Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "51659463f52ba348ba121690feec75bd4fea36df55618cbcf2d5d6163f49972b" } } @@ -8571,15 +8571,15 @@ "2a3e385a0edab430e986558c8176d5e5093f020848f61371fce764ff9195f165": { "b8228ee3face15f90f6ed1245de3feab742bd22410c8360b5dcc4e855e71c22d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.981Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "3374e2765c882e0e39fe977c11d8e11f032a3072e621225a41066735805825c9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.981Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "fb12e2a5e007b99b3f906c71161063caaa02f15bf5676c9b853a0e0dd13308a6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.982Z", + "updatedAt": "2025-12-05T15:21:44.714Z", "postProcessHash": "57eb6c73b922607b3d8d0b9690a490bf60b5e0ca54e784c23af8b353892f74a3" } } @@ -8587,15 +8587,15 @@ "2bb9b38a8d5dfd619ee7e2a01589dd2c06c59b11f82f178133c39690b45125c5": { "21f979e19600cd98d3791382f305b11aed31990ab9b8c6cfdaf57719effc558d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.006Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "ef078538c51a702d5550eb855d166eeddcc09263997231e80948148fea680d96" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.005Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "142cab45305b3b01125aaa04af605bef47491fb0646e926c8d702f65aa7054ce" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.003Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "e9ace345d4e8998ecb133ff71beadc90a1e2ecf9292adfa64a8a9f8b8c1563b5" } } @@ -8603,15 +8603,15 @@ "32b3dc73599ca183244dc71ff36bc88e62757e5face12c31b14ce042f684120c": { "1bb063448241263bf2f6dc2f55489a21d5cd06be00886e0e9e91d6bceacc47ba": { "jp": { - "updatedAt": "2025-12-04T20:16:58.009Z", + "updatedAt": "2025-12-05T15:21:44.742Z", "postProcessHash": "f0014bb393000681e5c8e6fb57a625adea55feea761bc4e0252af7366b932d2a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.011Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "32004629208d8b1dad139bb2e8bde206ce29f890098bccab1d7c881c1f05c5df" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.009Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "2fd8e3081543c7e357a26e4cf674db809e08d88564276815590e26f85cda60f4" } } @@ -8619,15 +8619,15 @@ "51c48794a66e183ba70935eac117d954a1401f40572a0afc11169b24fcd14820": { "dc661924dc7cd06d16b7ed5abfda37c2ece415c277427ada79d811eff748ebda": { "jp": { - "updatedAt": "2025-12-04T20:16:58.006Z", + "updatedAt": "2025-12-05T15:21:44.741Z", "postProcessHash": "5bd575dbd46a74dc46f0bd93bc3a3c606a4b2dd7a63ba6ad7e07885d5a785ddb" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.006Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "4688dbbc74f999795d8653c432af66f9a25ce50405f6ef45646abed6a46efce0" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.003Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "87ae6363af78007687ae3df9b8d60371ba81c73d9cc4828ef96dcccfc9b77b4b" } } @@ -8635,15 +8635,15 @@ "5565bc89634d0648d7fb44f41fcd9352657cc2b36d57392f0a6561a32e66eb28": { "d223905451f4d931e0e856ce3fd5f35c1c3c25396ff43780337894e768a7242b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.004Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "094285d509b91224c301d261e58d7e13905216cd8f7ec47c4b0fcea25248a2cd" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.007Z", + "updatedAt": "2025-12-05T15:21:44.741Z", "postProcessHash": "065490542a330288bc8ffe104aca229c8f42ef27b9f9f0332e0c9df9278fc2dd" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.004Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "7f54799b6d7d376176089de03a3c4f3853acb47af1ddbb363a45555c61d4a004" } } @@ -8651,15 +8651,15 @@ "705e7aed31578540442c080a6cafebaeba2bf1ddb38ec739dd014aec5b25502b": { "29a6c789509cb2e9a587186b93902ad76eec1850c4f01f91eb5c2a4c186d557d": { "zh": { - "updatedAt": "2025-12-04T20:16:58.013Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "aa9ea865ef9a74fd0403c13740154b4683b116cf2be151eb36e4d903df8e43cd" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.011Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "9e4d90e728d86e76cfe85c8b9159ada8015ead90139d4040e891b4a4f00850e1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.010Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "06352ad240cef2dac5575aae8c070331995023cab2e2e76b9c0db73094ae5254" } } @@ -8667,15 +8667,15 @@ "7e47d90d43125cfd56ce110d9bfe1a08ac0c8cecbad7095afeda215f8ebaff80": { "6aa7a3b849b9da4b7d84bb26a3754ab6d9c56ee35825fa788436cb306b81fc00": { "jp": { - "updatedAt": "2025-12-04T20:16:57.966Z", + "updatedAt": "2025-12-05T15:21:44.702Z", "postProcessHash": "276ae24f4a56d47bc98f046e20e9ce58b10cbd61323b489525a6259f2eeccff7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.966Z", + "updatedAt": "2025-12-05T15:21:44.702Z", "postProcessHash": "dd0b30ae33a70e3bed52c4a38888fb4fdbbdde2cfbc6dfcc615470b9284682f2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.967Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "fb57e9d16f29d8757712f94f02177d55d6871581a697f6cf0aa504d6d8209895" } } @@ -8683,15 +8683,15 @@ "9368e9ef7da2d3545fdcad02056a63f297099ae569a58d6445ec4175f477bcf7": { "5294da061b84e38e7a5c72fa3738434b348d3c948072b63438f6f8e9041f8d45": { "jp": { - "updatedAt": "2025-12-04T20:16:58.005Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "51e661202495f554aa919aba26211105d194905f68e90b11569644e22a4d19f0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.982Z", + "updatedAt": "2025-12-05T15:21:44.737Z", "postProcessHash": "d853a11d46583014dca16d756e17c7e4ca723c5ebf68502445d29c29678ad99b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "bed67a22fd139b99c1bc9312af0a27bf3841ed0b09101b9e00e0e6432dd83be9" } } @@ -8710,15 +8710,15 @@ }, "038b14ac5c1893d1111af35826b4c74e0b753cba46c799f2102d96ef3edb9d42": { "zh": { - "updatedAt": "2025-12-04T20:16:58.007Z", + "updatedAt": "2025-12-05T15:21:44.741Z", "postProcessHash": "d7bd266f0df65d8674339f8d999d4d5c7d62364af8509415a6cba24cc8776c15" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.008Z", + "updatedAt": "2025-12-05T15:21:44.742Z", "postProcessHash": "866371d53214a3859d540be44d80d55991bba5acdf15cace8764f17fef97c3c3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.008Z", + "updatedAt": "2025-12-05T15:21:44.742Z", "postProcessHash": "53bda068727be17d4e27d4fbe727177bac89f0c96f1c85b9e518aa909cecb733" } } @@ -8726,15 +8726,15 @@ "9d935527c3051f00d3c44516b5c5b43d9ec31ba4d1ca19553b784a772963e4d6": { "b415e1612fa4c875f71cf858dcdd92606355f03dd3c13b5aef37f79f279ada0c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.006Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "42a4a26fc99ea8a27e5a0c04bd9b1dd73e9b7b1d68de1b0ecd2bc1534065b81e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.004Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "45954e77d6a8d6e5b550d0db55078d401ac371ede7f3b310bf86ba43c8b0a0f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.982Z", + "updatedAt": "2025-12-05T15:21:44.714Z", "postProcessHash": "2217404a70c958d1a2b659c7cbce30fa1bf9fe8da253fd1c97bbbfe9cccdf1ce" } } @@ -8764,15 +8764,15 @@ }, "2c79c5ac05027301cbc60889f7375dcc926475227edfeb0d74573ebc44b2c97e": { "jp": { - "updatedAt": "2025-12-04T20:16:58.018Z", + "updatedAt": "2025-12-05T15:21:44.749Z", "postProcessHash": "0dd486fdaab0bae80ef7dda49071a976bb89a7d13a8323bb6eb62c7c7b6db578" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.018Z", + "updatedAt": "2025-12-05T15:21:44.749Z", "postProcessHash": "fa4dccb81980138c1d51b888bc40599401076a542ac405708f93293c83854bcf" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.019Z", + "updatedAt": "2025-12-05T15:21:44.749Z", "postProcessHash": "949651bd01c278d316cf0c42797291b6d6af942d2be2a74e926267ac514cfdeb" } } @@ -8780,15 +8780,15 @@ "ca84649ef742e7064e2d857290ef9d942fcc1d6b9bdfff1813fcdfdbefec62ff": { "555cc07d313afdfd168b7ad11d02f0ab80d39cc85a07b294b44c7401c7ce9620": { "jp": { - "updatedAt": "2025-12-04T20:16:58.006Z", + "updatedAt": "2025-12-05T15:21:44.740Z", "postProcessHash": "f6f9d026e6d3cba4da9db144cda2c47697657f34aefb4cb27bd1a5089ef63422" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "a0d3077a4a06f1004a85bed166daa08cbf0ab1d8ef450a6d0ca368f4cf4f42a6" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.003Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "0433ff9b7a94da1dad3e37b640f7251c6ec28460138a1dd24bd4abfbcdda470e" } } @@ -8796,15 +8796,15 @@ "d8908fc8af7a3068c0cc48f8107adaf5bf331be7388208aa9a40ca7f00432b7f": { "561bda26e259939457123ba760b1c473d1ffa5cabb632bd41b00a30024d8ae4e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.967Z", + "updatedAt": "2025-12-05T15:21:44.714Z", "postProcessHash": "95b0663931762a9269dcc6da7987c6be7f93641fa017b4fe59cb58650646f9b4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.967Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "6ab99e15bfcea845f58aa53d49c547162a3e23c974e5f0fee77ff950aebac2f1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.983Z", + "updatedAt": "2025-12-05T15:21:44.714Z", "postProcessHash": "db8b6f0c31b0ccef480600166a72f81d63e8133372bc5e285446a03211771f0c" } } @@ -8812,15 +8812,15 @@ "dbd0d5161d0bd3efeb5fcda68e773df51262f2852a70440882d847c3e8ed79ff": { "558ea55eedb29b8236de463bdebed17358b2ffd17236ba1c7d0c9758543b7b74": { "jp": { - "updatedAt": "2025-12-04T20:16:58.014Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "041a3fe5d42ed1971b184f9c6d8e4ad58ebaf273f3b9cc0c1a673ec611b3fa75" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.010Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "4e4a3fc358bbe45cf9e85a51a2a4a3848907e116d4cb90509fa939d75851e942" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.013Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "77a7e038a01ede1de403ddc0e10fd2bc4c23fce83950cbcfae3e5384628eaf64" } } @@ -8839,15 +8839,15 @@ }, "f10cefde84597353beb5f91328c7072255506fa883614bf555236c792d319e1e": { "ru": { - "updatedAt": "2025-12-04T20:16:58.018Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "303fbf0f0a43e5f21f2bb5ef04d39b44d0837b339e6cf580aa0a3304845a409f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.018Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "b3e747c5eb22c812d55fe56f2745c0fa854c562886a7bfc7cf60e857caaaba78" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.019Z", + "updatedAt": "2025-12-05T15:21:44.749Z", "postProcessHash": "8ddec96eab7e6b801a0494b2381ca7fed5c24e30ca8e8d035f5f19182a6dc1ce" } } @@ -8855,15 +8855,15 @@ "ee20bc66651b66977783ce3a17b9d4f38b09b4a0774e0791bb9fb26a7f930500": { "e7338142de8dacc4a6fc04e51a78c9dd1fb3bbef6534057d60f8de1db6ed3aab": { "jp": { - "updatedAt": "2025-12-04T20:16:58.004Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "24f55b7fa897436d26b0d4c23bd171f0acc7eb0237fb3e5c833738cbf8237978" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "5e083320599db445535dc51e52e9eca91b6f9ac9fb8163af07974107e03e85bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.004Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "2e1b95c98660ffec7a618d347b6bbbfeb3406555dd8284448db2aff2ab14f5aa" } } @@ -8871,15 +8871,15 @@ "fe7e045fa5f538d00f569d58a48e0a9285abe27807a38b3ce253116b4cc22e74": { "c2d3019dfd5c9e95d0bc93db0189ffd3ae5bb907d47f6a727f23a3e435164059": { "jp": { - "updatedAt": "2025-12-04T20:16:58.003Z", + "updatedAt": "2025-12-05T15:21:44.738Z", "postProcessHash": "303d7408ae66c05303e03e841fcf9147d3b170c105226e935691ba7c92c987b4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.982Z", + "updatedAt": "2025-12-05T15:21:44.737Z", "postProcessHash": "f129321ff3dfdcddc84938d99d222c947e5acfe0d644a1923cf87633aa01b227" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.005Z", + "updatedAt": "2025-12-05T15:21:44.739Z", "postProcessHash": "5f49016f51b5f89f3572d90c10763527009071b34a16cd9eb8a794e0ad69054a" } } @@ -8887,15 +8887,15 @@ "26480489190477329712e0e890231f9ee67f7bae2ec93f1adc5e49bd8705dd0b": { "ca234a63cfee1038a0b6bb5b7e10d7ef8307e9e5239cd0706669420fd2cb62a3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.056Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "e6d282f875e94ab589b488c6d9adbfa8eff4ebdbd730e42af554bdd618ba597e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.056Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "ecbe616c6925da52f4d4e58bd74b86565ab7c0158bb9ffb1f2fde088c6468b9d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.057Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "65c0d5f42e46b4e390d3db0c1813d95a69fe9eb1f16fd64087f9da6f13d13532" } } @@ -8903,15 +8903,15 @@ "356c6ff78cff0c4de1af14bfafe2c9bd10139292cd3f3c3553d242bfb277d994": { "cf5d9fa224a574f45a3c02cbc85a2617672d37fcaddc77e5adcfc9fa74e326b1": { "jp": { - "updatedAt": "2025-12-04T20:16:58.010Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "611faa1df9e1fb1ec1d106d78f4a897913863f2ba72f7723f3a3af4f618bb7be" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.010Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "8e4f2af9312db5abcc6f81a377fde2ac62ba429ae3fd6997eeae5c3f58167c01" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "6791f52739c6dc49bd884ea2edea88a7a3593c792c942b6cf44611956d521d26" } } @@ -8919,15 +8919,15 @@ "372be1b1091279b14a64c301dd32f570d8ae7c28ebc2b0e65c8d600412c8a6b2": { "24a1775ccfe9d94dbe6ee2e71f12bbcddd22da3de1dd49f2d8ce8e542b33728c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.057Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "7a1301430852eb3b7c863ce7b60dd3cd28e3194281259133474d579135d3540b" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.051Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "e31cfbd29d15a484dc495768a28cc2d9973899054688b9c265fe939446bb84d8" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.014Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "a35eff6c7e1526fe57b57005da42682caf28d855ef43a2805901aa88f49a04c5" } } @@ -8935,15 +8935,15 @@ "3b4bb74db846ca0f012ad71dfdb33334fa8118040393487ad35fea48bd2470ea": { "3120f1e4d4f08a6ba69af7daa70ffa13d27c3a4aef713d36140278c033dcf2bc": { "jp": { - "updatedAt": "2025-12-04T20:16:58.009Z", + "updatedAt": "2025-12-05T15:21:44.742Z", "postProcessHash": "392a889b54d67c206484c964c2347448235c34e9cbbc8030e3def3d7e6364a64" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.009Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "f0db541eb99656b04fcbdcf4167fe7911875830a5bb211599808c9c911ece9fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.012Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "062448fd1e59aab63e28462dfbcfc797642a01b6c947e16f61eaa19b37bb3c26" } } @@ -8951,15 +8951,15 @@ "42ae3a5b453abe44edf7cc0c8fb18a3559a3043e9828ca9eecf69cbab0362ecd": { "fb18df11b1efd0c29cdbcd9a0fef8f8e09542882ba6ccb09e3e42d9f3b8aa419": { "jp": { - "updatedAt": "2025-12-04T20:16:58.033Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "5d9fd1049eddc2acecd17f65489e1d6b2a125db11b776719cbf49f00f1c56319" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.009Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "5fdf10c3e8c17abfd0db0b32f668e8fe635dc069f3a810d39dea6a5a1603d824" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.035Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "a0eaf22894da0ed8dbf36bcc40020565cea86446810dbb2d7ab5aa4f4749b0ff" } } @@ -8967,15 +8967,15 @@ "501db638650e5304a9dba8ff4612de47b5da82aaad0a722bd89c11c68a35eb5d": { "f925e25aa54c252061995e84db9939551b2e2035ef3360d06582d778617a054f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.033Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "ccd97b016fd5721469cb80cfa87c7e7131d7c0be2013edde9af24b7c5725450e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.054Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "b2556c7ca0e62da6eae1686b5c9a94c474c3b6bb707c98eacf338bd3e6c42913" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.013Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "36d223a21a3d4b5bdad2ce3b70170eba8202403133a5a89161a8bd0eb61743c3" } } @@ -8983,15 +8983,15 @@ "5391d9361d8de859f55fc623438785f034d27921eaf51522b1cfec0b8ae6d057": { "4c5301e6bd068db1c39c7442930c97eb64fc020a710f75519ea91e088c153887": { "jp": { - "updatedAt": "2025-12-04T20:16:58.010Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "f349a84543a13162deef6673cabb7122fbe3a8ab9bd1e5e3c8161b45a7a169d2" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.011Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "94b414332ad05171b9f7a8309c65d41566e22dc0ae6237bab32a5eada4278724" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.011Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "da350b58c6059a8e7b05be5601790e3b005f36dd5509dd19130dbb6238dccd20" } } @@ -8999,15 +8999,15 @@ "64565318cadde7f90ba96c3e29513ba020adf44fe66a9bf3e5482d23d0dd47dc": { "63452898bc1a5638b696f345c28ff8083c41b2223f3638a2c64f25800a2a5647": { "jp": { - "updatedAt": "2025-12-04T20:16:58.056Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "bf2f07315ebe4fc7f7aa571a8d5cd79113859d405929e03f37cde65953233025" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.057Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "d8dc8d6769808c35f78a447f1c75b251fd3b014a3b15267516829021d94ce642" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.055Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "95a9bc73670e0a54c8dd2a0649b7ce10b5a1c4e42e683aa9704970085e2a4d5e" } } @@ -9015,15 +9015,15 @@ "68ba9608dff675f309e6f07ee6d6f770a417b027a738a79f138c8d70e2106dbc": { "9dc2946bda2aea97fa9b18c311317369a59c2adf656d6ce6d76316a813616fc1": { "jp": { - "updatedAt": "2025-12-04T20:16:58.053Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "6e70dc15e4834422507ad779df552f2b8f4f42e71f5d5ca2d250464d4c8b9be2" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.055Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "7b6301f7f66b6e632910eb13d293c942472870175cc88829b97503e379bcd89e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.033Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "7e75682487e04acffec06083abdf418c2de5cb35dc025d8a66f6368b9325d275" } } @@ -9031,15 +9031,15 @@ "78fe6d3b89afce471181d779a6a8b475696095ab4ef58d29771279afa02b2997": { "79d3b0b826a742e9b7895789e7402d878b568cd9e4df76a133dc77a70f03c8c0": { "jp": { - "updatedAt": "2025-12-04T20:16:58.012Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "52512bbfc6c3d667caa3d8ac9ac4e1f2f20b23c48fd1013379f90b49559b3314" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.010Z", + "updatedAt": "2025-12-05T15:21:44.743Z", "postProcessHash": "6b8ac7049c0a3a464f93462ef827262ba10315c4381b21cfb8484ec2be106b4a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.013Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "e4c04c4ae0d9a7aef3487d7bdb5d0808cffeab4d81f4e0d86be6cba06a2c04d4" } } @@ -9047,15 +9047,15 @@ "81915656e6d382d86e051a8fa78d36209f8322f00df9d519bd2aba85055926e2": { "4bc52b2d49860b621c0c2e9203206add44f60ae74179555c48eff9366de95cc3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.050Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "0d233d438aacc7cc28a36252f1f5d5ab263e5c98847520628bd72ba53cb74545" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "095c427e9c2370d725096f2064729d0833b68fd22b228d3922d6119908d24d5f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.035Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "4d0b53a69ca4140264678f61b06434dae2242ea1b929a7e58eeb9f0b29cf3e87" } } @@ -9063,15 +9063,15 @@ "89db72da570e81ebcb6f667a907e2f846f64923d46a9947f6788299488af58fc": { "bc1f7fd0c55c3e925412c0e368a4ffa88b8fe5c39a7aa535303e0d54e76f2b9c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.013Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "217a2fdaa0cd7f03a3f794f3060edb6a4b063bb9a3ab0ae4fb448c60d543eb2d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.050Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "2f251a1991f67748e571564400c0e2df2a3f0a12ff43788f45239781c4cdc0c0" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.051Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "09361b3e4e8aed669cfa82f19dc18a55fadd0814ea76c812bec905b494de6526" } } @@ -9079,15 +9079,15 @@ "938d56b6044b6cebcfe8b337190fa6dea927660551790620ca8c19fb31cd39ba": { "2aefd9ad0393f63b7e1ec0b002323afaa8b544c1011e8f3c91b77ac1f84ef487": { "jp": { - "updatedAt": "2025-12-04T20:16:58.052Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "43f9b3711b2bf807282390642f8251eb93fcbe12ffe1aa7560ee8545ae1f3694" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.051Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "425bdcb2ded91f5f8c718484aabcd61a25c9443c9b6a092d9b04e7dd38ae48dc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.053Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "d40950119d7da8ed4e7fabda33c7af01669d24cb2ffb11877fe02163132ca310" } } @@ -9095,15 +9095,15 @@ "96e31c277d43b145242840ad838f44b908ce963c352dad86b59211265e87b591": { "482a21b0c27c50eedb13f76a309205d6a1f064bddbb03002a77af2aa8fd7cc3c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.054Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "d29d62ad9ddc810a8f267b21cc96da7323a30edd001a1ac22dcaea395fefb373" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.056Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "0573aef7f6ac645d7f954f191ca585f88b8689f5f02d84b8b4a527d6bdc5b101" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.057Z", + "updatedAt": "2025-12-05T15:21:44.766Z", "postProcessHash": "fe4556576c17964f430e29a76297d629d2b888815d6faf6085f87c213ea5ba46" } } @@ -9111,15 +9111,15 @@ "99ff98bca369584f25c59d8f96acd6c1788719989416cfe1d5d478919758fd86": { "139a2b803dd22a097a0fb93f4bf76cd3187b48224be1271d561ce8d6d3b0bdfd": { "jp": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "7dfe4d70c8a0f03e7d651345d0fffed5b4c7805080d268ffd5abd3559ede648d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.012Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "f407d1d97951c39ab285c56e7e962e44cdc7c0df9ad85300c246ebe1ec63a976" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "5aa191b2f54d41d3ae5e23abd58970d15e384699dfb8b23575de25fbcd61a59d" } } @@ -9127,15 +9127,15 @@ "b2aff55ca5954a6970b9f52ac23fc39fc004e51a346a6cd693caccb1417c6519": { "1010abd84c38f96762ed3b8cb461a3bb4e5e229304c1c500e26dc7c6e9d01318": { "jp": { - "updatedAt": "2025-12-04T20:16:58.032Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "dd44eb6d65d41f0373ec960965bfd70885369e22e8bc49a3d0661048f572df4a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.011Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "6edc0dfcad28528249e76082e3562adf0bc82695adc5edb38a6b74cd03ef77dc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.051Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "96ed5b8196875d4ce91a1800378a69bf1d7abd9158d5252b38194cc53da19b3a" } } @@ -9143,15 +9143,15 @@ "b8c212ea80c9bdcc2ba8434c82489b4cd25a84157ab8881924465e669bf2bf1d": { "aad4076142416380448496fbac36524304c81991e5c00dade2ad95e55a087c94": { "ru": { - "updatedAt": "2025-12-04T20:16:58.000Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "bc6834f5aa92fdb288442fc58cdf176cc6d5d69b037aff11066dd4b9a430d86f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.053Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "65027e49845b45fcc27c51126c215336ab6d67feafef81cd9b7672cd85f14e62" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.000Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "317c673020dd7bed2c0208c9742b7e476541042db1647a814b966c89f1bed22a" } } @@ -9159,15 +9159,15 @@ "cb227df00b6e64305168553956c1928afd33de9cb76c9d330e9c9eca9290c33e": { "268a8df1fdc77541fc0a6bc99e66097367ea72724a49b591b16c19e00e6685fe": { "jp": { - "updatedAt": "2025-12-04T20:16:58.012Z", + "updatedAt": "2025-12-05T15:21:44.744Z", "postProcessHash": "5fd5632a3af9f533b0a80972c2e178250387cb1e6184a29ebbdd5ec3f7900400" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.033Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "835d98e3e67c4df3403d1f14ac5ce1f5d0c0fe80da1066bc0ccbaa7e108305cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.052Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "817ad2f03e86c2846ec822d7d9a5a08f2b4c92014c14f51d32ede5d1a539f1df" } } @@ -9175,15 +9175,15 @@ "d1c3b4df71214a3e88455cadb9dda32802eabf8a18de9dd12b4636f3a20001bb": { "407735ce33f5163b7e6c2875f0e2414993e84109f0556ba297b7f1762f038a8a": { "jp": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "44b94b45a2de383181d2850d486c5fd0df08ed6f12cdd6ffaf4ac2371d0ba0ae" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.033Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "f58600a1b3a2d7e9dae86ff17c77b548ed153bf1eee2d81eec281fe3a8a3be5d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.009Z", + "updatedAt": "2025-12-05T15:21:44.742Z", "postProcessHash": "6287e8fbc67df184f9b080a55f4d5ec39e123101e6f60104c29144000ccc331c" } } @@ -9191,15 +9191,15 @@ "e9a7a6821acf2148d5fdf59dfb02c842dbeccfe3db8ed78b13af93341b542d82": { "45af94df7fb72c57f3c3954a12bae535b5025b01d4824ae9e4f23b2ab156e1ec": { "jp": { - "updatedAt": "2025-12-04T20:16:58.056Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "4bf659d31108e0f7180ca092629ffd37cfe1b37825658072e6bef3bc5355f23c" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "f4892efbae250db837952d841c773209aaee248a50ea481875d5ef4d9cf6e164" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.035Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "eb9bf28fb06316762621927ae788d4bce165b73114a5affa5cf85f982216944c" } } @@ -9207,15 +9207,15 @@ "fee5d5e407a8306e3abcff87b3f147641c908588b209b7c9e107759067db235d": { "35cee660251b87c86ad32e1c0bdaaefadc8dc8d26b278a55c87e87e3de226353": { "jp": { - "updatedAt": "2025-12-04T20:16:58.033Z", + "updatedAt": "2025-12-05T15:21:44.760Z", "postProcessHash": "7ffef1e5a86761867016a4a2d07b80a2284c84bac16d3a340cff0b282eb09fa8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.052Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "b893abe75f50ca351b76981e0bf44d2cf8bf43f821f6bdb179f81f0f06143407" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.055Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "2e825f43adb831e6c2e7f805757ef48bcd517816c241643cecfc3da30aa42acb" } } @@ -9234,15 +9234,15 @@ }, "bcd3f856bafd91c47cfba8e758107bcc7ae1c1743a3aff704f72af97e7bb2e48": { "ru": { - "updatedAt": "2025-12-04T20:16:58.019Z", + "updatedAt": "2025-12-05T15:21:44.750Z", "postProcessHash": "5326f02131a261a59b4be06497a2cc9486dee6a62d1e59d2081d917968c970e0" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.027Z", + "updatedAt": "2025-12-05T15:21:44.756Z", "postProcessHash": "373827bfa899fdbee301b169aaa8b56e503314bcad919fb6faaf41c236994383" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.028Z", + "updatedAt": "2025-12-05T15:21:44.757Z", "postProcessHash": "a9b5fdafd0e24b3df17a7cf2298812e306c021afd928867652524c7376ec464b" } } @@ -9261,15 +9261,15 @@ }, "ebdd9a3e7575ebcc17e2bf7eba747cab13904bd21b12eb03a1f34cdf5f1e7784": { "ru": { - "updatedAt": "2025-12-04T20:16:58.001Z", + "updatedAt": "2025-12-05T15:21:44.737Z", "postProcessHash": "8f12bae3110cf85cf865b11be9aaae8fe993faf487f56a912180bfb7ea26c117" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.022Z", + "updatedAt": "2025-12-05T15:21:44.752Z", "postProcessHash": "562fac459d8693f50adf119c4874a477c72ae0a0e2eda84513f3314f290d21c6" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.024Z", + "updatedAt": "2025-12-05T15:21:44.754Z", "postProcessHash": "7d9ac1985d45f13ce6094b2cef90897fa98e7bba6a7f86ee1278c9fb4e47a099" } } @@ -9277,15 +9277,15 @@ "23af5cac91f252ffe2e42d1e7b5a0bcabe7dc844aed8ebeffba1570964d40b4d": { "897a5b0e6ee3fe28e1f105bc25b952d48f233f747b27270188a83040b9b40f90": { "jp": { - "updatedAt": "2025-12-04T20:16:58.032Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "3db37b9c686576eca5af630c85a7e0eda82eaa77bd87a78738e78929a6cc696b" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.031Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "e7c660a4237bc197dd181b3deed2ee6d4092bd8bae804c9fa1268e7732ebfa70" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.032Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "954f1d36313e751a758fa9ac3d67a1bdeae5ea3964a91ddd31d69e36ca2ede77" } } @@ -9304,15 +9304,15 @@ }, "b38543567533024d38925fac14dd5420a9b499f385ca94cc0b9b9c04d820f470": { "zh": { - "updatedAt": "2025-12-04T20:16:58.000Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "cf71ea33a40fe51ae5d3f820c60b8443541c2b26b7b80736f75fb9fe9b73a503" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.001Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "5bc8df77d72d6b2282fbcb639f632822f8bfa6d0b062e4139b90f896d4b25491" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.021Z", + "updatedAt": "2025-12-05T15:21:44.751Z", "postProcessHash": "ab1e627cce36c65d2a1c6d3900ea47a855dccf9d31afcf84b1d31909a9956acd" } } @@ -9320,15 +9320,15 @@ "2a50f26ed5a74514a1bb5535e77a1e4295586acbc14137eeb91bebd950369fe9": { "77daddd248c06a3945d845d9935148cb7d185c9ace0f5a7e2b8d9a52649050c4": { "jp": { - "updatedAt": "2025-12-04T20:16:58.053Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "4ffe534d95e818b7357616ac46cc74ce7c89fbe2b6aa93c5e111af88c60e16d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.074Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "8f00191672b21a6af0ab47c7df09efd914dacff94527cf4ae5f04158d416178d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.075Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "86d2740e52d953bafff30de6e68fc79c019ef306b47815a0aacf1e0bf9db67cc" } } @@ -9347,15 +9347,15 @@ }, "adee3628812a2e0169c7c436f7c41012c6b0b856ab91c598890be0b181284e63": { "ru": { - "updatedAt": "2025-12-04T20:16:58.029Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "213f0f207a0893e3a39a5242a240341dc968dc69ce384067732f88e96facf909" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.030Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "aa51f1af1693132225fbf4e588d805adf8bc5159825d82b544320e8c067fce0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.030Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "bf8ac9363e6270e9a1f5f44d066c76673c998c3a63450ad2512cc726b12dea2b" } } @@ -9374,15 +9374,15 @@ }, "5407c15b69d4e3b9d265c317ef087192cfd42cc503f7ec6c3e963b8594948b4c": { "zh": { - "updatedAt": "2025-12-04T20:16:58.001Z", + "updatedAt": "2025-12-05T15:21:44.750Z", "postProcessHash": "322d8c926080f19f39eea33a93d98f6279e5ca75e7412fb2847b3a1ed1509e96" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.025Z", + "updatedAt": "2025-12-05T15:21:44.754Z", "postProcessHash": "ebb41c4517bbd848285548589b30073c54d75dcb964410c13b651866a67a9393" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.026Z", + "updatedAt": "2025-12-05T15:21:44.755Z", "postProcessHash": "17b8cd6f50e878623e6579928aa5f75fcbeb3a6d0815adf31768a86b5fb1ee65" } } @@ -9390,15 +9390,15 @@ "6e73db155b7c6964fced099cd2a329a54c570e4567c1e741e45991462993ff89": { "d1aadc2b06df5561a41ec6294f8ba38c60368402b06032d12e12420507c14384": { "jp": { - "updatedAt": "2025-12-04T20:16:58.075Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "91ccace05551a62e4db7403d1135491a4dc62782065b20542d7eea9d44fbc86e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.054Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "029797c9970ceb58176ff0b5eec5b8d64103d25d60bdf9048cdc70d357672532" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.032Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "44eaeba901890c41669c7c254aa0ddbf64d39cc3eaa7f2766d8158243f012f4a" } } @@ -9406,15 +9406,15 @@ "854411037d5e91dafe4510e3bb749eb29c1405966f5c747972f003bea369b464": { "2f5dd362e6719f95a9f300225eac5ed8491245ba11f15bda272d36325d991c01": { "jp": { - "updatedAt": "2025-12-04T20:16:58.031Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "d607a690ec6089418526a6d1afc5a40c7d31013ea9c54f3c817d875fc0a20c91" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.031Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "b3d4d15b140673459f362a7fc6d871dce14130ea308a0901a5b660aea468f6dc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.032Z", + "updatedAt": "2025-12-05T15:21:44.759Z", "postProcessHash": "c10e46ee9ab5eed5f2de0b2f9e9586e687690ea56418ab09be51ab32c3521d10" } } @@ -9422,15 +9422,15 @@ "906c5c00462e8461e0b7aa1cffaec1f44d3cc275066f474f9ab70cccbf9e9d8d": { "661e85a9d5e8d39ed88218a74a7029ed28519c2e3ed3213707133a5bb6e243c6": { "jp": { - "updatedAt": "2025-12-04T20:16:58.034Z", + "updatedAt": "2025-12-05T15:21:44.761Z", "postProcessHash": "5b323aa156c252f86ddd1d422410574abbda5c869ec45d97ee20f5289251d1e2" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.054Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "27a112cb6374c2c50a972a52ce8bb594fb0e851b7330fab2711b925b7b091e1b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.052Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "006f38567d562634b32fe016360d4e2e8786e334a364340228c0ac2b3e4898df" } } @@ -9438,15 +9438,15 @@ "9acecbbe697d2e6d2e334b3b54c514cdcf0ed3d6c83e6748104f8f3b983abbd2": { "4b6046e5cde03661005f0be0ef3f23e778a948c6c005456f94af71b6ea2e484b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.073Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "c062e664697ae262626750bdabf1d0375adb1317ad45ebc65afd2b2b43892323" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.053Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "da665acd45c127d63572ac978745b7b69d0421095d709b498f427190817bf946" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.052Z", + "updatedAt": "2025-12-05T15:21:44.763Z", "postProcessHash": "dbc1e521b6f1c5da0c761f6101045fbf8e2dca6fa361707b34c020b0819c0cfd" } } @@ -9465,15 +9465,15 @@ }, "aa95ed0a0f75936c9fb958402d78b88a1b649e02c12c5724474d96593d8ac8e3": { "zh": { - "updatedAt": "2025-12-04T20:16:58.020Z", + "updatedAt": "2025-12-05T15:21:44.750Z", "postProcessHash": "6f18b298db5c2e5fd2ab4240bbdcdaa7eb3881b8d6d3acec0a4e75b362adbc53" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.028Z", + "updatedAt": "2025-12-05T15:21:44.756Z", "postProcessHash": "1cc3d771fa720b210196aca77ebdbdf9bc67742727845e0ba3dfd4a9353da4d2" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.028Z", + "updatedAt": "2025-12-05T15:21:44.756Z", "postProcessHash": "3f79081a8dcd817f0e8be51a9ef94cb3b49556a0861685aa18aa8ed259576798" } } @@ -9492,15 +9492,15 @@ }, "21a411586384e33979dcf970a5a3e351863fabcdd6a2f2d9ef948c7c72e29308": { "zh": { - "updatedAt": "2025-12-04T20:16:57.999Z", + "updatedAt": "2025-12-05T15:21:44.735Z", "postProcessHash": "04cb51f7f5bd84cd9558fe88285c856ae8765b9ed4ffef21680da790b71e17c4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.000Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "9d65259554be5c5fe878dce367fa4974a099b9baca8fdbe1759f7b0ddfed7cbf" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.000Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "45ee3495253d53c5a40edf1775459cf4e37b41f3ebb590a5aaa4f8b9a217c1d3" } } @@ -9530,15 +9530,15 @@ }, "b89bf73d46ab4c8681fe3343c9174975288ec170fa6f21f23a4befddc5ff80e3": { "zh": { - "updatedAt": "2025-12-04T20:16:58.026Z", + "updatedAt": "2025-12-05T15:21:44.755Z", "postProcessHash": "5b1cb8796509fda146b1766c4fffffa902b8fc8cefd36c512920cb3a3aa4b0a4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.027Z", + "updatedAt": "2025-12-05T15:21:44.756Z", "postProcessHash": "43fe1daf1a18f2860dc959170a0a4d61a7576a9a256a371ff8e9d58f11238152" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.029Z", + "updatedAt": "2025-12-05T15:21:44.757Z", "postProcessHash": "e6b0fe173f3d619be02eea82ddebb68a4c11d3f35931a587672577910d398923" } } @@ -9557,15 +9557,15 @@ }, "7e8c22f8384e0f5e1604ca164094faaf9dcf3be660b10e0ab4b447554527eeb9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.022Z", + "updatedAt": "2025-12-05T15:21:44.752Z", "postProcessHash": "6e8700da9b30c8d7fdfe25c6a51ac7643e669c9b521a58904b4dad2d55004edf" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.020Z", + "updatedAt": "2025-12-05T15:21:44.751Z", "postProcessHash": "dc9a9805ce23235f9c66aed4acba3ef682b3f2b7b4328a7195e680c64cdc2587" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.023Z", + "updatedAt": "2025-12-05T15:21:44.752Z", "postProcessHash": "7efe74461eee360ea2eda05eeabc0031c6e70f6086d04c341ac8788096e815ae" } } @@ -9573,15 +9573,15 @@ "caf9155f2ad3c6bb6165f0c5a837f80ca0f324d7821ee36716d6a44981b32432": { "c9a20f8ca6d2167945584243cb48aae584ce849963b883da031cb1fa3b57b9d3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.075Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "e1ce38f7762d0f1c0c8ffdce7b2d273f74c5f80b45359a558e06a2c9efbdbb5a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.055Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "06922756440fc5d77c4523a0144e6cc83d96c437edea4fccfb0e1eb55a482401" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.055Z", + "updatedAt": "2025-12-05T15:21:44.765Z", "postProcessHash": "51cc39d7a472bf11bd45fa334d1f0ae0ed0a08299a4639150a170882f565be1c" } } @@ -9589,15 +9589,15 @@ "cbb612322707858e39d9de4d0c9cc540429b50cdf2909447e753d421fc3212d0": { "4a7d4ef89d791edabbdff46a2878745843ca285c2985ee018c727274960745d4": { "jp": { - "updatedAt": "2025-12-04T20:16:58.075Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "a34784249f318a831aee38aa0541ce36aa9bf31c7adae0890da64f90bf68bb6e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.053Z", + "updatedAt": "2025-12-05T15:21:44.764Z", "postProcessHash": "ab1f650657f26a1fff11097ad35bf85b32e7696b8eec9514f2da73983338932b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.050Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "712e48de063a592fc3204cdc320ab5125e38236103d1e1e827f00e180a5cff71" } } @@ -9616,15 +9616,15 @@ }, "36b30907a627eb9f2751c13b7b41989e2375737efd3afded8087c21995e25c37": { "zh": { - "updatedAt": "2025-12-04T20:16:58.025Z", + "updatedAt": "2025-12-05T15:21:44.754Z", "postProcessHash": "0dea9c410cd04d331146163c0fc333fdd372dd0cbfedf0bec5f7e9e40d94a4e1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.026Z", + "updatedAt": "2025-12-05T15:21:44.755Z", "postProcessHash": "5a07f02c8e2f54822350e619f6112c19362ca3e9fd9840cc1da64c2e637df149" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.028Z", + "updatedAt": "2025-12-05T15:21:44.757Z", "postProcessHash": "78333a3b03d4d3f90bec73bb14ba4ef462cecaa31269dbd924053420087ab965" } } @@ -9643,15 +9643,15 @@ }, "2887b5d2961f016569ec5457d21265144b81c9010f1ed1c13a8b666a47f53526": { "zh": { - "updatedAt": "2025-12-04T20:16:58.001Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "c21b0a975eddf45479fee1faa0d7c68a2b5e6addbef746f2d473f53f61bb91e9" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.077Z", + "updatedAt": "2025-12-05T15:21:44.779Z", "postProcessHash": "d0f6f12483f436f0c0a31193b3b8b46d4ac43ae7181fbefb81f8e49091f97807" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.021Z", + "updatedAt": "2025-12-05T15:21:44.751Z", "postProcessHash": "7e2e288f31d52b9a2c6beaf1a3b82cf6090e61a09f255c0c777ae43a26479b02" } } @@ -9659,15 +9659,15 @@ "eedd808236db61e2b28ca3ea587227703d2be3b1ced3ffbe6e92ba89ef707e94": { "20f04dac4a93b0fdb3374aba9dc0994fdc280c6ebad124568bf3fd2f999185f8": { "jp": { - "updatedAt": "2025-12-04T20:16:58.012Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "e784ed3b8b985ba5ca0b2b0efd3d696380cc7db20c7e653eaa839bf7185b594d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.000Z", + "updatedAt": "2025-12-05T15:21:44.736Z", "postProcessHash": "98e3d5b93e2df252d5645a4aa3a5ecd7841d4f1194304c16f08a2c0f84d9829d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.012Z", + "updatedAt": "2025-12-05T15:21:44.745Z", "postProcessHash": "8c2b9afe1e2cf1d13cb0bd28be83a651666da9982206753d6960d6733b267d5b" } } @@ -9686,15 +9686,15 @@ }, "f0ee8735181f3f9addb0d2b3c24aaf4c8616df76b27f36d37500110520089609": { "zh": { - "updatedAt": "2025-12-04T20:16:58.002Z", + "updatedAt": "2025-12-05T15:21:44.750Z", "postProcessHash": "26dfd5e121b40fd4aad824e26210ccd1ca365090e2827510638bcc285bdb2f74" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.021Z", + "updatedAt": "2025-12-05T15:21:44.751Z", "postProcessHash": "7225cf702321922403471898f5eb34c847d346cba7e9e0f147509f1268ac995f" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.023Z", + "updatedAt": "2025-12-05T15:21:44.753Z", "postProcessHash": "50a4d326f98196533e96110837072d17a0aaa070d72832bd30a9023ad1ebdad2" } } @@ -9713,15 +9713,15 @@ }, "be7f4e3331c3fd409e0646bffe9b6357649ebe66e4221085977b0cbfb8bd4a24": { "zh": { - "updatedAt": "2025-12-04T20:16:58.029Z", + "updatedAt": "2025-12-05T15:21:44.757Z", "postProcessHash": "7b3a807290980061f18d5dea10663f5c6a5827b2a05c685fcfc05c7281ea9019" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.029Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "3c7f6c424dcbafb41b80e54e8fc0434040a7085c451703724b856afe0c0d3151" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.030Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "1230ee4f7c5a6318d4c2204b62d6aabd977498735fe6be81c242da1d6d02e395" } } @@ -9729,15 +9729,15 @@ "115c23898dca6a5bd85fc79980e071e10196e3e3295527809805baad03df1e8e": { "cc5d85e7940e700fd5d3f8fd7641a3e19d24a033b3c45b51595134cdc91659d3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.076Z", + "updatedAt": "2025-12-05T15:21:44.779Z", "postProcessHash": "ac817453b63e295349104e21aa6df88725c2a7f05cf37daf324c0134e3d18185" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.070Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "cecb9496e8c754ceda455ff709262dba1347aa3a33a0356657349e420154ce99" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.073Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "5dc5378c02ce0b9cf474cf5f937b12d4b4f287b9bc321a07361ce27b6e5c2870" } } @@ -9745,15 +9745,15 @@ "25fa138ccb807e454af6642c2ed448968e7de55919fd0d0a4ecb3f6e490a397c": { "ab68507bc825afafe53c6d1d0d6f08c53621f3a95a39deec3a4dad7ef103b2c6": { "jp": { - "updatedAt": "2025-12-04T20:16:58.073Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "f8c058112d113f83402c43b58120c54637979513a20df4ef300b77095582dd48" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.076Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "bd4d60aba3c2b928c8cf4b9b821f678a36746773b8a7c64b596617feebb57bd6" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.074Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "1e6490413523f9afb535494f50fe6fc3fba1b0ff9687b9243424a5c504fc7376" } } @@ -9761,15 +9761,15 @@ "29098b8e3f1e1a679a5ddc94379ef95f05ce5d74ad32854eb1f4dbf472997cd8": { "a2fdefeb5c115c0929ae0f70cb0135e6ff4857188e411761888474889ae1edda": { "jp": { - "updatedAt": "2025-12-04T20:16:58.072Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "b72667dc5ad8d23111581ac5db2e4b42b90e66f3fa005fa10f2c17ad093d5700" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.072Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "9207b56c528a98dd1b23cd288fbdf91a5c5d8fcbce10e7fe39c0aa15e5c2f44c" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.070Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "bd0671085273b9f85ab97fafa1bc01bcc1ff100d41a7a222ddb54009a7af06a3" } } @@ -9777,15 +9777,15 @@ "2e279d80c8ba84fded6bc29580d38a57165294e3bb9ec5ac3177d8fa43594ce7": { "c32887dbd37129abcf60580789e56e42295b227409b866e8d6f639ccb4436f91": { "jp": { - "updatedAt": "2025-12-04T20:16:58.074Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "048b0063a0264ab1608476982daeca44ff7a01b1ced2dec7b1a71427c17cdcfa" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.074Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "4c4e415e4dda21d27b7cb98af881042d977390109dfc2658733ffcfb0ab757dc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.073Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "35da0a54e833e72c20073dea21ec99b636d5fa1cbb86267872ce43f97b749396" } } @@ -9793,15 +9793,15 @@ "509f6ede51ab34e339503f91928010a06f04655f9ae29650958c5b6768752931": { "b15b0f51d35014ff5faa6f96548eae990708c240d294f1b231da328da35a7588": { "jp": { - "updatedAt": "2025-12-04T20:16:58.069Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "08f3b3fd5166654ced00f267dcf18b27d2c2c5518cbbe79b70cd53c2dab5e383" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.062Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "c28fbdbb1bf0c0347454a4e11ef49a89e9d9f016741606861e30ff338a94e5b1" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.061Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "ce5a99eaa06c11704e76eb88344ddb9c290c9cb178f98912e571b307de2d3366" } } @@ -9809,15 +9809,15 @@ "521e12e9546adbbc16980431e680a5ef21ea7b5b3b9b36afb8a2521aa6b377b6": { "6e547ac81c7773f9acb16ff8e8b7c7388a98727bfc4319c29909249791e4ec09": { "jp": { - "updatedAt": "2025-12-04T20:16:58.062Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "bcec8c15259ddafc2516650cefe07e4f1efc9de175704f4726e193c7b2427d4b" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.068Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "0b1fb47774f91e0f883b88007d9d5a54c6aa0752e2fd8c3d0339d65dac622879" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.063Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "835f8b90cb0838ba6d1e417d3836d7aeb21dfdc1b60add158bc1313250a8ebd8" } } @@ -9825,15 +9825,15 @@ "543fafeba882f7e65ffa713c52cc503e06a45708cf5d17f53ac0462449accbf7": { "10b537976cc0e91e97a168611992f05f85e4ed7084a47e4cb1a2f920f41380ac": { "jp": { - "updatedAt": "2025-12-04T20:16:58.066Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "b1e0f3c5a244f7f462e899744be740a341dc4252f42690ed77e8aef88de7aa43" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.031Z", + "updatedAt": "2025-12-05T15:21:44.768Z", "postProcessHash": "1342208607b46f6b69a13c581d60d9d15eb7efc89d4aa8145138a70fe9d71a78" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.064Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "e88767abe65858da7bcb08af0aac5b8e9f5813dce4a0cb7cc103d2dc898c1678" } } @@ -9841,15 +9841,15 @@ "700af028231b046bfc9ddd5cfa321b3be5e023aaaee235d4d7d86453223b3fdc": { "5feb43870c53151fcd38f8407b9a14613518ef335101c53aa526f6a23caac7ed": { "jp": { - "updatedAt": "2025-12-04T20:16:58.060Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "f8e4d25d75b7e5a0e5893f8c3fb8a07cab5d40ab707232921cf51f0699699cab" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.068Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "c47830e545bfb7925413922eac5917eb39a8cf3914d42d844312e22e5343cb48" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.065Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "16371d551b326cd24174dfbed2387a7c3489fe338b8ca81bf4eec8eec8e0e6e3" } } @@ -9868,15 +9868,15 @@ }, "7daba956dd3abe4b27ba6749d7f47b4f15037a1481f6abae28e2aaeecc9ed552": { "ru": { - "updatedAt": "2025-12-04T20:16:58.030Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "9a0b3fd7fcc1c9f9b16c35aca2669498454ee88f9c4c4505437c9e504fbb9567" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.076Z", + "updatedAt": "2025-12-05T15:21:44.779Z", "postProcessHash": "a93519e8a64af5a036f51a4f38a3353c869c6647d4df02156e3556f7d19c18c9" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.030Z", + "updatedAt": "2025-12-05T15:21:44.758Z", "postProcessHash": "2c9ab68c76fc07f1126d61171b4d613489af2e2695ce51e0a112ffb743174112" } } @@ -9884,15 +9884,15 @@ "7eb439b32a67cfb0aa3624c9184253dc089e7da15d7e10a23f668083dcbbdb63": { "d75745d1b46f0de5b2028a881660f2bd2ddadc7ddc0b54286beaca30e215e44f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.019Z", + "updatedAt": "2025-12-05T15:21:44.749Z", "postProcessHash": "5e19c09ce46094f71bd81732c6b49436eb0b89d136e27875a8652482680f9ba6" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.075Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "d2435f5d3c49d800adb61ca7a1ec93ef3ef67778b19c263bd203aedadb0bb200" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.076Z", + "updatedAt": "2025-12-05T15:21:44.779Z", "postProcessHash": "9b1acfeb6d4653a7ba148534f3e94c1c53b096c8512dbe25593c800c776fcedd" } } @@ -9900,15 +9900,15 @@ "8cd1456e58e9b0f32764599fe1b3c08b4549cd901e4ebe5d8ff994983ffb18dd": { "be2df94d3de1df0b087713bb38516d1a78f6b4313e8daf18309af45c6beb735b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.070Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "e6a13381b2148ca388ac8aa2188e0a31626258da8bccf0b6c23884a079506c83" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.068Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "a90f69f9d8d96ab09f786c4c053a5b4df519e6591a94fc77552c53ea64f27f33" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.071Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "40b9b55b1c8341fded05333327e49c5e87290f496d0dba0072acd18329d60b19" } } @@ -9916,15 +9916,15 @@ "8dbad11f22f37a8dfbe5928d8a4733fffad030ebf6032dcfecd084e9101dba52": { "f92ca8e97f1895ba9a62cdd9bd09b067b16fb3472cb748d5ec26c6d2830bdcc3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.069Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "af208136a0142d889583cad0ab9bfc3f294c5c0161e5b27a169be515780a7d08" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.069Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "8df6816fd33939238cfdaa97087931d871505e3e2d83533c0e08671faacf4a6d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.068Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "e568387740f56acd92ca26c5215b98935493c5693842cadf364a3bee3f1b1960" } } @@ -9932,15 +9932,15 @@ "9606738dfb47e926dbb72401f97fb8dcdca15e8e7e4c7c8e0b1de1923f128ebd": { "f38bca2728a4ec18acf3801a37e29bd6ce1663c505004c92a4ef0fb8bcfab83d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.065Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "4b09186d1f8d9a5f23488c38fe7ea91bd3306e6ef6e45f6a3f762a1c3c016e12" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.061Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "3a26cf8789bc4697dd50305855f2b4ae32495e75e401de44158a6cb679a644cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.066Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "fec436520e380d231588ed9d132243eaff2e9dc6fdc1187402743648c67fc1dc" } } @@ -9948,15 +9948,15 @@ "9879a8ecb21ed941282ca62ac8cd46ca90a2e07bea45df3014931af580b18b1c": { "1cee6eed8b351ab527a9d9c859764f01e20c33109d8796baaf74d0bfe5e7498a": { "zh": { - "updatedAt": "2025-12-04T20:16:58.069Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "ecba7946e8ddc074b59e9cc44adf33305137b709c8cab02c63b15915f53053a1" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.070Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "5dd159fbcb7df23b6bf55661224d6b4f6abb0434c17748ee17ea18b920ba1012" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.069Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "98b25b03f032b612502b0e5491217972c1555c4b5ded4ea67af99ad8a0a1ac4b" } } @@ -9964,15 +9964,15 @@ "9c64eb3f63ed2f4471f8cc3e3a16b5d6f44f4c39e15dce1c2c911d1a94e1a018": { "4af09e0c2db5842c3ba3437a58d8012e6ed6971aac46840180567463da4f8ce8": { "jp": { - "updatedAt": "2025-12-04T20:16:58.020Z", + "updatedAt": "2025-12-05T15:21:44.750Z", "postProcessHash": "b1efee257199b0d44577402676f52a237486a0a8f63fb88a327a0b6d81c1c77f" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.051Z", + "updatedAt": "2025-12-05T15:21:44.762Z", "postProcessHash": "3ecf8383f063105aac10b065b0ddfdc0925233ae219cdf2f2856e25a761d8772" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.076Z", + "updatedAt": "2025-12-05T15:21:44.779Z", "postProcessHash": "cb0f338207364ed68725cba42473d90df9c2d1579f9da9740b7a5098d2b48170" } } @@ -9980,15 +9980,15 @@ "a2fd395ad42270710df1127e0482607ea48ccfe81a62976bedb63b46c8ceb860": { "67cbbbbf1e4f7f85554eebfe9fb09a5afe145f060eefe6aed1c811dfc5891361": { "jp": { - "updatedAt": "2025-12-04T20:16:58.069Z", + "updatedAt": "2025-12-05T15:21:44.774Z", "postProcessHash": "5e0b6f27d2e083ac2bea40ad713f1632b91086b806ce3f7f63c1acec3909af65" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.070Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "d47df8292f9cdd5ec5f1bbd7287ed48ad6a0b7c5c08b8f4490c2ec72ef9e1c1e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.066Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "1052e2bccf5c044dea5b229e947ee351895be43236a7972e19a5b81966827dc3" } } @@ -9996,15 +9996,15 @@ "aff3738ef426bb03f782516f0c962dc0d4f1e8b1e75422276233e8a61abcbbf9": { "62fbdd6dddf79ab74c534883a022557ea5c732ed713d1fc244291ba771204269": { "jp": { - "updatedAt": "2025-12-04T20:16:58.071Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "31e69d90f59f66975f7e5b26ac6be2a647ea9ac5cb93f4db20cbd6d4a993577c" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.071Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "99eae06a104dbc0e1a3edc4f78803ea282e49f0de7260ae56a88af0b974163f4" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.071Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "07ab2a551fac06cc977f00b5514b6fcc0b56e5bef5271098752c814ccaa5c32d" } } @@ -10012,15 +10012,15 @@ "c61ff854a1d65abf94d196412aea9f3db52e099f903e0aec1c8dbda684f0ee4c": { "6725d42405abcd2763e59c5af20b80e294c49a24e5dfded57358991054e676ae": { "jp": { - "updatedAt": "2025-12-04T20:16:58.067Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "3ea16d49609af1ccb90ffac301a7d59193b74893e47a8f6bb597aad96b8cc098" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.031Z", + "updatedAt": "2025-12-05T15:21:44.768Z", "postProcessHash": "45875ab36b35dd3602b95009102040ec47db3e875d047ecbe941828774d5965e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.019Z", + "updatedAt": "2025-12-05T15:21:44.749Z", "postProcessHash": "fb65b59c212e6140ba990b590fac2be9f7d366144c0196a56809cb4438a952e5" } } @@ -10028,15 +10028,15 @@ "c85b0e977e47a5de069cf6bc2a4c3c7c368f637081c6c7a74c2b3f09f541da76": { "6a1875203c3c11a5ddaeaf844592c8aa66c906a5f10d8118af659f3188166f2b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.067Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "079ceddcd87e9eb6c43fe73273e0f8f8e54c336065000eff0aee4d9aa8d40ee7" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.063Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "eba651172ed8c4aa484b9730e6ceb0c4ac8f3985368ba6afb9dcb70ea3679496" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.065Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "f818b480dd0fd432847676d43fb196d9cc11892c10636f2f039c0b387e7d96b4" } } @@ -10044,15 +10044,15 @@ "cfcb155375b8c7dce0cd7951038c468106245eabdd22e87ceb685a86ad5787b1": { "4f1c6f9f3c784ede710c284000e57bbb2570ca34ccf377e55bb0aa62d9575fb3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.074Z", + "updatedAt": "2025-12-05T15:21:44.778Z", "postProcessHash": "dc9df8eacb9928451af33cbeff02eba788a99459d87f27b157411543c445bbd9" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.072Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "ef74d1c40db1abdbd7185fd8f66fe6f09e739ea9fc19b5280d2b269e2eb32eb6" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.070Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "20a6cc625aa0d0f78ac7e09772aa3b971de78f687604669663ea14fd753f59bb" } } @@ -10060,15 +10060,15 @@ "e771f00ee03a6b8ac3a2fe4466ecae0a0ef5fa4a1c06261040efd4c71c7df8ca": { "afaf81983280a59e7aa1584371969108a9f08bbf39abdc8489d3da2cc68c29c7": { "jp": { - "updatedAt": "2025-12-04T20:16:58.072Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "50aeede48cd2f83b32ec8cc46bdaefb9a6d17031c86ad549e6efbdc6cc773f67" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.073Z", + "updatedAt": "2025-12-05T15:21:44.777Z", "postProcessHash": "4a12e10c7b455cdec2309c15fb1bc7375912995353a4a7280f4c2c49d0cd549f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.072Z", + "updatedAt": "2025-12-05T15:21:44.776Z", "postProcessHash": "6da014082767c05649bed6d6a7cf3221c056a07db654de746b31c515ca4b94d8" } } @@ -10076,15 +10076,15 @@ "003cc65643f9d9786893e0bde4fee0fde5fc25de83cb44c9b184c9f67f682330": { "7bfbb7c49650987bfda71358fcdb6c75e10f3775e57dd80dfa998cd9df1e42b1": { "ru": { - "updatedAt": "2025-12-04T20:16:58.088Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "6319b6ad03fe6fc1de2c6cae1b2f9ce230f80a1703d550090e5e9440df1d14fc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.095Z", + "updatedAt": "2025-12-05T15:21:44.791Z", "postProcessHash": "ad7a13b5fea2b7dc81395cb6e5a1c10e1ee1d93300ded73ae933a549867f5b5d" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.059Z", + "updatedAt": "2025-12-05T15:21:44.768Z", "postProcessHash": "d4f81ca0d2809d049dd909bdc3d7f6f58185d07273a3cb439e06c18358203133" } } @@ -10092,15 +10092,15 @@ "0bf287012c3e4a1823f4a6d9af97b4ff2ebf50382b88f6e446f2d2462ceff028": { "6fc59c979e71f5ef7d01dffb85d9c0d52f0f7d9af3f0d2364ea573c821dfb4a9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.065Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "bc4fdbefc26a99dd79c21dbc43d173dd2fb950b6849961eea452e1bab8c55864" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.087Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "c535bd7ce2f0768a16c68ba0302bb1918b240dac57b0664abbfaed73e77dea5a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.066Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "077617f331d3b34a1cbc3a0c47a898b3b5ef1c917e727967fc06efc8ac54e7d5" } } @@ -10108,15 +10108,15 @@ "12e31ec44b3dcf65828805450d562ba22004284c24e16fe91cc2a8306183626b": { "9894639ef964614d3ef8027f22a7deb78a5ccec89d41e007f288e7db21591494": { "jp": { - "updatedAt": "2025-12-04T20:16:58.088Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "e6a5eb4ea058b296065928822b39c5210a907eab18fe157bc575f9f1eb0ee4f3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.093Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "cd586823ccb2c76e1e11e4f4a4c11ab8f99a782d9b24aceca3e9c9c2883471dc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.067Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "7a0d62fca82651e948e25bf2e95024356b0853bd1ca1d04b82fe4bb45c8dea75" } } @@ -10124,15 +10124,15 @@ "1a8c3dc523efbedd8ceca5a1bf0b315be2ac1dcf90f08530d461bd213eef4f7c": { "da9e17112c0ec79d1fa82ab5f0ca3db1c53729e70e3fd6a2c4370c03691b292c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.091Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "be2cf650b060caab7e111393e3d4c67f740eac95acb894ec68da295be7729860" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.092Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "4c9756137c70e9d3bde68d61368737490b6052ae5e164910e2dc7618f248f152" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.087Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "db749271cc51a1b38c2135f134a9ba31a9315b1fddc4d6bc093d41e73c00bc5a" } } @@ -10140,15 +10140,15 @@ "227d51f47fc957dea766831ea43b73c58c9e450c7aadba923fb55f27b830acd0": { "88ce0d6c08629f221dcfe109d7e8a09898443472a62411ee8e84cd0cd4e77851": { "jp": { - "updatedAt": "2025-12-04T20:16:58.084Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "210ca9920c7cf1c3454375d5f2acb7007bd9d7cc8f46673bf52bf2f654d0969d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.064Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "edb3ed7bcd4edc610d8ba351c0c070d4de768a5f26215694ae235537f785c42e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.067Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "e1ad453cfc16346cc84f5cc867eb44c28446d4d5f99134fe399a51b948c86589" } } @@ -10156,15 +10156,15 @@ "2788d1737d33b8bd86e0aa8f0dbd2c1bed226411e50160a1554ab9361f7532d2": { "d0cbc85c85d4d71c67952d11b3d238be8fc75b6ea16860b09935bd9f96add653": { "jp": { - "updatedAt": "2025-12-04T20:16:58.064Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "410b829158f080e958cb44d2ab071c78a178d5ed71a28b2c2e6b7e826b2c4ac7" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.060Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "b79e51183c68f6353af8a4abfbc7692c5a0bf15b114091c0f8d5212f63fd913f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.064Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "ab776a5478094f30b8399dc9b6f5e7cafef5cc020e8dbe926b82ddacd806e887" } } @@ -10172,15 +10172,15 @@ "3b065a4f3fc6b25a5184da43b7b0221b5aeccf7b81e1255bd8a6d2a6b86a8ae7": { "c88ae622109bfb3777e96a49c9bfa5f9889a8187d65d687676ef5de1bf070514": { "jp": { - "updatedAt": "2025-12-04T20:16:58.091Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "af60e7ca25646187c01c1623dcd5ff94f3decabf3e1b1483d3a0bd342bb5f798" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.094Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "1b98331b276ab78f72089f9ca8816d69922d15cc548babbe01deaea9e03eaf62" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.071Z", + "updatedAt": "2025-12-05T15:21:44.775Z", "postProcessHash": "9fff5b47c2022b7492ec05827b4174ce97a006b152d4302ac171c84a3ad7e5bc" } } @@ -10188,15 +10188,15 @@ "3ffea18e4142d273a23435211934d60695e426723e88ea42a887c753673da12c": { "9135666001d3b0d949ff7db424b18a4b655d4b8eebcafa75a9e472d040fbb808": { "jp": { - "updatedAt": "2025-12-04T20:16:58.090Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "d0a6fd2421df75f192fe8cac307a2fbe88c17c98a49074b9840bbdb6a0f190e8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.092Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "771ad81d5fdb1d4be89e9cb93857c75adc6bce7bab81bb2166502fe84b062131" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.090Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "936b1a04466f567d022b75e6dd3f2be6399522bdfb0514e876715d3dbd6260ab" } } @@ -10204,15 +10204,15 @@ "6ae9dde7cd947f044ac422d9819b807221ad5825d4f6859ff2c72f3c22d7331f": { "f17b1d4769177c8b7b3260aff487e581de4450f37dd2fbeff3e0a899b7559706": { "jp": { - "updatedAt": "2025-12-04T20:16:58.063Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "f53602bdf01194b0c0485bf07724bf623a2aa195c0212d517219a41dd53c3e6a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.084Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "0ab37a0f2cb2506503cfe78e1a149d65353c1f7509ad424aab3608d8179a7183" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.085Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "f10e507d8c198886c980b6cab91e5fa3f7026c745f76ea3035c506730cd4c743" } } @@ -10220,15 +10220,15 @@ "95219024ef9522a55be4e6513f75defbb49883b4a5e32a05d187bbbcc9f53c16": { "069a5c20a99f64397b1d13060b06470148c26b5072a36b8e1b16d746b0e4ad7f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.085Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "83aeb74e87cf7735240ec3923fe59b0d713f4a6bd5f83a383312b05d797a3f59" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.059Z", + "updatedAt": "2025-12-05T15:21:44.768Z", "postProcessHash": "117bff0ee84e502cea527bbc36b3ffada0d890cbe782e76cf6a18b51c8f47626" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.063Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "43b2db3a2028d93fd08d6a6be0157b6bf696438a5bbcbbb3960d23dee30472cc" } } @@ -10236,15 +10236,15 @@ "9829e6d504f03f89cf3f9782f9238f3dec6efd6d3810dd672ec15bd67e65f810": { "e59e26adb9705f2e6456ed1518f0aefb7d0cf0e3b13b040fa78b4a590a1181c2": { "jp": { - "updatedAt": "2025-12-04T20:16:58.062Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "fce1bd0ff2f97509b56a72c10ede4bfd5ff12655c9c3066043893fb5318d3ef5" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.062Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "67afb50837504ef4df2562e835effad24359a67932b802993c8d6f228eeced15" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.063Z", + "updatedAt": "2025-12-05T15:21:44.771Z", "postProcessHash": "8042cbfaa003f6d43a3043eef0baf04c4f6c2d1c7e4afa796937d29415c24cad" } } @@ -10252,15 +10252,15 @@ "9f51461ed5499a8b1f450f23f773f55200d3922c76578fac080589c6d4bdb7c9": { "eaded5b9cc370f7c0893d58a270227dd93fe67bc1568a6b674bdee429e92ac10": { "jp": { - "updatedAt": "2025-12-04T20:16:58.085Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "697fd5fcf9e4abf4fe7745a76cc11ea810fcf8a135df2e6c873bf7f2ad787bd5" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.066Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "58364e384ab60314a9654f75f5ae23672245de32f60bed8a146bdb4ddde8af46" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.089Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "63e586e5ea1a612afc7f696442cc4055299743fd74bd782205eb53d735eba5a2" } } @@ -10268,15 +10268,15 @@ "a4186d2152fae14c248c1297810d8ae84b17536d8f68513f586c1e2d378d79fa": { "da62d5ba1b9b52d86fdf52ef9a5a5fce77010670db44844630fe457d0a64dfda": { "jp": { - "updatedAt": "2025-12-04T20:16:58.065Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "0b0cb3ecf7e2562e72bc77e8f0c53f0ff60121ee4cb20e71d01f9ee9261c6e35" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.065Z", + "updatedAt": "2025-12-05T15:21:44.772Z", "postProcessHash": "7a3248ab00069cbfd5bbedb95a77b5143d7c6fde20db857c5d5c0a7cdccc76ce" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.086Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "e8863ce31e2a17f66fa0012f05e74be5b93f4459cbea29e80835979e7f16b4ae" } } @@ -10284,15 +10284,15 @@ "a98f06f78a3ec0f29bb4f078dbb0c37f77d01618cebf2733ff11b32c497f7b24": { "a9a69fd4a89753f57c102accc6affd4752db865e189ae4cc4e551815c20e9964": { "jp": { - "updatedAt": "2025-12-04T20:16:58.061Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "671e35f78a99dc438e05fe68d155520228e0506ef958ccbca87bcf938b7010cc" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.062Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "5060f77334f3d2e2d28e5ff49d6a1def93a4474b2cff440cbb8f2ae4d4342b92" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.060Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "a3490f5c8afb9ce38b9a84b74518f84d3f245861ebdc938db10d365918dcbac7" } } @@ -10300,15 +10300,15 @@ "b0f8d850504855a8481784c04ab4b0c0a35453e0ccfb3fd1251528b4f77a8b8f": { "0dbab51aa36f5b479c39c4f615a8a9b4493aeae6b1e482a4ccbb9064901d7f3b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.094Z", + "updatedAt": "2025-12-05T15:21:44.791Z", "postProcessHash": "49f4100c782aa90982be9b97284171abe31a650b5a439d5990d426ad6398ba55" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.091Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "b8de354afdfdb2f9c2f6e921b93f375ca467e6f109d53efbd6cb87ff2d73ec7f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.087Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "d36e53b3e5651f5add8f28e1e52d5b074dc996451404b04f3e2d9ccd39470c24" } } @@ -10316,15 +10316,15 @@ "b7f8c2c6c3c0d8cae21834a515d86c9ba6864e0aa9c968e945adf28aff1bd428": { "bbcd7ca2f8d136d5cdb1c28f0c53253dd6f2040d23646bfbb062d85161da4e08": { "jp": { - "updatedAt": "2025-12-04T20:16:58.096Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "d989d3d6c01e541294a196b85a3f7ab92bcabbb8db5f8d256aa12fea1ab39362" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.092Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "4d9453cc58c5b8f6abe5f57961e924e2c1b332a0b9abc1be4cfaff73620ba4ec" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.091Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "a88db46b54f3c6c94b382a1058b76e8357f2a0f1b7f5b7e459971b8bf955665d" } } @@ -10332,15 +10332,15 @@ "bc18991124499a7f66617eb5b243033498a2376e769bee9084fac4cef0b7c045": { "d62f4767bf6ec9661415c60e24e41a90ba047d383b9bfbb29a327253f604da58": { "jp": { - "updatedAt": "2025-12-04T20:16:58.061Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "d0d57e1aaeb9ff28446404199f19b0fad437776a6db1e3172c0e0cbd6deb8d90" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.062Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "6ef2b9a52cc970612ed8d1b8acdbe588b78f11e82fd29b8d9dba592b68200d7d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.060Z", + "updatedAt": "2025-12-05T15:21:44.768Z", "postProcessHash": "55599ba9ae2ab045d4116daeab5255f98ce0b50e17374f83bc7a8ce0e502a41d" } } @@ -10348,15 +10348,15 @@ "c23421b71aced0ac75a1f6d4e5a8b8ae239e457c02367e880b6d1a4ff7277e3a": { "4719e0b0aa1afb513dbea43054775d5c3e22f6638707c72a91d88a4237b487bb": { "jp": { - "updatedAt": "2025-12-04T20:16:58.096Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "2e9b2544e6ae3b4162b87d3e9dfab6dd0f36449006f389c40c189fe279786d11" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.096Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "5db18982cf8e39c8e92c7fdbca028589601da242ea3ee48fbc943168a9e11937" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.092Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "54dccd61e53425e0966b9f324b6677689c261f2af2b60bf92cf24062e5d364be" } } @@ -10364,15 +10364,15 @@ "c621962c4e9a6c1f2dcb4ec8f98b33faa0d771e9aac97195014471b0f353099e": { "8e462b2a96c9f45baf5c523e8a97e3ffac3676c40724d42a9c5109d5413a54bd": { "jp": { - "updatedAt": "2025-12-04T20:16:58.090Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "9321e8d5b126599076342cb82a51b96316248fbd2430bd337bda7ce2febb0865" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.086Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "78fcdfe39d68856ad3c231d910026e1b397e36ba3cd125af42a29f145c9465e5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.088Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "808cd4d713885f6824145b9f9aa1a880d2af3fe9d3c82139062ef6407d099db2" } } @@ -10380,15 +10380,15 @@ "c6addfcf4c2f183d0885f78b6bee455eb175ed28099b76df7d58a87ff79c231e": { "0bdad070e3c15637e1941843f067e2a8ab54f34932a6197c4b57662a1ab08586": { "jp": { - "updatedAt": "2025-12-04T20:16:58.063Z", + "updatedAt": "2025-12-05T15:21:44.770Z", "postProcessHash": "92fe330183d95bba737dba89b09b87aced21260d5f4713f06e26716dfe893ce9" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.067Z", + "updatedAt": "2025-12-05T15:21:44.773Z", "postProcessHash": "29183797f829a317a22669a5946df588a6f32339cb201a51cd4824452f351131" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.061Z", + "updatedAt": "2025-12-05T15:21:44.769Z", "postProcessHash": "9e29e451853b78cfb9ab34c5ce1655c3b0b4da64b68b7f34681fd1e4b698896a" } } @@ -10396,15 +10396,15 @@ "d0a117042cd54d2d897e9ff128bb30722802674d738351bc727ad6a48d97c13a": { "ef198e4984503045b3061df3df5083cc081e20ea251352bf6175ea0983742b28": { "jp": { - "updatedAt": "2025-12-04T20:16:58.059Z", + "updatedAt": "2025-12-05T15:21:44.768Z", "postProcessHash": "eb99fc2aaf3c2437d7619366a6c0f8e5c8b8ba01b1e93892facd669f2bf3aa89" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.086Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "869d4039ca997fd59b3d6dcdabcebac46d42294e6c0464c8c5b0947c3b4d12b3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.087Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "5a5a863e456eeff7ec2fe80fe83517f9df6cd934c37abce6ea958733e1e11ad6" } } @@ -10412,15 +10412,15 @@ "216d22e459b5339d73b5e5f5efd10ba0d324035b56ffd8c09aca8ff6053e5be7": { "4347cf6fe8d3643c0bc778bc6d6e1a2d7728b22b55e566913fa8326c720d6e54": { "jp": { - "updatedAt": "2025-12-04T20:16:58.086Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "2ac74d44b94c4878915fa5197b56a0d32fe8336e76db34b30344f87ceb0d5c82" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.058Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "1492cfc48f29f44c63f19a53c046d4436da1fd40325e05269b8817dac3f959f9" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.057Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "04cdea08801d2fc8faf5a3b9a23213bb192432ed7814cb477c9d4b6099489f50" } } @@ -10428,15 +10428,15 @@ "2f2c64962247267011454aad885684dd07f5230293d18c996004e9a086a48a9e": { "de25513083b27abcf3a1ed0793d26139ab348f9ddbadba05a87914373d86d034": { "jp": { - "updatedAt": "2025-12-04T20:16:58.082Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "f0919108f1e3444d7ad0ed2ce7f757fa4fe95aeab95e3e41b77ff6afcb737ad4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.081Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "2ef3e3402969643755291c71765ff496ffd60a25cbfd8124c5d53d85b2ca4578" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.083Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "1f765a10bdca6b8f3cfe9a764e7705aa0bb2f56074962111e2022c0be547c62b" } } @@ -10444,15 +10444,15 @@ "3b502bb7173f6131431ad8322b576ef99ef5e91d3612beb68e0f4ce3b6053bf9": { "c7797285e4835ab50d34203593f5308bddaddec5d13f14f4f6d7be4be2239eb6": { "jp": { - "updatedAt": "2025-12-04T20:16:58.082Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "6a403b8211deea85215986079f966f71866a9413b05528656c732fb75ecef771" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.082Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "3244bce27aba0c03411916d10837079230501af1c5f5d7f87675136726e364c0" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.086Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "23356880c8bbeccd027a2e5f615f49006000e6679f3d7e343c36459d4829c4ae" } } @@ -10460,15 +10460,15 @@ "3c55f6319b00bb5e571612e6f740d049975d5c3de127e0de80d0f34889dd8b12": { "08f719dba95186bb05f8277899abf3443e7cc9fca51a32ba8727dadf82c77879": { "jp": { - "updatedAt": "2025-12-04T20:16:58.079Z", + "updatedAt": "2025-12-05T15:21:44.781Z", "postProcessHash": "31d5018c03e2275aaf7b62bc09999ecebbcb3faa1d61648f09967dacab8bee31" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.079Z", + "updatedAt": "2025-12-05T15:21:44.781Z", "postProcessHash": "f7f3315104dbfcc334fe3f80bcef41346b32d77c45ef19876b65838ff944147e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.079Z", + "updatedAt": "2025-12-05T15:21:44.781Z", "postProcessHash": "dc897f8f56e725e54f16ff04fbe4e56fb2a8ae345118b1e1dde9ce7baa26e649" } } @@ -10476,15 +10476,15 @@ "40ddf7122cbd5708445d09282a9aaaa01b51f15847138bd583939c6bee63c5a8": { "1efde3a11aa977a804768bd9d231b648a793e9638453375585e0f62486abe9f9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.080Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "8461b209658fdc5e6cfd3c58634d875c62e37217cbc49c5dbcc876f2f97aa586" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.081Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "b8fb28e2e7781fb925ee3ae32dc4d36681b48e4c9dc4f0b4e8e6911e14fcc0d3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.084Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "d063aa4e649762490a9151ae3b8a695b234ee95aa16973848dccfab3a5da7555" } } @@ -10492,15 +10492,15 @@ "44e6428941aba89bd0fd45e401717504047bf2582288d528651664c68b5860ef": { "3dfaa8d64c4eec1438f9e2fdcdf95885e290daa7a1d6f9280e7587fbde343224": { "jp": { - "updatedAt": "2025-12-04T20:16:58.089Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "34cf5b0a58eec96dc3a359ea62f542c67c24971e366f6603f7911744c001a748" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.093Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "0799b2eaca1f6b687dab2f5ba247439f8cdf9bb153deb0f34d866dd8d344ecf5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.093Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "ed66176600379d1a34c24753487c81f771ee346d411907e7d97ca04f672b8fe5" } } @@ -10508,15 +10508,15 @@ "5034a9cab8d174bbba4fcce036fa29d5dc6bfa365274ed3cc44a0e5ff13c4738": { "c73720aff6e3013b19ca923ea6650c5399c7cce59157340fcac3ecb68f255f4b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.085Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "d6488e7f0d32e03a063c00d418aa05c3f1bbab9eb3e2a1e094e4c1360e23c7f4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.058Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "40711d5cb0c75022c52ee21f5bb3cbac97aa8888b4275ef4a7a8a443bd576af5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.090Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "e9401bcbf58e98e101504336b0f707148971d64bc196b40c23fd351a06a83c83" } } @@ -10524,15 +10524,15 @@ "541698242c872ea29127fc2dfe64cbea8b6e3ad3471aea2ac19011a37d71e754": { "08b7c30758e175cbf2a1d09a301193f88562d6e7ab18b078ab6c4b805b81620d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.096Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "0c8e1918cdfbeeb7bb96fc9ec72c55b9365fe6cc2ce90d0ccff456b97a5d8f5e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.094Z", + "updatedAt": "2025-12-05T15:21:44.791Z", "postProcessHash": "c251bf9a5d0942e93aab0752a9636317fd8ac7e7aff5186ab456711d6c234df7" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.094Z", + "updatedAt": "2025-12-05T15:21:44.791Z", "postProcessHash": "77a44a9aeb60f1efd9b28186e8814226531ae051cd02af60b36fe4fa92e7a0a5" } } @@ -10540,15 +10540,15 @@ "67199cb0b07db7b73e9d48c3856e7a80fa64a401ac9356f38dd56f0ef6af4f87": { "2a193532f966a6fea5015f9758bc034a7cbdfaf8b91c7431fdbc29b0d020b9e8": { "jp": { - "updatedAt": "2025-12-04T20:16:58.084Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "2c495f57690460e9a5e402bda07d617e9616499622c2e557f1afd6f2e1af85f0" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.090Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "5247e92de187ae72c32e6cba5e98bf41935bcaec99447f61fd4e0ca141e398b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.094Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "5b79703980fdc54b387535e9caf3cdc82a99b89a0655294124fbefb9d4304c75" } } @@ -10556,15 +10556,15 @@ "74f8cb35854e4cf151ab34a6587a3b0c76868a99d06b7a1b7eb88bfdd101dcc2": { "9431057902d3a29dbfbbd44c8cc88c4dd2b703331d32f31fe7eab5675d5d047c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.083Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "68c4e00c2a17ac04b349b275f9c3e5e89ddb956660222f0aaa430dc8116e7b7e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.082Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "5e2fb4643f691329d1883a61e36d1ad04fffc2b471bb06756783024d9a46e21d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.082Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "02292a0bab75803bbf04e38bb3ea652a26f8dc86844234a2fa689baff86812b7" } } @@ -10572,15 +10572,15 @@ "7e0dc4543c81b33bb19b9b0222c533c95884214b5877d7ed6c08d6101f73935f": { "4d2ea53c6c8b773cda0b23778f9e67b35379e9de8b35e7412e470060aa209fbe": { "jp": { - "updatedAt": "2025-12-04T20:16:58.081Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "2fa08315740c9fdab4ff06e9843b6e1ed2d56cbf2d140128c132f7ebf62020aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.058Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "aa4d2aeebb06a0cfbb399863fa41a00499255fcbba17dad58cc18320257f038b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.083Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "9140dcdbb081da6bad53efc2d3289135c892a0471617ec145c9a2147ca912edc" } } @@ -10588,15 +10588,15 @@ "885b5d789ebf32a2edb92bc498ab9f2e881afed86ef284b4892ee15109bb1321": { "b7053e1130cf6901ba2d93962cfe71528955b54a3427effb3f8dd0cb63a10854": { "jp": { - "updatedAt": "2025-12-04T20:16:58.080Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "15ffa66b2ea41029d262aae8f3241ecbc70b838af51f0bfc6980e18f723df370" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.081Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "bb295f2965f3d1bbd769cfc8c63bd1b07159fc6249f9086d99ddaef4b7a27dbe" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.080Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "16db44ac9565c7051e60ccbc99ff25a35000445d34eca425f439abbf1f813855" } } @@ -10604,15 +10604,15 @@ "8c4025d67d4f83f1787b2935a24ca235fcca456bc7505ac9ac478e5351ad8297": { "3cdb2c61028a51f468d7e958cbdb00bd91b81a31123aacd0a6e4c0f676f159fc": { "jp": { - "updatedAt": "2025-12-04T20:16:58.081Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "cd47e67e319a18008b96a97a358120935647dc6fb1d7cc30b8052210a70caba8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.058Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "839e89f91a549fe12739ee55617279b207012391fbf6400959e8556094d2bbc1" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.084Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "0cc9fc706459c43dd39fd3c837ffb186422805761b5cf1a823c620d46906255a" } } @@ -10620,15 +10620,15 @@ "9f2ad018997a5b2a59f6bb176b61937bfa9cd7e81143b53306fe58e2c41400f8": { "79e16644830172d488a3acf805a5b9fe0f8b79fdbba1afe39d5495d561479ee9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.095Z", + "updatedAt": "2025-12-05T15:21:44.791Z", "postProcessHash": "61c4a533910b44e5211e87f658690e0f9615262c412803ae6e8f11cd35c05dfa" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.087Z", + "updatedAt": "2025-12-05T15:21:44.786Z", "postProcessHash": "02ed596efd2c934ce511e920505a8c77dab2ecb8ac37bd3a55bfaa54ab683e11" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.059Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "56bbe4dedfee5bf881c36764a73f419181828f296e4e3ab9fff48accaca389c3" } } @@ -10636,15 +10636,15 @@ "b2c15bf0de452ad7ec7d6015900f40d41f66f8080e473ae5d92a9e398fdedca0": { "a7e5cb05a26913f4d5d6b8e23e33097010b909a91fbc9015096bd23deb3ef019": { "jp": { - "updatedAt": "2025-12-04T20:16:58.089Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "4d6f830f8cc608345e883dabc3b9ffcbf83783129c9a4186eb528ef00993d543" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.088Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "674b5a7c921a94ca25ace6c796accb670e67b1c58939f1ed1fb63cc549307673" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.086Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "fd9481ebdf85a6ea0ab70acacd1e29c0867476d8acdf2b0d9c6265ffedce962a" } } @@ -10652,15 +10652,15 @@ "bda6feaa2f751d257d0e9bb7488f846a2998fca7dedddf3b4830683849ba2b58": { "2afea7889acf8ea5044a0d33842f100ab65c6cb7f1df295cd1f21f7e129776fe": { "jp": { - "updatedAt": "2025-12-04T20:16:58.083Z", + "updatedAt": "2025-12-05T15:21:44.784Z", "postProcessHash": "88d078238d5b7aff489f9e50085b246d117036ece9d257236803fd105054824d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.083Z", + "updatedAt": "2025-12-05T15:21:44.783Z", "postProcessHash": "a1f43f0a18a770089269c648567ab706cf67ad4878f91059f5292901cdca1168" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.060Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "5721a55f87f25b2447cb3c77858d581b8c8c0c129010eb19c34f2ba98ff45ac2" } } @@ -10668,15 +10668,15 @@ "d032d67a58a6623fab2b1b66938ad265d806211c7e670b710006fa88c0fa60d9": { "4c0a1b6590854c3a88fa162f08d4611049c85780870affbf3d49f61a3e412fae": { "jp": { - "updatedAt": "2025-12-04T20:16:58.080Z", + "updatedAt": "2025-12-05T15:21:44.781Z", "postProcessHash": "7a85009e38145aa06fe6905c9feea101a61b6677eb16a6a975c85e3fb0ae9953" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.080Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "db5e64d44717d31dce9e9d326febfe86efce17d964abd29e9fa99015eb1dc537" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.079Z", + "updatedAt": "2025-12-05T15:21:44.781Z", "postProcessHash": "be3712768ae0265d3da8e2e895ad437a621e22da81912ec673c7c592e53616eb" } } @@ -10684,15 +10684,15 @@ "db88afafa5d929b34cdf925862a67b324309a0e6c76686a5ccfde2ba82d5226c": { "e4a92a198d90a6cd53c04928fa4fb9c381359603f0c986e9d59a15fa39407592": { "jp": { - "updatedAt": "2025-12-04T20:16:58.091Z", + "updatedAt": "2025-12-05T15:21:44.789Z", "postProcessHash": "b0344a5a18422cb6fcccb70c17fb41d166ff7f4557bcf4656b72eff0204afed6" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.089Z", + "updatedAt": "2025-12-05T15:21:44.788Z", "postProcessHash": "973fd83765aa78bddff81e0288de805b8bfb04eb00118968618b7d81d7f23fed" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.088Z", + "updatedAt": "2025-12-05T15:21:44.787Z", "postProcessHash": "753986fe52248966cdf1c9db66a1aa8b8aff34fb98208f8e105bc7a497790fa1" } } @@ -10700,15 +10700,15 @@ "e18abf4c56dbe146fa998f9070622acba484b5011490469cab0c1e16bc156647": { "58bb991322769280e6d10291b76e02c6a2e7231dc177a9f01f4c729dbe75cc7e": { "jp": { - "updatedAt": "2025-12-04T20:16:58.095Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "4113e64674b7af02134d6a45910ba1db2b383153d16659a0875f9ed7e27f41ab" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.093Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "40a02872f90edb1a424f9ab315c099cb34a123d7c66762a83f831cf0c841db7c" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.085Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "723a339f6530f337c839d0f94db645a210c85b45bad3a43f5235ca55d82a7334" } } @@ -10716,15 +10716,15 @@ "e5455b8e71ca0240dbae9ace48f312b2859517718c9b5597790152f5c5e4c55e": { "70f5e4c518ecfa04a597a86630bfa6b7c13859702dbefa84f43a08c628bb9c6e": { "jp": { - "updatedAt": "2025-12-04T20:16:58.080Z", + "updatedAt": "2025-12-05T15:21:44.782Z", "postProcessHash": "f3761c5fc409fe25da8fa803f4c374edd5c1f2ec5a6d5eb46cd1466cfec110e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.058Z", + "updatedAt": "2025-12-05T15:21:44.767Z", "postProcessHash": "f1f10d31a8ec8748ab61153c74d5e543bf46635c94fa567bae435be5adc46c7d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.085Z", + "updatedAt": "2025-12-05T15:21:44.785Z", "postProcessHash": "945315cb0689c7d02b52a51f53e9cefec557e3700f53ec6db86c6bc11b13c9ec" } } @@ -10732,15 +10732,15 @@ "f0b04860378a97e43a484e7cfff527be98a82a04b75ec9ff8b95b88bfe017c21": { "4d6e6128d8cb69272312bc10969428b2d7ec14e93843e97641bd6ee1b539f104": { "jp": { - "updatedAt": "2025-12-04T20:16:58.095Z", + "updatedAt": "2025-12-05T15:21:44.791Z", "postProcessHash": "fe705a27999e5e8f95e313afd2d0a1b80a330f947f56e123b25c14031de6f53a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.059Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "39d044971443b21d59439600d34d409d96ce8af02c6f8e813cfab5a40a7ff8d9" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.092Z", + "updatedAt": "2025-12-05T15:21:44.790Z", "postProcessHash": "4d83f0604e5d0e47b7ddc39febbacd9a98013464f2d6f2104254ac7ee57cfce5" } } @@ -10748,15 +10748,15 @@ "0f826dda16a017686da9cd258a7b36a8a0fa9bf0906faf288ac5dc07e8293c8b": { "7e91c488285e13a646cf4e0be8efc95cc3461d1b565495878e5ce6df5241454f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.107Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "66f9b3e1e73fe2458654a49e1795278b6fec5fc475fa9359a7570d3748b50abc" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.106Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "1bea8ffb75c8298563ba4e2930de282570283d6355dca2855985910299350044" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.109Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "dd5a86d85979d4e5bf40a7977b27a65dcf8f13b07310bb703646c425646e2d13" } } @@ -10775,15 +10775,15 @@ }, "aa22e9603b0ee7d5f78dd9d88e3596885f852cd20bbfe4597ac83fa1c1be2b0c": { "zh": { - "updatedAt": "2025-12-04T20:16:58.116Z", + "updatedAt": "2025-12-05T15:21:44.807Z", "postProcessHash": "d624c2e6a9965ea0ac98f15b951ddceff00f7326fee3b3f9f48967afa801a456" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.116Z", + "updatedAt": "2025-12-05T15:21:44.807Z", "postProcessHash": "de018d2d6b4a80634792a7eaae5b3dc6c25960d89acfe55e4b460110e4a5910b" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.116Z", + "updatedAt": "2025-12-05T15:21:44.807Z", "postProcessHash": "1ff5c46e9f5f6ff7ca79742bc18eb36867e8f10609d3ff8f7f8ca38102fa08d9" } } @@ -10791,15 +10791,15 @@ "20547e4692854c30843291c8c4b85cbaaa2473154a503ada089b47a286e119c6": { "add80eef63fea1cd539d2ca896319743cd0debee7952a9062ff15a5bac9cc978": { "jp": { - "updatedAt": "2025-12-04T20:16:58.113Z", + "updatedAt": "2025-12-05T15:21:44.805Z", "postProcessHash": "67eb2b054df268b108c3a0faf3270ac109dc3489f3bcd78344641306c8e53936" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.113Z", + "updatedAt": "2025-12-05T15:21:44.804Z", "postProcessHash": "20fa9b3888430ed9fc54b78cc0d6b0bfc4e4660292e07c64b1b891e14660d554" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.078Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "95b3745ce1ffc3445d96eed03f87d92bae03afce90e2fc5afa594ec5b8add65c" } } @@ -10807,15 +10807,15 @@ "3f80767faa69da876f277f16dd9152d0f1e8aba3db884130fa4c7ea029eb17e1": { "c8ca096e88fcce6dd3218a70cf039d6d7d8ebfe91be1b6c3b85f141fdc1feac1": { "jp": { - "updatedAt": "2025-12-04T20:16:58.105Z", + "updatedAt": "2025-12-05T15:21:44.799Z", "postProcessHash": "3576f73d5ab569b5dba6610c41d0eddb549fece6a945768138d9994ef1bc74f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.108Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "ead4a6005aeaaea290b4a0f2e5ad1e3d7314773b444c2294f59cce3485eff989" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.106Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "5b3e7681ce098fd818559a203225d53b9df6c60c08eee658a98860182900798c" } } @@ -10834,15 +10834,15 @@ }, "a3e43704023aad4b3b8addc9c912c674a1ac0bc95c91480f4d77b6627040edd6": { "zh": { - "updatedAt": "2025-12-04T20:16:58.096Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "c614501e69bce800b2d8cdbb7fc155cfd9327699aa5c896cc0a95515be54fcfb" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.097Z", + "updatedAt": "2025-12-05T15:21:44.792Z", "postProcessHash": "3db126a7376e537ee4e26fbc19fc5b27db24fe400f30e1ccf8912a0ebfe8bb99" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.097Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "b3811ac6df428419c2e46b8c1c3b410d59c8bc449319718af138c4d541de54e9" } } @@ -10850,15 +10850,15 @@ "4f944066028f36b0a6f28232fe75a6ebde995b969ebfd8a3c379cd645f0ff366": { "8ded3d0fa9f33ae122022672fd02b631471b5177e76c368607b554bbb3efce22": { "jp": { - "updatedAt": "2025-12-04T20:16:58.112Z", + "updatedAt": "2025-12-05T15:21:44.804Z", "postProcessHash": "1fb05ebe827d9b4e89e118f388720ae6200e71c8e4006802948ea9efd7afc06a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.115Z", + "updatedAt": "2025-12-05T15:21:44.806Z", "postProcessHash": "b4af8004a27cf420e961ee606f31c9d122395cdbd1410f7bab003e83757bd2f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.113Z", + "updatedAt": "2025-12-05T15:21:44.805Z", "postProcessHash": "8acfb0da232bfeee15ac3bbafe4b8e27e14466496bb1e96d66e424d3e1702f9d" } } @@ -10866,15 +10866,15 @@ "74dcbdc993f03875931c0ef548e27e0ecdd4c39c4c084edc6eaf3237a562817e": { "a9ecf8d346bd106208732038ad37c4f2b9861186a25aead51cc7057a47bf2cd5": { "jp": { - "updatedAt": "2025-12-04T20:16:58.109Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "918ef54ebe85ad246c386f779552f8e5a38cdea34faee26ddd62088c8cf0bcf8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.109Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "fcd6f74a5f74437c31629f46622dbcc5393538c89688fecb02045e96c72aa46d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.112Z", + "updatedAt": "2025-12-05T15:21:44.804Z", "postProcessHash": "91f8ff05d0bb794e576aaf9988e9e6f241c790bbba782ff1593e5e0685bd3e64" } } @@ -10893,15 +10893,15 @@ }, "81865e2b87cbf670a23ecb1eef682c7e5fe88b937dbc2bc5d152964b74cbaee3": { "zh": { - "updatedAt": "2025-12-04T20:16:58.116Z", + "updatedAt": "2025-12-05T15:21:44.807Z", "postProcessHash": "a9a61c6157f81a96088d7aa0c1761e42324aa33ac6266f7a6613347dba121332" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.117Z", + "updatedAt": "2025-12-05T15:21:44.807Z", "postProcessHash": "bf6c6a821425f0fa33aca59c6ee1f9069d3a6b32ba007c2da5070c9614ff1be7" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.117Z", + "updatedAt": "2025-12-05T15:21:44.808Z", "postProcessHash": "b24d21d28a41aa1cecdacac7eda8c2149c8b34a74af5ddc488e019b5b66f8792" } } @@ -10920,15 +10920,15 @@ }, "017bfeb518def6458017f0b534b81d2e14329dc98b0278460a1c0b8fb485b0fd": { "jp": { - "updatedAt": "2025-12-04T20:16:58.114Z", + "updatedAt": "2025-12-05T15:21:44.806Z", "postProcessHash": "94f161be146a29e86ad008b4d31bf19826124ae2ecbaada62eb022da7c033b03" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.115Z", + "updatedAt": "2025-12-05T15:21:44.806Z", "postProcessHash": "56780738b94e347b5bf42537057470b4c2ca3aea8cc079fd8c6064f6377d4c1f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.115Z", + "updatedAt": "2025-12-05T15:21:44.806Z", "postProcessHash": "005506485c4ac08284fcb6777390ae06795f64c4ef4398732ea9a6971cb2e2e2" } } @@ -10936,15 +10936,15 @@ "7ef33beb95b850b8400aad8ded966f28fd1eb3b61c5de7974983f2270d2b4f7c": { "501d9df3106342436670302f74dd2270b110ee24da435123cc0a1b51633a2284": { "zh": { - "updatedAt": "2025-12-04T20:16:58.101Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "29abdc29c9f6fa9dbd1257021470308138f5297cc8f0e142a98a6f70276b1e5a" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.105Z", + "updatedAt": "2025-12-05T15:21:44.799Z", "postProcessHash": "a14ab5675918b357ee97f986941a1a82b9e69a8b3747df7b2a7aace0bee94c99" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.102Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "51585014626eb743a0e49c6d092eb76fc5a76ff10f0d648006aab95988aceaaa" } } @@ -10952,15 +10952,15 @@ "81154bce9be97a0fc523001b189f4c093458747ff4e9b7f5cdecde64d9163d22": { "126e1bba0f10751cf028401cc1a0f3a944780e4a87fe9b63fb850c58b7d7510d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.125Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "acc98d237660d385dc0496ddd1cbfda95b928c680fcf771d8c6295c1c628f7d4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.124Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "81f8104cac3ac6016d30a4a6ffcefdd4c7ca222f5c3ac0ca908839a5ad16608d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.077Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "ff66624c1fe09811ebdc485a5d415ff51046670a00b61365d89c395f552250ca" } } @@ -10968,15 +10968,15 @@ "88d029b112f5fca5e4ba3d06b8c35a6d55e5b557663ed600c6f1b98f59f8ae20": { "1393aaf825d4dab45a6acc1ac4db09d138970e7008f8c78dc434242141a483ba": { "jp": { - "updatedAt": "2025-12-04T20:16:58.107Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "56f3a5e3ecd8f623a5c79c29d894e4e85f188ec86613d5e5d18583800f5fd0b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.105Z", + "updatedAt": "2025-12-05T15:21:44.799Z", "postProcessHash": "adc9f0a054e23894106f1c441732e83341f60c111bea7ad2b41164dd902fbe84" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.107Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "070d25a59aae60bc22d736dd862714043a6a8200791dcedea1516f4b15cfb05e" } } @@ -10995,15 +10995,15 @@ }, "a0b0d47ba92766ad59fa384ddacc05a960e2836e2c3cce1d9c34ac868b117166": { "ru": { - "updatedAt": "2025-12-04T20:16:58.116Z", + "updatedAt": "2025-12-05T15:21:44.807Z", "postProcessHash": "b0026fe3dfa10fbfe007635e54812d75288def01718ed77d778464a7995d5069" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.117Z", + "updatedAt": "2025-12-05T15:21:44.808Z", "postProcessHash": "caf5358a6b4a8131e6a52b054c4e91590f855bab0686bc545f9a78de3bf8a633" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.117Z", + "updatedAt": "2025-12-05T15:21:44.808Z", "postProcessHash": "39fb72133ec16e3bbe6e7fecf8028bd6e2462d9cb175ffe123cdb570e8006e1d" } } @@ -11011,15 +11011,15 @@ "9b041aa508f2046ee0a4f84858531b8c2507bb6a6989db886c2dd4ea0c11a002": { "23dc86ecd0cc50924f5ea02d06b16b4e395c8e0f2fd73bd76d547ac864d42f36": { "jp": { - "updatedAt": "2025-12-04T20:16:58.106Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "b52c724061f8a1742a87bee7d6ef39c6ab20bbc016127c7dd7c88ff16ff98a3e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.125Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "39ba9ce49d6f9c60016493652cb79bec9940b4539c99d6802caaa8f6aabc93f4" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.105Z", + "updatedAt": "2025-12-05T15:21:44.799Z", "postProcessHash": "5ec8683eb4da60cc741f969daf4522fc8d27678564eec7c6d930701ae409a87f" } } @@ -11027,15 +11027,15 @@ "9fdb709a96f96fb011d844ca13cda88bb361212284a327821501551223a4aa9c": { "064e508fcc9e28910cd94c862392084ac9bfbb28d99941ea8a6c7bf60aa11b79": { "jp": { - "updatedAt": "2025-12-04T20:16:58.078Z", + "updatedAt": "2025-12-05T15:21:44.781Z", "postProcessHash": "cfbc8f754e3b40f1706dd59b915ed1a98604baf2111caf7267e52f3c311ed69b" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.110Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "46671661c130fc3cc842366c6f328b3c895b014f3c869bfe5f8d9f8fcd85751b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.110Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "7eb31a8a8855904c945f4baa617af1a8391ed4b24bbcef87f3f1f1f5f0a3294b" } } @@ -11043,15 +11043,15 @@ "a08c904ab61d1c76fa622a160e0956711547c3a01e8aa50f73e5c58504c9110b": { "65bcd1c2b5d5887e042c81d6e5c21fc2a0db88c65574a53d172b1f40ae25058e": { "jp": { - "updatedAt": "2025-12-04T20:16:58.106Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "da1a481a59fb5d602cefe6b3743327edd06ccf0ca63f680e8586ece2ccccc4e6" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.106Z", + "updatedAt": "2025-12-05T15:21:44.799Z", "postProcessHash": "0d525bff644aabcd7dbd6c5a3be09c748357ce9314be13a93e4234ca92da324f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.107Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "61ac1caf19a3f7b833ea229508daa0cacc3439e1892c68d10d3c8e87019ed08b" } } @@ -11059,15 +11059,15 @@ "acceced538fb290e4499cdbefd4179c4f4d347c0ccfd60840e8eedd522602b6b": { "124022bd2cc51265ce8f1c49ed73363724b1580a4bbe5d35e3c5d6d9b2bb7c01": { "jp": { - "updatedAt": "2025-12-04T20:16:58.114Z", + "updatedAt": "2025-12-05T15:21:44.805Z", "postProcessHash": "8d450135ce2e4678b7f5ef26a20285f803a83e1569c34e3c1d92408103cbb5b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.114Z", + "updatedAt": "2025-12-05T15:21:44.805Z", "postProcessHash": "3c6cd02b15932c7a65f68de896c38105e21d2af94340c564b04440a40e48f142" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.112Z", + "updatedAt": "2025-12-05T15:21:44.804Z", "postProcessHash": "b628a8573fd7937b6d1eef68cad4a5248fa234470b6e7d94abcf2d351b9f4e02" } } @@ -11075,15 +11075,15 @@ "aeecbc80fabcf65b76af1cc65dd769022e4856381588c8501d1a59b206c10326": { "0ce14d2631d2a24f63a66e4f8b06f82fee405f818a0bcf369ea6485c8ba72681": { "jp": { - "updatedAt": "2025-12-04T20:16:58.077Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "4ff5d6bc66d290848ccb9621681a791fe2629e7b762987cc8a6f2270f8212540" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.113Z", + "updatedAt": "2025-12-05T15:21:44.804Z", "postProcessHash": "4b6efd4cbee1c64507ad176eefffaa950fdb625f3788e4ca3b4a30848089ec91" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.078Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "1c6eb5df23694d44726af0c873107f964b5332282056c534f6dac64c5623bd5d" } } @@ -11091,15 +11091,15 @@ "b5543674ee59dc5d80ec783390644aa03c6a1b7c91bbff001eda92fd5198a064": { "dce1dfac5e498639b6f080315eaf0ea6f42c51bef46d3fb13e621234a36cb996": { "jp": { - "updatedAt": "2025-12-04T20:16:58.111Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "e47d5939caf357a9faa594309819704dad52d6db8fcee830d99a0e1e91c88f10" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.111Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "e0402180a5d5666a052e5eeedcb798851abd1708db41e9b9dced14152fa3cebb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.111Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "6004bd688be54222f0337a7bb5c00853e0b53b9f20c74bde32a4e091f9a0efb9" } } @@ -11107,15 +11107,15 @@ "e6ce65cbfbbe441fc30cf64ab1c1d1dbe1699d91ca18dfbe615e4a83da7007bb": { "366a43842989bf6846e76c26bbf2e87e00bcb25564dfb7941a416bb6c279a332": { "jp": { - "updatedAt": "2025-12-04T20:16:58.111Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "8a603ea14b88d4af53886e6a795c4b40b5b50b4baae36c508c06a75422bb5542" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.110Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "00d3b20339fecd220ed9d52b3cd48c6ce1e125af0f9ae532507a644c1aefcb37" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.110Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "ebc28202bf7e41e9000dc3d9e886f312a69383f0e8aa920135cbd744cde7d547" } } @@ -11123,15 +11123,15 @@ "e8bf7b4871a3b921003161fbe9fb3b3e0df205638abb6aa707688886621c9715": { "15aca606b9aecbf11a3de4acfdee9f33ff548522f3411df807128a214f52bae1": { "jp": { - "updatedAt": "2025-12-04T20:16:58.115Z", + "updatedAt": "2025-12-05T15:21:44.806Z", "postProcessHash": "47f8c30a63fbe6c9c67fcd5bb4e599aa7e88defdd75e45c1189eb03e06606d21" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.112Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "117a7b1fea2d46072d7d61c2ad54f755fabb9ae9e2676aea9a52084b9c885eae" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.112Z", + "updatedAt": "2025-12-05T15:21:44.804Z", "postProcessHash": "0aef755562b2f21b003ae571d081e65a32baa856f4b53420d94c77e28c04479c" } } @@ -11139,15 +11139,15 @@ "e90559dea9545d48d4ab67dc41647c74245d5af3f7450472a6a52017b58aaa6e": { "a15b882337784575046360aea947e55fbbbf97d76e32f32fb9e275a833afb47f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.110Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "46465f4f40422902b63789a51fbf8986fbf9b0be36213e00f719b970173a991d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.111Z", + "updatedAt": "2025-12-05T15:21:44.803Z", "postProcessHash": "e7699fcc6ef51e4b022e99b7830ffa5cc94689cf024b83d75d9dc5920c1cae55" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.108Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "9322f0d5f0385c08e5fce2a476c12adaebf38e3e59928ad71bd07e7d55518637" } } @@ -11155,15 +11155,15 @@ "0b209462f1ec411886fda57e810cd3eea5efebe202ca2b4f5dc9f1fb3787ccfb": { "5ecfaa73c3cc92aee3ee2825b0bb89bc857721cc0ed52b56af3b10a539b65498": { "jp": { - "updatedAt": "2025-12-04T20:16:58.103Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "c5f62566932495a741ae6b618207cbad4c992b53a4c964e91308bf07a2c31ebe" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.127Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "a7261962fc0368e1546aca4e9ea3797a2552fa4a5d24843b7683a0c397e91e9d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.103Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "78ea3d6b6c126cbe3e05168f370cd3d6565cce15ed85e087a8687ba93b37d63a" } } @@ -11171,15 +11171,15 @@ "1d14e004d487902f18fc6c1de04f1ef911152e4d8c2d76455e4956d9cccd132b": { "435800632f77c2f3a43f62396007c869bf0e3310b946c504cec9c7661f101c78": { "jp": { - "updatedAt": "2025-12-04T20:16:58.125Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "12e545b47285102bde384a0918c92a8d42bf79f1d1afcd9d441e2ad287c22f22" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.097Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "b64f9cd2de62bdd21ec0bfa9759f2b2d1898288061cc8368efd3ab23489011f1" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.097Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "fb37e6d45221abba2b724c388e9bee86cd7c1c418f0b60ba606e0044f995db98" } } @@ -11198,15 +11198,15 @@ }, "12f741b625eeb871e319dacb79266cdfdb0c145a2d7b6a3ad9c2bfaab4835c14": { "jp": { - "updatedAt": "2025-12-04T20:16:58.130Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "18f832c11e0803ee4f57075a40c739e7e670ed48558e5a098467862fdbe3eccf" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.133Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "a62640c407fc16f3276415425e16d18caaea9d02cdfe5c3a3dc78ada75c3e5a1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.134Z", + "updatedAt": "2025-12-05T15:21:44.825Z", "postProcessHash": "cda3381c6466e150661ac237bdc1d75d4124084669153b8dcc9c419f8118748b" } } @@ -11214,15 +11214,15 @@ "3429435d33feb194cd2815db45da2e05b63eefb419c7039d15215e40384643ba": { "918e8abb0c6066b88bb4b0bdf464c3907f836aae0d601ee87bc91ad879720c8f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.128Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "e3c46ab4ce64ac41b792c409a3282d6e83c5def64ca807f625d2619f4649334a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.101Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "3de20cbbf92383240692cafe77aa9512a9dd9ce2e608ceb4bfde23d69f5a6d32" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.128Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "632127b3e258e806c218ab606238ec171ac5f6906be0d719c5b93bc63c378e68" } } @@ -11230,15 +11230,15 @@ "3fdff0c8c92ebbc95447e7244075da88510e0c3d4966e3b72af95a6e4c3d8e8f": { "1e45c8cfbc59d4c2fd364a34eb2e7afffd36ea4f0b127f873065e2b176a0133c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.124Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "9d4a691bb1ed89ea3226b0bb90a4875cf5db3dc0e6709ee46a3db3da5233cea9" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.109Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "634269eae10945b9df42027becbd520ec5a7609d0dff547f7e3348f0a16a5888" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.124Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "e98a23a17f011e9f5851be0d6ab95bfeca6efbf84870077ca0554e80a9dbfa39" } } @@ -11246,15 +11246,15 @@ "4ff60f576a90647ac6859ba05f56e594f54029ca4beea54b1e07f27ee5acfc94": { "b991af90c327a458792ab1640e608a8704cbde6a6f1373636c3d4a5c3445b766": { "jp": { - "updatedAt": "2025-12-04T20:16:58.127Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "803e8681ad39691ad155297ca76a467ababac229fe5bd7da0d68ffec5775ea57" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.128Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "442ba75a91c9be455f774a80909e57643cd0cf044d6603a5f7687b36fbaae563" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.103Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "348f5b71d063a06e70bbad899d4b9b48ddf0c0cee59e9de6489ce4815986f697" } } @@ -11262,15 +11262,15 @@ "5063b2b4bc9b2899fab5998a2b281df0229add76ce268451423a1dfd2ffa5f2c": { "d2af9085fbf80701266de277a6a67f2400d823b5ac0d2ee3f5ffb2eb0b4f0294": { "jp": { - "updatedAt": "2025-12-04T20:16:58.126Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "13c1a12c727097ab797e1bcda7cd05d3df27bfef92501a2be245d3aeefb3aabf" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.103Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "545c335253c0cff1525ff24f542b93c1609b9d65561a13519b6d1645eb7e9184" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.104Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "83415bb6011ee5ab96ad8d823123828d80ca71af42a383a7adf19013cbb61980" } } @@ -11278,15 +11278,15 @@ "53e5bb2209c16605d7273edd1079563619f7fd4e6e5bdfdb95988af1a4694755": { "19b750db7b91f72b4f9666d5cd502557bfaf69581d6fb96105e239e437635657": { "jp": { - "updatedAt": "2025-12-04T20:16:58.106Z", + "updatedAt": "2025-12-05T15:21:44.800Z", "postProcessHash": "455d489272641fe322d064fe2e5dd7d2ef08ba62f17c3ec01442dad507d57288" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.124Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "b5337b0128bb33419afda954188fc2854728f124f106933eb00511703b9d60ea" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.108Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "e131311ebe85d80b085088d2c0d50e302f6f77f14bd3fb0df4d84018fb8b889c" } } @@ -11307,15 +11307,15 @@ "611b2b0d02709490f3fe4e3331bd31828428e661cdc38d633fd487daabd3cc1c": { "cb8d66eeaa9869bc4e4a0832238beb5e4b8cc2ffa0e3483678d79606c472c326": { "jp": { - "updatedAt": "2025-12-04T20:16:58.126Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "06cedf0444f47bdbb3872bb8da86938439b257b9f69e9f6a877560a7c0286ee4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.126Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "4478bfce8b787cd05a4bfd7b0f48a33c46835d05e889f2f83fbab2fb40ed3a9b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.101Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "f5c5fb798666d739551af0f0b911d8d65a9fabdb866299aabdb4cabe3309f998" } } @@ -11323,15 +11323,15 @@ "633a4ffa471ca2244e6ef5a3022d6a46f51861f23239b9b4594d8cac210cc0b0": { "011445c96b51faadcc04ca2af74b4a9de574446918a704bcb7648036f25d38a7": { "jp": { - "updatedAt": "2025-12-04T20:16:58.109Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "2bb78765b095c76c532c526334e64871eba70e46b95b6ee70feb979b67b4b1f3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.108Z", + "updatedAt": "2025-12-05T15:21:44.802Z", "postProcessHash": "661b2f38cb4beff8279dcaee312e3461f6d61a3a3a1edcc1df09236a15c24adb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.124Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "d7ae5f8356820c6d5250fc660bae5a50c7a59b423630b08542d122ce6d168f33" } } @@ -11339,15 +11339,15 @@ "675843b51c582122de910ed4f222f211176c97af172b7f849c0b8ecd0dd2b190": { "a27dbf65b4c9c2e9891bbf450b7163614f6940254a6ad1c1db78fd18c3795fe7": { "jp": { - "updatedAt": "2025-12-04T20:16:58.101Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "0666c5b4879afec446929d7a66effe66f8c0a8faed399242f7c6b8fa1c00b489" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.100Z", + "updatedAt": "2025-12-05T15:21:44.795Z", "postProcessHash": "fd9b827452d7e74ef314d529718102605f9039eedf4a2efc18c7fa3c07c4402a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.100Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "48365e9ea4a29a749a38d9c2a82328eb0479bc1ecfda54456b028aa544b5212f" } } @@ -11355,15 +11355,15 @@ "798d0e3eca2e56d6aa7658d85b9a41657e3aacf854913976ea97d89d8865966a": { "767118d90c94b77855b18cc08229cfbb4dd47ceb560ee656c0882c9192c24418": { "jp": { - "updatedAt": "2025-12-04T20:16:58.102Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "f3f86613e11e9fa1fed2a7bae5e3939d010b2ad7a13f02920546f01a42ba6e1f" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.104Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "baff7bd8a8153e567bbcb03654b245ca208fcddc7d83467d088a031eee149f5f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.104Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "78a8577db95646e3b9770b85e2219fe739fc18bfb2d047669e9a8d7d6056013a" } } @@ -11382,15 +11382,15 @@ }, "41c49c63971a2f9e6bd3fd7c7d57ce1afb19c85181799f072d28c0b669914f00": { "jp": { - "updatedAt": "2025-12-04T20:16:58.132Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "4d643781883c1ce4d469d1d7e31e5a9ed597752a41bd2e8f0d1131a027e314c9" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.133Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "c865bafa751f6885f58390589e807ccaae8c8b57b1157f585df83b196d59cb1e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.134Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "767ca0c85513b39e58b5657a7538b251313a89d353c7dd42b79e3e078c39bf1f" } } @@ -11398,15 +11398,15 @@ "991e27fab22b52bb4b08b4ae04fdec89d5e6553dc7110f7d24b73408fff315c1": { "a03618c42cb58f95e7e03a4057880d077e66e088f5502749a604eaca3e70f464": { "jp": { - "updatedAt": "2025-12-04T20:16:58.104Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "8261ae74672376cb23f75e6ca6627a703641cfbeae2cfdcff99296a65ef4eea8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.103Z", + "updatedAt": "2025-12-05T15:21:44.798Z", "postProcessHash": "55b16ca599942863b2719eeaa820a0dced581dc805f582d05b28eb08ff1d7a4f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.104Z", + "updatedAt": "2025-12-05T15:21:44.799Z", "postProcessHash": "b7c93bd5850431bd62f09c9778909a4fcf84b55fafc13a3e96c2eade861bfc72" } } @@ -11414,15 +11414,15 @@ "a6b9d4c5cae0464959192ad659ed2100cebdeb8bc49e4c041d80a9c6a804808b": { "e888d9f5660cbc8a94390f0efc75e38b61355c7aed5b560ba7c55138aa191993": { "jp": { - "updatedAt": "2025-12-04T20:16:58.098Z", + "updatedAt": "2025-12-05T15:21:44.794Z", "postProcessHash": "06e8c3469e2445580b09a3b28ebc1ac039223ac81dc207438c12292db2c93adc" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.098Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "5e6a5cc39eafbf39d999441e9e7e081c57c8fe1d64b3c30024bb5f5cd1cc8fec" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.098Z", + "updatedAt": "2025-12-05T15:21:44.794Z", "postProcessHash": "249f577cddf532bba4917821d15b2dd459aa9cec2babb00e50b420b4d7bad721" } } @@ -11430,15 +11430,15 @@ "b7a5608a851a55f00f22ae8d517987b946c9c3eb543370562dc786dab3594714": { "88a876337f46351c9ccac93457f33dc4fb23d9aab3760cae91e020811ac6f19e": { "jp": { - "updatedAt": "2025-12-04T20:16:58.108Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "e22c9e0f62c46be1fb0613fa6e2ce4bc3a00c029063cac380a0718439a8b8892" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.107Z", + "updatedAt": "2025-12-05T15:21:44.801Z", "postProcessHash": "70216443ce86a0078a7e43cf6fe47fbbef7c520fd8a646e18fe35617c2259e34" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.125Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "33596428ebd76998ffe1a57fee4274e249443a6788ddec273f62c9250d343dc5" } } @@ -11446,15 +11446,15 @@ "d9b29cc47744c8dbd75014c191b2d1b6a6cbd834e8f58800d7ab54ee3b380193": { "790a9a7598eac524933e6837e62602bb54c548d8cae162ec8f67203a8285580a": { "jp": { - "updatedAt": "2025-12-04T20:16:58.101Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "b171ee89fd547cb0a22e443cdb48856851d3a06c5fc1949fd7414e1ae632d692" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.100Z", + "updatedAt": "2025-12-05T15:21:44.796Z", "postProcessHash": "393ce02045cd6f41ad9321327a0ba145a9eb24cdbb3ebac0202b3c1c488843f3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.100Z", + "updatedAt": "2025-12-05T15:21:44.795Z", "postProcessHash": "0b55fe9d381743ce9dac352369c0d33dc69779904f1e16fd9d652bbc06d17c90" } } @@ -11462,15 +11462,15 @@ "ec3ea94f6a821f3d66e7dc9993bc4fc2b65580f3ce729e89dc7d1d6e9711078e": { "078157aa36205afa5c6e11fa8f7457d8696fb79062fc79c709121c33ed2a7d52": { "jp": { - "updatedAt": "2025-12-04T20:16:58.124Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "e2f6c84e39d78121bee0c5c86633ecd81a0173071bd394b0377f909765344a17" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.125Z", + "updatedAt": "2025-12-05T15:21:44.813Z", "postProcessHash": "c56896757e52e329728d36c52b5bdc59ef02091ee1b1e4317f2fcef2b9767f13" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.123Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "905153647f3b37b66c0f71d880391a6b13f6e9e1069840b9d9b902211d13a6dd" } } @@ -11500,6 +11500,20 @@ "updatedAt": "2025-12-04T20:16:58.128Z", "postProcessHash": "899c9f049b976aa1e06c7d40193296888b011bfd4d70de17d3efd74798f275c6" } + }, + "1505667d3e6197f35c04edf907ea239cab01aa54a168dacc72be54649afb5e56": { + "zh": { + "updatedAt": "2025-12-05T15:21:44.827Z", + "postProcessHash": "558fb41961356374ada3b0d9730bf7921d61b10ea566751c317e32962e5293cd" + }, + "jp": { + "updatedAt": "2025-12-05T15:21:44.827Z", + "postProcessHash": "8471dca1074f7b5ad42bed32f823651fe76c4a7acfb49499ce3406528f6be93d" + }, + "ru": { + "updatedAt": "2025-12-05T15:21:44.858Z", + "postProcessHash": "c6f24f1d40aaa94b4da3da4d7f6c502fdf1322e290682cdba44d661557d02e96" + } } }, "f62c32cc2359a74d04c720f97feb4119997308d7027c0a473d0878ff90a711e1": { @@ -11516,15 +11530,15 @@ }, "bcde795f789e675b001ddba783f5f330dea1d9b0156a229711c8ccc9037887c5": { "zh": { - "updatedAt": "2025-12-04T20:16:58.131Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "cc27afb2bed48115d9080e952001bec145097eff07692868599324aff79b8ed7" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.134Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "0b41f8c11253d2339680f0dfb51efd8660f0b93e75ba715709e2a55f98e52681" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.135Z", + "updatedAt": "2025-12-05T15:21:44.825Z", "postProcessHash": "048a3385d8a57977d223ffec2c8506518cf97142e9ae1d8c041d2748d8371414" } } @@ -11532,15 +11546,15 @@ "0788f71f3701d95084837950d519aaf717087552402cd82dfcf4236628f15af7": { "1840d9cc80dd9c8c8cc0209074557de0b8c1bf9c2ca33bff6ab6effea03e9a16": { "jp": { - "updatedAt": "2025-12-04T20:16:58.099Z", + "updatedAt": "2025-12-05T15:21:44.795Z", "postProcessHash": "9f8e5414e2db4974242cb61830b80369ceb6db03b4a9c1f1550a8cf6c8a60411" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.099Z", + "updatedAt": "2025-12-05T15:21:44.795Z", "postProcessHash": "bb4a8b2a60aab8aa9609be5894ee934311807e5370320be0396455802035fe36" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.099Z", + "updatedAt": "2025-12-05T15:21:44.794Z", "postProcessHash": "b710f5a6b142ce49a40818b641b59d222c3028da1c9627a5c02784331529ef6b" } } @@ -11559,15 +11573,15 @@ }, "48ea57d74cf0991e459a1a6ef7ad1bfb5bfe3f7325c793a0a4cb78626a6a37c3": { "zh": { - "updatedAt": "2025-12-04T20:16:58.131Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "ab4e13587497dd76e68361e979244061166f0013c48e00477dcff7ba71647f14" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.131Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "e88f00b71f8cd5c2e1f37d28e7746f6f7611fac5f5b463ed40810c881977e8a8" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.136Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "d7ce52873e7f4702f72734e4fb18d53fc2154294b364f31bffdfb2948186400c" } } @@ -11575,15 +11589,15 @@ "178c705b2c62c01727a80327a809f6535d583c870ad39995375a10a363a1d727": { "1589f225c754084b804cb1b7c426921b7979e160c01fe65dd00c2a0a3e3ae3f9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.100Z", + "updatedAt": "2025-12-05T15:21:44.795Z", "postProcessHash": "f4db6d78a27b8e213d70ce11df2aa7499f3b79c7b7a4b86ce2740d19067538eb" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.098Z", + "updatedAt": "2025-12-05T15:21:44.794Z", "postProcessHash": "7a041037b23f125f83ac4accffd30570640dcc5bdaa8d46ba1154267e16c1f85" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.120Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "f83540f6b2f7e7a9df51656b020786f24b4193d04275ee9fdb9ad9d580d72021" } } @@ -11591,15 +11605,15 @@ "28de08e6f00a1c0b51895715997e43dbe463c1c4cff9b002dd9014edc5579dcb": { "46a435b4ba73651faf0dfb756e1f9ac1d59de7e580a40c74411bfb41b7c958d9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.121Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "40408bc7a6a6cfab815971d41826b6903cb21c51fbc4950c62b31c777a90149f" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.099Z", + "updatedAt": "2025-12-05T15:21:44.794Z", "postProcessHash": "b37799d8e57f89d6ee90d1acc0214b04d98187e406ff1595ca11c14ea9287479" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.098Z", + "updatedAt": "2025-12-05T15:21:44.794Z", "postProcessHash": "6fb2840e6cadf6c6188998005a9e4c898af8f7a6622237c48f5871c52380964a" } } @@ -11618,15 +11632,15 @@ }, "ac01e30e5af0046a52cf7276e30904b5d7a7930becd3ab5c3a9353eca589dddb": { "jp": { - "updatedAt": "2025-12-04T20:16:58.132Z", + "updatedAt": "2025-12-05T15:21:44.818Z", "postProcessHash": "963e063807ff88e8eb1429fc85cc7aee85d05e7fdda3a69bf50e85c928fb76bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.135Z", + "updatedAt": "2025-12-05T15:21:44.825Z", "postProcessHash": "3f07dc5e5122a5571443fdc5e70b47a11f53e9eb2a50c000b1e5e5f2a980ffd2" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.136Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "2716ae27985f4783a04bfe50f4a68f2d9002eb2d76a7e5409e766c4e8d7cbb79" } } @@ -11634,15 +11648,15 @@ "349400436c332178133e694bcd47dc9ccdf4d729cfc274f1f99bf82b54fde8d1": { "312b11780c641636863655dd7b1fd8b57e6cba8bebf6946857812ca2c3afe479": { "jp": { - "updatedAt": "2025-12-04T20:16:58.120Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "3b140290d6898eb1e7154e206d6f7cfe03f0e03ecfe0add1a814b42eaad02427" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.119Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "e01dca3ba6112b808bc6c11cb81d07c7ae5d729b69c3ccf123f3cc4a644409c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.127Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "baf4e8deed4b7547d31d0e928dd5db2b78f03040639d8e98bd18cb5afc96a674" } } @@ -11650,15 +11664,15 @@ "3798000812ded299b4f0b685fe4df133730a45cf67c87419cd05a769b727f03e": { "1810bd73113c23ab353e5810beb46fbccbee2f443e979883aaf33e93c1afa116": { "jp": { - "updatedAt": "2025-12-04T20:16:58.099Z", + "updatedAt": "2025-12-05T15:21:44.795Z", "postProcessHash": "4f09b7ae979d76b23ebde92e73a91c1d4874d43b931f21fe20672dbbc9ebfbe2" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.100Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "4610e4155c7be83d91d348ad760a5d322adc7c86fd4dd60f748b2b76a8f9d8f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.120Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "4ddfa7dceb72f49edf6ece638b7c5ae84f6ab21dfe241b464876c46b9b6e391e" } } @@ -11677,15 +11691,15 @@ }, "50217ecf6da1c9fa34dbce32b178808ba8ad58e9d6d7984a3cb4706dbb39d58c": { "zh": { - "updatedAt": "2025-12-04T20:16:58.130Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "1b04dcc26d760567e16f81ccee97496b0d4ad8bebb8115f19adc2618b76d3b55" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.135Z", + "updatedAt": "2025-12-05T15:21:44.825Z", "postProcessHash": "e0f19f1ae350f54da9778ac92aa34f0a2a4c73ec8c98d3ddd54fd4e3d30295c6" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.137Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "71f42998299b40045eae45a062f5a5ec5df5d1290df561e50ae413ecbb56a3d7" } } @@ -11704,15 +11718,15 @@ }, "0ef50f0b9a30bdac285fcb77d98560ae1537e2fb0a7be091a31b18662025042c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.131Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "904c7dd7de72816bbea9a5e02ddbe3f22a9a01cbfdf3595006be6fe32db2e659" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.134Z", + "updatedAt": "2025-12-05T15:21:44.825Z", "postProcessHash": "bdec87856dee99be0d7c772f2515ea849f3fe4e4ae39d32400f4b0e464cf2e5a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.136Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "e07f2d67c243e53dcdba25e5523b79b129ce1e0a5621b222c8008c88d2b61725" } } @@ -11731,15 +11745,15 @@ }, "a8d446334c20df806169f3e6b58a455522b91e97933d922e12de4ce6b3c63f57": { "zh": { - "updatedAt": "2025-12-04T20:16:58.130Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "08eb335e116e9fa325f0176ac6aca99229efe9607102dd2d9cc13d6f200f39b4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.131Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "547da346276a79ef32d24761d28fc52fe328372cdeaa9cfa1103c59d680a12c6" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.137Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "de4e0c669aa2ac406c79cd8cbf1c4d203de3489e4dc7e172c690192393c22cb7" } } @@ -11747,15 +11761,15 @@ "6021378296fe97cd32f847567e8226b5b01ff3e70c1eaaf35a828c9d29135ea8": { "a116f2580c016c233d50250b989b32bbe09ddafa83b8dc9dddec1dfc676909e5": { "jp": { - "updatedAt": "2025-12-04T20:16:58.120Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "82d5f0fd03b979180d5372cd0aa473d0a098cd4676fb4df67bbd51f9e9024f4a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.120Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "705fa7d5ae9a07009495bdd6dade2adfbbd6d6b2a19e5c5dfb9ea50c5d8a8083" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.129Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "94bf145436d3dc5fb180c1348c56bf5cdd02f9904a662e0113c8647523767f5f" } } @@ -11763,15 +11777,15 @@ "773e022e6828901db117df504dcb5f22c010a9943c580fc510044d9585197e57": { "b629f3340f4e22116ec115e53eedd044eb499d902c10c1c5d836dbbd184e23b7": { "jp": { - "updatedAt": "2025-12-04T20:16:58.121Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "94237bde05be33dda000cee59604d472fab4836462a9b3a6b2114a607bbe97e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.121Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "1ae7cc2d967c3cf3345a60dd8540422b9ef576d7a906da83b30fc8e684db71d3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.120Z", + "updatedAt": "2025-12-05T15:21:44.810Z", "postProcessHash": "c775c8b1d406f4ba664bc1172660a77e2613a33710f867dda6538d40a66bb723" } } @@ -11790,15 +11804,15 @@ }, "3f3a386316e023eeeaa7d4b4aa2d14b972061dcbb89731b34614a1eb9c1462a0": { "jp": { - "updatedAt": "2025-12-04T20:16:58.136Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "8cf550e87cefcac7259d28477e1a286590c4037c2952d865ff0c29df18fa851f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.137Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "cf837f89c06a10710673d4c96ced28da43222da9fbe399d04eb912bed0f13f78" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.137Z", + "updatedAt": "2025-12-05T15:21:44.826Z", "postProcessHash": "24af7c2f180d0349510829b306b10d87d423f9fd78f5edb39d86e80ad30cbf0a" } } @@ -11817,15 +11831,15 @@ }, "0a84a3ef199a9a0709da7fb05188f57584d91dc202199a554f1169865ba579cd": { "ru": { - "updatedAt": "2025-12-04T20:16:58.133Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "8a5f02c357ce5c5b1b285167f71eecdd17f1de631c71f2d06b086a5c6b2d5750" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.134Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "1edda774f07519155ae861aa23165a35ffa1eb54e03ccf0dd332bab2396454a7" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.135Z", + "updatedAt": "2025-12-05T15:21:44.825Z", "postProcessHash": "be0acc661639da97209b6b0acf8876c9c96371c3446f75cbe61e6b937d750014" } } @@ -11833,15 +11847,15 @@ "93c3b152cbce0393c9c6f97cf591c3711cbf3f81789b2925cea760c4c5cff676": { "a411bf07df5d4b27d21c51466694fc824b2f2422d09fd22f63570974bf2e2f9b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.126Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "1540c6b3765e78f588d6ce512faae698e5ad4fd6d07ce3e9b992e92ea7aa1f29" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.126Z", + "updatedAt": "2025-12-05T15:21:44.814Z", "postProcessHash": "7b9ec757f931cece364c483c81d3e2cdc67af95cccbfbf2affa57963c0e1b867" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.121Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "1b75bb04f4eb8ac539d44141b5a8a6eae6ab21d19f8e35d0a8baba2aea105fed" } } @@ -11860,15 +11874,15 @@ }, "c783d09e7857a7848fb43d49f6e4743088006f96c6f8cac250e8b578e1a078db": { "ru": { - "updatedAt": "2025-12-04T20:16:58.130Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "40f243e8c92f0ccd19cc8dc9fc1f5124ebbc145b735d4071399a4d9e158f8d48" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.130Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "c3a827c5f504feb9cfb0a8c1226fef246771e9e3b9c3bb37e5526f9e34be877c" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.132Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "4a80bc0724d7db956c0c584eb9e41ce7b30223f914175533e1502119a250da94" } } @@ -11887,15 +11901,15 @@ }, "163f1c5c9cce107d4f530475caacec149a18adb4ae0f9309c339bb02c385b9f1": { "ru": { - "updatedAt": "2025-12-04T20:16:58.182Z", + "updatedAt": "2025-12-05T15:21:44.827Z", "postProcessHash": "03f6f00abf2e2cb5bc95c31c25f368ca56f6e674addfb378ef7719f5bf3d7d53" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.183Z", + "updatedAt": "2025-12-05T15:21:44.827Z", "postProcessHash": "bb9b0f9caf7d055d362fbc74fd5fd4bf32bc5271dbf89ed68432aa281e8ee733" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.183Z", + "updatedAt": "2025-12-05T15:21:44.827Z", "postProcessHash": "4b7d95893d42d45fe136325b1ae16d746fe52cfc523930f36ece8e9383174579" } } @@ -11914,15 +11928,15 @@ }, "03a1b2ec675680c9d09f2bf57e7e2788958b6b2b98782821ebb8691f3266533b": { "jp": { - "updatedAt": "2025-12-04T20:16:58.132Z", + "updatedAt": "2025-12-05T15:21:44.817Z", "postProcessHash": "ee2b6ed65dc98f27b6093149c85121afad7bea1968ac3f9361c7e14e2f510186" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.132Z", + "updatedAt": "2025-12-05T15:21:44.818Z", "postProcessHash": "1a043a16036a31f132be97c8995deb93cf2ae3de783ff7a7669b6e37d5a8e6c6" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.133Z", + "updatedAt": "2025-12-05T15:21:44.824Z", "postProcessHash": "ec2fad4e59c622b004f61d83cb278b83d5d241a88e401ed71c269433a273dd35" } } @@ -11930,15 +11944,15 @@ "c3760dc390d98e6e5ed5a4a74c5c609915d05a7a63963656f7715607d65ae092": { "2904d7fb4addff8bf173ca68df5b540945453ef8fa9eec76a35d8f9b92ab8b87": { "jp": { - "updatedAt": "2025-12-04T20:16:58.123Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "78b3487aa538390ee13d21a34cf4682a670bfdaffd61bea46632c3a16d139603" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.123Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "b8cf694b4595c7c760bb71d762878a2713d1b837615b69bb6ead52676eaf9d79" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.123Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "9b7ada0d1eecf348e6b87a19733054f3035bb81749d1ce6a77979f7853b403e5" } } @@ -11946,15 +11960,15 @@ "e7312c644964f4d389a9171edabe14341e5e6fdd852101cf9f16a264088857b7": { "2904b07971746b903763bbcc8b60c7bc05a984fd6692a24f60eeae21856cf64a": { "jp": { - "updatedAt": "2025-12-04T20:16:58.148Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "775c2541160bca09901528544da0511731108813b896bf63429b58d01dd6bf2e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.147Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "8a3a54fb1e1728bdf86231fdda8dfec99417389c9b3fcbc5fb88a86293424362" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.148Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "caa10d46cd72fb5f892ba8f31d7f543fd140d44a280032c8edf603802afbc6a9" } } @@ -11962,15 +11976,15 @@ "f5e8eec3fa4fdf1b4c16b4b71f35b278d41db6e5586c66a42fe590521942f347": { "f9704f3dd2bb395a82abdb0dd1b7b09ea97a4499075e9bc8ecfcb0ead44a1d69": { "jp": { - "updatedAt": "2025-12-04T20:16:58.156Z", + "updatedAt": "2025-12-05T15:21:44.839Z", "postProcessHash": "5a8601576d8bd351ca8eb621bf9362bdb3ba5ccfacd7c60b35da307b4b644d6b" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.155Z", + "updatedAt": "2025-12-05T15:21:44.838Z", "postProcessHash": "e2e8ffc4cfc3a07e15ae4ac3a4bda9db663c2c109bb1b24d7d27e0e879fdacb8" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.155Z", + "updatedAt": "2025-12-05T15:21:44.838Z", "postProcessHash": "cf1414281668dcee75fe5b11b0011c173700d66ae4d61522dcc5060063033d9f" } } @@ -11978,15 +11992,15 @@ "0c9700318afe07f773f3675286dbd1308302fb5c993fc403ead5ee2c2c311f85": { "26bbf167b8a8bdd6e415d3cf429c935f63ed38563bdb8697297248361bdeffad": { "jp": { - "updatedAt": "2025-12-04T20:16:58.154Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "2db42029b0e585f854889f7ad8c96c1b70f5a612a3a6547107f6e27f278387b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.150Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "0053f16676e49702d213b29478b3661ea8916be71c88e78ccf7a58effa9a71c4" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.152Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "77e78c20f7e721918a2a7963109df30c745fd5ef960b81d406facf2e19b83f8d" } } @@ -11994,15 +12008,15 @@ "1205bf7e48133304fe346efa0309af05787e80fd6f83623b178426d0d89e43ab": { "7a4af08a1b17f2a86db198129d22bf1a71494ef3425bd28e8251e46075a27288": { "jp": { - "updatedAt": "2025-12-04T20:16:58.121Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "3b4169ccb6fa470897f95984e5e4d7c36ecfacc36799c2c78b00637713cdadfb" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.123Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "1deabca0dc30190ccf35a36e8fea27956eff1bbfa0697ca86966f6a6a24dbfe3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "3a7d76d598e8016821d68327d3f3e3ff4d52bccb50ac7c3ae7b227c4fc244638" } } @@ -12010,15 +12024,15 @@ "3c59f44959e6e9ca6acdb43ffec9355d9485257cc402a212ce1759a0064bb981": { "1ec8c112466533ed9f452783ba3194be3a2def5e0e028ac74fb3913e56cc2f4d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.155Z", + "updatedAt": "2025-12-05T15:21:44.838Z", "postProcessHash": "f22fc3c42de3b1253b21f5acabe21ec3e1881181fe75e336f80543c34af0d488" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.157Z", + "updatedAt": "2025-12-05T15:21:44.839Z", "postProcessHash": "e8614eb7b979f611442f92a4f12177a0aad454a9fefc1b8918ecd58d6795df46" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.155Z", + "updatedAt": "2025-12-05T15:21:44.838Z", "postProcessHash": "27c6fbf289c8c64d4e044c4128e5a130718ad31f764d68b82b5c8b65f67ce5da" } } @@ -12026,15 +12040,15 @@ "401161c2a7c478b5179bcce758b06f32dba0fdbf9bc64188f2d7f79dac72dfa0": { "f590407909c6eb71eb806ee84a3e8ff079ef373b53b7e0b97152b2c9ea18f318": { "jp": { - "updatedAt": "2025-12-04T20:16:58.157Z", + "updatedAt": "2025-12-05T15:21:44.839Z", "postProcessHash": "19d5a9aff54bcf96dbbc7dfd097be760cfdf00d810b6ba47dadf6f1588990066" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.156Z", + "updatedAt": "2025-12-05T15:21:44.839Z", "postProcessHash": "5084b44332c8923ecd89022f7ce8f5a87bedc43e957ad60d5c29166e3131b6ab" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.153Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "220b2a82ee37d8f2660322604f1685cba98b74a17c384324a0ae06a2165a86d5" } } @@ -12042,15 +12056,15 @@ "48ca9336c96e6bf5d7264d6ae62d5ee29644e6c214dc339d83a610716c484ff0": { "6e9ef6dfd8e741fb723339409fd3ec6e0e74d8c83d08b37cb60190c4e83a6762": { "jp": { - "updatedAt": "2025-12-04T20:16:58.146Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "c31f043d91fa86b75264845c64b520f42ab6799775710cfd1e84dd9d274356af" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.123Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "de2a813f350670fe63969b57d5c3d84697ed08edb9f295d9dde142ae02ba0a27" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.149Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "f813bad8ac31feb90963c92ba27f77a74f4c81eff97ef0cb248ca14a5df79ebb" } } @@ -12058,15 +12072,15 @@ "51b2a652cdf591979b38ae330c8306c66fd1186f911c915e5aa9e108a6876603": { "a570b7d389235335a4604eebb1f1ee2a84cfb547848012a3f76c135f5a18e3f9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.157Z", + "updatedAt": "2025-12-05T15:21:44.839Z", "postProcessHash": "6221819924a634bd237f2e1d71627ed52060bbf7e772b3fde60dc329306a2205" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.156Z", + "updatedAt": "2025-12-05T15:21:44.839Z", "postProcessHash": "3e95b0e05d5afb55b7e6e8cd82ecde7656b06bff3e4c0bdd3fdaf062d3b1c21f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.154Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "688d8064a1f8a119a0dab808678cea2e7da387cb9bd60a32e02513a513695beb" } } @@ -12074,15 +12088,15 @@ "5272155dbd5220decd129a5e4b559edddbdf6ce43e7a6b8b33c93f39ff269597": { "976786fd43e7ab3db7efe0f5493c2e4b732add2abc4ca3639e54d6dba7ea3e9c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "487be067c8aa6535a54a90041692a596c79eec4dcd3bce169cb23531f73af273" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "6241169d5228811057271c6026586e81e469491f3c371a8dde989455a88b01c9" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.121Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "1cdff9979240f85d72430709a5efb12169bb4beec5957ffcd7ffeca3b0a52a1a" } } @@ -12101,15 +12115,15 @@ }, "4a8ab65da6d22806e27f1c0235a64e17eedef58353dd5f027ef06129117f60b2": { "jp": { - "updatedAt": "2025-12-04T20:16:58.178Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "ff5c54c9d0a3a8f9b1783ec7ec9262c672a0245ed307fdf0c64ca587b6390090" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.179Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "6690ad676ddafeb0a2da8e041bbad3216cb1e3091522612dff3015becfd3d19f" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.179Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "17a2ab901ec1651182d62ad7265968bfd0aa8a0aa3922e4d69ae9d81eff7d5a4" } } @@ -12128,15 +12142,15 @@ }, "3a04105dee92510060ffbb0e51a8b69619bf2a41b598379b28951f1a94eef00c": { "zh": { - "updatedAt": "2025-12-04T20:16:58.176Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "4183ed3c2db67ec9cb9e8f9d94517cd08cae13d15f17844d3158f6ca8fd673c8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.177Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "49256a1d63e90849e9830b4e12182aff3565acdd2768869fc05fe764457a0489" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.177Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "42730a82569bd00eff64b862db2fea6999103e907d6088f5b445c839676edc0c" } } @@ -12144,15 +12158,15 @@ "693961a5d1fa6bea79f69b1d2a739db59c41797c8d322ac4dea99c908e8abe46": { "b20f75da8b934d12c4230b89c1dd8cd4bb4b57708832dd5f413fd6ddf12d4434": { "jp": { - "updatedAt": "2025-12-04T20:16:58.150Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "b04c2b5831baee54a48fe8887e132433f1b6824b185242351235837468ef1450" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.150Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "6d4320a6a8b4149d556a8d8ff6d602790266dc413d9110ab3440d97c95da43df" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.149Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "611a57677a5b86d3bfc43c859da45b64aa99d0b7348b7b210acb325c642ef776" } } @@ -12160,15 +12174,15 @@ "822e90a8485f6ba254a1b6b4f89bbeea67771bd3cb9f9d6241558e4b9f59e8ca": { "3442662c930110d3e163429ea57e15d27f6132307f6bdd86dd62fc64d01d1c48": { "jp": { - "updatedAt": "2025-12-04T20:16:58.147Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "c85c8a464e477b8071b02f233a393e5429d4651221cc99ec2b92520354a20c68" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "536b521389199086263efc05654006011b73801d6d280a6874d1f5d17c9b53b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "5bdd0c323f16bdc8fa99589faf2a95916f0e3b9f4029cf672eea725717f3fa81" } } @@ -12176,15 +12190,15 @@ "8fafd060efa9d7570d6665629f29f511b108ca76567a0f8ab9320536cf4824a3": { "95dc2ad2c072c0167726cf92eb31cd7af87b0eb4785b0fb839363d03a88ae8a5": { "jp": { - "updatedAt": "2025-12-04T20:16:58.158Z", + "updatedAt": "2025-12-05T15:21:44.840Z", "postProcessHash": "f6b6596553703dc5fccdbe28c2ab97539f740445d87b55508e731adbe580c468" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.156Z", + "updatedAt": "2025-12-05T15:21:44.838Z", "postProcessHash": "ff36af709f413ef2e3875184ef2c3cc9e3b03045a9d31f116afa0b8735d7cf2a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.153Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "8c0272078d83758d7c3cf764b57f3afddd954814e16a837f9285f3db179d85c9" } } @@ -12192,15 +12206,15 @@ "910c09772c30498ccd96c4a7059798706b5861119f5ae8e46d899e9a4da807d5": { "419e68f0fe31b19a72d7bfd6b1b28c27298c6d38904baf049d3466be88aac0ea": { "jp": { - "updatedAt": "2025-12-04T20:16:58.151Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "3091b4e4e779031f8addd4073e87dc3826b0ebb248ad817a451468ccadd74fec" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.152Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "522330e6a8a495c02ab489af2dd3f276ca67f1afe1a9723e03f01443983a0a19" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.151Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "c29fba8b1a2fde675a2f1fe70fcb68a1fa04ddb126f6855bd356cd509c7dd634" } } @@ -12219,15 +12233,15 @@ }, "a529f5735fbe960afa2324179342c53aec9a55e1f4f1b1fd791033ae87f5a6fb": { "zh": { - "updatedAt": "2025-12-04T20:16:58.118Z", + "updatedAt": "2025-12-05T15:21:44.808Z", "postProcessHash": "78027c95e64715fac5302dba905a303d295a1ab5a35cb474bd2baf9044eafa1c" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.158Z", + "updatedAt": "2025-12-05T15:21:44.840Z", "postProcessHash": "03488c12c2cfac7eff222f8be4bef0f0f37858497afd231ff72b2841ed4e6ecb" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.158Z", + "updatedAt": "2025-12-05T15:21:44.840Z", "postProcessHash": "b004d3ce996eb120377ac13e4c53c8b8ee36d503101e49198db88a44130b070c" } } @@ -12235,15 +12249,15 @@ "a0c24fe635a0e43acb3d80e4a7fc854ecdfc143306eb5b0b77baccd6c4ef9468": { "e71bd647b55a5bb2a691655582237e95f9ff246c5f45f2f2f663e74b62968fa9": { "jp": { - "updatedAt": "2025-12-04T20:16:58.154Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "5c452a681cbb771fdf126a51b0d88abce1dd6f87b7c80acc355df45f242adb44" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.157Z", + "updatedAt": "2025-12-05T15:21:44.840Z", "postProcessHash": "59ce7ce283d91095b939355f1b9a7379196e8611ed95cf6f734cb09f7413bf3a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.154Z", + "updatedAt": "2025-12-05T15:21:44.838Z", "postProcessHash": "8b170abd619bbe25ea02211f7a27683e30dca441ba6e1f5167eeb33671d96fb1" } } @@ -12251,15 +12265,15 @@ "b60ebbddf877960af38c601bbdbf000beb3124a60fee1f8c23fed49149d1c527": { "a5cf8d2eccddd9b6214fa12aac2b98dd4e514d569be5e26938ee9a3b11a0b411": { "jp": { - "updatedAt": "2025-12-04T20:16:58.153Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "0d22f68c26687c6e11d3ccc9f0a66a7aac55d927d0193ef716c4467b92b3298d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.152Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "d63efd4d61573bd3ad4b86b731c3425925d7d68406480edd57b587150995147c" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.151Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "f0363c5f89d4ecde29b785f84657450c3eb52b4565e2b3b35354260706b2f5da" } } @@ -12267,15 +12281,15 @@ "c11fd5cd4c0e0c76b50b836fc0585b7d897d5c6e619c8530f61e70fb13e7d1cc": { "1fc6d064882a931f2ccd7ae4239ad068568c65a8bef153bd6264d39d45bdf340": { "jp": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.811Z", "postProcessHash": "4522b7efc32819ea16972c95f2ce99ba56305acfae119eb4c98edc7715085ad1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.122Z", + "updatedAt": "2025-12-05T15:21:44.812Z", "postProcessHash": "c66dd1cc242c35e71cda37f7f97d750be81983e76d43d9e50125f6c6234111bf" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.148Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "c0ce15be35aa928161f93bd53f1d62caf4053ca2e71fc4de141f4e67046bff91" } } @@ -12283,15 +12297,15 @@ "d2f8552b7911ad6c378a02252cb789aff8287601b71f6571a0f6e1b7a8e78d04": { "94efb582e11f5b80d588c2052e90bfd70b816f556e6039e851019c86956b10da": { "jp": { - "updatedAt": "2025-12-04T20:16:58.158Z", + "updatedAt": "2025-12-05T15:21:44.840Z", "postProcessHash": "a9f3d894b73a5e8fbfb355b615986f6554982beaa5b936b72d02d705053e786a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.158Z", + "updatedAt": "2025-12-05T15:21:44.840Z", "postProcessHash": "5c00236ca9842e274e702a44e1994f85189a107174b02d1ed13a8e5afd727476" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.154Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "91ca53f5e13b0879413261dabb6aa1482fe5da4c89bcd5e759dc619f60162775" } } @@ -12299,15 +12313,15 @@ "eb48ea9cc55a5f79da9d6053e1ddc3e175fac421ecfbf7cdd1fba7409a5937c6": { "4bc78345ed8b814098932537f3fc29577489a1bf65318ccf523d0e7979227a78": { "jp": { - "updatedAt": "2025-12-04T20:16:58.152Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "cdb1bda224b383474c02d61a269ea1e223b06fafd0c11fd6c6d3d8d9f0c45983" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.153Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "c356b333abc195b3e8534cb7bdc5ec98e3543b86e1e4405e54683fcb123d5f57" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.153Z", + "updatedAt": "2025-12-05T15:21:44.837Z", "postProcessHash": "6c445591fbab30d7577c48b9590716968a86683cf4d982a5e12bf1a0eefbb35e" } } @@ -12315,15 +12329,15 @@ "ec7b68e24b7e06a320d9daf21b92c0a61d2d196ada1c8350b443b492c228b245": { "f255bcf4104dcca52f9807566387c0fcfe6d06f436994fee4179bc40d148cf94": { "jp": { - "updatedAt": "2025-12-04T20:16:58.151Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "b3fee47b47dc2290e87a50d1f4278c3e481e4240e496558a25e1f1048ee04232" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.152Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "f6c7c9219121e18e781b866bfe788b2a54acde8c102ad2c6072e17d340df89f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.151Z", + "updatedAt": "2025-12-05T15:21:44.836Z", "postProcessHash": "6f3dd083e77e0617e119144f31c923c51ef132142196b6309807f50abeb5a9db" } } @@ -12331,15 +12345,15 @@ "eefff94e72ae2ff41e6e3bdfd308882739e2e719c94cb06245a0ddf4866a91d0": { "1a4e25f6cb4dbccbb5205a184e3f9417ca1d8398e86e5433534abb2f3af17825": { "jp": { - "updatedAt": "2025-12-04T20:16:58.150Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "47d1faf543fe73ac7fa9bea9082ebc4c7708f2096d68b4110b3b4e35f8d2d4aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.149Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "e0c1399f6444e8c2cd3a0448caafd93b609c7f666e849e21477e72fa25aa9518" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.150Z", + "updatedAt": "2025-12-05T15:21:44.835Z", "postProcessHash": "5f9148af290b8e332f4945188616cdacdc4400d1fb854ae50a49dc96ed9dd428" } } @@ -12358,15 +12372,15 @@ }, "d539a2e6e29c28f2a0f9388521c72cad291ebf89023c8cd11cbcfe918314ba5b": { "ru": { - "updatedAt": "2025-12-04T20:16:58.178Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "ffd4ab29f644bac86b9ad1da8e700768882c525563cfd6deb294a32c452c00c4" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.159Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "8f0041399a59000d4c60b36fbd11227f1b485defce1eb516df73378642cc3f7c" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.179Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "47e97c8b6b5ae5faf54dfb5af47097f6084715d5d6d64d3527f8b46df1ca24c1" } } @@ -12374,15 +12388,15 @@ "0488cc4c783adb013176b8dd5553d28bd7e7ce03785fd0038e3b2b17e6bdf549": { "718aa60f3c8b05491fd8687c867ff950c98134aa648057ef2a403f78f1807100": { "jp": { - "updatedAt": "2025-12-04T20:16:58.145Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "632b97abdbb009312e6951f9c9f878035b18b973c75d4d4f866a2d65dc768a54" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.118Z", + "updatedAt": "2025-12-05T15:21:44.809Z", "postProcessHash": "3be43d8fcb031bf4bbdb15285c2a606bbb9dbc5f31fcdb81df882419e639729b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.139Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "e84914e2f57ef8708bfeca376261aa24fe75eb4c152d98989a2f7c7ab667c05f" } } @@ -12390,15 +12404,15 @@ "1310e9bab89510f4aedd870fa23492b42460b27cc53beb62388b8527a75b4abe": { "5d36c63b3cd649e6c42f53a7e1722d9058261e3c5703e736f85a4081ed299d22": { "jp": { - "updatedAt": "2025-12-04T20:16:58.141Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "c26f3a6f63feb987c73c53ea0211cf7053746654e915cda9808291c1d88f750e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.142Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "e28330739f8e294da253009f27c46947dbea83da5cd17f5e1eba4b184e730b5f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.147Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "9a5dfec87714972506ff3625ae31550e67a7110f7bf4e935720cee4082a0ea08" } } @@ -12406,15 +12420,15 @@ "313f2f3a2287ee9166540ad792489898b8322355b28ee91e96ba66cf781aac35": { "813cd15c21bab5b5ae060ddf42a770163642046d3681ff5dd1dd8a48b6578a17": { "jp": { - "updatedAt": "2025-12-04T20:16:58.140Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "779d0aa00ea9f874e9ba40490b5109d067fc381fb1dec7a2202223373bb1ec43" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.174Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "69521e80448bda580f8100c7e23b03830220179bded07c0a5de1abf92f039c11" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.175Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "8bc37f939cbd3a674a5250f7809afcfe37fd26a5e3e3b98bde5e54de7eed0755" } } @@ -12422,15 +12436,15 @@ "38d86ec85c1c8aaad845db190de05e50994d1a3c494195da910589c64b052751": { "3cff21a72fb101c7dc507cfac07bb03d9d16b6445213a5a7553e646f024ba71f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.147Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "da0986bd34eef0e1315058496c916c41298b77d4820a97bef50f3deb226aa0aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.139Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "7698f002940daed3c558e38fc15ac644549954d1e79e06d76c43275daf2d8e29" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.119Z", + "updatedAt": "2025-12-05T15:21:44.809Z", "postProcessHash": "77a2cb97a23703f71c39b94b4c686d726cb1716c48fdaa414a58712ef0dab68a" } } @@ -12438,15 +12452,15 @@ "47aae18e89fdc913969ad0dd021c6affb6a825d67862170fab9bf412e150d04a": { "7845706578879f0d6235708b243856e2005db4e602dca78be25078cff83676ac": { "jp": { - "updatedAt": "2025-12-04T20:16:58.176Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "0f678d59a25e779457f32b639c8820a502dad5844946663151826fdd6292c533" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.174Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "3c8db17b36ef36c42d90a4b20e062b851f3ae4e7a3d62b58e85eb0b31c2a7da3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.140Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "ae6f375cd3e3ef70a68d3048240a24157632e16b3f92d5353a19971ec2e69d0e" } } @@ -12454,15 +12468,15 @@ "4a1e810e51a719b0c246d3a43e6419bd4b987b2e7623567a865586ec6ed3fddb": { "ed63b452ccdcc51644ab26c7e164fd9c06b4fb9dd0f29123b7c142d640dfd731": { "jp": { - "updatedAt": "2025-12-04T20:16:58.142Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "ef7cd524f2fdf6d90e1858b5d23db17318500f976a5a7a2fd1e5586717da19e4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.140Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "80bd11959669fcd52e73651a4421f670b3debada6cfa53fe7fd89d67a5f5510e" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.140Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "e4e3b0a4c2291fa43e4826fa7b93c070968a8172742a5cf99d056bead067878a" } } @@ -12470,15 +12484,15 @@ "50a5598ee25c450c5fb03f18bc79c9f33c4b2d45dd82d93378770a029449765f": { "d681b2d70ad9048fc005dfbd39784bf38bc368cbb6e601d7be30a81c02aa66d1": { "jp": { - "updatedAt": "2025-12-04T20:16:58.118Z", + "updatedAt": "2025-12-05T15:21:44.808Z", "postProcessHash": "7a37713449cf19d0d052e393040b23052ce7438d72710a0dcc8517980a765db1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.138Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "c0bed528dd331f0ec70fca32e12e3d3473f860e2f2a2e763b58621292706cb65" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.139Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "97593d93d626e7aeda4debf478235ebb58a33de0553d97723ce614e2b878f0ee" } } @@ -12486,15 +12500,15 @@ "58592583285bade083e9bb2abfe89113954c980d6a63fd9134c60920badad2d7": { "8b688b902eb485da1cd904c9a534e7c30138ddc8fe157648544914cd332f7701": { "jp": { - "updatedAt": "2025-12-04T20:16:58.141Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "85ef404ff476e76c3e7046ef1dc469f1942820db60fa2d6d3e793ceb69977f91" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.140Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "edc04fb5c50ecd8ef1fc5ff24172f0e494faaafcf86f204c74b229549b211541" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.148Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "6ec018018df8764805f33ffbf95356549971a61713481f4be4e30622d4c326b9" } } @@ -12502,15 +12516,15 @@ "5adf48b603a73cafc111898833bb810f6f9d985906f5a28a6b5510c4ad5ed9df": { "ded6c22af292aa253dbdb1b8bcdd3dfedbd38430db398f57c83b96b8b42647f8": { "jp": { - "updatedAt": "2025-12-04T20:16:58.138Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "a13164d17abd4104449490474446df9be775913c36f63421326a313b32728ee1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.118Z", + "updatedAt": "2025-12-05T15:21:44.809Z", "postProcessHash": "9ff90027bc5fc935d89f378837cfcb01114ea7601541d14bf0c65c25c8db786a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.118Z", + "updatedAt": "2025-12-05T15:21:44.808Z", "postProcessHash": "142c8d402e3141bd4bd175befffbdb4d1632a9617ab17b3aec92afe937195092" } } @@ -12518,15 +12532,15 @@ "7d16493aea7d06c09ef802117a0be5f6d628751d0a5c7a7b03ce8eb9dc409bf2": { "5c7a7e89cebe18dd07de910c107fbcee8795947ad29a2d17a6d6024a235a658a": { "jp": { - "updatedAt": "2025-12-04T20:16:58.139Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "9f22f5c3850a168dec64c983aad647c877a101fc8b65b6022b9fd9c61eb9d705" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.179Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "bbce2f4caff9f05c6c142c7e7881079a26d8ba55d8c38fdca955b58a5327949d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.119Z", + "updatedAt": "2025-12-05T15:21:44.809Z", "postProcessHash": "992d088636ad4c139fe770f107937bc5317252cef47c3974db07eda981207ac5" } } @@ -12534,15 +12548,15 @@ "948b9dc936c07fa8b4472138f98721317baa561958a48a6445780ecfc6a1c485": { "2f113bab1b3e6819aa420803e0868837c5a60eed370a5c0708d29084e14f6cdc": { "jp": { - "updatedAt": "2025-12-04T20:16:58.138Z", + "updatedAt": "2025-12-05T15:21:44.827Z", "postProcessHash": "6f038c456e76bffe9a21a1f74f613171f02a645e1b38c5cfd99579bcd2de0d17" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.137Z", + "updatedAt": "2025-12-05T15:21:44.827Z", "postProcessHash": "f86ab8839e9c68cbc5149e9860687ae5ba705f12c0d9a0fd53f151e756db3204" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.140Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "7b5fa6bbf16491bcf0f92fe63e3427c79b02369af278e54b6333c789d06aca01" } } @@ -12550,15 +12564,15 @@ "94df9a623cfec05c2c5b489fbed533e510d65ccbf937bed27f852c60f3a24b6b": { "4d71c012d9187781ca8fcfad6d17272ce0479d7a403fdf6f4e13744b2054c414": { "jp": { - "updatedAt": "2025-12-04T20:16:58.173Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "c6c1a1016168d3362e0650a40a18add96be7a6b8497778c458ca9ed78d995b84" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.174Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "eb2d09a582a79e751b1d025725543d653f2a94e82504db1fb2d2ae7f83601bad" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.146Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "cbb18bddeb9d7591ead8dd615a3443495becda7ae3ff5d844902e19a3270d570" } } @@ -12566,15 +12580,15 @@ "abde8721a04c3899ef6606633f77be77e9d032a8fa7f37d834ba01a23fe119b9": { "580c03f819a51524be5321c5af5b976bf750d39a4e3a64a3dd28f32805924089": { "jp": { - "updatedAt": "2025-12-04T20:16:58.138Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "f4c816471ebc4f1384a73a0d7d5ded6de5a6eee864abe32a1e8bd321d78e7938" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.119Z", + "updatedAt": "2025-12-05T15:21:44.809Z", "postProcessHash": "0eac5f33026edfee783765bc2f2855e0ca9f4742c4b433e198f9f59decc0f630" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.139Z", + "updatedAt": "2025-12-05T15:21:44.829Z", "postProcessHash": "07cb5f61e01181d1cf23fe740f9ba4cea3819d32b56b7561c48687a568a9ea69" } } @@ -12582,15 +12596,15 @@ "ae86875e3a4deeec5b623e90f58d3191bc8e79167da17320095d45b7aefc2243": { "8e8b9e7eee69658acfb5be5d7837a6c6af0457a30ff7676b0d57099a5399ff0e": { "jp": { - "updatedAt": "2025-12-04T20:16:58.142Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "4d6481d4bd406e143d705595c747c5f4306281b4fb360cbf62e9de23655a9618" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.138Z", + "updatedAt": "2025-12-05T15:21:44.828Z", "postProcessHash": "3aebaa11a3f071b2ffcafa63093eaec0b2b9d3489ca657d83ca958c1debb76fe" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.119Z", + "updatedAt": "2025-12-05T15:21:44.809Z", "postProcessHash": "332a61d48acbdc12e2c0f2ed974751749a1b053361148a9d3599cf761ae9ddd3" } } @@ -12598,15 +12612,15 @@ "b5d0eacaaf66596432fd2e0164bb5f867e3cac16623e968148a4d757d106c3f9": { "dd01468833f830dab589b0b46480f9b998ba99103d12ff19ec3c342a9f0a9138": { "jp": { - "updatedAt": "2025-12-04T20:16:58.174Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "f4177c0137f7cebec30e8622284443325e99ea3adb7b8b536173098bc535b66c" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.142Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "425b878e68b61701ed73af11b376055dd3b00cda6fcb29eacb22e35c9a49c19b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.173Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "cdf3c1e2da318e9d95a99b7ee28b5c3797b029a2aa5eae72edd32d18ba8f5a65" } } @@ -12614,15 +12628,15 @@ "bc185d41a81a462e3988685f733423500e79d9186808359cf876254dfc1df6b9": { "873f51e584f0fef0ed5ce12f52eacab370768a902dd8b25575c46c3ea3925c19": { "jp": { - "updatedAt": "2025-12-04T20:16:58.173Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "759623204fecd566039646ced48c47c6307fd4ab7c2ea910b5a6ad266a6cb5a8" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.141Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "83b1a3353f3a86135b994218793586212f5b612a7af8f8a6da73f7fc66ce8fac" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.149Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "dbe5b8804f3996df76da28cddf8b5663f930e62267e01cc1c3105231e32831cb" } } @@ -12630,15 +12644,15 @@ "bdf609022e3136bdae1def5400ec2932bb8f17ea8d7d49a273b0293defd3affb": { "f21711f3b2d080fbcd8a0d170f14659f54ad538d7c534cc91bee92cd96943824": { "jp": { - "updatedAt": "2025-12-04T20:16:58.142Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "b6a7c099c7149d9b5face6880b1458f996a1863b68b3ebe873d5b505fc15cd3c" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.149Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "bf5740b780e901a615f3975e67d265a483819fa291fdcd97237a81a94fc408dc" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.141Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "da5c131e5e0f960e2380f2d74893f76a23dc6cb22d8e763f918284456b4cbc6b" } } @@ -12646,15 +12660,15 @@ "c5084a09df628aa86f5f8693b10a55f9e8af3ba5b6e50ed69ff474a580871673": { "639b5a2d990e67de3c2c8aab1480380f68b5cffc8cb43a13b0da74c601a38749": { "ru": { - "updatedAt": "2025-12-04T20:16:58.143Z", + "updatedAt": "2025-12-05T15:21:44.831Z", "postProcessHash": "b863133cf50fecb93ed71d20426753326b56e807b0b46492a8c0051fc86cd1eb" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.166Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "11c4ec5448b4c21abeb56c3c25677a025456f572957f8b87ce884ba2d45a1bc8" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.164Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "e7335e538de3266b83331757d84897746766e4845c07f689641073a5cd8572d9" } } @@ -12662,15 +12676,15 @@ "c6970f5399e645bf58a1525ef6209242f22690e314c9ec2676aa0f609e60850f": { "857e9c3ca17f16a6e7331b2d62e9f15ea308a426462699ae488f7fd808b8bedf": { "jp": { - "updatedAt": "2025-12-04T20:16:58.148Z", + "updatedAt": "2025-12-05T15:21:44.834Z", "postProcessHash": "a5600e69ec330b6227d2ee6243bfcdc77380be62c8bfc053f310a25977afacca" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.141Z", + "updatedAt": "2025-12-05T15:21:44.830Z", "postProcessHash": "0affb16fba306af18e9cd5f516bf6a95970850945ea367dae7fb1606b8ce732d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.147Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "4b40d221407cddb54ade0938d462e12a4d9f287383a1690e6081c45263e9a10c" } } @@ -12689,15 +12703,15 @@ }, "0dc53c77f2243cc7e9fdcc853fa5aa06a0cb8fe3a7812be06951c1daf123b21c": { "ru": { - "updatedAt": "2025-12-04T20:16:58.177Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "2af1ec335db4fc6abf6f7bd2501376fb9a92a4c7466a26be441beb1d48f08f7b" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.178Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "ddb1a5994207670d8dc0c57de2d5a3b3f1888702976faa7ddde1a1a735f175a4" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.178Z", + "updatedAt": "2025-12-05T15:21:44.853Z", "postProcessHash": "1b48782b35b6277b8e397ddf707c73d3f9f479adf18167d3f10053737eb9de51" } } @@ -12705,15 +12719,15 @@ "fe52a1835874eff99646b2ecbf9812aaa4ad459489ce76c856750b021e1969fb": { "44b9e40b3ed21a0eb1effa1387bbd83dc88cf7259bae3bbf2af2a134b07516e5": { "jp": { - "updatedAt": "2025-12-04T20:16:58.176Z", + "updatedAt": "2025-12-05T15:21:44.852Z", "postProcessHash": "7e1f718327561af8008188dc8ce48c45109a6cbd34fa9c7e40c0f386f623b00b" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.147Z", + "updatedAt": "2025-12-05T15:21:44.833Z", "postProcessHash": "10193cbefbf0c299a15813b48e351fb7f64eb8fe1ddb2f1140a3653c6f4e6bfd" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.173Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "3d572f273c228b7d335ab4b69475db422d64d85b819f9a2413fd086027f7c7a1" } } @@ -12721,15 +12735,15 @@ "077683f76fe06aef19e3361bceab4bc549399e0723b4d9d14415d78c7b29cdfb": { "fe9570de03d2029f3efd3701f8a9844fa8bb91810ea7c58923ee8d0766854adc": { "jp": { - "updatedAt": "2025-12-04T20:16:58.167Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "f8fa7d6eae0fcb6e997eab540e6fb68cd3d387424fb2f5f09b6addde83b04402" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.167Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "c668afd1a4504ca87fc6a690b79e72bbb195b73894ed32c4223465d4c5a42e52" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.169Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "0fe4d49dc0c3f4bc0ca8b91b508572e0d80aeeaea08cd70739089bb141a1e665" } } @@ -12737,15 +12751,15 @@ "1d4d6e77bcbd23d001d1913843fc6c9748753173b9770ce333d87441932130ec": { "30da2cbfe92790be7c2f95f485c2ea63c4ff423ade0453d52e65f78a6fe652c0": { "jp": { - "updatedAt": "2025-12-04T20:16:58.166Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "d11512251fad1e69f2b21d67dc0af2c6b5181df9e72f88a5976070010a1be125" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.169Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "78d25fbbc48ea834f6a45d8443caa404c8d3ef5995cdc2552d6815efee7f4d4a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.162Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "86be66d6a1b72899180a27fffad0cb4243dd940c76020f188281b83081fead4e" } } @@ -12753,15 +12767,15 @@ "37b9937d3f28ea06521af2789937cb6974b4bb1da71a4e0e38cd433452943f4b": { "ff41c613f12a073c7cfef1f537c5bef8fc0820fa48eaa7f6ad0cb887283d047d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.163Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "523d35936181e624930a8ae3bfa903e8b5058d7cfae8f9729deff0816643a444" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.144Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "7d9963bd6e0d42b12da47d8a8d0b0292e841d7ff0f57a47fe95809372a490574" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.164Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "ceddb2e60b6e749dd8b2ed1e5ac5a05bb3d2fe7b208d4da32dd78a54d81cf2a1" } } @@ -12769,15 +12783,15 @@ "4503f45c726f639e1a6502e2fa738700aac770245105ecbbc3d6006506fa8e7e": { "b3e6deff1b1839f01fe2fdfb7c34b1a485c8bd5be58b682ad09b971716acc42c": { "jp": { - "updatedAt": "2025-12-04T20:16:58.165Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "70d36a01709459b2e2f77f7917869a49b93fbbfd9ac9bf69bbf957df53886d57" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.159Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "405d1837eb75bcccd57ff2938776ec65658a0a8ea0df5b8626797029bd3149ba" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.166Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "f21607efcda7c564974769933667df0761a9f89c253951317d7ab69af11370e2" } } @@ -12785,15 +12799,15 @@ "45c696d22175381569602ddc4401df16a7d32249c5f9994c4b98bf2548350315": { "65644f5b55fd61d8fdbe8a764e605ff7e00f6ec53fcdfa43f484a5638a58d2aa": { "jp": { - "updatedAt": "2025-12-04T20:16:58.169Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "38af28789f3d29a5ea1f37f1a934ef5645acc48a9b4377bc0f807cf61889114a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.171Z", + "updatedAt": "2025-12-05T15:21:44.850Z", "postProcessHash": "2c85d8fdf93c2dc3ee0a6f86b4a93a192ecf72ca8d8c018da5bf1505144515d1" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.172Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "c2ba60b96c9b02fa2d7323c8e7e30d2e38c839ec16ecc8bf3794dcb2a00a03c6" } } @@ -12801,15 +12815,15 @@ "4d6593bbb881e0a74e7a089539eeba4aca7019f581c7caeadeee04c001000773": { "d16ded5082885b0eeb5b28bcee5bf878c87a2cc092934fcfc328a1e535effa1f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.169Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "16889dec3075a18d3d5469749678ccaedd6b679062012fb1828e7a1b4fc2ed49" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.163Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "bebe19339ee3a367d8d4626c09fe986370e30f0469424b308830b71c94b493ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.160Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "0d526ab7a4087a20f0c6dce99d2b36b169b1e08cf7f95ebaceb933cc07ba793f" } } @@ -12817,15 +12831,15 @@ "5c12094be2a10a85a875ce129adf37c46bdae04160dbb85b3eb63b9c69e7f6ac": { "bf9cdc73e3b5ca0e62d14af59e1854dd6d45176f362f34533c815c278385d1ec": { "jp": { - "updatedAt": "2025-12-04T20:16:58.161Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "32dd1631155cbf710c91a8c37de93a8831f9afe9782490bc3c554849b5aabfb6" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.144Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "c5617798209da1162b29a36cffc88944166b5d9916565f215352bf2be355bb77" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.168Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "6b7759991d69bdcd85d8a7efa609c7250120c8cf903c5a0bc78b1e032168a3e7" } } @@ -12833,15 +12847,15 @@ "62508936e6b3e7a6b965ed3df755188b154e45270320ca734cb0df2e29a942a9": { "9a4adbb5e86533b1fab803147ed4539c344e121c9526ce249b8e3c49744c7702": { "jp": { - "updatedAt": "2025-12-04T20:16:58.166Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "0fefdba4959b4839fe6686c62dfbcef3b9c2bbae07f189d5857bb555d915574a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.144Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "f240b4c5a707eaf28baa58a414fceacced14c036f1e7768bec72eb8af3cbf3f9" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.163Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "1d7f8ef90045452c9a84891045542f8756299f309596fcddb05c72052dae4057" } } @@ -12849,15 +12863,15 @@ "7a1451fe8363988c04d1df2125cc6a560940a7c034905f5e75da236ab427774e": { "7f9fa8dfaab48853ecedafd465b380359704ea83aed218c677074831e1cc0932": { "jp": { - "updatedAt": "2025-12-04T20:16:58.160Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "7229a743d3beacf865a7cf3e442a68be5ca52ffbc900a8f6441d163fd5c024c9" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.162Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "2e6c21ea55498e3d0e39615cb9eb6a6d96c45c25d43720af3fea0d6c72e9338a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.163Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "eca517bc8e4eb8181c5bb6a31333854af51c91defdc77e305c25dedd5c98e697" } } @@ -12865,15 +12879,15 @@ "83523c78b37179282ea3d0f8a98cd8c0e917e50caaf74f38e237b1b1f1fd7dc1": { "7f172e3eb258a3b4cd3c132303859997ffb354f24a60481f04ae0f80fefe2147": { "jp": { - "updatedAt": "2025-12-04T20:16:58.163Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "54f0c8d74362c22d466fc4085d165bd0be24b341de6247d47c34f419124ee192" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.168Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "e1e4c0420f3a53e01bd0ad2ed32939a2842c474acf70f9b0b615a18124520999" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.172Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "8dfe09633abe12acae3876a03cf6f27b54a23146cb0e609b75ea9381797c06eb" } } @@ -12881,15 +12895,15 @@ "89a6cf75614ffde882ea0e38b857ec20bc3415e924373b586ee53a84d81b8dac": { "212ef1dfe191daf73ed51386731e37ce6d4ca49f4472b7e471586979e69a9a9d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.165Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "d0e28756001cd552d56ec19b713980e157d0d09f242d24f3e7f0c412ab242d4a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.168Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "caf22f8f81da3c866444336e4789ec33e690584e0a3c424e857d08bb9747fe93" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.160Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "1a9b3699a64f26b7446a06465da2140f76585264ea31d76df087d751ea8cddc0" } } @@ -12897,15 +12911,15 @@ "8e4e3758c244f276a3f91f720f08400f7d3280b2729ed2535fe4b0a244bc1eb7": { "a3356389fc2d7537a8464f2e1646f8f51af66a2d715df1807a2fd4184083a70f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.143Z", + "updatedAt": "2025-12-05T15:21:44.831Z", "postProcessHash": "1168933247f82be55fba69eb4de3623fde2faef8e7a84ceb7de95c6c43cc6e36" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.144Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "fb4736d6c394b7d5d0baa0e6fd901b321c0b2f5876bdcd28569370fb3d2e3139" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.170Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "6c5d824573119f4fbaac03e57f92eed4a05f2839280990dbdd8a606fd4d0ff53" } } @@ -12913,15 +12927,15 @@ "92c4e15d1b1edd5a34f950168fa129302400e9f6ef4fa378e3c7af3ed6ec8227": { "3c3fcd6c5352af3e3f90c0a4d954793388177b9bbb34b975eff1c8f384d445ac": { "jp": { - "updatedAt": "2025-12-04T20:16:58.167Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "f7f2edfd9241efc698996c78310c0cda4b199faaaafa4ff9d64401fc3afee05e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.144Z", + "updatedAt": "2025-12-05T15:21:44.832Z", "postProcessHash": "0df6ec8783ec183fa4b9d701e20d95432e6fb7146bf9a96ccd48980d450cf33a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.171Z", + "updatedAt": "2025-12-05T15:21:44.850Z", "postProcessHash": "973f6cbe0a381ca3e786bef4aac7be506d9f189af9e41de6f556b7fb1a861078" } } @@ -12929,15 +12943,15 @@ "a14794c89d955458a9f5af44d7aaca8d68a05b6880e98e008a7c081604143ab7": { "671b0a57421a638325cbf9c110626a9d5b734267bb8f974814c03393141cf7b8": { "jp": { - "updatedAt": "2025-12-04T20:16:58.142Z", + "updatedAt": "2025-12-05T15:21:44.831Z", "postProcessHash": "7a4343b184ce07814bff511938279ea087ec20fb2bb44f109bf21ba7a8151bf6" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.144Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "85cc8cc7723a6b402f93d55a33cebfabe020667d895e1ec8c1020d05691ca3e1" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.161Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "b0265d2d074be875c1475182dce6f9e1b242ed57b782c9fbb22400ff60bdb1d9" } } @@ -12945,15 +12959,15 @@ "ae39080b133df67d8884d7a8d76cf775ef202d9bf2efb43947344e07462aec23": { "4c42c112034c378e6000b6c987744ecc184d4c90582c11dc33f577b3f2ee44cd": { "jp": { - "updatedAt": "2025-12-04T20:16:58.167Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "38e4458959a4a356ec453de42734eae7ed88f9f6a85e180d96b2e488440fd98a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.162Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "3774b1056c7615cc021b7d2c0f959eb6994a1208d265a132292b1945654b42a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.168Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "eab82b22b7bd67fb2676c421df09dd0ea831aff5b8186319a7d751fac3be5ac4" } } @@ -12961,15 +12975,15 @@ "b3e8c57a2ac90416a86e93c4fc87cc9fc69b9ee772adbd854463142bcf0ad103": { "78a6c5fa33437b43f2619fdc05ba1a3ff266f89bafbeb1b78bc71a0ed76a0496": { "jp": { - "updatedAt": "2025-12-04T20:16:58.172Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "c58808769b8271d5a90cb4fabde6280c7720e58e28e5fd36db0611e2d6f70ea9" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.172Z", + "updatedAt": "2025-12-05T15:21:44.850Z", "postProcessHash": "28f1a24ac694ca1ecf61eff07eb3ba64c6510630ce51bff6fcc9bea3525f5621" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.167Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "0323c6ef269128ff9f7aea15eabc1fd734a5b65352b9a3b4de12716f96d27352" } } @@ -12977,15 +12991,15 @@ "bfa5f357797593cffea8aa625d31e79d5f58effffe1213f1bbb7b709e0c951e9": { "9dbe571f5b98f8fb6c1fe7c120e80cf8fe72a659f77f22e8b74282600d4e9325": { "jp": { - "updatedAt": "2025-12-04T20:16:58.162Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "e8682b4e5860e08b4c6d566e101d8453d9129fa6bbbeed91c125b0a954470cde" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.160Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "dcef040734194d5b58042404fe8427ad8667e58c284008c9b13083c4eed7f03f" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.162Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "70becfa0fc800bc3c41899791b9524ab6454d7db5734a5187b86a82eba835276" } } @@ -12993,15 +13007,15 @@ "c593a21ae24f2adf1116e2099fe2cac24733672a1fdacfbb7d9be523e674a070": { "3888654c7ba7da0474c2c33ac3100faa58509581ecb5ff97147be80f6c3ddc7f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.143Z", + "updatedAt": "2025-12-05T15:21:44.831Z", "postProcessHash": "841b45db78efc802422c48634083d446d21f12af1be3841b6d09d26ade5e1926" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.169Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "23d6a1f5929b2955a22a427fa11c2b6c8d9907ed63bc5d2fae552a00730b35f9" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.166Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "55433cff9eec68a514235c2b83584b48d05a8f76cc1007fc9259665c2c8ca535" } } @@ -13009,15 +13023,15 @@ "d2d56d1eccd2d86a90004069292a4cfc31251986d8bb238fa00ba3a4aab4a56d": { "dc92ad8afa44196810e06c60223ea9ca5b982c40325ac54b37fd95a9f450fdda": { "jp": { - "updatedAt": "2025-12-04T20:16:58.166Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "2e4d5be033432a02f9387fdb20794bf1e9de155b9ddcb759a32d376a13225352" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.160Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "7db0f57f06e332d374c91d66e82a4fa43ecaf0b41d7ec8d3b9a2d203f8740386" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.161Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "e3eaeb6d96aeb4e6db6d643ffb5ffee066927be7cccb319d4e80ae82ccc3a833" } } @@ -13025,15 +13039,15 @@ "d36f1827c010ce2e2dcab5998b4c489e963acbe4c2d8322885eae6daf7d3e446": { "2d4e379a75efd761f80eb533b3cf33859ee34ab855d930fab99c5091b13fa5a3": { "jp": { - "updatedAt": "2025-12-04T20:16:58.170Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "3f86850820fb03b68063eff6b91510044c806973eadbb77d6bcb023072740747" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.159Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "13a8e3243e3f41097b767df0afc75594ff242e809c51d6bfedbf2b4bacf526a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.163Z", + "updatedAt": "2025-12-05T15:21:44.844Z", "postProcessHash": "2c9c58fe857b0ca1e03057ff7e0c18955bbc1ea94f706c8729ee16a0a9047b25" } } @@ -13041,15 +13055,15 @@ "f27af8909a343bda58696e815f4b50b00101d0dcd66b99619aa579b381a444cf": { "929021d21964c8a27df287754f3bf673b1e9e43e5b78df9447405b8197530ab2": { "jp": { - "updatedAt": "2025-12-04T20:16:58.171Z", + "updatedAt": "2025-12-05T15:21:44.850Z", "postProcessHash": "fda61ebc6c2f51fd4ce0a9029a307f737603d5cc238f66ed2b4a95f329ee28a0" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.167Z", + "updatedAt": "2025-12-05T15:21:44.847Z", "postProcessHash": "7a67f90ee6ce51d89d1321f446ac34cc49f9e0673e8435d344024ce33eb59d99" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.168Z", + "updatedAt": "2025-12-05T15:21:44.848Z", "postProcessHash": "c9feea73bbf8a6d4bcad88242d5e2b23f3f7796520562dbfde0da9f7acc49186" } } @@ -13057,15 +13071,15 @@ "1d24065c2e7fca3ac3f26d0a2b7ccd04f7ff1ae4faa321c7335a8e84eb0ac0de": { "e323f890710302432f3ba708412993f1d391acfb58bf585c82e91d8c3c5b823a": { "jp": { - "updatedAt": "2025-12-04T20:16:58.182Z", + "updatedAt": "2025-12-05T15:21:44.856Z", "postProcessHash": "5c9a4904d8a32a58e205bb09b951f15c6b98a6f67d41f51ccee29d44ccc872ee" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.181Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "8009e581c9e050266543070adb2b80456a830f766665a7239e5d0a2a5a083ff2" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.180Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "7e66de8cb29014fa12a8b405cc2e6b0f24bdffa39493f4b8ab312c8c78ea2e3f" } } @@ -13073,15 +13087,15 @@ "34f6accb938658c99a83aa179d1dfe75fe3f844b0e815b1a8d42a512eb830f06": { "c43e5de4e7fa4afd53423adaa427167edd9077fd3af0bcd8e16a72269e83116f": { "jp": { - "updatedAt": "2025-12-04T20:16:58.182Z", + "updatedAt": "2025-12-05T15:21:44.856Z", "postProcessHash": "7c0997b879c91b59a7afd3789c35c0ab518fb5ace177f8e9bd3956d002008b9e" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.181Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "946dd8d62c5fc978b2550a24137c95325a9c50ef3e703ac37040af59b648ff25" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.182Z", + "updatedAt": "2025-12-05T15:21:44.856Z", "postProcessHash": "3e7acacf1fe13983412ee30aadeb06b0f1fcbfd8fe8a4f0cb4db4d1c4be2a9d1" } } @@ -13089,15 +13103,15 @@ "45e2237668cc8f027e43e52ef4443b8a53d2c07dde3b858205c9c43057f4cb8b": { "66380f0ef83c18a16b8296671ad4697deea2b60436ad4259cd3c3df09895bbfc": { "jp": { - "updatedAt": "2025-12-04T20:16:58.159Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "8b953e74eaa1401e371ba66ea3b8fcae81ca61e3df63b65a1ebafa3f9d7ed79a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.180Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "631d6059e85280e29d29d89fa2cca076c1a46d6b9bcd746bf4dcb5eec80ea897" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.175Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "76385f665c1cd89ad706ea9c3da2feaf7d773d50d975fdc9ba754b2a2b749fa5" } } @@ -13105,15 +13119,15 @@ "4e39f1cc2912db452edc06d93f7f0bfcc091c2888f064a3281bd99e46645f722": { "48a7640cd750631e03fa4c3747cd09af737c4ed39ad0a40e22ebcfdbc24b9872": { "jp": { - "updatedAt": "2025-12-04T20:16:58.172Z", + "updatedAt": "2025-12-05T15:21:44.850Z", "postProcessHash": "e8555139a467f6ce32c1dd2fd8fab77fadd52543f8bd0f041a4398da83af34e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.165Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "edc217e5d5ecabf1a87cfc24212e220b46416d1b41edc5f456bf5222288614e5" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.171Z", + "updatedAt": "2025-12-05T15:21:44.850Z", "postProcessHash": "ff9033995549b9129425f0f17947776e738291fc7aa1969cd249a604824d3725" } } @@ -13121,15 +13135,15 @@ "990553ca9f9ae4591aaae11318ecec98a52d743479ad68505f33d7437ebdcfe5": { "6706062fa424eac816c221cf4a0ecb23afeca8ecbe3f4830da0cee49f3af5b55": { "jp": { - "updatedAt": "2025-12-04T20:16:58.173Z", + "updatedAt": "2025-12-05T15:21:44.851Z", "postProcessHash": "dfabbecf3f57e3c3659f34df9383a18a4abefe44b35da6382063b424ae305569" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.180Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "5524d7a418a936c38e85116e1f20c0b9bba94eac496fc032df1955684e5599b7" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.159Z", + "updatedAt": "2025-12-05T15:21:44.841Z", "postProcessHash": "4dbe8b3c11e58ab025805f7b97473e05f92a25e20084c8b80f3c6082332129f9" } } @@ -13137,15 +13151,15 @@ "9b3d838535466c0adcbcf2c1821542686b5932d55c219ecd4c54a8d3d723b617": { "b968225991ebd30f1600f3ad485919d0badeecf3a3e60c5cb52b71a85c5611c6": { "jp": { - "updatedAt": "2025-12-04T20:16:58.181Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "73338eb1300d9c0e58340b8b12c3b8fa73d79ae75ab65428054d59c600ae2e42" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.176Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "06243742ef0121a58ccdd59f9ccd7829bdf98956e50d202ee6567102ac39d03d" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.175Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "39afe0d0a47207b615c72fb01a44b079982234b7d2c5ef927ef61c5a84af37c5" } } @@ -13153,15 +13167,15 @@ "f8fa9a1c93f8857620e1d2d6052e2a540a9827ab07e015947b84e6fc066cf05a": { "27bc228b35212b29d55733663b0d676059fdafc2d49a527814889b3aa40f6e10": { "jp": { - "updatedAt": "2025-12-04T20:16:58.180Z", + "updatedAt": "2025-12-05T15:21:44.855Z", "postProcessHash": "28355fc7e2bf804f9a183ad0de03836957fb86d0a41c1ff298da069e1a2a3a64" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.174Z", + "updatedAt": "2025-12-05T15:21:44.854Z", "postProcessHash": "718f32fc6ad103ebac3cd4c7785fb03ea3942461258ab30f220b74c6c039426b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.181Z", + "updatedAt": "2025-12-05T15:21:44.856Z", "postProcessHash": "669c32622edf10c63f6f344a2c8212c6300f0dada140dd2d54b9432a08f02de5" } } @@ -13169,15 +13183,15 @@ "11aa99a1bdc8390230a974032f545ad7fc914b9d7d7512e6f3d523c3c3315925": { "25ab99f304def64235d114ed61495f4a871f63a473b431f04505d22d84acd92b": { "ru": { - "updatedAt": "2025-12-04T20:16:58.165Z", + "updatedAt": "2025-12-05T15:21:44.846Z", "postProcessHash": "0ce05ccba387543046db4c36ce5ebc255b39e9b64556b8a91bd1d3c0d6d94e16" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.161Z", + "updatedAt": "2025-12-05T15:21:44.842Z", "postProcessHash": "73db27728b01e076fad4a160940069640057ba1705d7954164259153762368e4" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.170Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "0f5dc14bba65bb3b26a69ac0b4707e8d7cf615ed2ea5f70f9ee14896c8f321db" } } @@ -13185,15 +13199,15 @@ "15a59bf1722e4b12c28df70766e0baab4b9d5a6f0a0473fcdaa0c562dee3986b": { "38c435040eaac3147a4b165e8f2e2eea100525b71769ee62c7de7604c2c7decd": { "ru": { - "updatedAt": "2025-12-04T20:16:58.164Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "a6a4188aa3a525bbba1a8464fae1bb9269408acc426711a46685bbbb4f9b512c" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.143Z", + "updatedAt": "2025-12-05T15:21:44.831Z", "postProcessHash": "af70d5f5fb0d75094b995504b5773984cc102e9a70021f65deb16315633b628c" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.161Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "bf9ca63a11639d2e3204f263ae2c63fc01ce3d022a58a0e9bedff53a8c94c989" } } @@ -13201,15 +13215,15 @@ "a840f2497ddf7c24e3414728a66fe927662c74a0473293e11a93429df3ef7e1d": { "14417b042f80b8359063dc1571b796f4f9775e28a90c36436b10c493b04268af": { "ru": { - "updatedAt": "2025-12-04T20:16:58.170Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "7761c83a538e1cb01297a8bfaeb6fe8a2b0b5592db62330fb300552506f633a3" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.170Z", + "updatedAt": "2025-12-05T15:21:44.849Z", "postProcessHash": "d9a6f4e2ee43023defa11d89c875a4585710585a163f028a246d257485ca60b4" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.165Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "f35f29fda8fc5b48d623dbe3a5a1a31cb7e2e5bc229bcf5e2ea6c0b9cbd09eae" } } @@ -13217,15 +13231,15 @@ "e843b874a573838613448a25478fe1be3cfe8e1a5c23c7d816af626567769147": { "8cb205aa323de3c2fa63f58b08365d61b559f9ba1b8554ec982b293d9a83f80b": { "ru": { - "updatedAt": "2025-12-04T20:16:58.161Z", + "updatedAt": "2025-12-05T15:21:44.843Z", "postProcessHash": "35e31c50e23248eb82f207190c0e7c3339422588ab353ab860babd2c6daeaf22" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.164Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "08f3c2ce89d66ea32d7e6a83355b0a83a1def485fe33c532e458647eb65495eb" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.164Z", + "updatedAt": "2025-12-05T15:21:44.845Z", "postProcessHash": "6a032e4938a01bc4dd69c599e1f08f52d38b885c7403c17ecc56ed09532c0197" } } @@ -13233,15 +13247,15 @@ "3177435d774099d4ba686628bc971ccc42a54d0a0a211c8a4424bbc544e08540": { "f15d74887e89dbc77f9957e1568c4842460915108734894efa6e2f081275d68b": { "jp": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "dd71f578d9df84661571b80bca5395e9f12f766763975bf802b712756a87313c" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "9e2561ce5358c26ec9269ce12757b02a9fe08f36b88aa5c0088c7f58c3d220bd" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.997Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "0fc5f392b8bf53f1108896c0e4530cfc2fcd583627a4ba694191e54311b480d5" } } @@ -13249,15 +13263,15 @@ "3caedd95aefa51553be1069772560367e021728814e3e4cb4e732e19460e0502": { "c808220f60eb5bb176af1e26539836830b9934b93a9bc1e1e62fd9b90ce36bc8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.162Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "8796decbab36ba86e3d455752eb407cab50c8943a1c8d76e1457a968eaf33619" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.162Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "aa43e8b8e06e43ec2da3b781aa1cdb75c050e66fc1ef768571c0993e5dbd4a3d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.161Z", + "updatedAt": "2025-12-05T15:21:44.150Z", "postProcessHash": "96424bd47cdff529cdbd3bd14f8c8e20bae50f04987705a792851f781461ae36" } } @@ -13265,15 +13279,15 @@ "853246cca55f655f764269048050edb509e178c1ed6b34530b7a3aae600ec2b8": { "0a1abce96f2027f1611f7096e0422a02de923c3698460cb2c242ae3092e25c81": { "zh": { - "updatedAt": "2025-12-04T20:16:57.099Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "e8b5fd322f7b429948f73087023d5e5b3076f16a39ca914d6438260062130a55" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "5a08d8f32df5112fc6695a64a3d358349fc989650bfa949ca45342b0147b2b22" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.157Z", + "updatedAt": "2025-12-05T15:21:44.146Z", "postProcessHash": "0e563c9a1a564226c8cb68c731d874e577301fdd3030f036c34f85fba07d538c" } } @@ -13281,15 +13295,15 @@ "a030bf426b6662b4674be21ff621cb7fabbfd26f971ddb89ac770557065aa0cc": { "f732d015e8ca7a50761bad6c4404360438b7df18567a96df59faad98662b6017": { "jp": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.146Z", "postProcessHash": "7517b19570b6999dd50ead4d040a8a1c6288754a5eb9aec94cdb2b143b4f68a4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.163Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "ffce358a94485570f0367847577bf65176a77f4ce3386865d3718f0e810b603d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "2cff0f21de21ed5667353cd6094ce9fc8894767ce538ab89a0dc566f900f604e" } } @@ -13297,15 +13311,15 @@ "06c88066bda47d4a934bcdcd6f121c4c1e22b06d73242fdfb1ab310a2564cf7a": { "f10ca14dce06ec46cdd4e21bcf3783e50fb8f8e2c7873cc6b828db0e89c91024": { "jp": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "8c981965acba3a66177110ea9fc5929f4934fe5fdda1c49cb77c7c40199de078" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.160Z", + "updatedAt": "2025-12-05T15:21:44.149Z", "postProcessHash": "eeefb59492e422fa8d8904cc5902021a2492f92e4323b20c949e86c06354c798" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.160Z", + "updatedAt": "2025-12-05T15:21:44.149Z", "postProcessHash": "04494158c3750e308777c1a794c7e04ea499e3ac07bbe9e2621da456eae4b68f" } } @@ -13324,15 +13338,15 @@ }, "fd960e0ad4a4e719414c642095987287a615859dcdfe78dc5e4ade0ad15a3dc3": { "ru": { - "updatedAt": "2025-12-04T20:16:57.163Z", + "updatedAt": "2025-12-05T15:21:44.152Z", "postProcessHash": "de9e5d3a3fc3d0b24dd3e40520dc2e7d28c9d76f67d3ae200c0b1dc9f15c02b3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.163Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "5d9f114fa13568a67c76ce493e2288a6293b889cc80ab511c465c58a2f015c3d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.163Z", + "updatedAt": "2025-12-05T15:21:44.152Z", "postProcessHash": "e7b7d1403151bdcb36e3e579a0be2ccf971ca1fa134a95c51ad9649819301825" } } @@ -13340,15 +13354,15 @@ "48bd4337b75cd02afdef9e5066ef37aa097bb2376a0997cda1862ec2672e0bb6": { "c01428e3868677f56a7361089108618d1aa1b3f64f9d078f8a9dd079aeceadf1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.161Z", + "updatedAt": "2025-12-05T15:21:44.150Z", "postProcessHash": "424addae32033b2a0fe83b680bfe721272d556e9dd2e811fce25110f1de972c2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.161Z", + "updatedAt": "2025-12-05T15:21:44.149Z", "postProcessHash": "4781a0fc0800cf15e2f875aae96e5fa88ba5cd07e147c671b572f4a121dc8f56" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.161Z", + "updatedAt": "2025-12-05T15:21:44.150Z", "postProcessHash": "5969687196357a380481f33399c17910e6f5c05ad89b00e846e219d95f968bc5" } } @@ -13356,15 +13370,15 @@ "4a871b3501c8910734e45bfd046fb170eead507a557e7fc029a9720169d74f60": { "a1bfd48d5bf528dd7d49ff5929721a27fac3e265e20a187bfe5603465299248f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "6be608dbe9f18cb926f5216bb3d4f497f39c60829fb115e70f7dbad5cbb77f8f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "b0dd9e9084f4b6b0613992fc4fc5e8f960b334ef82377921c4170788df8f6913" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "f5df3d50fcb89c63390e2709f128078b0c2b936987573565da483c4e8ca83fa3" } } @@ -13372,15 +13386,15 @@ "50f0ba5685aaf3e9d2d05dffeeaa45f47b7ed622dc20465bd6aa71e7192a1a6f": { "430792450e0e247081db5645bfe27bcdf7c5efb4c46fb798c742aecf01bea55d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "84cdea7d06ae59f48d3278ecb8170fb4d5660eff15718d8d35333970f77de7b7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "520024e8556f853641e4cb6b761c2ae78b487c2c8797415b184d1770e1a9b85e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.146Z", "postProcessHash": "8fd63c717473529c1807bf9203e07784428eedd44d4945fcde1365d53bfac19c" } } @@ -13388,15 +13402,15 @@ "5929e4805377229948887e5ba720274840b70d5c8448deadfee3a33803c24777": { "4923fea66c23915a7ee88662e5a25bc88b6e63399b5f8007edd0a604f6ff29e9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.139Z", "postProcessHash": "e50c2665cf797ac88af43503c41ef01a299088da95fb349a53949fae9f78f227" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "90e670779c0c43af0125de3ce220ca51be039e5eb4e9968e2940de873e46fccd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "4ec0025495c157bca7990bb35e56a4fc68fb47d87800eb829de780c5dd713213" } } @@ -13404,15 +13418,15 @@ "7f4f10424fd5d15211a9b2e7f5376cd61876478ca1e288c42f77a9d27815ed3b": { "49a85cf8c399228a66495a6ff70df4eb90e968fc2a6386b6d0c3a47d1c6934c0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.162Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "946d5177f6df23105f0d6620f085009c727fc143455e76c9bd53e4c50aade380" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.162Z", + "updatedAt": "2025-12-05T15:21:44.150Z", "postProcessHash": "2ac6749d48928b548395c4566f9f4c191ee4996773b64da145c6c648dc0f018c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.161Z", + "updatedAt": "2025-12-05T15:21:44.150Z", "postProcessHash": "392cad1d59dc0bbd82970d14971de1e1d30d9e7c89b92e5894d8814d620c36b9" } } @@ -13420,15 +13434,15 @@ "8fac3eeff35b863ef1c1a857ec5cc7ec6c5e04a3ba1b53c0613d799e0ab40033": { "cff3cef9c9971227c006470a36ab779082e9292add9a0d6480da3c2873a882cb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "31298791f8653adb81dc0964705b1bedfb1ae4edc334fcd4507bed24682494bb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "34cb122e0d0ae04ca4742a7f92ea07a3fd122cfb77a453352fa3c3b70554ad32" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "90ce8c109cf2713bb988907738f5284ba86da3651820afe446251ae5832c8e08" } } @@ -13447,15 +13461,15 @@ }, "ffc6e2c25867e91947ebe1d8e03113d4066168fa2d6eeb0262027942d80e056b": { "ru": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "61a926b7dd43be4d276530370905d9f703533cf6de4af4cdcb498439fea92f7d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.162Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "dd312618c278b8facb6e3e598487f96e066872ac35c65d473082779c6a467667" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "b808fdf94558bcbc89290379565cf468612ed9e0f0952a4d30da78e645ebab9b" } } @@ -13463,15 +13477,15 @@ "d15bbab335414d4d8b8963bf84d8e6840415a3fc839c797f41e13afb347c0e66": { "7eff53190c5a3759339978f7f7f8df28a9281bca9df3218c5f48b98aefdb5e9b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "7f054dedbc40d52563247297566ab09817332197edd3aac18b4f76d230aedd3e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "00165eb2c6bf794bcf465d2a301f830cf43d64e01a8aafa22cf8743813c09b53" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "04b8f497d5c9a626c981a5869ee7321cbac06429949da2371dd53041bc5e8e42" } } @@ -13479,15 +13493,15 @@ "e524f82a69f9ba0c9ca77d93ce6f9a713d13f108480d3945dba1962f5772ee46": { "fbd98a73453eb2fe0d0b40e9e69f2c6435180be06375fe9f19e1bb909573407f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "e34913504c59d9d00453d522dc9e285a4762384fc9e7d314d031a54976d54967" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.138Z", "postProcessHash": "130ce3ac785e32658b9454bfeedd103bc67c5a1dccaf50b870364b9032207920" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.147Z", + "updatedAt": "2025-12-05T15:21:44.139Z", "postProcessHash": "5a3bdd74597e1936ca9090bd1990f11c00219d5aafc669ad88fd0eacc95c6874" } } @@ -13506,15 +13520,15 @@ }, "0d09d70848bc3db09e2e67fdd516909f6d48129455d42ae148932d9d2a956682": { "jp": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "d8103664b1a847fa6bef521ff704815613caad78d790eaba020f8faaf548de79" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "edaffbf281788a8e7d6a60da73af2efc9346abf6b0c1cbaefa9ba064b217b866" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "99444020d4481fbebc7ab3f960ea44866766506c6451ee7fbb2ce234316e2cd7" } } @@ -13522,15 +13536,15 @@ "e9001fe7adae3ee521c4e8d3e207693d2c40ab3153b629428457ad95a126e11f": { "c925c5d3c0431c9ee3487e60721536bea2826b1bda255f0e4e9add7b81f2f4d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.163Z", + "updatedAt": "2025-12-05T15:21:44.151Z", "postProcessHash": "5ab560c10ed18615d03091f13219d0bfc6bb0e86abf14df5ec04a43cb02ea110" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "12e2a94017300a31ed02ec9fe4321a2a463a798411c87490ddeecc764e4138d2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "034d210ad3d995d2d075b26f187bb2e46f1e6fdfc31fa74ad0527e5443f3f197" } } @@ -13538,15 +13552,15 @@ "fda80bc8aec70f334713b34cf3411a9095abb45fdde35b4e250c9120d32dc223": { "9447f95299ab26e2dc058db4d4939aabd60236798a21696a52feac53fd714475": { "jp": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "a205c133f70a480e619102e007cbecb8ae1d0e3942b37177b8e312b49fd4e8b6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "e5e70e609c379e76709d149c68915a89be74d3f8ced7b8fdf61af7bc466f3559" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "8d72e6478a2a73f96e949aa7f819faf503d59ac817c2bbded1fe84355bd6dcbd" } } @@ -13554,15 +13568,15 @@ "14ced74ae89aced82700fb3f104dd8a0694c5c0ea94167d31d43f1c1be2fb09b": { "cb8ca75fddc3df71a3d63cbd9d7f7fe682786749238844ed9083730bc07d7cec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.163Z", "postProcessHash": "a58334ab040db4d023ac0cb8c7655f0cb17e078595a3f63bd97d76aae7d6eba0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.178Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "80dea245dd61d7d35c2d015f80179a6c5b18a280d15b5cf1754d8e61fa94e2f3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "3ef78f1c5de52962b99b1ee78cfcad8a40de97313a0adae3ed96248f9b2d061a" } } @@ -13570,15 +13584,15 @@ "1e26f8437fd2a7483c1f29a2f11a909ff981448ebd08fd7cdce54aaa31e8a511": { "1c028977ab28be717baea644e55afe62584b4eec751926769c92c424bedadeac": { "jp": { - "updatedAt": "2025-12-04T20:16:57.160Z", + "updatedAt": "2025-12-05T15:21:44.149Z", "postProcessHash": "71fa796e023cd3cefc4517779a07090310944aee7fa3e51a1f289aac72c9fd57" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.160Z", + "updatedAt": "2025-12-05T15:21:44.149Z", "postProcessHash": "bb1c53e33258fb6e45d1fb486c27cea40edeebe7f8ec0ebe34892050aadaa666" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "9bd1173ca982a71caa682aa32febca106e12eab5bca7ba96375b098838fd1914" } } @@ -13586,15 +13600,15 @@ "1f59d80250965bf621c38a8cbddf5b2e006f67743e1775da704d9729e6c40a23": { "e842588d4a31eebd61f2d17142402ac96b93d20ff0258eb94f82f5209a3ad2a1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "d31ab2ff3f69894d1ce674ac6760dcfd7ded8a2cac351fc924548b9d919f6170" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.157Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "6647d7d8cec76a0bc190bd245a41465dcf8dafca760914496f04ddf337245732" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "696ff4969a8a9e704bf0b3ade0a0d12e767c6076618f7095cefca065288e9cfe" } } @@ -13602,15 +13616,15 @@ "2024dccfa8cbc20dfede60ca15d6ac2b721789dba97415066cafa133d075bc71": { "ed44ffe66e8c1a1ecf0ca6bc07d18f43272ec161a9e95d0e798e64dfe432b703": { "jp": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "3a50b457e8999517e7792832c9229d589e1d18cb06e42792f3938f5c76d1c8ef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "24d82ad1d826bd77394e21b2da590ab151fe326b6dcc5fe3feb72a3397e80175" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.146Z", "postProcessHash": "cb97308039c57e661051b3ccea1bfba2b9a766b6a7c6ab4d26d64d73d19af3e3" } } @@ -13618,15 +13632,15 @@ "44c5128a3edb936a9926b4b513a202ff12d0f2f99f0c07bcfd8be1cc4723be33": { "ae80526735bffb74b999220357c744c052668c14fe1ac555f4b49132850620f3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.178Z", + "updatedAt": "2025-12-05T15:21:44.165Z", "postProcessHash": "1304dcd9cbc9d8e52f15f4fe9b8a9fac97ce8ebdb4df2843fe80dd3d35763e22" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.148Z", + "updatedAt": "2025-12-05T15:21:44.140Z", "postProcessHash": "7c82ae28142bad07261113e1d0f731c6aafd028178142f7cefb242b6b1fd169b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "b491f395f6680f58fbc4cfbf80279e64e861faa11995fa9801af896c80b37150" } } @@ -13634,15 +13648,15 @@ "46ae531d604a943d4340ae2e6288c87ed68270217d4e05122a7521d428519ef3": { "fe9a9e2137d1cae06dba9ff8e83ecaa3649ff47e77c5892e5e7eb1529b298c64": { "jp": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "7cc3686db7c556b7c3f92eb257a9ae5cb97a4969417d27e4c37da984b8d7729b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "75ea797e8b92c03fd5f31fdaec80e4dcc1853604d614bca0f0a1d88507f9cfeb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "872e7f1d97e987b22516ef07e7e41714a3780d3b18e07be8ce72ee76f9a5cfd3" } } @@ -13650,15 +13664,15 @@ "54e53c16ab3f42ddf8578d9835bb9d7b843c7a55b19f498defcfab1724ec045c": { "35a38f29e12929f2b225b703480bed8e37445662a61cc1d374ec38bd2400c7f2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "8af1bfb8892506b27b9ead1f444896519ec5957ccef8ea3c1324867deb441e39" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "e97a29400eef6e87767305ec21b2fd1ab030c6b460853b3bb084f9f5190da3e5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "576fbafbcfba7f48bf8a1bf0f53b52625dc0844d681cbdabec1208d2351a9083" } } @@ -13666,15 +13680,15 @@ "687b783276b703fe2b34bfa19c6e6eaaf919ae2edb3b092772cfd3710319c962": { "355157027a1047c82f7755ab15b218d98a8e5232865d69edf8a51337a364b541": { "jp": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "961ff026ae9e9ee2d2304c4e6c5365995d44ce20d40b4c19ecc836e9fbbc6502" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "e74cbc09a3bee2d8c936354f918ace0da7063a617e4486dfa3ce3d21c56af465" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "d5da0760b75c5c07e0eb60b743dfbfd78c849283e75b8d309834993a14cf5d58" } } @@ -13693,15 +13707,15 @@ }, "744f86f0af840c394271f9f85293e3266bb9cf9887e2f173377f48cf9eb8cc0c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.164Z", + "updatedAt": "2025-12-05T15:21:44.152Z", "postProcessHash": "a8642bbdb2fa77fe24857c491c932dbd3c5866ca8b53cf85fa99845d085cdaeb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.163Z", + "updatedAt": "2025-12-05T15:21:44.152Z", "postProcessHash": "3d4dd68d7796517134d63a08a1c05b9b319b896a9e06f9558c2264e30bb11396" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.149Z", + "updatedAt": "2025-12-05T15:21:44.140Z", "postProcessHash": "65fa71a0cf535da99bdc6da8a88dc2577a592aac904f7da02efee28946c50fbd" } } @@ -13709,15 +13723,15 @@ "afabce4e754c0f29b7593d81718787eebb8e7a9f5199eff6f15750cdc8d874f1": { "b814da04f0b9e71448b22e3ba39231b2c53371ce962656e59fcc8215b53d94b5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "4820aaf6aec729c4f75ea92b6ac755eb097d73ce8b10634d450a2138e71e3d2b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.158Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "8f898a3c21366104ba1dee25137a2264a680814dc7f724750bfd9a4505c9f1c5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "4b7d3fd65c5f1f3991c3207c6ee4f0436b070910d28b90c643917d0320a2dcfc" } } @@ -13725,15 +13739,15 @@ "b27a2ee952ba7dd3cf6b2ca009a0cd8b86282ef4f43897856e759dafd88540fe": { "32217bcd37f2a7cf5746ec775356d9800b981082b7b912e76343ed0600518f76": { "jp": { - "updatedAt": "2025-12-04T20:16:57.157Z", + "updatedAt": "2025-12-05T15:21:44.147Z", "postProcessHash": "ba458c770417c3b87f8ffd8f8101ae11ed4bd4e23ca7d935733f9f7bd475b0af" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "00e136f806691a817b04bc0d27d7d3671a7cfdfae9b4cc35d0776546c4627c2c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.153Z", + "updatedAt": "2025-12-05T15:21:44.143Z", "postProcessHash": "b80b5ce824e8cfcc974ee8ec4e52b11ba5e30ccac522a1a779b9f1ef322068b9" } } @@ -13741,15 +13755,15 @@ "d1dee74d727375041e64ceadd78df956b10784ab7e1b4ac16460115a7e9d4ef8": { "469305bed4de1b5eb391960ebef6f0f5096cd86b537e42c0f37ee9f35e087a4c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.156Z", + "updatedAt": "2025-12-05T15:21:44.146Z", "postProcessHash": "32603e9abfde539ff3dbb3dcd3ba8ac87b5f5e0f65c1d777cf2172526dcbdcb8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "0873de98dafe03bd79551c6738857a36ad3f0f75c55ce7e3d9b893418326e4d9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "62c9b82d42ffebf9b7cec9adc60515e2493f2828c71b562f4cdf51b4ae2897c9" } } @@ -13757,15 +13771,15 @@ "d536aa9054b9ba72e39103f4f8845be09447ae23a9e70d3baf478d3d2c2b8737": { "74f18e7520467c6186fd7fa39a49176648617574146477b17ce7062d7698f2df": { "jp": { - "updatedAt": "2025-12-04T20:16:57.160Z", + "updatedAt": "2025-12-05T15:21:44.149Z", "postProcessHash": "c89fa664c40433fab3d8d451f19b3b07c7aeeeec723ca2ab0b45d6fa51fade20" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.161Z", + "updatedAt": "2025-12-05T15:21:44.150Z", "postProcessHash": "18f222f4b50764f867713c6520f2d7158e8028d745bc3bb335c06de12921df61" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.159Z", + "updatedAt": "2025-12-05T15:21:44.148Z", "postProcessHash": "c44be70621f1eb90c168ec209765b0a77655679de1670fa62e56fe1a4d96f839" } } @@ -13773,31 +13787,31 @@ "e56710647bd4bc05384aa8d37b2b94c4c5fe719ebbc36c598369a813b3fab06f": { "7fdb5ba5a1e64258c7ea2522a25a1d7238e73b82d6eb92fdda33bd598193863c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.157Z", - "postProcessHash": "920a572810dd072379d529b51f6b657b73a6785336d0d711eefa1a28b0836d9d" + "updatedAt": "2025-12-05T15:21:44.146Z", + "postProcessHash": "2ca4bc9d49e53fab9966be4230ac1d97881286d0621163fb6700b44638a4ba52" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.157Z", - "postProcessHash": "0803a17052e5e3b44dedeebdd10bf6959e2c332b335b0735a58fa21cc002b168" + "updatedAt": "2025-12-05T15:21:44.146Z", + "postProcessHash": "2fa23cc142de6ba74e03f837c65f55ac818cf2491f4d262eaee3faf6e3957d0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.156Z", - "postProcessHash": "7b871a227fa56f11e560136c070b360873555c7c2f8d1e1f8f0c7b6766395f3a" + "updatedAt": "2025-12-05T15:21:44.146Z", + "postProcessHash": "1db129c163aec909cc2c8bfe36cf9bdd0513d4e00bbb3162c1b6dd8734eb61e9" } } }, "e631f7491be262a58a274692876ad3b89d0729e8d0294ce9b3dfa4ed45f95788": { "f3609e7b117bdfa85ee3d950a8fd8f7afee96311aea43d1a833a253a135d50ab": { "jp": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "08d3b9a5def68da4a98b354aec6686e0f704ae8f78389449af2c76072f10eabf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "a5923c42720b44df7af0c4b80eb685938829f695f1fcf271fd7fe49402b5c93a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "1fb8911e1cf29f5a85d088d6fdb72604a4f2e8517fb6b79edc94ce6676b6e04f" } } @@ -13805,15 +13819,15 @@ "ec626ca92c333df76f0e8018ae7bd3a25ac79ecb449e8db31702fb29bb04506d": { "ec424602c359c5773d3bb1eb5b167bdedb80fb98f907e5848b487a5b40325f67": { "jp": { - "updatedAt": "2025-12-04T20:16:57.154Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "831479ae3f3f891aa475766ec35de4ceacc08443bf2d935faac9efbac2ce75dd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.144Z", "postProcessHash": "155c19e936c48aba8fae4d860dcf7a1bad71f64537babab122141ed61d540a5c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.155Z", + "updatedAt": "2025-12-05T15:21:44.145Z", "postProcessHash": "c98d7cb5941a8791f12122cd88fcdaac0001790ea6f3691764f9d3992b30aeb4" } } @@ -13821,15 +13835,15 @@ "fc2a90cf202e8e1844cfa26c61201f10a6c234df6585fc1c8aff86d125238563": { "5680229b7edd18b624f3a4822177aadd2e3930de72a0edd50a0d2924b785a146": { "jp": { - "updatedAt": "2025-12-04T20:16:57.178Z", + "updatedAt": "2025-12-05T15:21:44.164Z", "postProcessHash": "b32f50acc7646ea86a88d446de828f1371378e31c7984d284df9e9744247ebf1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.177Z", + "updatedAt": "2025-12-05T15:21:44.163Z", "postProcessHash": "a6045143f1a80019140158603205e46c72216ab86cc0cac5bd443114f705fb55" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.178Z", + "updatedAt": "2025-12-05T15:21:44.164Z", "postProcessHash": "ff828dac78825c976627d6f0c204d33c273ed6b0d4a26b54f8e1fcd3152fa2d0" } } @@ -13837,15 +13851,15 @@ "1646d3380fb5c92ec41482a9d98b525c37462130d6b01f32e1855b0e5f91c39e": { "ee6d9f1af26926d6377c040c2405ae576469664c532845e1d506079f9a027314": { "jp": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "3cd9564f93929f9f9e53661082227b2f8dd7e1a308dc761bfef3aa374bf22073" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.173Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "db3da653aceb91fbd5cd9fe15efbabad6beec429685b767829e0df442057eced" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "f2739b13c7d2c01e9fb03504146ed30901b2d231814c69973dd7fc8823356f5a" } } @@ -13853,15 +13867,15 @@ "1ca8dfc5de116b6a2aecfd00677ce016075dee9e46cc6f57c85776d3ea9b3bd5": { "e84e0b80c498c3151e15f60e104f2cb38c6e40319081435e228dbfd13acf010e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "524f3b14f5f1b1077ee5f36835ce25929439b048d582d99f653541098d0df3c6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "d40ee2981bf311256964d4caf6f73800cd1f1efb91d57bf6a3d1778e04cc9e6b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.163Z", "postProcessHash": "eeb9f2b7c2feaeb28ad8ca95f200bb4486dbfeb66fef4499cdf13e5fb123d2b0" } } @@ -13869,15 +13883,15 @@ "1d1e36aa27a61854f94b1f60418f1a1d666d53319de3e83255d9388fcdfb4069": { "a0e30e85a93f908ea864b663f52f1dfce2a0d6a87372b01c7bf971316d114876": { "jp": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "04047bd2159c019e594318463a01bb92061f631eee6579cf8bcea05ee7b848dc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "3f1979f3bafcce587d9094d5710776a858fb415674ad88b9f42f17314e350a97" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "4081be5dd96b98dc3cc08002dc95f7b4a36bb50ea10590545833125c10e36b18" } } @@ -13907,15 +13921,15 @@ }, "e73593ac8091e2275dd3b89189a683806e63bec8a294b91cf59c5af40e70da83": { "zh": { - "updatedAt": "2025-12-04T20:16:57.165Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "bc93c3ce1bcf6f45ac85f74cdf6081de6ff0d264250905ab94a541da2fc8c35c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.165Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "a2217b3e8c26f8d077cfd933e95412ae71c554425c9c2be1e20714634f5a01a5" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.177Z", "postProcessHash": "c12199a2942607a0d555bcc95ccdd42efc6339bc7ff4a37f1682686143b74ec9" } } @@ -13923,15 +13937,15 @@ "4d9f585a978f327ccfb66e8db78fa87ec8754d231c098b1a8929e4f912be5651": { "f0713cc147455f15a45af300160f8c01445b53f171e027819d998a3df1dc3b17": { "jp": { - "updatedAt": "2025-12-04T20:16:57.177Z", + "updatedAt": "2025-12-05T15:21:44.163Z", "postProcessHash": "6d79e66e85d907da1ba44e4b6d167289b923943a7dd33794d94db1b2fdb9e6a2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "0b2baa0a619687d87e6bcfdc21317c76b7ace172ae5b43d73031778b009da43b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "2ae59659caea63f6a2277d208d31b2dfaa0d2df65cf89d96a6eed412663d74d2" } } @@ -13939,15 +13953,15 @@ "509c73a63f9d009e86d97956ae4e1701003ed2be70dd32b5c56c66bd65c22609": { "c01d58d811ef80a75a56846d05c7b54259075a78eb6a2deb665f4405f861a7e2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.173Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "75fb4840e26cb5d7199604998c3376b1b7f8106ceb766d41e3def0db881e2ef8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "827b865c8161983df7961751cb70afc5f376a6323a433ab5c2ce9686ad6003f3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "bb9d2c48895c3db64be46fa1ad1ee71c45c18239a259c53bfe56a95ef416802c" } } @@ -13955,15 +13969,15 @@ "5bd267d7d3d49be2e95b491604023a269bf78bee49b4a83eefa9352690913107": { "9e71d3c2fa185cdf2d0231b06c410ed213fa00b972cdbfefe21a9aa8916bf03a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "6fafd8b9e34a1659f6aadefd22e5d9a5a80072941adf1dde1e3c3f2210b991fe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "a752877d3db7929f07ffbe44cf04ec6d45c318be512c59aa2f49a0d8d1833385" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "2f4c65d86ec65bce7c404c804fc4dc59f99af08332d7413b7893ed9a95a227d2" } } @@ -13971,15 +13985,15 @@ "66dafb9b646deaa517a7b992eec446570c152c02802db14e18047fc0fba7a0b1": { "f246fb415a6d823d2e1229aaf83e9eb73611213283605b91a0a23a1dbad24f50": { "jp": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "452d13e6a1c161a9a66de42797062a81da272025534b7efc8642eedeb11f0e6f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "b5bec1ed0f0616ccd4acfe250cac7b1f176c45be28851a4f30dbb65be7fff3d6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "22c2ff77d64151ec71da4791a540260a62ec1647236dbab90c1be6a68fa3821d" } } @@ -13987,15 +14001,15 @@ "7d4c81a663e077a5e75150c0e14d27c4ec51b540adb7aed379113d299f3c76bf": { "9a1b6a07af2168ede1ef0940be49f9f7462ec53241267251f36458e33a1bd688": { "zh": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "24398af82ea9b903083a0e791016e7ec0d013924ae50d4cd453e43f835d6d6c0" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "8e0e7df65dca44d5e506fc47d287c7ba57cf5f00be92512b339dedff94a56f4a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "6e272cadf693a029e8adc6d1df57f46a6aeaadb59a76f139d97ddee8525bea02" } } @@ -14003,15 +14017,15 @@ "8b2242e50cc879742f4d4efca957625a1106cb09f45a18de469646abc82467e7": { "343ceb09449e64360e7e7fca397cfc927ac8e348304b9893b3946e0ca65d8fae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "cb84e2a3a41791a9a3578bf3ceac68629f3a071bbf50af453165978efa31d18f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "f2c27e0567fc4cd7c88b7968e0560af22f673fb655410cfc414e184a1c4102e1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.176Z", + "updatedAt": "2025-12-05T15:21:44.163Z", "postProcessHash": "5d731d40b0bc2834df96321a79cc69df8e78c9e6069cd79b31e86204af640ede" } } @@ -14019,15 +14033,15 @@ "c02bec6d7a15ddb4727d64f0c82f001b4a6994e6095794f3b35c713c1c69cd75": { "f05e5879650490f810241a7e1f46402021938daaf4688d3368c183eeb6dd5b65": { "jp": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "8079c98ff4bb6b652aeacf13588c202ccea659d061366eb1efffed43720f9c9f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "cec43996a94208098088ffd2bb27ce912a7e75540eb7dd4971835693b53a4e48" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "4053e0868abc9232ea17abc85ff8c6257330a80055f68059e39df250fc751709" } } @@ -14035,15 +14049,15 @@ "c35a4c218452080886d36470ffc05c5a0554e095f00432e0d7735900c7ad9435": { "9e5d4bd1e5379d30156d61671b947abb64b0c0e6ce551d838d6da2c7907d2ff3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "54a2f92406a9b4374c14312b2276a533cd4f5d344fdb02f14da4f5d9bd6b2241" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "bdcf0dccc560a3518d729d39784f91e5a6e035cb7fd4c4dd06e73c7d3b35fb33" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "2d040557545d069d5be6e14e76f9bce8e556222d423fd0700896e6e46530a448" } } @@ -14051,15 +14065,15 @@ "c97fb19d4fbdf784a9e8916b6965cc8a3ea8fe90f09cfb7c399b3b59efc788a6": { "7b99574846f0eeee45a44964ff5ba57e7c06ca117dc6786a3b1b13201c58cc4b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.174Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "82154cf8758a7f6773e716b69705f77fb7b583e7840ce91a6158b6b478ca98e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.177Z", + "updatedAt": "2025-12-05T15:21:44.164Z", "postProcessHash": "cf95ff5663136844d227530b1831d5b50e6eb779ae34506486cd99569e0f5ba4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.162Z", "postProcessHash": "a572a478c5d5764d5e45f002e3bb77821ecac441f393adf01b5e8447f4cd6047" } } @@ -14067,15 +14081,15 @@ "cfcb90141d0b37458f1c2f25a8e506c7c2ceb4cb4e4c27f996e474f6e8c5b159": { "2e2c5497230ef2998811f833ae91e6403540c85762a127d81135370dfbdb4e46": { "jp": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "6ee4cfadc5db84433f762bdbf9818c5c0922f5a33143499afe0c5dcc90b90f90" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.173Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "282c689ca4cba17b66b30e5373fd7138a849a296d6d99e60f25dfe10a20ea01d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "89961fc8aeb413c5f98b4ea1167c31ac285c0ea313bd6f2249be39d4e0eb5f13" } } @@ -14083,15 +14097,15 @@ "d5c4d2aff5bcd49a39c5a8969a66d9058ea8a6641de98e1f49a707b2a5eb6a06": { "c0bd7005e30dbceab4454c02004199f159d34c9dec509a5c13f2a23d8b720cff": { "jp": { - "updatedAt": "2025-12-04T20:16:57.173Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "0d0e0854cf1ee375d3c17058e36c1b2cd01431c869d02bd74344d95893aa5e1d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.173Z", + "updatedAt": "2025-12-05T15:21:44.160Z", "postProcessHash": "85125b17604871fd054ca55d8b0e9064b0d97026abafa9b21f46b7e6a93768b7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "0c5e301c8b0d9abba8127519bd9824ae13297a9b244bff4cc6cbfb573ab82c99" } } @@ -14099,15 +14113,15 @@ "eac3b18e7887fa005afb72b037867082f68f247bb61d91f3260e28d28cb1e85a": { "d2aa320a8841951470c1da7b5a35b1b69bf507d11d9b795481a4e587ec4b7bdd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.177Z", + "updatedAt": "2025-12-05T15:21:44.163Z", "postProcessHash": "4713abe9114293b350a795658f94cfb2ae89e54a6f761bfda6d200054045e84c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "f9ab1d9381b23f6dcafdfd9e0330d7132e7849ceff808f6bcc1fd1e9ac808a75" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.175Z", + "updatedAt": "2025-12-05T15:21:44.161Z", "postProcessHash": "f322b93a81389be0d11970f72917a1d2ac098e53e427cef70c7237dce19064d3" } } @@ -14115,15 +14129,15 @@ "211a9e255fdac9865968252978823dbe623bf314b09a28779424fb52243ba37e": { "267373ee71eb85826ed3e41dfc0938bb71fbd6c83484df63fbdce933b1a28d1e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.191Z", + "updatedAt": "2025-12-05T15:21:44.177Z", "postProcessHash": "805fd19ff4c602f2850082a3788e91137da590b0a5506e624d1191c2a3055797" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.191Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "0aac739559f8d67c117483f607fb237d769afcff8df1a6622eec36dcdf51e8c4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.177Z", "postProcessHash": "e5400f54f86d01733e333f888a8adab5ffb2851b5f7d61481635c1d2e3318450" } } @@ -14131,15 +14145,15 @@ "4ba1eac8610621c18306898ccbcb9d4eaf5521b4b230d99cc774ec22219c9a28": { "1aafbee1019940fc3e073990ae3817e08af6f7e2ec670ece7d26a194827351bb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "6d3449efac91033dd32fc88ed893dde985acb51de8799a9f3738fd9ee65fae8d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "7a33e7c9c658f1291a1e0fbf52e67bcba5373a24f7cedf800a5106e9aa8649dd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "b6cbbe9f23e9499168c94fe6ab435e7bbe3835b0d4ae9ffa92a2f227c94c7972" } } @@ -14158,15 +14172,15 @@ }, "6b408329e73e771ef16b20b1ea0ca91a113a919ef9db09031d4181b038bc38ec": { "ru": { - "updatedAt": "2025-12-04T20:16:57.164Z", + "updatedAt": "2025-12-05T15:21:44.152Z", "postProcessHash": "e7d05f74b3724d6e7be3d48780f29d73d4d3d4323736422d6d4efaab99ec505e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.164Z", + "updatedAt": "2025-12-05T15:21:44.152Z", "postProcessHash": "842927dfad9484fbd66753af6a2d8719a4f415ba0bb9d12552872a2cbf590bce" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.164Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "252e785a0b47023f5874f3131a853a2cc2353f8cc20bad895e33b5a70ab50c84" } } @@ -14174,15 +14188,15 @@ "67ea1760ac764890c103f9795d76f618a583b0bbbe0d32ad38a77c020d119d40": { "9a32d6666fc830213628b9c378f0039bc1280491f729f8bb75dd81bd764f13e5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.177Z", "postProcessHash": "35a28ff1a0c297409ece9c1c4995682f8ba8fe7dab5aa29cf0b35ab7c012d555" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.191Z", + "updatedAt": "2025-12-05T15:21:44.177Z", "postProcessHash": "cb33ad53f402cf52d03d7dcecd869ce79f4b06152ff6c69cfd77de18bd5354a7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.191Z", + "updatedAt": "2025-12-05T15:21:44.177Z", "postProcessHash": "d0e05b542760a8088a91dff0db3e43252f7630f29672115ddcc53e05d8b2b0fc" } } @@ -14190,15 +14204,15 @@ "71b7871a9e60b8462bb9bc1ee2ff376b1641403aad826100b88e087426e5841f": { "3ad40142a5980106f0b667308b9b61cd075b9a565aa267c085988df32d9f9d20": { "jp": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "8652d24892b17fb4ae0ddb7c7c1b75120f52a6e06752088bf1be94b92e92a420" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "1400c0e00fc4c7f99a37a9e7f46b79c2f823e84c98a3bcd69dcdfd43c95bd8e0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.189Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "7d78a2bb50ab6d832348a7f4c107f177ed483e14a6b88a4c9dc0140c6f4e6cdf" } } @@ -14206,15 +14220,15 @@ "a9dd86f5f7da605aa9337f714a106fa513a631fcf9a168aa7b4e9a3b7ccaa531": { "ea6fc6dcc9635bc1877901795f75089be17712230ae183401a7e6eeaa9cfcf78": { "jp": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "113fa3369921d52a6237371b71a586e3612bf94e1f430822f6237332145dfc34" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.176Z", "postProcessHash": "3643c461c3e93e4fcb57e6e774a9db110432c960867d5386baf8b8aeb7761853" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.190Z", + "updatedAt": "2025-12-05T15:21:44.175Z", "postProcessHash": "c0b514a291ed65edec996da0ae5c2147f87747135722c243d37c6b252eeed478" } } @@ -14222,15 +14236,15 @@ "b4b5cab881a02e5c4333f93e3149c6242284e0666d745952f3ccdc86593f7b52": { "112d13bcf3046cf70aa9ad7b11bd473fb40eb530504362a77d2a53dd8f9adac1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.169Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "385f087637b7541c5c174ec209ccdd0bcb0c2de109d6c6ec9b15d3efda97d15b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "c55eb2afa6c1d084d1ee2725110c8958902567088d2a127becfb2e46b357cdb6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.171Z", + "updatedAt": "2025-12-05T15:21:44.158Z", "postProcessHash": "8820ca4e726b05a378d4d79899c770c42d1beea478570fdb19d2b594c838e555" } } @@ -14238,15 +14252,15 @@ "e21164b6c8802133bb1a3d2aafc3fd517ab74e6f8d293b7d293ae968782a8bd6": { "04d3d33fa3cda8a0df74a6fb806ee0f2d01d7cd25cf9f21c9e07d1830f9a9a6c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.165Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "c03769baed1aaaaa4e6d2aea30b44000231e3104d58a9984918ebef515c94ede" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.164Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "ba9b3ff73fd4a3705c7b56351246beba00a0c0f96425631864a2e1ce5a145a0c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.165Z", + "updatedAt": "2025-12-05T15:21:44.153Z", "postProcessHash": "8a96d883bc49b687bc4272814c04e60d7f155e7571442f81826f5421206236bf" } } @@ -14254,15 +14268,15 @@ "f9aa45e8fc85d0cb2d4c76b0e287f8743a40e6d92257f98ad0691dbde7bc3a9e": { "4866f2bf5a753196ff65a8b94a288fa39116ec9e4deeb7ae77c0598af8d582d9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "8c6422e1872077a7a927e0da1f8eac09e648dc006f0da3d34a6f572879b9fe78" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.172Z", + "updatedAt": "2025-12-05T15:21:44.159Z", "postProcessHash": "91505f8ea4479a5ab7792f93a4d113b64c60ef80a974a2eea10734c68efc62d5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.170Z", + "updatedAt": "2025-12-05T15:21:44.157Z", "postProcessHash": "7a748a661b3084e76eeab5cbcc9eb176235c66d5a4fcb787d4a98564c1088c32" } } @@ -14270,15 +14284,15 @@ "3e29eb5aca75381e4ec8ade4e6a0cf7d26b53d4a25cb26660ec2c44647941a73": { "c0bfc76e21aac5582f52b976b44aa4baf44b8f76caa3d562ec73e6e4ef161a92": { "jp": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "151bcadd4c923b9862325f9755823cdf859bc84eb95ea470313fb9f022da7c1e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "5d58c65f13a89b24ac4448806db4d00cb7ae43a013c6f47955c0a00afe3de57f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "79ed65cf20bd3d7d227ed95257b609076bb608941f5d29beae688b15945e751f" } } @@ -14286,15 +14300,15 @@ "4b875d4cf08501af46c9a0dc4af0b755918205b50ba44a03d48aab3f7f49ac54": { "658a06aa55917c46e77861ee9b9b9643be0049c255c7052d4f6ae6166e655b01": { "jp": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "69d32dddd32fad80576c63b57429ecca3a122b6c8009136c668dd9946aa770b6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "fc47ddd4cda9e7fc1901d0f088e327914edcea2e41fa383a95bd3611a9416eb3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "b824f32e760efa617a347035036762a9b00955e347aa387960eb67d1484fcad7" } } @@ -14302,15 +14316,15 @@ "50ddd976e3ab8042db7b5db277b40561a4de66f66d7343d572a7ddd20ad31bd7": { "0aacc185d8105f7e3ea27585dc11ab225da3bb6c1db23c8daa11af166d8e972a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "09ae37a0cdc40e470fabff8c64efdbfe23b955cb23f9be779d27345ff60fd8bc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "35912aaba657807fa31595e1cb9ec89e18e127090efd45a5f43655032ae45408" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "19dc8b8e7de78c7a302c55093682c1d34826dc25467a85442ed96d91ffbc13f1" } } @@ -14318,15 +14332,15 @@ "54e7a0d28f060089af44ed7367d75f254a6d1b252f6ea6274e58dbe249470b30": { "4ced947fe881a2f40e14c2be1395d6c2cc3e15fe93e42e71df52ec929c2dcea4": { "ru": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.193Z", "postProcessHash": "a0ab3ff0502f3a558e579e695e3243f4f3c27cee9e8d0d061f8226ef8751b75e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "1393bd754272ca3eb031a5db62ed1a53aef9b0d691bb60a4c2c567b7682fc617" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "d712c11950de830a233a80929ae7ffbbd8376af425cf5ef4c38d66da59e7733a" } } @@ -14334,15 +14348,15 @@ "7a97c0a8a1d7a2b7124253b37f3cdff0f274d654965381e7ee3aeb4db3323631": { "ed2621c01542cd6c73825e5fe7639beff16cce375577d0d908b8b02c4bc1371b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "2d4701dc2da306ad1a38d1c666f0339affcb3cd3c24b15a4af221090d505091a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "06cf81681c478bed652df00bedcc52ee5084a7a5561fef99e7a7a73e5ed37f97" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "7e4922313e57d9e6a00ec88700dbb3c7dd9d47a1a75d3573ef7f4516340216eb" } } @@ -14350,15 +14364,15 @@ "893f6ba96a900463e4a20bfebef45d262bc3a3e1452bbe2f889f333b52e5fee5": { "b3a0a7a9c4f2e4c526bb71ba0bc5e6dac553aa232350b1910ad7fbf035734c06": { "jp": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "d3a1fdf2682c6c39fda93dab6220525c675e6ad3fcd8a788873cd77cff17d94d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.193Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "951b342d1ccb8881976bf1e2f9b5fe8d97e575852ff31ea4331b0663f995d63f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.195Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "934c6204deb40439d15110cfa2ed5240d945d9d2ec72c5a6b2d74f63bcbe0eab" } } @@ -14366,15 +14380,15 @@ "95a73804027437518f6cb49fd17638db0b1d6b9361ef329c1d59b49231f45112": { "e13f5fe9c753ab5e1cd5c3b9ef8db4c7e56caa299572d07d0368d8af887e99a3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "9c2fe3ffa79ba72b45bd928c07adacaf95bae456c7d8868d03bc2be9f2d5c66f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "7b037e53d83390fae8ec37bb8d0ae2a79543ee2e3d5b68302fcd4afa77f32847" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.207Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "c9bb4d56ed8417b134cfa3834f4b13600f4f0d7c32be5bf23abc887654212945" } } @@ -14382,15 +14396,15 @@ "b624c3e0df3b6286b5d61538607b9030a6cd27129246f0485ab94c5f1b0efd7c": { "b4c584ccbf84daf8b7fe6aae9e1c393e8220224a9cecec6d5d2024e0cb7aa654": { "jp": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "76be40baa6f7ef3f4f007909fe6a3cdc98fae142dfb129e3869f21a675dc67d1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.195Z", "postProcessHash": "8a5ee8f30cfcfe49679fe5442caa8eaf1c01015da6c413d9b51b5f20aed952ea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "f08af1c70cd966738ff927a3b82a076aed152b1805ea25755bb9ea2f61c43983" } } @@ -14398,15 +14412,15 @@ "e210bad99f1e8a957566f3f34d0853651d4ef532d83ae50fc1fb032d24e2dd28": { "0b6791886d00299fd2b8b71cf58d276a85916e6880c408cdbef78333d00f1d3a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "19cff1c4cda721d059771ccd6ae2ff3b21a89225bf13aec95f44366453497d01" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.208Z", + "updatedAt": "2025-12-05T15:21:44.194Z", "postProcessHash": "3453a35b1230df47ec563c21dc722846556e8fb25aa1a063d2471ab6057e83b9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "d587718d4bec41d6390e88a1fe9cd6d9632c97ae6b53ed345d41b131645337a4" } } @@ -14414,15 +14428,15 @@ "e77458d405603be885e941ab39a2c03ea7c893b38a1ed1b1c4a5beb9a703c04f": { "f78ef201b8464bb62128fd17fb1bcf8d3f42f167e5b4f4c8547866c5ecfbc7a9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "c38f352c88fab87be0d6d50ed903032019effeb9700132af50c672ca1232f866" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.206Z", + "updatedAt": "2025-12-05T15:21:44.192Z", "postProcessHash": "9e35d3b55c465a9923e1594398dcef60f24e46cda8e7da109ae6b1cc9eb55e31" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.205Z", + "updatedAt": "2025-12-05T15:21:44.191Z", "postProcessHash": "31e05df97c316b12e89a4fd2a480db22e36d391d3d214675bf1149b2a5aa06d4" } } @@ -14430,15 +14444,15 @@ "f38d701b9050913191927978c4e261dec48019c2bef4c6a3139c4059c71afaf8": { "0e1ad7c4e88f314e2b810b6f27ec43ba78bfe09eca3eec7d023374756f07bc64": { "jp": { - "updatedAt": "2025-12-04T20:16:57.196Z", + "updatedAt": "2025-12-05T15:21:44.181Z", "postProcessHash": "d49e24ef806f1cecfed3b6a1177aae70fdfb8686ae43af0ebf2b5f7396d7ffdf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.194Z", + "updatedAt": "2025-12-05T15:21:44.179Z", "postProcessHash": "f170fc99d41fe81fb7d14f4b2e50e9d6c4f31d15990c9183639c2a3c0d6f9d30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.216Z", + "updatedAt": "2025-12-05T15:21:44.203Z", "postProcessHash": "43102884836f2bd297cbf28fde00ea42c8092398a1d4321d49262d1f8a460479" } } @@ -14446,15 +14460,15 @@ "06b6f9b31956eb6e3cebe7421e22abac9ad0de32434585b3bedb572ca22fe779": { "ac6f44e72647bc384df3ba5b105e8bc37e9ce25a9c1c104570232ed738108026": { "jp": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "4ded16e84324c21d80cccb0f32e2b59dfb524128ed95374b8afd9b82be3703d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "8ba7d5b07a4398585ffe22c12885f9971a129242ee810d2aea1b550b9ed60302" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "8b9694119bc72b519f92c1cbe5287c592044ef0c31a3c6fe1c7892b736965230" } } @@ -14462,15 +14476,15 @@ "088f126360fc7b556a09516cc41a4880d4599464d2cb1ff9f6ea02417c6df429": { "04f510d66c9b376ce9989e4858fb9d1204bb45b666002f527435e252cc2dc4f8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.293Z", + "updatedAt": "2025-12-05T15:21:44.286Z", "postProcessHash": "26d429dced3e924be0288b69b409282a280615f75a8cf50793820c7daa3cc52d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.292Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "747b02623a400edbd379f0b7729a6fbe2717367aeca268a4df43f9264240c091" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "f60c967a30c0c2541cf3df47e0a4a7cd435e15368c3f841cb3c170584e3d8d23" } } @@ -14478,15 +14492,15 @@ "13195f1c973faf9aadf39f45b6a4df596efad0f6e4df019051e13dc77eb9fdfa": { "948846a8743f4a90ac77c6ba53e93f5386df8d5310a4b8182265798313dc6dc9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "0d3cdbc8ac0e21e20fffba486861b7f728cca6daf83deb19df843409a743b595" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "16b8959c03562365a1cbb3d2e917410e0bf6a6b35a08deda432c22e0cf44405d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "f1c9902152d0303586d4dd07c2a44651e1cebf0c014ab691c4976ad1526dcc39" } } @@ -14494,15 +14508,15 @@ "2505693dc142fd4f445b3882dc548fa0cc38adca662a63dbfdb437b0f67776ba": { "f86b0dd8e53eca99c2eba408e02d7d92a906e77aee88846c9e24a2d79f1d998e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.267Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "1614c93a944a1b328134e1a37678a167d2ee301a6c1adc398ed63391518a4d0c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "0af0e47384c13918e148385055ea9d888c45e5b1ecf275e68288dd9112a243f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "7bcb9cf41f28d7fd33a8c0824cf439fdff3c128b07fd614d554aa8b795cbf553" } } @@ -14510,15 +14524,15 @@ "266e0dc9c395c310374563d981fa2685a69b11a4eb800352e56423b5bd7e2901": { "d344c46f769e848e76522e3e0e64f31e4c4cd999a3de3ea3cc10400f0b2826ae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "424c76a162d1f5caf1035de5528fac8fdf26545a0217250ab5b46f9d9e84e986" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "7577f7638ec3ed790705f38fec1295a344323dff3261850bf81be20e7a721196" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "2bac3dcc2e99832a1c653bf9fa7f9325f8b3672bf2f8307aef79be22faf7782b" } } @@ -14526,15 +14540,15 @@ "3c3cdb595236de7ad8f9d05838ec2b8bf3f90caa6bca9eb1dbb703fe9b2c5f67": { "22c4567427f06c4ff596058d0963e1977f619d426a1cb0b04f22ad1721307091": { "jp": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "bf81837d3d819fda276ea80241f91504fbc6cfbe4c75b8dd6ecc52949ee7f35b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "f1948e89bb71bbd33a13b1ae57fc73d67c7ef63f3e92b4875cdd66c820db4890" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "ab03c6921615fe1b548e0c8c69c84cda066a90a6c5be52d6ed8263351870c3e2" } } @@ -14542,15 +14556,15 @@ "3cb2ac954c25f39475156759f2f4f8c8714328c659aaba596322bf83f3e3ecf3": { "da8c2bbfc6c34aa9551b3e0a532d71ec831fc09659ffc38734155072f907743e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "7eb6445aad7bcd8741a2821a620cec91b44f09467c7e75cb58b50554e6ab4fae" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.265Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "6b0ec5ab30c8e3aaa3382eb694064c52e4375af00d987965a5f15354fc18eb64" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "e62d98a0f9241d7b429e28d56a1cabab265cd42680e9d149f5bb8358ff4aadcb" } } @@ -14558,15 +14572,15 @@ "3f5009534c38cb29edcc48a3b2c5b50aa0363797569ad9ed3c962e075be3d711": { "e52f05211d11daf47cbab45322de5fb579805427116030493d255d74a6de33e6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "da6647a3338357109a9e71c98a281c675ff0ccc6eac2400de7410101fda587f2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "c6b0508aba9c34b85142a2a03705452eef4fbd8b77b5dc6f3316a800b20586a3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "23e348e3f6e0a858bb1bb6bd286eb5b8c39786f2e30bb4f2259975d423d756a0" } } @@ -14574,15 +14588,15 @@ "51d439a5ad94546b36a253aeeb85868911bfe6475f4fefb30756a75f43e01dc0": { "c9a05803f13e75801b4f09b8c52974299028da9cd5533d505c572edbdd11b9f8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "05f56f30ef04b9535382e0b2a5b47624a9cf4179c72d894c0ca77a7416d2f4b0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "01acbb5125a2932ea1b56279f1fa56a840a63098eefa1dd3d061ba0c192bcdc7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "7207b8f6046f7d321c5ed5d109961b0da1dfedb7c130964859c836335974b2f5" } } @@ -14590,15 +14604,15 @@ "5227584ef900ca7684b844bf9b013a21d6faf12f8833191ac40e941a5fa9878f": { "5405382560ae38c848c605acfb1a4ec134912ef6bcad95aab5381530689e735b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "db291d623c82bf0be6cabd34ec09c0e7287f1b3dcdf7417fb271d06b7398e946" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.272Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "4ba80d3d0d5fef5310f4c71708edc047767302d2b2accdf9d1f6e72b37eb321c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "c630912128d52047b6387f1ad77d02f71b1201662810316e0c4453c1b197f54c" } } @@ -14606,15 +14620,15 @@ "a5397922ad119e6b298a6b4b378a68f864ea43c8323107a35954165809de0589": { "488ca0a5b4cba0af7cf4ca440e3733d6860db7e0e1beb8403ae74e4cfd8e7753": { "jp": { - "updatedAt": "2025-12-04T20:16:57.265Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "ee7fe5118f1f915918e457aaf37b8151034d094a2ec845c538cf1f02de610b6b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "259e3fcbad2e423f4f95e2598e8197a9d37fe98388ac2f5f8a008c211559c140" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "5c96f03aa28e39c27f05050e37d3b1dcd8f7a56d84edec0469cd482116ff06de" } } @@ -14622,15 +14636,15 @@ "c6e56f828d1b34579ba790f93abaa05b29fb89f9585497258413971007a3a246": { "c2f203731c8694cfaf84b37109a789c0a0167657339f75db8fc7b685f948d2ea": { "jp": { - "updatedAt": "2025-12-04T20:16:57.272Z", + "updatedAt": "2025-12-05T15:21:44.269Z", "postProcessHash": "24f283c9cd476c2a48c3aee5b8417cadcbb1fdc05f9b0e152d803f325c11d748" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.268Z", + "updatedAt": "2025-12-05T15:21:44.266Z", "postProcessHash": "52a21bdc476e9374ec2db4171ebb16faaa59f8b78149d4f6fb62ffe8e0faa3f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "29eff4c8022671e8d9b8a0bcfce281233a22ad86b770dea408ce5c5a68cb0995" } } @@ -14638,15 +14652,15 @@ "c8b0b34a39a4f363d421259bdd17b9dd8d0d01f815eda9607f0d9ef245895275": { "1126bfe846bb5fcdc4b0c7c2bfd10807cc64d6e12d190d2c824329258baf5efb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.270Z", + "updatedAt": "2025-12-05T15:21:44.267Z", "postProcessHash": "09e9eddb32ef60c33303976cec19f0d6b0e1c8b45cf92d5f6d24a2975ebd17a3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "3bd8eaf7ffbf5db593349877d750fc1a8bc99bdd6792c9fd762eff7f4adc3503" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.271Z", + "updatedAt": "2025-12-05T15:21:44.268Z", "postProcessHash": "3ae5a119484a39bfb8ed0b66b973c99466b5b6e788b6f5feb698307d73356728" } } @@ -14654,15 +14668,15 @@ "ce10e9c3dd234b8bf0fa7265cc3f51606b9f80563a4be89f36f9805412c6a452": { "f80ac33db9f2499ec8763473f9aaab8f92e4f89d4fbb898fbee33da6e7d210d4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "a2be5c3064b066096beb34893ba76a1d73d0761328dfc9e5f63ecc8d61976698" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "21056c6da95bd69c391c6ddbbac23d7fb05deaca91fe4ddb14c9d4d725bfc117" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "76bee9bac3d6392fcb69b57a0be48e8c03a8d37efe5708929e39dd4339a47437" } } @@ -14670,15 +14684,15 @@ "e8941cfe3ebe51cf895d37bfced51319951864655bb65ed34110cfbbd542b577": { "1724335ae6c5171c92d1126311524dbb7f3ba7d451a7907320b5c0cbe7ebb3aa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "2f22dbb256b6604c5eea6702491fd864115d50bae9e62d76fe52eefeba90f72d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "3d7bfab33fb3beebc2f47d43d3e73564e8785737cfb98e27af85cd0d18311ae3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "4632dcc47cf57386beffab1bc32b061d35a434d723cf247c9778e0d56f0d2f49" } } @@ -14686,15 +14700,15 @@ "ee1d174b1119575726aa2ce11719dc7482af9a58eb1e4c20075010bcc5bc200a": { "85b1114daba44b005630b9c50a7b4b79dec7d53f4ef54586f1ecd92f3f5c5d72": { "jp": { - "updatedAt": "2025-12-04T20:16:57.277Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "8759b322119c72c85670392c3d59d9d0656f281e25bdc1634c37365240ab22da" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "7e175bd3056ac9f209c0715b0617049aba1e96debb0bda42038f955da0d47c3f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "5b61ba70e8514da298d0c329b632814a34b6bc2248dca28c62f8ecd6d3d7c6bc" } } @@ -14702,15 +14716,15 @@ "0cb711998b74fbafee6f9dbe1cf42999cd6bf81fb67aba52da75f9d6e7820916": { "1b31920ed434089b5c438486640b5af358c740bf6e33cef31bc59a7a8cf7708b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.309Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "2e1b8c5fcc8a474d50beb165e736ce2693ecc66b5782c127a36f4adf5f1da57f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.308Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "9229db9a058c9ee3310583fc1641a345d5f9192be849f1c882fc37d235115518" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.305Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "ddf2dcc8559d776bcf2965eb2508cdd20e2beb8c0af525a720890322d26d07e8" } } @@ -14718,15 +14732,15 @@ "0de197a09c02a6e7de6b2120720f01b2f26dd69cc09e57640234c52fe619cbe1": { "a3b2b2da1705264e477035d4c4f93d27e7c159e13c8fefc67fdbac404fa1df2f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.308Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "0eaef6fd9ff13bab0d54d7a3ef3ea3001fc8d429659cc1898d26bb35c50396ed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.309Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "efa91f04ae6e3c902352ecef6b1d4cc8ca244cffc6058b42322aa90b28484aff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "99ded51be520e91023b89bc582d9fbd164ff49269b48877bed7911a74821422f" } } @@ -14734,15 +14748,15 @@ "39f0108c94bbc9ceec29295e4a5c4a30bc3ed66e79dcf055c93bcb5e07df95b4": { "f14661437615304886b90084f8db1b8e50ccb8718cce1d8bb57271192cb3f924": { "jp": { - "updatedAt": "2025-12-04T20:16:57.293Z", + "updatedAt": "2025-12-05T15:21:44.286Z", "postProcessHash": "078db896105ca6ec4db4bc231126e5c66fa6bfdd68113a50c4860cda8ffae0f4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.293Z", + "updatedAt": "2025-12-05T15:21:44.286Z", "postProcessHash": "8d86c67345a9ea56aaf8520bb073f8da4617b4c8bdd3869394546ac6d8ce297b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.293Z", + "updatedAt": "2025-12-05T15:21:44.286Z", "postProcessHash": "783d7db53fd2d35af5e455fe0cf632085577d1e0042ecb08da164093f170b087" } } @@ -14750,15 +14764,15 @@ "4511c24ad879085d0713bffa28b8695c1a87d24872ce30015bb857f43c961627": { "f33dc7dd4c81c9ff62d672ddd22da52fe2b3790feef29653e27d7dbf105dacdc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "f70ee990ec09fb26a5f18f4e100ccbb8860c3fea679934c49d180427f3ee413e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "7d76dec47d71b8ec7819f956c69e3c6417601ea853816c8f9bee880c630c4954" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "a34f63191b6be3b7343907180388ccdfdc122dd49221329ade5cffc057a87135" } } @@ -14766,15 +14780,15 @@ "7209b7ddab6e5d0aa0edb6dd2a9d28893ced1fa4a5e84eca66e18a12cbc9a471": { "b55f055c6ea298013d180b87459ca4cbef2d564e3a47054885bf85eca5781ed7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "9d7c6b091070d70ac59a7804d5c5355e0515a83464a2e6d21c2f7ff864dfbb91" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "ae02d1de33f53b9fa36346ad18ab138a8405cbce9223d07b05b7d3269acbbe23" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "fbcb85e48a30800d2da009a4b6803780c9be4fef72b2dc0c153bb927d557e745" } } @@ -14782,15 +14796,15 @@ "8d5ac58622d05dc878c50a9901e001b81276e5c37349076f70389f7ec8731cb4": { "2a5bbf839d622f7ef15b7a5b8575e42dcbd0d1ab16bf6f98ab233f94cdbd68b3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "09a413c47ee6e7afdf5f2c95a169a52f19468d7c352113cdd49546e7d5190d36" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "0bd343513020712269ce0d65704dc4dcbb3b0d3a68d4a9b1e522fffb9786e5f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "a202b6e2237fa09f8a07e1220dde750433b60c3951c744b6b58f17dd9a437e60" } } @@ -14798,15 +14812,15 @@ "9da34b15afe0cf84a2c73d8d1acfc85dae89be8c90605898caceecbc4626da99": { "ce873407eda99feac5ab7638cb9c330da28e87de5b88e7f7e35b3b8dba2c1ffc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "e92f062fe32ed6db1f6cd8ab641480e969463c92588a305eb3418d6f57f79083" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "0128fd0a6c6d0679bb03f47ccc10268b47c2c952a3a93e9244e2ff1d1e55cf66" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.277Z", + "updatedAt": "2025-12-05T15:21:44.273Z", "postProcessHash": "3c8581f194bd4a595619f28cd1d6f8f5c0eb99bd330ae6852db48de914423b3a" } } @@ -14814,15 +14828,15 @@ "b1eb4813b41c7ccc174d13cca2cec0592da899961dd7a66e59673fce738d90ed": { "d63a4009d7fadde4213a7f160c8741c105b3a63db320d984e375579df904dfc5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "f0ee7007f32a86cd3400d49e8a84dfeab84e0c15494475f8812a81a3246e671f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "1b74ac3d8a145e5aa16b591b3e0cfbe44811728dcba71efb679e74bdfcc80e78" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "fd2522a37aa373298ac79b4e831ec56e16f3475a1ecf1addba7d1de98326bb4c" } } @@ -14830,15 +14844,15 @@ "bc635d7f6a9111bbbc3d31c625fcda3adb9eadc78253335799d1b3a12a509df7": { "b7a3734788840b662f127af66b64815bd7c85bf39dd4cf42306c85eb6f392d01": { "zh": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "f668c1906ecc471622866253444bce4dbbba81ee303815c59461a39cb723e65b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "85a44378f4f3cc33d096e0e5e4e9a1b39e47c1bd19196f41121eef4d52cda876" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.292Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "a7fa40f6a14b41717889837c056e03602a03fcc685634f9d6783b496d6e4b88c" } } @@ -14846,15 +14860,15 @@ "bdf357b395b129f57e836477b2fc57675705bcf48e1acda08c190ab17a75951e": { "3a0381755f449a5032606d2fdab638ca733950978814b42e1aceb74203a2235b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "e733fde436e4d1cdd1b16a3a850b017590f1252e03c72d3b1c4fd59bbdd4021c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "903f4c0dbb76a9524b16849a407d8357e0ea37f163e6edc0c6a1fa55d2f472b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "8bf4c2fbe0c3987eafe627ccde29067e14ebbf8c233a82a46cc1671c961564fc" } } @@ -14862,15 +14876,15 @@ "c54fab4cf7043c79b8ce701279e089e154ad852ea3c4248cb2c8da671cbc17db": { "b6e7b7146868d159e85bc698be8dd009a8755c7a8c993e4406163a4d71a408a9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.278Z", + "updatedAt": "2025-12-05T15:21:44.274Z", "postProcessHash": "41a6188cc374616d128c18df81d3140869c5e20978970ea3aafb1dda27b766f2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "ab963f9ca2421adabcd658f0f70ac9373a95357be12483dcd252f44b6ac1c080" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.279Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "dad5f4be538885d3ffc44200c5dfbf6b1b8625c672101ec45ceb13f43a4aa2c2" } } @@ -14878,15 +14892,15 @@ "c571247fa3e091098d027771a55d5ebe774d6d531b2c5384736de73837552959": { "e5aeca6ca592dd8ef3c7bcf54b278d64dd04a95cd012f8594105429290303c21": { "jp": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "70317a6694045b71857ce268d875cb7550889448d2993dc3d3fc7b6722c93a24" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "e2b642d977e3d55608fd20f37d1a7c6a3cef4c43bc0196a1f39921edd2b4518d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "040da56fdae7b56e6f28228c7ab6fcbdfbd21c9c5b7ee941c67cedac3dee016f" } } @@ -14894,15 +14908,15 @@ "cc311a7d9ae7be3e04c62efd5c5b7aa8cb9d6075749b29e99939d01baa76e3fe": { "3de10984a294ee3ab3e7105d5ba6c42208236c0f01721e7189efb0af99ca2490": { "jp": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "68de6ddbd11919eb90e17cb859f090f9fe4826b765351cd9abd6bdc436a68e27" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "b0421b22dfa0f35205b9ec3448f3acea71aa7b428233172862f4c7dc8935d0d9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "ab5b892070b71822fb1e850e318bce95aa4040ab6e27568ae4ad69b24a0b10df" } } @@ -14910,15 +14924,15 @@ "d49e422d3649c455dff8cb00cabeffadfc176bab2340583e83d8416f5fbb799a": { "551eaa35224112c0edb3f9e68292a528790f07b1ea2fe15b67e97ec37689af33": { "jp": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "9047b1a1ce5ef529083a4f4e66f87dd1e65d1f11d61173a167a0432f21f63cc6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "93d9250ce7cce03e33c56bd3a435c7e1f78e70319a1149e5f1283c48b1068ac4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "7517cd395271d6ddcc3d8462629d643227ad67dd9ddca3997d7d4b60849b9e68" } } @@ -14926,15 +14940,15 @@ "ee343f5a3bf00722c8dacdf2e096fa970da83e5102fcb1446bbc99a4b089a390": { "72f38826fa27979a73a67e5413b3854cc5f5f2bfca9f1efe2890e20dc90a5020": { "jp": { - "updatedAt": "2025-12-04T20:16:57.287Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "7cb4776f767afa600d4d14aaa1468bb99a7f2e914c6b97795ed805decddd953d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "ce78cf6ab45e1585e2e8922d19e6b8353de38bce29a1cdc806abeb1b57491ba2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.265Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "89b770c93118e6faea3bb41e26d286f89d835e2f041b8d274aece6110c93ca66" } } @@ -14942,15 +14956,15 @@ "fc30da7ebddc5996d940ca4f9540cee6fa6b79f9c37ee5aa6cd56665488a65e6": { "20ab3ac2e587dcfbf842ef0e2dde364c4fac02225d76cf6a5a4b6a646b77e4d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.267Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "c573a67fbf84fd397879e6ad586a7af22f5c3eda91cdf71217de47c8355efcd3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "0a7babdb599d6f9f73df290e765fe3e6052b89dfd37d43b7489583b9879b48d5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.267Z", + "updatedAt": "2025-12-05T15:21:44.265Z", "postProcessHash": "17db5702fdf78b723e8c55866b796e8cf761aa9974781c611aef97cc8e628d9a" } } @@ -14958,15 +14972,15 @@ "fc92ad70da88c48808fdb53f68400c73f6f900eca6a95d544909915d2b22d9f0": { "16c47449f52759987429555de611585f7f1f6d6770d4c1ced0d74ae244ab45df": { "jp": { - "updatedAt": "2025-12-04T20:16:57.288Z", + "updatedAt": "2025-12-05T15:21:44.282Z", "postProcessHash": "313471062279195612d59ec683acc31c310600f389d7a3eb32134b97c60aeadc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "9ca4c6bba584c6effeecbc9feeb4f2ba429797f14f57181a757ba9f7db7167f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.265Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "53681e067e663881ec038a649582e0291ad872c6f0ef52be1a328e15d58ee3e2" } } @@ -14974,15 +14988,15 @@ "fd2a3635e203221890fdb75fdb12cad083607f12a05af6e46565b58b28626a3f": { "69e391ff6463d09b09730e7e4366b4c486d3bb1759441114546febf2e97601a2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "459fab8c49fc5cfd4b7051ab1e3046ffda0eefb9e597dd4203225fa9ce33666c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "6551e263181aaa1489502382270c64bd30c4ab0186d3b55f8e9a7e72d8e83718" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "a6ddfcdbf2ca3d0a02579a9ceabfd35ae2b3d7e23066340fff77852f91425ab8" } } @@ -14990,15 +15004,15 @@ "01730b1ec82c24f14c646ea28a41edd24f15dd6258eadc1f9401688d51eaad3a": { "303c8891cee64e9b8765b1a9436de1274fd2bbe91f843406837e41ba74c6c318": { "jp": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "7b515082c0f5e5420daa3650fa3cc380a73a2574df6744b63416525eff25855d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "e5854213d96361777bb240e739aebd92cedf07458f92ed47950c11166a299a65" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.307Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "fa1230b67b96a704a904f1de343f1a12cfdf4350092fc16e05a0e77cf977ab27" } }, @@ -15017,15 +15031,15 @@ "0f88f2bd27c6a3bc5b20ffd358c1599368da4a7821aed81420035a719675f40a": { "947a7d558e471c72cf79437a217f341c9e6e2083cef8d20956a3839b9c085fa3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "509b0e81381ceba67a2bd7f38851ded5dbfb6064ced6cd0f0bc026e3c3f9ecb8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "5523d7cf4a80df0f9d9cb6adc390111a1159565579e5cbb5ac58b04f49e3aaf8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "7ce9f7d60f73fc99710842c473069d5d61eb676797ac216df205a465957fada4" } } @@ -15033,15 +15047,15 @@ "2407e7afa831d557309ac0a87b9eae46f720441353201d2e2c78ed3e2510ab2a": { "1e84c0fe8d2d9789e16132b70f9a5d9a1b2fb7084db35c324173b1b69a5e7848": { "jp": { - "updatedAt": "2025-12-04T20:16:57.307Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "c13fd145bf3ec22a4f5049d3786c53a4a161c327530faeb5662d7a05cf9b8e9c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.331Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "1231e26d15f813af1da5526b490d75e644d69a24c384c47d74d853c41e4620b8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.308Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "f904f1242fdd4c130610f3c5e7152cc280b07888349f0edcbd8b0b08917fbcfc" } }, @@ -15060,15 +15074,15 @@ "24f89815412a9281c45be003f0d9b1edaffe253b9fb6e44d0b69114de2a8bb5c": { "856a0875860cb4e9fdc7fca531785d1b4ba67b93fdace5421889ea8cc500ef1f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "3f29c0edff8c076893b1653c96c169ac81e6b32116d3230a094a15c098c4148a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "82d77fbfea0f0d8d28e675d335cb2703c17ed4a0a9324290baf01ed4fb3e5168" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "56b0d0c90b1ae721ea921022009cda51c86067ab538d454be5bd8b2414a22c77" } } @@ -15087,15 +15101,15 @@ }, "6d9e97bf1687b499e1a9a27d241d573cc5e28e2662548216fe4371463c54c4ea": { "zh": { - "updatedAt": "2025-12-04T20:16:57.312Z", + "updatedAt": "2025-12-05T15:21:44.299Z", "postProcessHash": "580f12acd5b3f1e589a4e86de3a1b6124ec4a9a4a03d7a3cda396eb212dc7d13" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.312Z", + "updatedAt": "2025-12-05T15:21:44.299Z", "postProcessHash": "d47f76de738a3be1a5f05bc9753bf630bd4e3acafeb5635bf7502a65d56d96fd" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.312Z", + "updatedAt": "2025-12-05T15:21:44.299Z", "postProcessHash": "2374a6cc4ff589f2118d5fc19846d46da79cbb296ea0ba250e586a4a5f824047" } } @@ -15103,15 +15117,15 @@ "417572f3f0c0dee81daaaf436d03f842c9160631b01f165595d06d9e99f3c6c0": { "bedae71b49b3c79b70e3ad0767d167ca7bf7f0cf3792f2786f3be6e243ac41f5": { "ru": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "9704c671cb50cce74276808cd8e85b877fd221e56b8d65175d61f86869cb36e2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "05c5d7b1230bf7f5e6d2a0f63e011de905257e29cddd316902cc65c9e91dc96c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.303Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "d4c5adb58897d54fc6aa74a6a3eb46f90f2581a8f24fd2175f825e56cc477405" } } @@ -15119,15 +15133,15 @@ "453e82594457c450e00def5b4a049c6817c1f11b3242ecdc0c113a4fe824bda1": { "3e341e3a84064fbb72d1f07486692fcc58eba4c23ed96700a8697e160736a689": { "jp": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "3647f93ac0a6b4d5009fde88bd7a04ae473c4842f5ff004389c0e7368609a945" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "fab5d69bca9099677cd5517333080a40ff1dc876a91651a4fd4e8c2f4114396d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "98004e873cdacda8371ab02000c139bf001cd68fabdeab41f6be62a83738c6bf" } } @@ -15135,15 +15149,15 @@ "4f6f1a6da73f8d186f0a18ad4c69138ec62d12a6b38064449c0eaf1293c82145": { "19880790e9525db190f5e72d85ffc766a344cde65183576c30c03ab560c76bad": { "jp": { - "updatedAt": "2025-12-04T20:16:57.280Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "6ec53797367c3ebc2ce4c7165fd57e48d81d4ace1805ab4fe3e24c813411b27e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.292Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "8d142e45fc03591e71e1a5c124ecc0a690b9387b8bdafcf9e872705af35e6ec0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.292Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "5f8376dcb03c2d681af52a9674195e471f2a15b060c1c35bd18dd28edbbce8e4" } } @@ -15151,15 +15165,15 @@ "544e14c8df8e9aeba587c7a01debdb6de7b8d0dc480e2a471b321fe3cd637687": { "56a8436026a55bc58795064c90dcf48eb1783d7c4aeb6e25f3c6be910d52bfb0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.280Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "3309ac26454d7c7a591bb12a8684a11469bd8819568940e1102b21e376b25163" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "e5099c2804de3c48feb8fb4e320f1436e267e05af979556d5e1d37a36d5a1495" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "e90dc6143a0c62219cbee394a9345870a2220ed6e1feaddb05d00a8148c06b93" } } @@ -15255,20 +15269,34 @@ "updatedAt": "2025-12-04T20:16:57.318Z", "postProcessHash": "3363a370fe68b10e6d232720d7787ecc43c2290e528ed76a69be56ba21866485" } + }, + "1807f1a4e0df4a614fb9ab1cb54eaa82c302b748102c517c10475808f804529c": { + "ru": { + "updatedAt": "2025-12-05T15:21:44.325Z", + "postProcessHash": "144e4255f851cd999201bbfbde11bd70f34b7d3e72ca59254724cc83b41d889c" + }, + "zh": { + "updatedAt": "2025-12-05T15:21:44.327Z", + "postProcessHash": "a1ba261dd439910ae47c73cee4bd364acd978384988da61d2130eddb84e83fda" + }, + "jp": { + "updatedAt": "2025-12-05T15:21:44.858Z", + "postProcessHash": "cfbb936ab7555d3e4ed6b9d8ebd0797011b89db045fe0b82711ea99ce1e7a8eb" + } } }, "596b0a954cde794b5e64f8babd89a81c1359843a6046215dd00cba539357857d": { "af24567e7b2b1b9a842510afc1c41e6a4f7a9634fdd16e4176a76bc4b3c3e091": { "jp": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "88596ffc0ddd693e986f59d9a6079ca8b4a5d728db48c1951819240549fc3f86" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "1a8766ed83b6a019bde334db8a8f4973de29f13e052742469d7b405efb17e26f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.280Z", + "updatedAt": "2025-12-05T15:21:44.275Z", "postProcessHash": "037f1e27b831a82caa36c74dd376abdac207d5f98eb1f96fbb860880c44b9709" } } @@ -15276,15 +15304,15 @@ "65351c23daaa6ae3579c1740e82b1f56ce6eb541ff65d23ed1f890694f6ea440": { "b999ab8a06deee210039a2eaf91d71da758c776e64c8fc322d876e73e8db2861": { "jp": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "e1cbbff414f33459b26bf0893207408ce2903dd105839a75ee86c91b16743ae4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "0cf732da495c32436559f4f2ba0f04c042ded5dd61e10f9ff44c1bc10511223f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.303Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "ae6e23df23eb8f2b90b785ded2b8d1f0a1c61c640ad2d6540c39ce2d13b34557" } } @@ -15292,15 +15320,15 @@ "942eceae58e0a094962eb7383ca418c7a0fb355bbdf35ed09b1fb271b8ef0622": { "a06cd352188c57c4dc80e07b3511cf0c55b644a5eac9806b52fee16a901321cc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.280Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "d32cd5e7f2ebf1a47c2c2cd968a1dfb8c6c57cd21f5d38abc160498b1a9f78b6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.289Z", + "updatedAt": "2025-12-05T15:21:44.283Z", "postProcessHash": "d6c162124e1bf92901fa87011b96b27d44b39783580fd49099df23680604ee5d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.286Z", + "updatedAt": "2025-12-05T15:21:44.281Z", "postProcessHash": "cb123e39f275ac0509fcd9459a9acc36afc1bbd158aaf7cb2e8b8817c27f0ada" } } @@ -15330,15 +15358,15 @@ }, "1fdf9e52f42d0544e013d1add4533d1be51f9c79d10ad4b2c0ad50d18397d074": { "ru": { - "updatedAt": "2025-12-04T20:16:58.185Z", + "updatedAt": "2025-12-05T15:21:44.300Z", "postProcessHash": "fbc5811502c45f5643d3bd41ac8f0be465fcd90bbbee3a8298dd57aca433d158" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.186Z", + "updatedAt": "2025-12-05T15:21:44.300Z", "postProcessHash": "980b6df408ed684681a336408850f0b295fd356e27332fd0e1497855528b222c" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.186Z", + "updatedAt": "2025-12-05T15:21:44.301Z", "postProcessHash": "70c177dccacbf27aa34239bbf9d3b0b8fcc2cdf1d4ea067826e0ff8c9ab7e2ac" } } @@ -15379,15 +15407,15 @@ }, "2a201021555f42613b72e16bcc5e7fb5cfe39d43a84cc1721f1dd53636ffac1e": { "zh": { - "updatedAt": "2025-12-04T20:16:57.296Z", + "updatedAt": "2025-12-05T15:21:44.288Z", "postProcessHash": "0aa606fbdc8cf580ee055c7d79304a881b23437cc02365f3cce50f66b049372a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.284Z", + "updatedAt": "2025-12-05T15:21:44.280Z", "postProcessHash": "52aca83bd5cfafa2945813684a0ad8831500a8c7cae58bba8e378bf06851d8be" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.295Z", + "updatedAt": "2025-12-05T15:21:44.288Z", "postProcessHash": "faff7facca908e3763249f58a4b40763d9584c8147e628ba6a333c73ccae9a08" } } @@ -15395,15 +15423,15 @@ "acaee03135e8e96bcdcf34c15546b735f613d1e5ae560184c16e47ce55501204": { "8a07567dde3044656ee0f3a1ecdd3437e3653bc1dbd011b4bab9edb2c0e04c95": { "jp": { - "updatedAt": "2025-12-04T20:16:57.290Z", + "updatedAt": "2025-12-05T15:21:44.284Z", "postProcessHash": "2d640ddc219cfd0151320cfe6e3eabc440522d0d770a3c321ed870ef2e17459e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "ee1d334def6a104f5c2a53ab541417ad2263fd9443e5bdb31c8e9ed776db4f28" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.291Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "0b11e72fdce531e876055fb1221e1c88b7690a4b388a7641cee9fe0323e0a48e" } } @@ -15411,15 +15439,15 @@ "ae900fe149a5b14ee7a25d9f850a7fed9bbb24da3497c1861285d73a625852e6": { "178aea88d150360011d964d55863a4f9f7585cb6ddc5b56d142898d29ed03414": { "jp": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "788bfff5144f6a500f40dd126b5c6d911017468dc256ed40157d1f7359d15df7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "ca9d87765421615160d3c47b22bb049264593e0cb85ed2b79a522935b113c518" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.282Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "152ea1d9f99b3420502d46a9abede098c1bf2bf7e5f9beb6b33d1a15b04cd344" } } @@ -15427,15 +15455,15 @@ "cc14be3df8410373edcf3ea623a34273b7005b0668dcb8d261ee3fbada8f972a": { "029f36173935f1b92553f610da6f3be5d9b0976fea74e17265186d40a9f8f8b7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.310Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "a827fc513500c2d4cf2d3b1966ac7e7da2c1ab58c8ee1620ac6d1dbae43206d4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.310Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "3f3760414d5c656218fa33e985fc17bc5e69822f4e58f308f18e2b20b380d06e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.311Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "9da1c3df2f732f3e3995bba33e5452580d7e993ebb072b6a9f2d08872eed80f3" } } @@ -15443,15 +15471,15 @@ "d8cbf85de396e8d762bfdc573d415e4482bb687b9017d25d153c264728283316": { "62c5c6e1debf8e9f65330683895c791394dfa2b8f1cab9a3413558667b58ec1c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.305Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "2252db4dfc3354fb1a7dd1bdf301fb2457479a789de100b8aa96e76dbef61dbc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.304Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "349b791ee8271e741426e4d3a9f83ed6dee72ba5563412acf1b3d7ffa9853d1e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.310Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "70e589e843a5e37904ad0c2668f382fda0cdd8663dad7d6e018049f8965b4076" } } @@ -15525,15 +15553,15 @@ }, "b81c1ca4160f512d76aa66aea31b1a00513a05510d0c7431d4387b7b7e5a851a": { "zh": { - "updatedAt": "2025-12-04T20:16:58.184Z", + "updatedAt": "2025-12-05T15:21:44.289Z", "postProcessHash": "c023dd5b5d6567253396c86c788ea1c65d194b9bbec87c30cfc8b44fe108bfd2" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.184Z", + "updatedAt": "2025-12-05T15:21:44.300Z", "postProcessHash": "223d8530b3a6a601d0aa40258e26fd75a14071446877330b3d7b00952a9b87ab" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.187Z", + "updatedAt": "2025-12-05T15:21:44.324Z", "postProcessHash": "47d703b015a424176f3507ada6b94dd6e75b67cd449b639d1218486bcf5a9c77" } } @@ -15541,15 +15569,15 @@ "f6c796e2a223d7f3109d7a0e087b02b576111cee44e1affe20a492544e19a35d": { "5c1b2453bc509571ef5a9c5a79343853e690b58e16dd273eb4fedb719f0aabd8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.295Z", + "updatedAt": "2025-12-05T15:21:44.287Z", "postProcessHash": "2bfcde4c178caaa41ee9d92cea889e42306134e9e9eae2ec9255ac17f17b9946" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.294Z", + "updatedAt": "2025-12-05T15:21:44.287Z", "postProcessHash": "b32914dfbe7d3b083561d734bddad72bcc459fadf5b258dd9ca5abad3c43b7c4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.294Z", + "updatedAt": "2025-12-05T15:21:44.287Z", "postProcessHash": "362567edef24d913adc2530aa71113919db3764891250038124349e7b091953a" } } @@ -15557,15 +15585,15 @@ "063fed20736d4477e2229fcccb85e98116869443c6a55d44a629fcdf41af8097": { "7f5388455b7501e345c1421c779eb60c54a09041e604f2ab4fe8d4e90d30f442": { "jp": { - "updatedAt": "2025-12-04T20:16:57.346Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "eaa2b42206addda6ed7ae93ff880938cc9f48f9a1676073f4cf91debdf12b027" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.346Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "fcada88a349233c3bad0d87086ca14f6a52e1ec877e6172608a6a8d16c380f0b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "9021d3c4f248ba3bf4df279dbd5b6ec0446fef84e3a654bacb0745a398a53b8b" } }, @@ -15595,15 +15623,15 @@ }, "7676a41c6d1e719ba8b13b8d322ace741b11f0fe672d3b38397d5e1d23081fd0": { "zh": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "1d447f51f2f16b63cc6084bd0ecf680602884c7400071565a098bc5a6ab71204" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "24662cac1f3f521f5dd2ec8b21f2f015925edd343119d56de4730a0ead5f1c57" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "d103cd2525c13cd38cd8497448b754272bf9380b8a793841d3186ec7965aa937" } } @@ -15611,15 +15639,15 @@ "18909e78fb8faac8cc03a75ea4cd8dd121bcb0a77585782c21cff69accbaf023": { "a2e6924b47ebd77edde457f769848cef9b8dad9baaa33f85fdaea23f6bf1d821": { "zh": { - "updatedAt": "2025-12-04T20:16:57.326Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "9a9628d342e8f6dc2dbe7a3a800080b1bb6c5d9a0547e1293c489adb2d090c1b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.328Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "a8397ac4f0be546d168971e8665dea9fabc5aabafcdade39a4feed2fd5874324" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.325Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "d0bb911adc260c897a35412b423dce88479a8d0187c98e045b8b822802ad64be" } }, @@ -15638,15 +15666,15 @@ "1c4c51a336d1e6dee310539258abd450be7834df46548255e22fae5d3686a247": { "e554f5f0de4eb19dd4293e28213211802e65c6533c3bb4dcd80a8d90c76744fd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.306Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "286c16d34499436aa693a0ddee010b42ba4e113eb3c01b2f7d58ebbd8b1238b2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.333Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "579a2017db5d0020a032fc16d80079353d49e159d028a5dabe776fbfd5338595" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "cd32f6b84a7796b8baf021a51bf339722643bf029d84d2becbde4d5ae3577f20" } }, @@ -15665,15 +15693,15 @@ "39df2af9870d3b0cc9ef00711b97902ed3b5f6df0419aadf0841770290785d7b": { "a18203de1411607a70e1437450eccbf17a073e8daa45c5c42ee8e0cba812d5f3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "3bbb7c5646b1c313a0b2367ab05c903288e50ac49f7f9deb71f7c01520ddb224" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "86fbb14caf7aadb8d8a2818917678146af7931b697670fbdce4f9d1b7a218a99" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "72159bce6a7dabffc4c6faa94b55c651524ca392f6ec5c0aaa8b350ebd514991" } } @@ -15681,15 +15709,15 @@ "40220941c00a4eef0a2069b02906e525beca179d4a354e0a2e5a911c363640b5": { "989d53822380f38745d79c1b84562bfb045e678799d0f7110947e9bf5d599700": { "jp": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "2082266e455a6d48c347970fda672a150958563147b5e43bf527526f0976e557" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "5caeea8e13e35337bf86babfa9f5a350f16fab4124cf08f6b4fde5f92b9ba661" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "37b44bce42e61a8d7d7a9332c88f90b4c23dd01f8235d3d3f853605ecdae5886" } } @@ -15697,15 +15725,15 @@ "505cd1f1060fe51777563a177f877b84419bab382656d36901ea1615cd4c5f44": { "0a35a92e535e80b3a150fd73abbc1751ae0fa2688543577feac7ce7f4de53ae8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.307Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "fc96c2b38f72f2b3449e782982f40cd3eae0c0ab289e27cd5f7c7229ce10572e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "ba5d5828317b239e5f587fa322418377292531f8ff57472751dd9ca075336a42" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.303Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "7064dc165b41d5f55589467cf9e7682d9687e1d1e96dab5ba2ac6972b16049e0" } } @@ -15713,15 +15741,15 @@ "67e57dc33f46fa357a2eb4f340d87b17225b6a975701da70873323aa80e25052": { "e431ffa5cc74af67d9f087cdd47582b18d0fa8c78bb4467cdddf3350e7c9f2b8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.311Z", + "updatedAt": "2025-12-05T15:21:44.299Z", "postProcessHash": "4bbfe75a58a9a094e4afe17a67997cd41dd863b56c366e909278e821bc0fefae" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.311Z", + "updatedAt": "2025-12-05T15:21:44.299Z", "postProcessHash": "f2c89a8deb708462dcc86022c87e4a3921d196635920e81fafa5cf3a3a743df1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.311Z", + "updatedAt": "2025-12-05T15:21:44.299Z", "postProcessHash": "dd01575ef0d018272e40eada9c99645d47339060fdeb365da8be4642328e5d6b" } }, @@ -15740,15 +15768,15 @@ "6d56ddb9a5b3ccdf4eae29f57959e9374f0ff177ac9800e0d460527344dc64a0": { "0828f5e8f879eaff39ae8686b298e753cdeacad3c2b4543b71425525219f9c9d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.309Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "6eb58a1dbaff7d05bf5ba525de6a925053f253fb92efd106d6cb7b1c8b784c7a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "a437b785c5c3eff3540f0be62d6deee48880dba3f640158835ee2b5f442fb29f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.309Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "81e8b5475f03bffe605a99f0c0690c886226e0decab9f1077ef8df0c3fd5b6ce" } }, @@ -15767,15 +15795,15 @@ "839030474f427a460a6acfb9a8caa7662e1cd0c337e35995054bd2c956ad05d2": { "706368d544074057b5fc0c6009711a33093a9475013e238b17fc5efaa65612d1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.301Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "9c97c196dc45ecf9fa55e6869537f8c510762e56c80e711f03dd412295366c1a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "67b8e340c665026a24c580b7982ce697638efb626d0c2b3668b3755abf8b3754" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.306Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "868861b6480309268a332e8a4d81284cf6e37f3b30970494e91deef98da56de2" } }, @@ -15794,15 +15822,15 @@ "90511d719daa226bb864d0d2bb0fb993971dffcc30b3fda0d86ebc7ff7157a9f": { "888beb35b0eff4785517b52bba7c01e8651e6b39b235dcf0f4d1b64d155f5311": { "jp": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "c9b80db8eaa6f8f4ed9f8caadc4306719738e0d1e89ee1753f562bbbfb2e9b8e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "5f9112578336a20fbb7b3ce7324b3a9313ed74178b8e520b33f9687b268a28f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.305Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "51bc3243fbc66b24886f9c4b5095800777a8ec8a83556c10de526244e57ff0da" } }, @@ -15821,15 +15849,15 @@ "a0e5cd4bbd52095f645996d5a20cc34d462aed2b014ca882138e4ede52f7b410": { "b82f6c4650551ebe5f3c0e03e15ad59d0e9d79edf78e121c65d4de264d1e000e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "351078a5538a9f6d285579f25a5fae91dd088c6353d1e46d3545616a0cde1ce7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "7af5dfa84bd1a3b103a94ed818d28d9337e89689410cfac51b8d94c264146d1f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.280Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "e0570f566f1f50b92950d535c27450043b7bb8302d6bbcde7e9b145e0ecd04a0" } } @@ -15837,15 +15865,15 @@ "a65902363effe5836b0d9b1a3304f47945b1560915ce6fb45c560e678eb9a539": { "559af2b30070d162a884137e78494631c1fb2dc0f934eb9c73be1908b21f1a29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.310Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "0cdf2a1059f45ae55415862aeba44b5e47925a607e4d77b012f5486531cc4ce4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.304Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "e0b1b777bdf85bf3fcbf38f505ede90154215315a38144ec37db37d9be3c1de0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.309Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "b2c7a87f4087af51695b0055a8903a52792cae36dd0eb232877c7ed54b9971de" } }, @@ -15864,15 +15892,15 @@ "b52e68b0fa137214aee6134202f0428952a2f49c83cef796e483c36598106cd9": { "804c074882c5fb62e56fb916010e71aa86f56b3a61ac2796d9e2b882c4043025": { "jp": { - "updatedAt": "2025-12-04T20:16:57.304Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "818fa8b5d240dc80887c8349e6e3845bb76058570e5be764cd801e19c9c65cff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "66db6be77d7cbb3817249eafac2734b9261ebb2ff1aeda609243e85d438e9bf9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "e92899b6039da3f5253b3ed7cc11394438828ed1de16cf709ea21ecbf7bf3388" } }, @@ -15891,15 +15919,15 @@ "bbbf8ab907626ae0bd4c2e7f8f1e1a30e187356616b813a7f2bafdcb968b16e9": { "64de149ea6c99450b1d0a61247789522cc099815c912ed33f53b378aaf837bbb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.306Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "c5e855930f492d837f72b3798e758cbd66b97ae48f27cc8069748399c06082f9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.301Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "5f8cbe0541de96e1dc1605797dccf4713a5e2dbea234fb1df77d9c34dcb60122" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "050be624539858c46962c96137072950834fdcbae08498139e6ed17ecddca4d9" } } @@ -15907,15 +15935,15 @@ "bcc86da4edd4f06169f90746ecfdbbcb5c15d530af9bb41d9716c0c160095c27": { "84ddeeec966f0e2dfd116753b726d6198217ab15321a4c0ae1b82e6a8f3e1e66": { "jp": { - "updatedAt": "2025-12-04T20:16:57.285Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "2aa69280cfb0677d90703141f55f84a615224c3a0026750f0fc94d0b54642d5d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.307Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "ea45e02a54de9f6813b22f7a95b70089a788d591c03afcacb39d09a65ddaec3b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "d60f2bfdbd4e141c75ca6b3ed047c27426561db76c9d0be5cf428f82d131dcde" } }, @@ -15934,15 +15962,15 @@ "be5a795a34e525ece1f0651b8ec65280cd3f71026a239b44cb087800474d6992": { "1f1def9199237717c6e401f064f97475739dc42921597c57ebe5a793493c5a97": { "jp": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "d66d3d33b10c080bd3677908c49e8eb91801f2f349e5148a82cfcc41e8ec78d3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.308Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "5b3b89832275f7e11cc13ba35e9588b1171d1e0c08a5a319623aec4ecb87bca8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.307Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "f37f4b5df617bf45b1c7a81b54fd0877b33e1aa1f63bbf839b382dbe53e8b67e" } }, @@ -15961,15 +15989,15 @@ "c3c4a5cfc613b8b144029f13d913022c2d41ebc3c333e2fa61ed8d2f0df5a81b": { "e66af8a0cfcf657334fb0dec46bb2c8ae44a17ff27be743255dec8ebd2d523dd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.335Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "4b4746ed04b10d02094cd254d0cfae8548d7af8648413ab5655e62af5f080f1a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.335Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "7b9754ed156c08b7b2f0b0a7ab299d93790b9e2e7c27009fd53c974476edf274" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "a174619288f6c43c4957dbdb012c3fdd5d39bb9980a3bf7a5a6eb32531b6ca65" } }, @@ -15988,15 +16016,15 @@ "d559f4bb7e0e75b052f6989f63565615397e09d8f05bc7535ae634a02281b78a": { "41bad05d87569563af64a625d8b65a4688fa0a40d7e5a6a9a09b635d45ce52a7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.335Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "3fdd00612e70e3cae7a1e39d26c5b03ee9a92b5e2ceb932c72b8c0f7c033429b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.311Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "5dfe755084c092d26a425feef43bb43801a946c6713e6c42ac8f6444b747d795" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.310Z", + "updatedAt": "2025-12-05T15:21:44.298Z", "postProcessHash": "2d729e4c9d03043495c928b2f343404715f4dc36091cb098acd96a8a27691bcf" } }, @@ -16015,15 +16043,15 @@ "e54eba7f7c2e2d6d452b2d73f4934f9ba018e180585b2bbdb2f9f14bb9b5510d": { "d88ed4dda50a3c9ee265b067c0abda94e3cba629d2d6c9a695d77d254c4cd372": { "jp": { - "updatedAt": "2025-12-04T20:16:57.280Z", + "updatedAt": "2025-12-05T15:21:44.276Z", "postProcessHash": "cb3906b287649ad685240065e10ff08b549198661923fc9c00d343d61e7acb5b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "08e63e299dfd1eb81a8949cdc5c84ba8992dd13efef6e23cf22f27e03764013c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.283Z", + "updatedAt": "2025-12-05T15:21:44.278Z", "postProcessHash": "051c6ba75ecb0214b36e6bbb1a617cf84820b61f2add4868164ca65f9a8d1f99" } } @@ -16031,15 +16059,15 @@ "f871545252cead274f81eec090f4a37c79aad733b302ff49eedc5242ba29b1cb": { "5ee24061522cb5a7ed68e5bfa59c658c0cb620eff70e3736f5e3800597533e77": { "jp": { - "updatedAt": "2025-12-04T20:16:57.281Z", + "updatedAt": "2025-12-05T15:21:44.277Z", "postProcessHash": "97fa1940afda204bdfae7ef0698932fb1f20b77b3d6fb6646fa9497a9809f938" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "939fc5a4ad8e6732892b5f5dcf196d5b3fce6ba93fe2421ee64635734622149b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "efd0113977183b8a85d939d6e198e8e58912431201e2fad5d94295dabc29f316" } } @@ -16047,15 +16075,15 @@ "faffe74d9a382667c3bae357941f229fd75f36539ad2c510a09ec0603f9a2fbe": { "6b948fe473605eff70a23fa450d8b860449256191d68e3b6b1702eb2624fdd18": { "jp": { - "updatedAt": "2025-12-04T20:16:57.305Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "fce038ac7eb9a9aea16ee3f0df901d09ccc0fd593f417cba290813b2ce9f95f2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "5ca99c96764a95d0521b8cd6739cfd4b307ca883c1f9a78b8a30a951b7be8691" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.299Z", + "updatedAt": "2025-12-05T15:21:44.291Z", "postProcessHash": "5d303650a888e4ab0fa6aab3d5ffeecc10fb4e0fb75f0be41fa1964f7542915f" } }, @@ -16074,15 +16102,15 @@ "00f0f8e4c4cba686bdd32c7eb510c5ff9cf2847654153d708f69ef3d1fae55b2": { "4cdabdb9af849dd79c526565751107e9b1abf0b12889130ad0f45424328feb65": { "jp": { - "updatedAt": "2025-12-04T20:16:57.323Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "1d8f17e0cac25caf1c0fd5c0370b14b24110ea31dfb59586ea960ef62d989832" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "377925c9622a1c4cbbb5772d566fe5ac2ead1d0b8389bbac225a1fec2af160ff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.325Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "137d9ed60942f9e09678b18d11c2cf0d0aacec4ab7b7ffbc00710b4453d361b9" } } @@ -16090,15 +16118,15 @@ "0819a7d3c5f71c0454ca26bc207870bf57571e75b815f9e6048c755eba88da5b": { "7c183351205668c7bd2a340b5ce1c7a91fbae1b7555a939a4d8e6611fda87e09": { "jp": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "3e53250002a908508ba5bfd86b8a9ee2d3f4bda26965ef6075c0213a21787f10" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "7c340f50d95a1d207492ace22af4f5fdf05bc8d36ce267e825b8dadc94e19945" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.322Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "e68a92500a2bae965d138389a01743d8079b3a53c42959de8ffc79007fed9ad0" } } @@ -16106,15 +16134,15 @@ "0e624ceaf217ed28aa49746f8a0d8e6f11f50144de84c79c5bfc3cee61b7f1a3": { "2c646c9eed127c879e1e79d90542ee56c28b87e87984ce2e15248bed89ca7aa7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.323Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "76364bd2517931a7a74ac987b1cf2738c8bcbafac975d32d17be16f77e0c6c8e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.324Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "a897092c812aae90c34411e0bdb591a819ab56246b4a32160c8322e9cb45b5dd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.351Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "def4e4e96d601aa5e530a0ecf147afc5c2e13b889b6dcc5b52c7e886a890a6c1" } } @@ -16122,15 +16150,15 @@ "224c18d31f8261a76b7a8b634ae516b4db00ea56c8386a0105219e27c840b99a": { "50eb9caa6eab918f879445fa3068f5225b4c5a8c96b081ac18c8bcad6ac27df7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "b4e35146f8a449507e0f86cbceef0422ed1250d4c8b994feebb1dc0fc866cc9e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.331Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "0bdc36c98a8278ae81cf854218b431439b21255a23afaea6dbc92dba4901f27c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.328Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "cfc8d50fb0dfd8eb1fb0e85cd465d9ce72aa4bd03941be886681eb2fb1542e75" } }, @@ -16149,15 +16177,15 @@ "2395cf7e448505fe5dff52c83b83b0eb98f08d6b30b33dff50d6380fa7e5932f": { "773ced00aebc468e3a46c4cc78b523aab8880ec08d2fdf077d970783ea2663cf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.329Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "c49850125fff8ee458e8f0de4f26d446c79789229afed8976e76cb416cf0ea87" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.321Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "45c1c37276d5c33a5f5b3d6b7adc05b35510be8963cfc596a65ad38d4a373f57" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.325Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "48b20004d870affe90e46b6c2dd910d51d8ca94b6c6f348d5aa9bfa118fc4b05" } } @@ -16165,15 +16193,15 @@ "4267fd6d09b46579b7a05881566bd86bc360158a24ce3eb410c8492cdc79fb22": { "8ac15a7c8118a1f822e5766749040b60de68b96aa79518290966e5ca1c45e8d2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.333Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "c366cf98666f63abfcc503326fcb195d5f1aa6278e013dff18be4fd9ffc14aff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.333Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "2997f04e7e25d4995a728ab6a4b82077c83dbc186b07c5d120be889f94171ca9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "ac1cb46371140d2456f213d4d641429e1bf92943cdcd5d9fcb4d059c5256c9ce" } }, @@ -16192,15 +16220,15 @@ "56433df9b9399e37671c12717a7e397ab2aec3e086e226fcf8bb3a338e336f38": { "899571967dfce1a8941dff3771b1f23612d934928bb1aef923cfe5bf35044d6d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.328Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "bd379b166fc7006f740992c64b23f90eb06403a72369dafc7fc7d3046ffa91c2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.296Z", + "updatedAt": "2025-12-05T15:21:44.289Z", "postProcessHash": "23a3b084560a0f780be6d8859b515f2e1affc8a675ae74e6659af024a9c12a3a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.322Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "d56aefd816fdd7b0eab0fc11d9979290982a331c22f971264cf0ada5297a8876" } }, @@ -16219,15 +16247,15 @@ "7b92c9515ab243345c2edd443a9f36e432abeb01df31d0d197db37f7733b65f1": { "5ee9cf90ed14f1a1e4f53532e4ddf568dfdf018045fcb0f4857e0860a4f59d17": { "jp": { - "updatedAt": "2025-12-04T20:16:57.331Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "161bcac18157e7016c1d54ff844edc6315fd2290d232511d44bb1ce170e372b5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.308Z", + "updatedAt": "2025-12-05T15:21:44.297Z", "postProcessHash": "535394d1290b9eed0e08b378daf85feefcb8bf0f956a273a2bc0fcc32f9f2676" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "310ac316a791e9d418086b595bc3147dc80c881b2490d7713532656df473cfae" } }, @@ -16246,15 +16274,15 @@ "8150184b8463d89e5a92277a564104c399220d435ffb6ec7e6d2560672bb49d6": { "65ef97770913247f917baecc24d78605da1a7fe09e65d74352bcc872ecee75f3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "92c9a6b4a7e010f86443edb05cde0f6ba899ce91c2b558843a1d1a5599988f52" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.328Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "83752fc424e879d7ea5539b529314ea814bd9fd9bdf67fd1433d9ad1d178065d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.328Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "8582217a8e01ee1ffa96b1f4dbfb64d0bbc5640030ebbc75079920b1493281ac" } }, @@ -16273,15 +16301,15 @@ "8af19e1098601767cbf89d205cfc0d3cd2c79ba5ae84fa11d9cea6cc91850951": { "1ea6cb562e40b65d31dc3a004ea35849a51555792b4b7af61deb33ec7dcef5a2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.327Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "d2bdd617c67f6e047b9d8a6df5254f8097312dcf4172407144e09bd1e2ed87b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.329Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "4f88fc8506e03f3d67d8c61bf8fdc831ea8ae1c9ac4e9a80508c79029ccf91f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.329Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "fa249089ef796bdaacd00ecc2a1bb51cca8df31e75cfeca32c2a6f2c72ba7889" } }, @@ -16300,15 +16328,15 @@ "8fad6511e155deebc0c7b7055ddf993b7213668bd651d77b46f4fef11c363990": { "00a2be5a931770b44b5dabd0013f35d169228fbee45d460fc63c58245bf78264": { "jp": { - "updatedAt": "2025-12-04T20:16:57.303Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "7a9621f3b4e8a8ffbe96ba5464fe444683347f2ae00f3d0b688639c87f4aa0f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "d2b05f7c0d65da681eea171c5c4956b1a7c5fb6f7ee665e58b6afad06e39d39a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "3f0e8016cfe2a85865be2a746b1482dd76a2239fd9394b925a7221ae9e63c7b1" } } @@ -16316,15 +16344,15 @@ "9c4e28b8ca9495afc149856472ed437de0b32bd3bd6c56ac4a4d4e1b43fe6351": { "fac18639f9943a62c5d07663c6a681ee610f19e3b716dd3c1889c591380616e7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.306Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "58b569dba3d014cedd2df4d5d39a348da84fce12c256a227aabd07a5edb33817" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "648df7d5555e5874f5757e96751cc39ef2af1a21f1480b6829ec5fe12171735d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.305Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "389058faec7edec8862e8164ba94b80939e9868d11b2c0331710ac7e693879a7" } }, @@ -16343,15 +16371,15 @@ "9fd477532adc3dadf2dfed8071d354140eb7b667bd012aceca5476a9b5aeb7f1": { "cc0409c62d9e4b650b3ab8a4a2c2ea56b508c8a34ed0235cccc67f60cb557c17": { "jp": { - "updatedAt": "2025-12-04T20:16:57.301Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "795811d806fd285a9c28b4f7f6543ac1c43c30d3e35570371977dad1a0379382" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.303Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "657bb54c5e6324ec9d266a12b27863d1aac5bce2a1bf04dca26dcbada28a1cc7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.306Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "1b07e99d1640c3ed4002128f18be7436f5f8bab510fdc88fb0769d02a374d292" } } @@ -16359,15 +16387,15 @@ "a6ae8bc3564075f789b35e0d49da8a62594a8bb06f9690bba789ef78cfc292e9": { "1bf52ed247c8937e8664e15b1e9b1bcd0e5ac293d7ee7d115a60dc712f220e80": { "jp": { - "updatedAt": "2025-12-04T20:16:57.306Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "ec91e4bab186e82dc52ba5563d738cfac173d730298d7ab68c0c278e3ea46c73" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.304Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "a992ba42669168eeca7813d412f3efa67e8c9b5cff927b784f366f4de0c0e64a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.307Z", + "updatedAt": "2025-12-05T15:21:44.296Z", "postProcessHash": "5b4ed66ab55b53826e2d247641da956d91fb8747c6d7c59308354d22872e6c8b" } }, @@ -16386,15 +16414,15 @@ "b24da7e78415a317d4fd792bce74b8acf47ca7b376eb80c5d2a81e9b874b5ec9": { "1b40db05914f87442600e04da552a114b9d6566703fff238531bf2dce4b3fb81": { "jp": { - "updatedAt": "2025-12-04T20:16:57.324Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "0a5adcab2242c263ce324b570718ecbc305b0401480411587706453341a363b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.325Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "1b6794ee7249b73f13435d9b86be2a71cc8363c287c58aa727fd089b938e2220" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.323Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "19c2359ec99db4e2a45dad399cffa393e9d1be86afead98aee821b60eb0ef188" } } @@ -16402,15 +16430,15 @@ "bd066e14efb9c286ea6f6324b04ea5e37363afb94dde1cda3efc2008e77fe6c2": { "ac1b069ca0882ed4666acf6095038e0b7cb288b8596cbf3b1ce1e54a9df05e43": { "jp": { - "updatedAt": "2025-12-04T20:16:57.301Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "4c4daef5f4db94d5ba3dfb3342a432d6126d936c6b24aad299abf8d454f59253" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.301Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "cd4c4a9dfad3fb0b15b19a4936f9b9d3c350bf3ee6672cd306ac3b2ee74dea43" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "2b116109b3b219cc6ba45dc1b4093ddff54f1d36d670c246283cf4b443f4ecad" } } @@ -16418,15 +16446,15 @@ "bf91c67796c6e32777f0840f1d8c0dac89f35de0d14c1139dd6dbf40f832fc76": { "e06158989a858c27f8bd73bda291193cf471adc5e5089c7af3495e699b7133a8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.300Z", + "updatedAt": "2025-12-05T15:21:44.292Z", "postProcessHash": "297e98ea3aad68e9ffbccc0bf7b02257427f6c4ff887359eeb3c67e1b0ea5e6e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.303Z", + "updatedAt": "2025-12-05T15:21:44.294Z", "postProcessHash": "664a404026abb06703cd561aa2718ad3784397a0b483ed8e10d1c1cc0838b285" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.304Z", + "updatedAt": "2025-12-05T15:21:44.295Z", "postProcessHash": "c97127d0e2c57a240db3ce4bdae420f78a04a8cd0e02e996609158ed5b232007" } }, @@ -16445,15 +16473,15 @@ "ccb6f7b23e140ff82e19fc0391ef805c0f15507170cf5f60a78b0ea7f7bcf295": { "7b7eb66a4c1f465cbb23aa2d3f377abddba9aaa6d13866786810216306d2eb6e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.302Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "1581f26ce67088f94dd7ad8c4aa97df6558268af1f7e3fe67f6d9b7e0da0dde3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.298Z", + "updatedAt": "2025-12-05T15:21:44.290Z", "postProcessHash": "5248910e7f231cf89e4fa66478d436cb6cb245d90a48485eb1ddf1e004f32c1a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.301Z", + "updatedAt": "2025-12-05T15:21:44.293Z", "postProcessHash": "184615b9cafb1ae587bacf076cbf14ef80f2781d19660d9337860b4329913a58" } } @@ -16461,15 +16489,15 @@ "d79bc535529875a738bd248165a718dae8d93446b748ae71439f9b822c83972c": { "1a78ff0ba0c6860dc7ce6357e1df29d3b791afd1f3ea81e2713f99d9dd8d0199": { "jp": { - "updatedAt": "2025-12-04T20:16:57.321Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "a2d7f5974b6f454ac11680a0bd63edf78ba173f1a97f889a136c1d2e83b28a44" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.327Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "daf68967a813f6644d6e2ed1d1363a0eea5c6b9bf84953ca583ad91f17ee721e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.324Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "5861a3e5141fa80c3580faa362da408f3c92042386dd8af88a9423090167520f" } } @@ -16477,15 +16505,15 @@ "ddfce8a030ea9a41c75ffaf59f53e35d31dae419777bf895033c3bb59f724f4f": { "208b0171b9edca76f341fabf5a8721e36aa0acf7bc2a179c676bc7f832d4decf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.331Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "357e8595e939e31858b9f811586cad754a77c7cdca0a1a6c9af41affe501f19f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "9157b73a252cb4140ce2e2eee4f438d01f02b5f1ede2aed8797dd98acb13effc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.327Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "fc92b9ba10dd79e16cb89a683c3085d94b207593160f487dc07df134243d4744" } }, @@ -16504,15 +16532,15 @@ "f181f03d87970ee159e60beef4cf41dfdb497fd8d950cab4164f13908b4a893c": { "7faa2cfd4739cd08c7746e2c9d5cf78d1e43b82946d2327a789aa6199df45737": { "jp": { - "updatedAt": "2025-12-04T20:16:57.326Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "602b1466c243d91c9d06ec5d0c0e3a9c877613ca5c2482a39999a77787b5f6ae" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "9a1f14dca77ed7e578f38c48f48b6a383bd39b4aec0dbf0fd60eabc925cbb296" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "7558b4f8026ea47d8185df84c2f058c0ae9eeadeff6df54f3550b138e69c0e3d" } }, @@ -16531,15 +16559,15 @@ "0d57e95520df30873578c0c59ade72141faf51c3e622951bb9026968b4b2a96f": { "7431e15bce3d11f80a9c93dd6b0ab34918f7076002de3ecf334f6d12092d564c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.319Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "346503cd98cb08839b02324043bc108b686e80fe75bbdef3c6dc2b34e83bf9cd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "a86b66972b7ab41321fc046a8a42b697c9c3096e4fb94b66f2d3cb5b576d6771" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.351Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "ca93ad94377b7e2978d0b8d830b476ccb9af1c75375fc16683554df759d54940" } }, @@ -16558,15 +16586,15 @@ "0f2ea76e0db5a6d5b78533ea69f6bf742d59e3c92cd69159341e1c7049a2aa97": { "9da14b2a7b04a5c4ff51174e32fb113e58f6e2c9b60265a9616f729614a2c9ba": { "jp": { - "updatedAt": "2025-12-04T20:16:57.362Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "ae56ba378e0fc4cd74cd7fc3e8ebaa9485d6d22b06f814418358b25e1232f508" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.351Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "2e966ee52dac97d0722a461c678867a698fd881e0a5287f079313c986211d2b8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.321Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "6cbf64ddba14d807ea74c79dbcd278c80c611fa7242e48b590a287878ff9779f" } } @@ -16574,15 +16602,15 @@ "10434de80b8f7631a41e8302a81a53ee7a3ba2207f6b8c0e029fb257d3df5290": { "f5fa789355a9b2e73239700688ffe0178dbe2df95ecb160944f05217ee8ad885": { "jp": { - "updatedAt": "2025-12-04T20:16:57.373Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "ec58a94ea222bccd3722e1d38c0087048f89d79e13ebd58f2d2448d5df5dd779" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "d53cdac6cc40c72ee1db4a2f45e9f98ceca360c1c3d5873c433a3e06f2ba3d84" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "2ccc2715cbec20718a7d0f36ce3519c5b2ac5f080fb3fe4413a3c4ed9e110249" } }, @@ -16601,15 +16629,15 @@ "11f2e3a49b018a860171016a699fa740752c02bc0aa8f5f79a0c57498338ec5e": { "9a24d918c600da936b99eeeae5ccbfc49470bf55f4b8fb491fe3cfe11f944857": { "jp": { - "updatedAt": "2025-12-04T20:16:57.377Z", + "updatedAt": "2025-12-05T15:21:44.348Z", "postProcessHash": "e4366dce510cc4f48f0d00369e03c85adef4bfafe85989d2196dd532788d4368" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.376Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "6a465469d0d34f18f1eb8105d292a3f41535f05c48fbf4aa33662309d59ae45a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.376Z", + "updatedAt": "2025-12-05T15:21:44.348Z", "postProcessHash": "2fffe74e37a38312472d291a24aacab6175711851f3af240ab29002e3985099b" } }, @@ -16628,15 +16656,15 @@ "259e682225d9b71ca3ea983216e57cd82c14b1caf25f00ea510ceadd3a70a0a7": { "e92b39158d271364bd947f52f560eff998ddd5a35107c0c0db7941eefd4f7424": { "jp": { - "updatedAt": "2025-12-04T20:16:57.333Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "2c89c66fd842068f81582782f55bf3db7be45f312e194edd1ecf24710a3c3cf6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.333Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "05a5cc22f9465e028cab2e7e34dcf83f63d324a763ea677cf20d28cef1efbcca" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.332Z", + "updatedAt": "2025-12-05T15:21:44.334Z", "postProcessHash": "271c4a904089c31acc201d494a15da7ceaf4fe5e7fc5b7d5829a38fe7aa462da" } }, @@ -16655,15 +16683,15 @@ "3b9d54215d217a013fc4c62df11f26627fb8449a0489b74cc0f54e6b67f41ecc": { "f789cb25007915b6d83be12f4ecf35805e8a487063a7a59b47c497602ae41559": { "jp": { - "updatedAt": "2025-12-04T20:16:57.348Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "b93942550d4f13e4608e61c4919aff309878cec0c1f3b8531deae7b6aa1d0883" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.319Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "3bed2cbe08157f7e65720bd4f3d213707445a409074fe6e534276d2d247b5e17" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.322Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "dd6042b12bd38833372719ac100847e42452316c16514ca7774060fb1dfbca39" } } @@ -16671,15 +16699,15 @@ "45c1b7f8bb110c2b37f34cc31252826058699640eef30ff8486c08761af44c43": { "605cfdad7a54e1e2f7b6a9998f6bfa8f8ff7b6a25aaa39281d58591fed0758e5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.321Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "fbf7e8253d0187de311233bddd5832411c03cd9064e4c0334022e4cb6341f709" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.325Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "b543df8a1170e4f9035430887993248daa94ef0ceec32433468a3f719cdabf62" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.324Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "6dd9f8078c3311a8a62a4ac2f43747ca728e659b147c423021a6d887ce8bc167" } } @@ -16687,15 +16715,15 @@ "4ebe189e35f19f43be4ad13fccce5f58bb2e700e31d412f381923ab97bb21792": { "11290a6b37b6e349be2a192bfb007c68cfed8458df5edab5bc48fab969b1ac0d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.376Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "f3aa7fb921a9bb6983e3ef3220919b8562cba6e543d9f210cc95c1f563be3050" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.375Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "159dd3d2341a402953f11c38a3f0c3dc82a5378a485b64a7b0883fd5e6cab857" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.347Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "32e61b90a0a20690ec1ba918fc1c6f026f77f55a2c7d9f57c630f958d7c55157" } }, @@ -16714,15 +16742,15 @@ "57f74a21cf2fbbfbe54dc4c14d4c397429d32d51ea09651cbcba81a78f831e03": { "9aff12963c1e1db4b1b461b751a4d72394a3a26138c1713efd31eb628aa3b7c1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.352Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "c38f2ec056ee4d641a31e2a3419d0f1655b3e1430a5bbb3702c23e038aa0e92d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.375Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "e17f998daf99f105c4b948bb0c3c451df9c8fd4bc6f5c96da5702a9d79d33e8d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.374Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "78056a8cca964a79566a705fbab1ba64ece85d05dcd53fb92064ccd9580e7708" } } @@ -16730,15 +16758,15 @@ "5b953d0cf7f0899bb919bde841ec506eb51ea72c7ba0a6629bb4b5752d8de8e1": { "09d39aeaf27e0704134e70bcefb0e1beae4d8ae180b6967a491e3e56a5ed68c2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.329Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "55e3f290a454180d3fdebf903007754cdd354c8ab36a98108a836b9fe9ea8cf3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.329Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "c6e0f37164e3390410417375735500eccc2469268d6b5df33be2a6727c3f8923" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.326Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "ceee9f6d78a56dc582c09b2c0d3bd86a5952da0c0335803ecb67b1bdf5af210a" } }, @@ -16757,15 +16785,15 @@ "5e82ab99152b96f656e8dbc01527a2124dec1e8c721a629d4ba5aeccc219db56": { "4fe49458ceaccad1ac8e3af48d763a09070b1428ec46ac6e0a3b4c19aa2aff54": { "jp": { - "updatedAt": "2025-12-04T20:16:57.326Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "14cc4128b0b10a523a62d38a67e92df33fab8f0e8c30e0d1de1781422ba78c12" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.326Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "773aa462513cdb8bff054c5d168b838ace49fc6139e0481ef4c3cb63f416e2f4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.330Z", + "updatedAt": "2025-12-05T15:21:44.333Z", "postProcessHash": "182388194a1734545aab27af003dd4a42c7efa700ebd0f375787bd0eb3d5c3fa" } } @@ -16773,15 +16801,15 @@ "61901cc301281214293209e58b53b0298e1dcffad02805348907ec14f5a36253": { "9b549c4be17898687f84e0ef17ef02ef8a374450b44096f17620746288db980c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.323Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "bbdf4318da03da611fe8a31f48ca6010e63e573efcfd298fe76bca8becbfcfaf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.377Z", + "updatedAt": "2025-12-05T15:21:44.348Z", "postProcessHash": "a32ec351922de7bda0e40dadf1288310c24c77040bf83812b464c176fd479c75" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.322Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "0e2b65f8bea6a315c3a95a3143b9da2aaf5667649c9cc076a283a01d41e91553" } } @@ -16789,15 +16817,15 @@ "7da42e0930f95e1e717b1b7d09f8c9528d7652d99f593b105c4acb72f6fa5667": { "50932fd08d4699598cc688097e4912faf9007f416960c261fe76c585098ca41a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "b9764312783be53293a093280762e4a4a1a97f24f855551c43380f07662f3692" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.333Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "8e42f2c096a711ff84c66197ce8f0c37d39295d71e5dac2c74cd49096cb4b8aa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "cce7a1cb0691f50afb1b2e562535608c3bd265098dd6b39bc95d9814c506b99d" } }, @@ -16816,15 +16844,15 @@ "8232385318fcb8ae5ab151696b217b22f9436e7402f061c4116986347a039995": { "d6b3588b7d8f126d5702902b6c9d58f3929c5d5c37ec39e19523d2d8bfcab2e9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.349Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "10b2ade9671e9b326e84a4c06046aa33e06de45d622395c9b51b9df823c2e748" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.320Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "ff255f1dc714e819a56aa6a6eb38719a9b3166987b295cdcde1fad75a89c6aa4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.349Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "3c64b5b30f690e7bbc82f79f845431cf09db9d37bd4ed747fed72f3045b14546" } } @@ -16832,15 +16860,15 @@ "92dee0e9ff8e8566f9e9c069b27afdb02424f6cbe89f46ce3425000461a7553a": { "0bf98344271fffe8297f5e0b128fbd8fe78c79025f276feb745ffa937822b839": { "jp": { - "updatedAt": "2025-12-04T20:16:57.362Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "adab7cc27d91046c8b9688e59ef4d4c6540b31462a5e2fcca6c9ab8e8eb91ec9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.374Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "241c1d1805d993fe97ce52ff50f86864fb6337c464ec3a63948f93807036a995" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.354Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "3e505cdcc2fadbf93a990a3d930aee9b9b622b44f554ba53467f21b1573d11ce" } }, @@ -16859,15 +16887,15 @@ "a4b6a047b28cc22275775b0dd79539a2be86c95aa7ced10a1b187f12caf79320": { "1c1a6afd778c1e57b53ba0589eef4c2e7796b728ad68d2fe6448ef393e873f11": { "jp": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "db3ddb99e9dcb30395a25694148b2cd07f4da975c1947339f53203f1e3536cd6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.297Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "8393352f6720b065afa697e891047626b48bec1aa1ec8ce9a41e12c66bbbc093" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.323Z", + "updatedAt": "2025-12-05T15:21:44.330Z", "postProcessHash": "e6696c664728c64b695908ef46e66ba27faff8384e25d2e4656c69b1c3b3db18" } }, @@ -16886,15 +16914,15 @@ "bab8d56663945997ddb532be83b22cfbee4c23f88c78951638579d4d2d0d0dc1": { "313348b374bfb31391b047b7169401cb2e79bf5da554b1b2fc8cc3592be17c35": { "ru": { - "updatedAt": "2025-12-04T20:16:57.376Z", + "updatedAt": "2025-12-05T15:21:44.348Z", "postProcessHash": "e577668b5d021e62f0fe438888a24fcc3638ff72b21a81e4b728751baabcb865" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.375Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "534be383b39d8823bbab4b0204cd35646fb6e22e8e29359b248f53b7553ff03c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.376Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "2b54cec5e7a83e203f35486ff8cc4ff0346aa96c96f5f2b5f58509105751e972" } }, @@ -16913,15 +16941,15 @@ "bb10891887cb78110e7cb4ceb74ff22432d01fac9a3bff7cdeeb1886f79b1a65": { "caa3bae4c975b756d6c9bef7d4ca4f1118fd3ff3418d4538a30aa4c9e33515f9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "d3a4b69aec4bc641d6ac5ca52021bb192bf947527a6c168effdf177c4fb1a7fc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.365Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "41336a080bc6c9e1bf72d61f10eb0b7e0e97d29de6c229a097af8f830ed3b352" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.349Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "ee47f6e1a1b7b8065cb762d132e35d9123919a45fccb6ea04c0d3b1817773627" } } @@ -16940,15 +16968,15 @@ }, "f874e3ae6b9b2413ff9c4415bbd53d217ecc53aa9c8754f7d8b43a840a56a1dd": { "zh": { - "updatedAt": "2025-12-04T20:16:57.320Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "e7bd76d537c68ab6b2e2c12672361ba0194e9257fdb22a5739c3450401bf9557" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.320Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "3e207ff861cb6feb7c9bd057f983a061043972097bd68ad51611e043f5766f0f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.320Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "accdb14b48bc008e9bdbb3adacf02fc78701b6866bcbd8b871502a567a9a5043" } } @@ -16956,15 +16984,15 @@ "d30ca35ab36b18a178b446411bd0aa3076c904d43108702bb21cd5d8efbcb5a6": { "87455e817468ce7973be52c22bd571c3c34f449207bac87d98cf83d2f67a119b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "f3df9a4263f5c85238bfe735afc98bf51c39122cdc1381c5346b2117b53f0184" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.347Z", + "updatedAt": "2025-12-05T15:21:44.336Z", "postProcessHash": "33085ed160e0a70b5fc8c4752ce695612393dc5823516902a7d440f60aee6e78" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.334Z", + "updatedAt": "2025-12-05T15:21:44.335Z", "postProcessHash": "aa2fd797c067a2f5cd73efbbefde0dcdc8a6efb9796ed6ff5301bf27d2c79f91" } }, @@ -16983,15 +17011,15 @@ "e39ace6f98adf22617bf02b8e1b5e543cc789b8aca34a357f850131c862245ee": { "18eb1c50ac74effbf464a4c046b94e4cb6fa9eb96d70864437ccfb525503aa01": { "jp": { - "updatedAt": "2025-12-04T20:16:57.329Z", + "updatedAt": "2025-12-05T15:21:44.332Z", "postProcessHash": "2b0b57bd4ea06c8e5c4b9a6c95f831407c19fc778e4ee4b961a91f8b03e6a405" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.327Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "12faafb913455d155e5dc524d4294cff74dedf15da25a094fdb5d81032ff595d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.327Z", + "updatedAt": "2025-12-05T15:21:44.331Z", "postProcessHash": "b0274324d40d83cd69e33b1466fc81aa54a38e58e35e580f055e9331c245b9ad" } } @@ -16999,15 +17027,15 @@ "13087be692dde9b7feef18870d3f79b1d18225ab44ef354f1e90c30366e1c433": { "4c3eaabe73297be96e394821c21a7b410f9fe4c375bf5d324f6eec00d4aab141": { "jp": { - "updatedAt": "2025-12-04T20:16:57.374Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "d15a10a3be7d4c65c36a20468a5ccbe61bd0cc1e69f7bca394aff5fef5b9a9bd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.355Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "db2116fc9d77c22de73cdcde1355264d4833ed95a39facfea5292d3230ec156a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.371Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "f669e2512970173554b1de46f827d0a0ed50ddad656a77ef5e44f3789fd983f3" } }, @@ -17026,15 +17054,15 @@ "188f9a9bc3bec2ce321905c8a56a28198b42bc1f90b417b6ac00a4d9cf3c147b": { "8e6933142a9b80421dd489117c3233c45a2645cae67fe6bbf99c75fdf827c9ba": { "jp": { - "updatedAt": "2025-12-04T20:16:57.373Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "7463a17bacbc9d279559634d120ff59ddb2d3807dbffcc23ba1b9f730f61636f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.366Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "511f5bdac0b716a96f44e0fc7b30e6bef017a6c2e1757be90b101aba7cefa1c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.365Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "cf770c4d100cf7c4819cdd20a1a598abd403f147ac1e30bc0dd6d22b62771559" } } @@ -17042,15 +17070,15 @@ "1c00ec1111d4c97040f8a6b4705c820bc0afe08ce75657d4021750534563cc33": { "b2e299e5c648bc6c75f661d7ddb0d415bf3f4d2d15b1b81f676f8d781e4ab3d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "90fabaa1f489aa677e3911e3e2c22ee330af3ef3357e554423c3be3efe5758ce" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.351Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "6679eec89b7c91f343e16613fa05d9707c9cf0cf5fc27e1cbbfe1c7cbbb45121" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "cb008b031e52d5740d85f2ff41dfedeaae477f00b3203483444cd17af77074c4" } } @@ -17069,15 +17097,15 @@ }, "4b159102b8118d1c5f860203e158167c69c30018a911e2276f3dc980a4d34d58": { "ru": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "713919e5bfbaa1140857d38d65c0897d30bf48e642820a7f4a088871f00fc287" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.393Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "7d373b90d1e51a605faeb92e1f6e0dc09b43678a371f261392782811f6ff7826" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.393Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "20531aa7f84930db6bf5e0e3d87ee7e9985eb4caf6f6e21faa4769ec3fc9d603" } } @@ -17085,15 +17113,15 @@ "2fe98a07a0771f0c918a105339c7465f1d1800b749a6786ae052b4f5792f8146": { "bc9d4d641f5b9a05f88360a2ee33515689607102fb6c336b63a7598960ba63de": { "jp": { - "updatedAt": "2025-12-04T20:16:57.385Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "5fae19cce12e8fd7208330ead77e8235b945eef07d04f040fcf0c57e2e6997c4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "f3218fc9c005cb6bfa695a6477f3b30951b6cccae27b2bf3352f45bd692f3fc2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.385Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "60ca586ea16fee7c71ab63035eaad4535b80cea6f6395bf8a5cbfeab5a2d74e3" } } @@ -17101,15 +17129,15 @@ "341051d81c779d41671d446f22d563f3189738d32b9550e3675fa7143546561c": { "7b5212109cba86689f00d93efb9aa6bdd2aad536bac1da86a77d78443cec95c0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.365Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "b86184a1e7c45332b09c540f6875e491ef45bfc2942e77b632215d98c5e264e1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.374Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "fa5c4556e8011f86934aed061008f5165b76068c2d058facbef9e751a7591a29" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.374Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "de1f02951e7ffb89115f8f5d6be338e93f2938c9af79037f4ffb55d751e4dd9e" } }, @@ -17128,15 +17156,15 @@ "513fe6bad8509823ffdccf71f911e6632a1d6c62bc3828d6880a93c15b106872": { "8b0b91827d9a7c004ba4a826838ebb29f76a0224d429a5d945acb7d900b732fd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "85d9e4f6facbf2633810ecc02b699e945a30c535ef34fd9be2e78542edb6cfc7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "33d1c11d5809a56b9837c81bf9ec26ce53a2f436357b65407be02d64913f04e2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "3d11ef68efc02d837d13d3339af85bdabf60e8aff5dfe5e6f929a07e4f30ce45" } } @@ -17144,15 +17172,15 @@ "5aef4c42e18c1cc3dc46fc838620121334ecc389acdb56926a191d15c08904ab": { "7e58d82c11edbb334ceb08f7f620a974944c8ec3e120b7373fd4e03a17ac6cc9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.374Z", + "updatedAt": "2025-12-05T15:21:44.346Z", "postProcessHash": "269f2a9dc97d55027db709439164a46d40eee85e8428a87213a3c6dbaaddbd21" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "794696d349d0f66683b62aefd92e5f920368191d0e385b56eb943145b607cf00" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.373Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "af48790cc2c5bf4c2ff094e8ec6d8dd6c7525ea9ea2d8731570099b67d8fb53f" } }, @@ -17171,15 +17199,15 @@ "67b2cf74cdaca50f8911af9d708d0de9b1f69f0efeab9993911fd47c8fe2f59a": { "cfb3d97b019aa58d29e5939b08fabed324c21080592e9c094aeae86aafccb4be": { "jp": { - "updatedAt": "2025-12-04T20:16:57.375Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "fe4c5a29c33425ceed7fca6c22a89acecf8496296bc64a9c5979a10428ded9f9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.375Z", + "updatedAt": "2025-12-05T15:21:44.347Z", "postProcessHash": "31e16e480cf8c83907826182b19bbf8d096663c69462f8afbb8c28df1ad5c1ce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.319Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "824979aaf761c3bbcc7f7033c7f0116b6b64ec55dc0d21489b6ad00cf368b04b" } }, @@ -17198,15 +17226,15 @@ "721c2734aaae37ab2cfa24011429e694a791b3fb975c20c543e63c974c336cde": { "9ecec8ec535a5264bf7ad03315791abb102815a602f895880c47fb817859cf24": { "jp": { - "updatedAt": "2025-12-04T20:16:57.355Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "d63b6ce8d5689c0683454cbd56a7c22959ba42fbeda3c13cf034403871cc1146" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.377Z", + "updatedAt": "2025-12-05T15:21:44.348Z", "postProcessHash": "0103d4d8aee5d3eeb45b2dac9a015f69c69c783fcff6374d8c829f0f256c106d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.324Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "b993dba7e880e823839ea105a29940b01d82b427ee1ab0566a84e5a2a29a00e0" } } @@ -17214,15 +17242,15 @@ "72afe36eab2ff12e14d4d91a26552fab2abc011f9a4ccde2047a84210368f35e": { "1560d332f0571ac4c9e52b7b887c8418554ea38f675716836286eda06c730b1d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.364Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "22fa1d9affcdfc76f66f842d5d9052dab534ec1a8fedf5a23183648e0a9a9f93" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.360Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "d7b0596d907baeef079fb4dd561a1a72774c365c41157e080f8bb2b065199492" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.356Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "6ebd1e34c9bf8c888be12e7d8daaa9341d8de1c88b61476be479fb65759be603" } }, @@ -17241,15 +17269,15 @@ "8315916bdb3d69fc26c0b36f0b4378146ed63f736e03228e62d22efe01d9dfd4": { "5856087df98f6740b4472f367157e174efdc961ef37e3c1247d0ced2db5782d4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.322Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "468ef70d7c76e9c7923e2c1b3602529f07a1dc781c0753fe6a9d9a80311d61da" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.351Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "3465184aea208b2bc9e1adf80585b8495933f091f1e8f8fd4f23eebed4f74215" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.322Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "f90dc06da92b8c3823148c69fe9b8a74ad47803e07cf6afc64b21196d34e4c02" } } @@ -17257,15 +17285,15 @@ "989eb966fc80a9e76f90dfcbc66e0dea7d1236c5a18dcfc3951a22c271c46183": { "501b56f9eae0cac02eb27cad28e73a3ea80b0a3e66d207d53190032406e903ec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.363Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "40fc2ccd1f620fcf3e12949ae14ef43a5e9024cbaa57ec3cc258fc40dcc2cd9d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.319Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "18532e4f329fd4c78566f3ad855ebbdcfb5c240d3e36f6ca9ab51da494b9c444" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.359Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "8624027eda0dc6de07c2011a0ac60d10ed4acf46618d11235fa3939de78b4500" } } @@ -17273,15 +17301,15 @@ "baf8aa50269f83f9ca719a087ec8ad23a44645de6e886fe94ea8e017a880d3bb": { "bcb7bc6405a8a18657a3ca87a61f1366339dfcef97912463438b8f97cd471adb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.324Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "cdd00ec91fc2a003dc200ec727349362c3ddb29760570ec69b7f9cd3696d821f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.354Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "a28a956661869e60618d66bed6b6364d3a25e738b12520becab7680ebec74820" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.319Z", + "updatedAt": "2025-12-05T15:21:44.327Z", "postProcessHash": "c8be606d38a8d8c9f6a49f7bb271630c1d8e7c1b82060751b61aef26ddfa3fc7" } }, @@ -17300,15 +17328,15 @@ "c3e128b68f1271e67f658e6a27e710c60881f8641ac2288d555daa3208c005f9": { "13e7fbfbc5e808dd0b360b17e6a4fd7a2ba6d1036bc640c856da5cc47ecdadde": { "jp": { - "updatedAt": "2025-12-04T20:16:57.320Z", + "updatedAt": "2025-12-05T15:21:44.328Z", "postProcessHash": "23a0f8fa9926fb1781e90492c9a6210915691b7587335fca5cd867489ad608bd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.355Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "acba7fcda4e6373005c4868374fecff027905d257203eb6b6d5d2cded48500bf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.321Z", + "updatedAt": "2025-12-05T15:21:44.329Z", "postProcessHash": "89aff3b9967ef3c1713f75dbda009f694ceb6abbdf2dfb17ac65372b6442c270" } }, @@ -17327,15 +17355,15 @@ "c484fc5a7f3148583c4468ad2af97f94fd9cc073f7098786a953f31855eb484e": { "bd8825806b6c9a9fcfd0073d67b67df3440ace8280431d5a8c8dad6ef5f213ec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "f78972114aef21607b7b8f9e1265ce628375bdc0825b895f5fcdf8f4e48bf5f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "7eed257047daa3afe04317f684615dcbf3c3b722c7d55c3e2e496cc64fec58c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "1d3273a068587a537efee554f872470a43e5114fa400c53aa03cc4d984e9fce8" } }, @@ -17354,15 +17382,15 @@ "cb12578467473a3c801b153c6cf4d13a10cf518318fd5f17155acd1793145e1b": { "7416b573c39ce724ff3be3b7fe423ab34f30f16536bf6cf0fdf7d2ba979a33ab": { "jp": { - "updatedAt": "2025-12-04T20:16:57.352Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "90e7a938b9e834fed8f5e5a922daf1eb73a22ae0fa362c4b64930cc753b92b8f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.372Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "89c27ea484a952d813be3614eb7e4d9c964bb0358b8b3e57df43af45aee806f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.348Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "f623612a89e1c21d1bcd40ee3600381403e14d6ec771a414a4f59eae427b619d" } }, @@ -17381,15 +17409,15 @@ "d7f86ec094d4fd68c7ec3902e09e9c8d6f32e759b1104bbeace470bd65c6ae68": { "aa75faa94f785331aff5bdbe2cbf5c4d6e4d398591d7ba48c786aa44ef7c17d8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.356Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "434aded90235c4991bf54e3afbdddb76eb48aa37a7d093e285062b2908c45477" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.349Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "d286d1dbc1e65775da0aaf967505ca36a440d6e5cdac34d1f8b2daa0b08b7f25" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "ca4d08725cc391e8b91c50123a23168ca7e90057c6da2c40405f0d5a2c3dec87" } } @@ -17397,15 +17425,15 @@ "dae06bb227a02c2e0c6a941ce0fc26005199e52c806d58d5e67386d3ec46f9d2": { "7b4e58d24764fbe8ed14bec5a6c802f2f143b902c16c654c45567175ea3ba639": { "jp": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "1c4929e8188ab915f1dac62aad8013d4590790a20f218456f60ddf3d3aa1bd09" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.366Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "96f6dc17e55b3c1df0355219db62fdf87c098106bf1aff54a35e8fef356450e9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.366Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "28b82b5de9f103c12c48b14380ce9372179a0cb89099c286debcdf49d346e0ed" } } @@ -17413,15 +17441,15 @@ "dbffe2a957cf5e50f0d77de216e876face0751f13e47da2a20400d54d5665054": { "de205edb219286909fddbd177c0ceefb00f1d4bfa1753f3d37b2539c40ccb3b4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.372Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "0cead01f8a01ace2a7d8c0b96a249cb078878d7c503f81d829941dcf9dbf2ce2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.373Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "303ecc4dc4c2d28401a06b68a156fdb4bccf9286d95320db8602aa96d620fbda" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.372Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "cdb0960b5ae076eda712174408733bd0b597277ed28cf292fef7101949829471" } } @@ -17429,15 +17457,15 @@ "e05629c59a8527d19506d4c60937f73b19f3d5ee1a52750f68b76b2d39b9d9ea": { "746136ea09bf1fea642a7fffc300c1227b17aefa177ec7ad998a0d64c56bbef6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.363Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "4a1509f5faa7dc02934b2ee7f800ffa265f225b661a47242b0b8747269afd78a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.352Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "a795b35a3f86fc3112ab357482aabf06b5da32ef132a1af80e45c7b00a945963" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.362Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "946d29d682818eb10140112e5d72ee23c5c1953f86d982af2d7d52d13a4ada36" } } @@ -17445,15 +17473,15 @@ "125f424723e0504386a4a184da1e7119c6a2785f018e32a19cce5e8d2b7e5836": { "b707bc414a14120fcb5707df2de39c191647cd3b486308a8a5dafb116a49cb6c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "639b3a200002ddc4f957d2e1e67b2646d8269ada508a506c25e76fbf94dd6fcc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "fffe3424bef38267c6f10dce60a8584f27f8cbaa3e9261599ab0d451bc4bed3b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.383Z", + "updatedAt": "2025-12-05T15:21:44.352Z", "postProcessHash": "dceda4085b9a0cd9acde6ad7c6b3139aa5c09a1006f4bced81b9f3232ee62b70" } } @@ -17461,15 +17489,15 @@ "19dc76f171fdf3b0cc1a3933538a1ce4395d12a9b9640597e4903ce3f6b18874": { "de4790564f72c39fe581e10e8ac3237721217d6c3c4ea4ad3cd07779bcc8dcf9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.349Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "6566d398aae4da435dfa2f5bad0fd623411d3ea587e872970252d1db6659bbb6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.384Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "ba40f655448d8a0310ef4be8087c54f30d3f862f5ab2e829434de4deb513bff7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.385Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "63e13c28e42e65822a8013564a6604ca3e11af7cba6056e3b9b8147f3a225812" } } @@ -17477,15 +17505,15 @@ "1ce6daa0ad295dac3a93f320fa28494beb73c39ee95608595b498a15a3e40ffa": { "85d971b7567c96e52bcd05d9d21b9c8edef12dd133c8c50e8b309d2d5aa75dc9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.400Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "ba99bbdadfc8d183755ec8bbda4e391a53bf253de6080df3a3e36f0c962a55f4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "415ad3a1c1fcb042b8e430b6269471caf8095f66e71cafbdf9747c5365f935d3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "c546b61ad45f80fbce914c996be6af73fe47838a93d213ff6fea3d5a3bf9c9b7" } } @@ -17493,15 +17521,15 @@ "232c5ecb0f7a4603625517e022985cf3f01e1ead564c3eb970640640aaae8e12": { "3cf3a4419ef85aa0f20d163b55039c8180a0e1cb6acaf80999e00570756a5e6b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "201e173f6fd7052267b75604fb630955f45f55f6557e26c1256711f02ebce5e1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.348Z", + "updatedAt": "2025-12-05T15:21:44.352Z", "postProcessHash": "37d4fa4ba86d1d6528065ef494d0abb4ef1025c7da03500b15ee8ab8cca09417" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "0e0f0001707884d781d7435d986af820beef9f06c5b971182daff29592b9540a" } } @@ -17509,15 +17537,15 @@ "6731708fce75a234e44f1b0c956e538194421e979b065c7885b48212f94f5cf7": { "90b07a9d7262bc7ef0366d310777b0b0370a7a92ba12a4e6abc92359b2507413": { "jp": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "ee6c26bdb7d43e2def6a7c60818f344457dfaaca6aa328c1e3502a36de5b93e8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.384Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "2e5b5e0e9daca13f941008fc0dd5b90b53c7f18695ebd1d220f9b0f55bc8aba5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "3f88e20c5f0c08c238c2096ea51bd3910f2bb0548038b53bd0efd5fa7f3db4da" } }, @@ -17536,15 +17564,15 @@ "70cf97c8fc949e8db59f1ad657a9a53e576e424eaa88498f6a60d5b2e6729885": { "338d9d04b8e82dfebeacc09a54a398e5b4290b074e597a101394bc9922a1ee1c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "d5bf0201aeb67cd67ab8508bee6416bb164da6c2dae316369f6c5e3696e9255c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.352Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "b635543b4549e5c0cf1f798285d916bc8467bb7db5c36ae5fdad834309e4af40" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.352Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "91ca42f9743a574b29b90785beb13a1033e24f63b96911b7da66fac8e43d09b3" } } @@ -17552,15 +17580,15 @@ "7fa7f13fb2961efc9814d134b779cc0fe6672bcbaea9bf48e814ee1d05addd82": { "b111ecb2cd1900f390f7f5548b4fb6a727aefd661dda094d15b6c7351b124265": { "jp": { - "updatedAt": "2025-12-04T20:16:57.370Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "472278d625be9d145755b0812c884f078f24f0213910591e51b539583e70fa4c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.352Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "530bc476f5f975dabd591f565893c384ff6fd5c3ffe7da284560595b0503661e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.361Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "a5907f132642c66757586c83dcd3680c20c2bdcb190b537a0be070f1bbd8fe1b" } }, @@ -17601,15 +17629,15 @@ }, "f95ba4c4300ed79512639406575a2a02d4370daf2f9f94b0e2fa01cf5198630c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.393Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "5be24af8c64d51e0e0f51836a08dcc65811a43330fac053b54c7688abeb538b0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.393Z", + "updatedAt": "2025-12-05T15:21:44.361Z", "postProcessHash": "2d2a0f5e389ece7e4e0109285f5fffc2c1ffac091910047901989785e0086140" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.393Z", + "updatedAt": "2025-12-05T15:21:44.361Z", "postProcessHash": "a4baa250b2d07d27cbe38ece3f987311155144f021e89e5f470bd2c1c1879ec0" } } @@ -17617,15 +17645,15 @@ "998f0f4e3468e7524c434f473537634e659c94f841a46f5563bb39a4ef82c64a": { "cc945ba5712ca0c208a5b68dd98646b082cd93aed560249a34be7216e338325a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.372Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "94c1d1afe742dbfcf44aa63a59995e7c10537cc85e34c8212c5c6a13082d28c8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.366Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "398a5f07a7ef09c2c778bd543e10e0b604c42476642e7b9c15148491875eb151" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.372Z", + "updatedAt": "2025-12-05T15:21:44.345Z", "postProcessHash": "fd52803462376e894ed8c58720cf1cdcecd556be9404efb856fc9da401f4bd32" } }, @@ -17644,15 +17672,15 @@ "9b57ca46e862eddb44a226a1ea028a1678344782bb5bedd683e47de11237eb37": { "3677a4ab1311e72873d3ea0a7b9ee486d601653054d95434f100acf8fb1a4084": { "jp": { - "updatedAt": "2025-12-04T20:16:57.385Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "4dd89d10ea24b0190f75c91276f64de87a17a13cacfe048a1475d32c5dbb46c3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "ee3ba3fe57f50faf2a43555d44a6cceecf5e9aaa61bdbeb4adf40ffedc83c519" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "9ab01c3a14779d371ad53ac3f4c70e407b2ba51ad0de4980275cf5a549d5307b" } }, @@ -17671,15 +17699,15 @@ "a725d7aefcb81ca44df79432f1da90c48ccc1821c943c4aea64ec662f97fc340": { "11463482ef7448e6a135decdd6e0c2680b565473c869d4016976dbdd9ebd3fd0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "cc2e3ee543f615b66e8602dd4506bb4aa24794f6176949f6abc04ade3f2a8397" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.354Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "d2b20ff03ac89713fda5aba8d4db4deae2959e9c508e0ddc5d67d928d5749bf2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.365Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "9624773d77b2f92736700669fde9526bca854fcad18527806f52d0b2c75cca24" } }, @@ -17698,15 +17726,15 @@ "aff518be70e64a7690e4ccddb5d480073f10c95e3ea3c17ad5f290330ba897bf": { "6a9dc9ad629f0fdf6c6df2ec6b40090ded099d6d2e5c42feac66429630d6b1dc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "d8c67fe085db62e3734bdc90483860940541202a0206fd04b4dcdf6838a1b1ea" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "cc62272c3b75b2d2b12c723881ad20363e8e59daf90463a1b3d758fa58b91c35" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "ed51ad14bb5ea7d5be99e9d26313c10f2f45cbe2494df73d4090543e1470bc52" } }, @@ -17725,15 +17753,15 @@ "b02ce70d6dcff3632894b67e171d3cc1146833fe54d4b06011bbaa8c85a0884d": { "09c5316a4d219ae648cc28e8db671f96b825f4184cd4e8e4a511bae5beff8109": { "zh": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "3eb8b67aa6178ac247ce3e3bd46943b9d3e9dcf3738021a1e75c75bee161b04f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "f7078e8e29b0338931e680318a6a051d3cc06b9ede900aacc289c57b179c0772" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "99d63daf2fa85550034e3afa2098b113067f8e0defa473a27c9326458903760d" } }, @@ -17752,15 +17780,15 @@ "b0eb0aa22feb0a0e87aa525beba888ab6c811439fb42a8629b3439c190197487": { "f0d582626df8dfbb7340a088943ebaa56822080b63fa866b42e18086e898b317": { "jp": { - "updatedAt": "2025-12-04T20:16:57.349Z", + "updatedAt": "2025-12-05T15:21:44.352Z", "postProcessHash": "514b935a6e2cd03fc1a3aae435a509cda24bbacf7afa776b9baab3600fcd1196" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.384Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "7f4618656707cbd5e9ba72090aa93e71e28737bee49973783d0d8b1efbf5df6c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "e1864a3d123593c5fcbb8d55585c1dd4e11bfb70890fc08f7034064a4dcdd6d0" } } @@ -17768,15 +17796,15 @@ "c5321e7f9f222609b774837230342fd88d3987594612b1a1a987cb8500748344": { "6b17248bc93c579b8212f6684732b598b2781d46fbc0ff7686c6c9716116d43d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "3cc1fd3998316059ffefd5cee65d9f184b5e7522b23df7fe3f28f8b337c36d2e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "0675f49d6b231b94c7e0f15ebae3ca85041776a63f964a186879dee2bf97ebe6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "ebf19f9bc1d7b8773ca3afd561117694e31e9e978347b5bf7ab14ebe8b249fd4" } }, @@ -17795,15 +17823,15 @@ "d865d8906bab480f2412b8134877a2a96913a3533480602839cb1425678255d8": { "40e74dd63d675033a626615c8dcb1dc2d2ab2290058dacdabdc77986ec16b1dd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.366Z", + "updatedAt": "2025-12-05T15:21:44.344Z", "postProcessHash": "80f4c833cb40e0e67035367514b25c5394bfacc8398c0d88cf12147e7984f527" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.325Z", + "updatedAt": "2025-12-05T15:21:44.338Z", "postProcessHash": "68b64f9a4e5b3045e0a798c64a1ed87de939871733175279305914a520428705" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.355Z", + "updatedAt": "2025-12-05T15:21:44.342Z", "postProcessHash": "0d71f89e4582e999d37a21225a73f8e39009b89767629fc85d00b791de198422" } }, @@ -17822,15 +17850,15 @@ "db1f6b413c1b5c95a7fe86857804d32fa0bf64bd126d0d1bb0a19d36642d1ff9": { "2a09e7a09ae046fb1bc7a86b262a2891822048befffff23b62cc68c9e7e58324": { "jp": { - "updatedAt": "2025-12-04T20:16:57.362Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "f718d1ddad686375fe27dcf1068f16bedacc711f2d6696092c49daea52ff37bb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.351Z", + "updatedAt": "2025-12-05T15:21:44.339Z", "postProcessHash": "65222bc2fca56d7e5e8a8b1fcf92384e8d2243542464ed21d7dfa93dd7c14342" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.353Z", + "updatedAt": "2025-12-05T15:21:44.340Z", "postProcessHash": "f1d95524deef78ce639ce70d7e74cd524286003ff0fdef008be10925c3ec1c2d" } } @@ -17838,15 +17866,15 @@ "deaf9da7af41c9dbd196870e7d946c2d92a2b4098eacc1d9d67ca6e552d438a5": { "fdf52ca20d97fc34fd94ada024eedfd00d77d9abbb0aed5df8411acf741dbddf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "a7cac9121ef2488d4638808bb191604310f5e752aebdf6718e5374ebe1cf3184" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "ad6b109dec4fae12f3941ed2af9bbaad87ce50976e7850ef9155d6bd1c932878" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "d1a54dc88951113ac69ec7ea74c8626ca15d9bbb7bb418c8284ded093fc9647b" } } @@ -17854,15 +17882,15 @@ "ed51dd17995f6639353bb7c4089fa97d4f8dc7203bca3e26312cb31005fd949d": { "a382bedb279fccc3ac9fd5b4fe0ce9a876319b2d0652651cf74622f32f475762": { "jp": { - "updatedAt": "2025-12-04T20:16:57.359Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "ad02e08a928d952df9c71207831c8fd8124f79a83619dfd14a6b2bc941a034c0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.354Z", + "updatedAt": "2025-12-05T15:21:44.341Z", "postProcessHash": "15e2c08351e5c93614b78f3808171aafc430aaaae0531b9b1f280a819c9bdb9d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.360Z", + "updatedAt": "2025-12-05T15:21:44.343Z", "postProcessHash": "7efaecd79f9795c398e3a89dd50c742aec07d33b6673621c11bf9ae975fa7aef" } } @@ -17870,15 +17898,15 @@ "ef55ad557299e30ca7d8ccbe3f701f3efcfb9407e677358fda64040c88c2a0e3": { "b7534a46cfb2aba578904a3ead55b3a917dd6ea809c434df147c1f98e5defeeb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "047fbe8f9e520a9c7cefc69944a99b2b69cc7b8e75ec1a3fbdd5f1f245b522a3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "6e3d1c642ec7f5d547f3bb89d239fe9bec196004d1a6f550cbf5ba4300e6f9f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.384Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "4dc62aba9d9299b6e444f9f64dd126b77e8a64248fcc4e3c09e64d3063b36c76" } } @@ -17886,15 +17914,15 @@ "f4e514c65ad19dadd6e36981ced2004e96119143057123e6f8343003c976414b": { "f9be206d9401669361ef8b3907f74e41604e01c3da770a270a3b262d0cf9e0b7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.347Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "82991c7736ab988f28d5bbcbc37d67dc082ed9675d2c9021e05977e4fdafe973" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "7b3f7f91a75ebed362e6005e9e4b8186dc59a7ad132ce22a402bf913632510ed" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.350Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "cd417b9d1435c32e854a59b730655725ed51c078890a57a79dadd1760b342db5" } } @@ -17902,15 +17930,15 @@ "fde1eb9f476467503483925174bc3e07ff1b6152ca9eca4cbea2189875928f86": { "5b437c2637bdf116e6ae9dd7273b3db889d01e6006e1510d494e0c27992a8abe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "288bef79b82e46c2514f2604af9e2aff31e8c72df2fce2e4ffe5170582e704d8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.390Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "2338f227a44daf7e23429498b59ed22d9c515b0e7106ea6eb0b41e1b8c6d4ce4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "f97d11fed715174d952fe8f6f36dc631e84d93e7c6794508450f2796098bd203" } }, @@ -17929,15 +17957,15 @@ "025fd49fff3f320d5bf6441808dc379cdaa73f78cddd66059a1f1d989a1102a9": { "5cb5606bdf1fcec7d40bb07c9211307f195d39d691aa2cabd78b397dd79771c5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.378Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "dfe7f0af643b5073a1f750c2b1275601db819a15a8ae1433959a2c324749852f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "5d0afca2f2ec88137b91fba0b4fe5f13fece7614556104790197dbb5325bde73" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.395Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "bbef0504f3ae7c8427e93e91bcd51387a9d34e0b621d9c3a053853a17082fdf6" } } @@ -17945,15 +17973,15 @@ "1e4b57e276f3147467bca9c9b34ef7237444bbb31a33e9319c88df9db588b8ef": { "781ade8017e15eb182d04e5802e03ea4655dd91aa963a8d3d6d5e111348f2ef9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.406Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "46fcb2a203a8ee8300b96eb88d9c150937940b2c2cad4d5ac580f4c7720daaac" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.402Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "390868cb580fbd5b17cc193b27296464645eb7a5ba7f593858382ee288ef3fb7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "c0a2822cf8d4e985f58d014d5e3b2ef28f544c12d00a5ffeffbc0aa69971ad2c" } } @@ -17961,15 +17989,15 @@ "243d4d43037034f08f1c4e2b8b9dad2508192f28c9087e19fdb7e02cb828ad52": { "8945c696900efad4645c2f95b6f862201f4275bbed3998caa867b1ac37deb350": { "jp": { - "updatedAt": "2025-12-04T20:16:57.402Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "5ece8aace7de6152433126b770180670fce9d54f7cbdd2a12c3ca3506a93996e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "3cf499b5637900e639ba10877b190ec477033402401f9ee8a3ff72b2a59a7340" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "e5c507740645ee74164e2c5d26169b83d10cbdbc09415d15c4f64a5acfd032a0" } } @@ -17977,15 +18005,15 @@ "2d5ce469cb4fcd9ac57756723325805176514ce512b8039ab05e3fde56bb12a1": { "37840663d4e6d0f5bd1b9b294c2b0feff352bd6bdd003b973cd9e9e03ef04b2a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.400Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "abdf2ad8154e2f0c04e371069e0ce812b28490dfcca52c636a48bc31a69893ef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "93e24a1a82f8cf19d087d9dfbb510e0d61163d754e395e43c2b049e13141b7e6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "2b269feca9802ea9c32e2ffbe85af2f2e35cfb7f5d718e3ea0e344b2af6d264a" } } @@ -17993,15 +18021,15 @@ "344aa60f54b872aa215951fce76265aad2f3f1d6ff8bacd50188b941ce5098c8": { "7a8f03b82b278bf1a01cbbd7ff1923941fcfc7239248c640ae1b2eec075f2bd0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.406Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "1b8c8e958bf4522e57e12a8657b691926df8adee84331b485f15697d798c8d29" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.404Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "578868b4aee5372b1b1421f08f28fb0f83945cd91845cd9b967290e893441616" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.406Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "7b09b35e7b670af0ed2ab4071a58fcb8697c1b2f6b7f633a880c78801a8a5897" } } @@ -18009,15 +18037,15 @@ "53d65ec30475ca0007e7da32916549bd02696879f561f268e8e3a58c0dfe9de5": { "e1d20246377ea7703705aeea779bd04141833d80b87084862959aeb3e9a08c2e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.385Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "e37b88880dc4a3151b67d534c113cf3ffd14608e92a0a9544fa46f53c22183fc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "ff16f55530f46df527f6a7a3f6c3382af2e005108dc14525779e9c067d131d00" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.383Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "88ced1772e9dbc83392b462a37534eadfb741a2a77fcccd25442653d50788ffe" } } @@ -18025,15 +18053,15 @@ "5b9f7f3fc45524898a5a0adff01cb46775280fd54d8fbbd51c0cb3cfb2b7e78e": { "1f25423f1068a3269325eb00ebe91d4fe71d603537f5b9e8c9b81de44ef31aaf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.385Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "0cf6908dc3a389ebd24440319e7efdfee13ca6d1297cd88b5d589015fe05c90d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.384Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "cfe95609848b89e6a7cb753b2aa491890dc1a119ca76e262d189c687118d2515" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.387Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "57d2a8ec849ebb8b9304e3a62f5d2d8c5c661932c071cc3d810083454792daf7" } }, @@ -18052,15 +18080,15 @@ "5c4dcedff3da1da80fb63b9461c1c89223beee53c37a3b5a538edc528453f0b2": { "620bb0c22df1a23b2a8df3eb395373d44296904b0332797c29514f90a31606b2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "54ebf8cfc447e67dd29ff4030effbe51d137e469e7fbbc854feaad9c45d6ad47" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "3f332c9b05e0c3fb08139ac33e9ae6a72575ca1b7e536f39fe31a7a3058d3055" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "6a313a38a95aa9d5a1d8c0baf48a0ea1e91f3eb653e3b52a2b943e0b72df073a" } } @@ -18068,15 +18096,15 @@ "719a6d655a54f957cec2c65e95d6651040b93a639ad6aa44861b85ae09c1c5c5": { "fafe4a083f40e8f75644ffb779bcedb7065ad373f06a042ecf2238313aeef393": { "jp": { - "updatedAt": "2025-12-04T20:16:57.348Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "7754d3225bdbdbc5126e6a8d9824f7195e66e24feb845fa50b9c90cc79eda924" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.356Z", "postProcessHash": "b26c7d2427fc55b67142bd31ef93dd8da48c4670d3e0733d3189114d217b8839" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "593ef13ce1953fa1a89269ead27c2e8e2bdcb5acfdb16a2ebcd5789d16cf580b" } } @@ -18084,15 +18112,15 @@ "82b281d3017bb8cc4db38036df8fbbba3430846e468a784c1b2e6d4d8e43b6d7": { "617961c999f1bf6eb48c03b5f56f99b3a7309dba7bcdb74914b6a76f36a56413": { "jp": { - "updatedAt": "2025-12-04T20:16:57.348Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "690d09dd69536a3942cdfb603f003b3f6b24f86f206ef4964af60531881140b6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "43028605a4a849b8a6d6b55f2f8bf39ab321147fd161ddaa3f7b81455f7d410b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.391Z", + "updatedAt": "2025-12-05T15:21:44.359Z", "postProcessHash": "15324b3465fe8d4a35e4424534472fc67a206dfc723a47dd05fff079e205d2f8" } } @@ -18100,15 +18128,15 @@ "8cbea57ac40a6d6358183da1d28c1a09304c1b4a5edf96e2c4a808dc6773ba41": { "39a62a98184d3c0536249ba36e562c954047436e58e929927516fea5318e895b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.358Z", "postProcessHash": "ab289d102894c33b531c895a6e16f87a5f70863409d8af8032b8efc3e485b674" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.388Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "9768561d2c726cfd133b78ccf7a8e3028419dcfea8daa392ebed159bbb676fa6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.389Z", + "updatedAt": "2025-12-05T15:21:44.357Z", "postProcessHash": "f2500e62a0963b2a92fa3cc9a3f3982c02caef8102f35cdbb74891eb594d3358" } } @@ -18116,15 +18144,15 @@ "940796a1aae864d0eda15bb34a302626f3ad6a2c1d3af60ba921316d95e81a13": { "301a0a16ec26f11dd9fb52328307087f8c2528fea166cdea553309d6e58106d4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.355Z", "postProcessHash": "bc81c817b983cbde9e28c9fee06053dfcf6c2b37a61eb8179d3b1da6aea24560" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.386Z", + "updatedAt": "2025-12-05T15:21:44.354Z", "postProcessHash": "735d04dd6ba2713ac0fe68459df4d8866083b24b327bca438f5cb6dac618083d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.348Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "9deaac027d919a62e7a38a1227f0699396a165a8e6c57fd653190def0c95c065" } } @@ -18132,15 +18160,15 @@ "ab91d27df4d8b8148381ccfd51e2bc9b99a1625ef08e73f1d9a0eb197e5397a2": { "a1465aea8fd40bd2a71567dcd05c6ce53e13c60e2ac21919e271ebe1b6782f74": { "jp": { - "updatedAt": "2025-12-04T20:16:57.407Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "efb101d14d65b4516a7ea2c183ba5f827368e14c277c611317fa573d984c2031" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "37ed044e7ee372a4dfa8deba40a068b332d419ffe9a2e572a4808f4f628eee65" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.404Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "2f1683772e9929148ad2d3d7c0131669cf6d6b796873b950bff22aed365c948f" } } @@ -18148,15 +18176,15 @@ "b7c59a245d47fd54f7c7477cbd498ba2937399586e98674be51c6a7c40b2ae70": { "410fd44fe625de2b185ba9098597ace5e062b1884403c90912660d14d188d9bc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "d3105a83ceadcfa66f4442fd6b238d9d027e4682e5602c3bc03c8e2067b56c38" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "7d19c100024c49f98cda709473bc6002bd89a9fe4fdbe340df6129a6439066c8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.410Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "07aaf1a744512f19fd0a96ec3e407e9c976ff4cbe23d2c31cf8c23ed0e2effb0" } } @@ -18164,15 +18192,15 @@ "d03338e91e1f725469cbc573d2b5a49c055fe39e67ab09e92b408e3e6dce3361": { "fee22f53b36f6d80c05058f7c0b07e16a2dbb531dbf640d90efae0a82972bd4c": { "ru": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "a1ada88c105f9c280c3a1c745b91c95ac523c744babf15c616a9eaa9b1868e45" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.406Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "e2e1106ee34b46c5fc8de1fef3854bab8037cc1c41b1dc4c7777746ef2459083" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.404Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "9dfd6a62fce597b57e64e67532370aa6103b57f7fb909a9037204c63534da4e1" } } @@ -18191,15 +18219,15 @@ }, "8c32d9ed79179c36d91c216797451fa357aeb28c845216e5bab97a4007a3b6e7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "98b10da2453259ba71892fb92e0678038bd855e28bdb3c1d824a70764e676637" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "a919d4d8e187ee2ceae4f5a543fea28b28807868a83c383be3b356498a8d9211" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.392Z", + "updatedAt": "2025-12-05T15:21:44.360Z", "postProcessHash": "bd79ec34f07d72d4ca7f5be7416583f10b5766d3c92a63dc97fdef74c6509e4b" } } @@ -18207,15 +18235,15 @@ "07567d62aae7f94a29e9f4d850ede3f6eec697596681ec8f0be305090388b473": { "781c617b76b44e877e7e119770ca6ecc45863cb3bae1a444fe8807d6ebada97d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.402Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "7e406526b77751ae66e2c472de3a2a1c6189a1cb0dd3ae96467c9ba91841bb99" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "8ecc7da56d2ef34ecbf7607d285fcaede2b8917cc1ca3850bb1c646e8b067efa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "efe6c85bba5eda6bca7bd2d97cbd0010994959369d0b3def5cb1ab93081e5f61" } } @@ -18223,15 +18251,15 @@ "0fb41b547356b6f436429d0cf855f257dafb010e05f7a885625fcb0c5c9d75bd": { "af639a70dc49d1e6f2c4983d593aa1ebfbb63d8f5308bb046693e20ebd771ba0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.572Z", + "updatedAt": "2025-12-05T15:21:44.386Z", "postProcessHash": "369189e798539275d41318978bb762f29a934b5d1ef151f677d0971a48b7bde9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.572Z", + "updatedAt": "2025-12-05T15:21:44.386Z", "postProcessHash": "8f93afae3a6edb9c75c57ed54ef4348f1119007f686c7d88606b8e29363bc82f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.573Z", + "updatedAt": "2025-12-05T15:21:44.387Z", "postProcessHash": "c0da7d7a2fd027eb15e4486a21eb7a581cfd29a6471e430f0803bf55885d53c2" } }, @@ -18250,15 +18278,15 @@ "153ff0c08aecf20c420ae5dfa80993225532cf87b7d9c41e419a23934521c9a0": { "210b6c2518d283f504510edd4cc66909ab1c5db80d2fefc077ca8492e8201477": { "jp": { - "updatedAt": "2025-12-04T20:16:57.570Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "0c39f4175da598f24530bfc31366553333540c883024475c01ba8733f19c1ef6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.569Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "2afd645119b5d65458f1c46332519bf04bd1149c11fdf9103778547ccf4e5cd7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.568Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "3501a1964075465af3a3ce38309acba422dfd0503fced0fa08c7194ded3842ec" } }, @@ -18277,15 +18305,15 @@ "24d0c9c911ed73221e135198269c3368d046b7994b57b0fb624351b888e71a8d": { "547964d07a357f1d9316aadc7016d3943cece91207d0037cea7d08bb8914f5fd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.400Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "874623a59a21c31f1601916be566543f8255dd5fb28d2d9dfe7efd390e9811e0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.400Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "a75f16dbe71b93bdde52969a24ca61157c2988435cc4189c7dbda254610266cc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.379Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "cd3e44fe4e54ab3e3fc09f809074abd3bfec830baf00a1cbadd46722612261c1" } } @@ -18293,15 +18321,15 @@ "32982205f1155c2c2e05fe89e04c9cd20828fb0a653c7c72c7da8d61c3253607": { "641d2a22f3cbbdbb5877f4694e0f7a70c2d4d0ea47aafe7ac478509d2f4bda90": { "jp": { - "updatedAt": "2025-12-04T20:16:57.410Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "71fb8616c55b05c4cb6bd3602d2bb61ba509141650c8b6b831ae7668a8d66d52" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.573Z", + "updatedAt": "2025-12-05T15:21:44.387Z", "postProcessHash": "d4b74c7199cf29ee43de924ace6ef983fbb9870219fe538844a597003e3492ff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.573Z", + "updatedAt": "2025-12-05T15:21:44.387Z", "postProcessHash": "011cada3c160378a9aa776af60a5a6318e62fa8498ce2028421fb494ec42827a" } } @@ -18320,15 +18348,15 @@ }, "86296003488064b48670c7fa1dea340b94da850eefa6ecaf62711f1d83875b93": { "zh": { - "updatedAt": "2025-12-04T20:16:57.413Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "9c908d9a3bafa8e5a2a2e43478ba61ee83a3db924186828ab6cc873f50897d4d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.380Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "1264a6fa75b0f245c8357b3d5f42ebf4ea1a5f8351256b4b958353ea1956c4e2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.380Z", + "updatedAt": "2025-12-05T15:21:44.350Z", "postProcessHash": "1f0bdbf46736308c3fab48a073b2bf712c7d759efb8b2d3474808bd7792b0b06" } } @@ -18336,15 +18364,15 @@ "38b350a818493921c30933efc9a00f13c8de2b1d444f825141d01c27a7c0dd78": { "5c8a7b7c41cedb9f12aa1dfb4a692603fdc40391fd020d73e7415f0890b583d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "d4a917e863f5d4057c14534037a93e2f33fc2e40a3a8ab3101e8463e74f38995" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "6a52c714156422329100a2e0671df9f2a32e36bb12779c05b8c2d5daf057f8c5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "019026495245179df5194e1b2853ab8112b4f8de9bab2a6d234e9e4e34e2775b" } } @@ -18352,15 +18380,15 @@ "769f4a7a3d111208fa74381508655c4dc5d7dcae5fe2808879e68d3cdc7b3382": { "489e0fb1db1004ec357920c6836eb4613ef37b11126cdd9c08bcfd3ba4aff449": { "jp": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "3df18d50aa6a31a16fa3524f3d7361d0ddde3c9456e4a4cf7fcae4554e64cf97" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "7d75da1980b5268c62efbd5941e9cfea0ac04e598e157868805e262a4753bb03" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.379Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "f55e0a46d5928629669d87c9ac1df99257979526cb8deadcdb1267588695cf3b" } } @@ -18368,15 +18396,15 @@ "79e713eaf2edf1bc512ae5d02a7d5d250a9659ca697b83603287e03063cf76ed": { "4ae0bd2c9234eb6b17182e97f10042bb3a03df6b39a2c2156858ba7f8c5537c8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "f766e41611afbb3be864c8036141b6e8336ffe6448fd4852005b65216ba622ab" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.404Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "cfe26221090e4be2a3ea139be0a00cfc4f60ad97b57ce8e160128f43c391a4b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.400Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "30f130b04f174530775eb6e40f3092da9e179ccc33221551c28fe10fca181589" } } @@ -18384,15 +18412,15 @@ "85ba3aaa892ebfeca0dd4e9f91647080ae86a451c4f6a00a9725e2f2d8687ecd": { "b2beddd5e719b038a7b64dcbb0affae7ddf832501e2aa7fafd227bbe1cb45855": { "jp": { - "updatedAt": "2025-12-04T20:16:57.407Z", + "updatedAt": "2025-12-05T15:21:44.372Z", "postProcessHash": "f36828ed4132957545e8ca92588d9104496ffa952a6b793b7ffd13d49038307a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.411Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "22f557405c85073bad2dd8279af0b23fb83fea31599ca36f47a848ec8e525745" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.408Z", + "updatedAt": "2025-12-05T15:21:44.372Z", "postProcessHash": "c4e9b83d1f02730b9a2f3695376e49e4a64c67f3bba28bbcfd643c87a23faf17" } } @@ -18400,15 +18428,15 @@ "8f1cbe44d3d43c4cea34fea884586e29908abcb748f98fa025ccc41b62e45d3e": { "8e89cf7d6f4105f746591f40378eb84bf4bf9932ed4187023e334efc47a4b281": { "jp": { - "updatedAt": "2025-12-04T20:16:57.407Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "742477bd5246fead2399453b9f43a8df71492742fc2ae2ad394e9a8469d4745c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "35b28f698d25ef5eea150c389834221d829e4f600364085af9f1f39e90499e38" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "72c7adc4ff3a440bde11d7f132668696c22a4a789bc9f7a23324b07d0fa2902a" } } @@ -18416,15 +18444,15 @@ "a094ce3a28e694708179862da79fbac7d2795b1716246328a6d1d45989e4d89f": { "01511979759628779536c4426b3446323cd0ba908ba9e69ed46eef6c4e519583": { "jp": { - "updatedAt": "2025-12-04T20:16:57.402Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "9f0f1f7fe8cf38b788f563958b7ec63e98cee9d9bf461720e6af376290aec078" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "b83a8b159481b28677784da672c7db798a05a5b74f3e6831e8dda5b28ea61279" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "4746f5ac12eaeb708bb1a7b5d3273c7a622c248f1e62a7bf3ecd76e9ac9c2656" } } @@ -18443,15 +18471,15 @@ }, "52272796a3ff10b33a617542859f14d9522e98d92a2f558892a1b3822e8ba86e": { "zh": { - "updatedAt": "2025-12-04T20:16:57.379Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "73a0c49402e7ff6d7d16caf3c848de6f1b3b6d4be12b7afa4bc928d651ad5ef5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.412Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "9f3d10460bc50db0e6525897c9d5c746895a665697cea3debaa4bf1ec3e9b901" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.412Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "16f3545071006255d0c7d618d3a3f0c04e9c1e00dda8dcd6882b4b93a275dea9" } } @@ -18459,15 +18487,15 @@ "b28fb4d49a614d643a46b4d31f46daf5e9fe6cda08176cd2f5e078a055407bab": { "4108560a1744ad0710588b9cd75e007435917814d8b73b2316426c9d931d44c6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "c3436d937689b399827f3d32c2d0e1b2058e0604938f633d2f72824350c56585" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "98d552b7ff0d32d1bcd3bec1f62324033aae398ad57b15ecd2e643f66e9a3130" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "99e0c98707eb9dc6b98d07ec720a227b66e24ec17295ab654c2973f3eda69fba" } } @@ -18475,15 +18503,15 @@ "b626ba6a5d5d3ea8fc4f8b1fbab4067c3c422e1f441d82656ea4e1576b013f77": { "d39e1a92c96f946e67f7b31e6fa41e119a9a923698dbf319033ccb86b70446c3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.377Z", + "updatedAt": "2025-12-05T15:21:44.348Z", "postProcessHash": "0943705af4405ac9b73650bd27e524f18600f4c44fb9196fc5644bd3ba24ca29" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.384Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "95ec8ebfb49d15895d88ab953c2986e087e916d295909740cb6acc218655d1e7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.383Z", + "updatedAt": "2025-12-05T15:21:44.352Z", "postProcessHash": "afadf5a101619634076f4230fafb7f4b88e424fce8a08d904b971de0a77a2a26" } } @@ -18491,15 +18519,15 @@ "bfdad58f0ce19b8378572771619d14adf32b34da41695f420ad03ed4496197bf": { "c5d8b4488de9c51f7fa4c711f9885ca220f45c37ba8c7062bb02813316daa7be": { "jp": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "8b96bbcdd6e747a2294cd6045f5d96401e513bc666662fb222e04772d0ec12c4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "2b06ef19b4159bde81908b17aa722108e7646f37d8cddd1e5b2b114bd91033c5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.383Z", + "updatedAt": "2025-12-05T15:21:44.353Z", "postProcessHash": "0f829ac3fdacff2e78794ba36f28cc0d142a527082ee16154973b29242492f20" } } @@ -18507,15 +18535,15 @@ "cb1ba7289dde002c321160e758dcebe6637312272f6a21430a36ca8d2bd0457e": { "6d2f41b7dfc6a91c7ad657ff5eb668944436fee3888a6396625bc67d1726719c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "e9fc5aef9363c5b7546b8020f4293ab27f1e36a6775a1bf181ee3e46905a8740" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "92737d28092a02dd24f974ae7b4e82ecff09c5c9b9eb26c7b7be1cfebbd7c0c5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "e79d6c877d19f28ef3c568187ecb7ca17ef62d07dd328e2217f0fc495a87db0b" } } @@ -18523,15 +18551,15 @@ "cdbd4e3a0fcbd1a9915e133e9c7749b9e313633614596b23aedac6d6da31105d": { "184622e2d0685a2859808cd7eb92c85650ed8abc39d7a38af056d81ff2c94654": { "jp": { - "updatedAt": "2025-12-04T20:16:57.378Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "3becb1781eb00c2880b54f7aadd2b27a80f1b7fc57719d233b25f8f8195040d8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.401Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "d9c588e44cb76a0ae70eb5351eb7f277e885c089bc74ee92a1278af3662495de" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.363Z", "postProcessHash": "ddb61b582e6f10aa414c6df2b05302bb9e61332fe1827f701f7d08e054d0cdbc" } } @@ -18539,15 +18567,15 @@ "dedecc80a24539ab5ef48968c83b54eb08fdd06c15720daadff55822ec0b257c": { "5da52f81a0a0c35a9810a8ba27a1945c10ef4931f047eff638a1e08016f6bd12": { "jp": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "b14feecc8f1b852cb2c009dc40736587f574ec2e316ae56170fca2f3537b2e62" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.408Z", + "updatedAt": "2025-12-05T15:21:44.372Z", "postProcessHash": "e1ceb6c93a543e9dc9bca2ee51af12b2d459aef50dd3f3e5d9a9c2aa3efe952e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.397Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "51c3a5b9b846cbbb7931d251df08fed25c8f0178213340fb80f787747c315cda" } } @@ -18555,15 +18583,15 @@ "e7ff4d7fd0bd848202048d33c9e285c0b7eaa06b86b242461c43fe7e001d1b39": { "574ff1d32ed4fa6964c51389dc9f9d35f7a76cff9623137d2922ce0856a65215": { "jp": { - "updatedAt": "2025-12-04T20:16:57.405Z", + "updatedAt": "2025-12-05T15:21:44.370Z", "postProcessHash": "cf8ad016e98437328b63f3697887fc8511011083ab23a2fdf301e438e0c935b4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.402Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "fede103933d82c1350c464340b7df3a378caf82c4771ed30610b653fe1c5e3e5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.404Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "a5973f73f01078c0a40abef244723cf6137f92d5ee96a9466957a48673a37012" } } @@ -18571,15 +18599,15 @@ "e83fb55099e0c1e7efe462a3fc836fad5d3f3480534f4512599d1bb0307a952a": { "00125ab6f5435064f526a97e752f345080fe710b1445d06711d4011db26a78f3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.409Z", + "updatedAt": "2025-12-05T15:21:44.373Z", "postProcessHash": "97523aee0daeb12cdfa381323a91f24c3440f29bc77c9c1cb4673234e60c9b36" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.407Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "c1c41d01e957b646b66e4b398333e521c716d49adf23f912d6cc61036585740c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.407Z", + "updatedAt": "2025-12-05T15:21:44.372Z", "postProcessHash": "8d477785bb4afcb4ee19228fababfa93c64b871ab5e5ecd5db3f57614f6441f7" } } @@ -18587,15 +18615,15 @@ "022408973e8d05cf5445cbdab59b64e8bcb0e39b91c3c51a44ce2b73d2115e4f": { "6976c8cc844f9c7b24905debc03f2230b626e14b487d48182c047ccf79713f1c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.588Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "34422740a064671f687eadfdb7e461d7e3dc026915ca2c8dee3f06b3868ca90e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.447Z", + "updatedAt": "2025-12-05T15:21:44.375Z", "postProcessHash": "f5d9afcdfeb6c89320e9442e2794ca769d3e52ac2d40b4f7b298953227af191f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.464Z", + "updatedAt": "2025-12-05T15:21:44.378Z", "postProcessHash": "0b5c35fffb5153111ca9823ccc33ebe92a68df94f8853aca82fd365ec49aad1e" } }, @@ -18614,15 +18642,15 @@ "027f426455e0e6842638722daa037b778ebc144d4ad338fe61f0710ec20e99b4": { "2be41a032801dbfdd8155d04445f268ba662a583888a188a0a1208a4404eea38": { "jp": { - "updatedAt": "2025-12-04T20:16:57.456Z", + "updatedAt": "2025-12-05T15:21:44.377Z", "postProcessHash": "0a0e678b5c91cface7204697e67efd9dbe2cc34ef6c0f073f7fa5d17babbd7ca" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.462Z", + "updatedAt": "2025-12-05T15:21:44.378Z", "postProcessHash": "7a6367e99a87330326b19440316f5814362e4501bfba306f09e16296197c06e6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.454Z", + "updatedAt": "2025-12-05T15:21:44.377Z", "postProcessHash": "01df08c3ef6979ba7d1708e5545b501fb0903f1947d44153253c9b561b538d2d" } }, @@ -18641,15 +18669,15 @@ "0819d9360d80872f0e20752e84412951fa413fcd532b41e457c8b552f0613288": { "ee4054a86f5571bd3661ca00b9fc4bb113e20c94a5b9daf823b181aa1b238cc5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.586Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "203a564b2f5686ff665c9d4f9a4f03ea676c4401e1d08bd7ac5589282b36c5e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.587Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "beef53655b28ba7315813fc08af61946537b31505c56f53438f507e9237a59c9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.463Z", + "updatedAt": "2025-12-05T15:21:44.378Z", "postProcessHash": "f4fd2b63b42681cf5d08eec5ffb746fb2b2aa921f782930a7110b94834a832d3" } }, @@ -18690,15 +18718,15 @@ }, "8ca0b7e819a4aa2e29ffcd483e624332d0ed852d5c4bad277c62fbd16669a10c": { "zh": { - "updatedAt": "2025-12-04T20:16:57.599Z", + "updatedAt": "2025-12-05T15:21:44.407Z", "postProcessHash": "6817c57bac2111c8f21bc7a54412e1c846b477c12f1aae830034da47801d0133" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.599Z", + "updatedAt": "2025-12-05T15:21:44.406Z", "postProcessHash": "0c1108ae320e3bde1df8bdedbad10e6e49ef6d698ec1fdc9e65c96dfb14bfb3b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.599Z", + "updatedAt": "2025-12-05T15:21:44.407Z", "postProcessHash": "ed82fbdbee79a71b50353299b3e487e5c7c9b14371bf68d1a1a10fec384b57a9" } } @@ -18706,15 +18734,15 @@ "2e14d7ea42f23a61da8855e77c500092cd204a036888c976b84a9a6bf71b8eaf": { "1e988897ad46c538e51b835cd9cd1cf89a4e7059611c53ec91e71868db50124f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.406Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "5a70de3a21868d0f33685c9e1cbd3c20499c2da07488b23aee4cec0a361b66da" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.408Z", + "updatedAt": "2025-12-05T15:21:44.372Z", "postProcessHash": "1f54048f933c2fa755446e80dd029a03d74d9958199f943bec438b6f81d8c939" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.404Z", + "updatedAt": "2025-12-05T15:21:44.369Z", "postProcessHash": "36b0bca4a8d9f88a1feaae36ab4681033873b40e89a3aff55c41c51a66717e29" } } @@ -18722,15 +18750,15 @@ "4b67c6e7bd1376012629229475b5e3fc111803b0ff98dbdc8baacee9fbf6cf1f": { "910169fac7a6c3b7cf7b852a7373930f9083cfa0a5232508038d7982a0dbecc2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.571Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "f063eb821bf8c843ac6b68fc4d95dd45c4a7874262006fb98f27859f4ad3365e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.571Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "a656ef747d84e52eb1e11f38f12634183c5bd3dc7cc59c6d3a69ec845d87df0c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.572Z", + "updatedAt": "2025-12-05T15:21:44.386Z", "postProcessHash": "1d0fac447da092abb1828a5b01c8d9a2584fb97d728cfef2e1a8acfad2f2794e" } }, @@ -18749,15 +18777,15 @@ "52ccd94aa1e934784ca02ff91c16f3972d775ebf46b09dc38022536e439186ff": { "c395705e691a1be5ddcfb6d1b262f9a0dfd9470788de834bcb6fbc5d0d8f0c8c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "ff8d566f8fe7b95932f774b9283e06b20965571e31dd35b778c8f2a28d462996" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.378Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "bac63b94714351ba38cdcb5b8c5aabb3f64efc87eca8da9e556f34b9f3cbdf65" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "668c0cc72be01dce6da43d56f94c3909fccded62e786f90c614e9b97e834aae2" } } @@ -18798,20 +18826,34 @@ "updatedAt": "2025-12-04T20:16:57.563Z", "postProcessHash": "6955559411063c41c089f0634b8075eef88d0b1aced4ae0ea28189ae782da6e7" } + }, + "1509c00502930e6c47bcb3aca4d463815899ea73f7fb3add975ad5f6a7683cc8": { + "zh": { + "updatedAt": "2025-12-05T15:21:44.392Z", + "postProcessHash": "37a7b4f062a2459ead13b84f03f6a1c463f31aed1e0b78b0addda73837cc57d8" + }, + "jp": { + "updatedAt": "2025-12-05T15:21:44.392Z", + "postProcessHash": "624b3b17bd0803dcc8e8f11684188dd4831a8bfb725969d61886feae2da764df" + }, + "ru": { + "updatedAt": "2025-12-05T15:21:44.856Z", + "postProcessHash": "1f79eade61b6544d08d9234fba212de97f447f1352b0f31a278a3cd191df7420" + } } }, "592a7f7d3a8dbeda07da824c065c0da9b3e247906e6dbf77674f6a63df3136da": { "2293abaeae3fe16820f6c7c9a37b91841e60a17efff63af19cb7a8d4a0eb2456": { "jp": { - "updatedAt": "2025-12-04T20:16:57.379Z", - "postProcessHash": "f8d06c65276cb1d54886f8120cf389188fc42c5830d381b602feb17ca81c4ad6" + "updatedAt": "2025-12-05T15:21:44.362Z", + "postProcessHash": "0260bbcd7dcf1755b1b42b91503bedceda0c67df15c0e3e5427fe95d53906660" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.406Z", + "updatedAt": "2025-12-05T15:21:44.371Z", "postProcessHash": "548042c432476bff90faeaf4805396bc3998706df207f0fde594d8e3899d886c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.402Z", + "updatedAt": "2025-12-05T15:21:44.367Z", "postProcessHash": "c1c62ecbba81b6dfe3356750a52a6d787bee84bb4083a8ffadd450e92e030048" } } @@ -18819,15 +18861,15 @@ "59e3664663d669e021fbd29e32b23a365ecc37fceaccac1e3c9e74f070873d03": { "664e682e3d269a460d26982803f72d705695f346f7f43cd3b62de24703236061": { "jp": { - "updatedAt": "2025-12-04T20:16:57.378Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "b00d2ab28ea7902dbdf64ac1da6ff529f3abd363f4b42d06a4d8eb3d7d3e6a51" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "9a2eb6548297d4d8b1bc0aced0dddb963c38a7a8daa4a9e7561ddaa2da828639" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "c11365b42ed045225827854c02f5659742ae2b67b40f8c1e5aeaf3985644df15" } } @@ -18857,15 +18899,15 @@ }, "1da4b33ab1fa4a2985d2ee4961ae406b960da1d28a670a0f8712f7085ef02acd": { "ru": { - "updatedAt": "2025-12-04T20:16:57.578Z", + "updatedAt": "2025-12-05T15:21:44.391Z", "postProcessHash": "683367d05d2d8953b11740d77f9388afa1365d332ff2cb642bc20fde708f6ba7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.579Z", + "updatedAt": "2025-12-05T15:21:44.391Z", "postProcessHash": "4adfdc63a6e43f87402e62874248f1a67b4bcb1e9b9061209e06b7bbe1bc78ca" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.577Z", + "updatedAt": "2025-12-05T15:21:44.390Z", "postProcessHash": "22bbcc7c9ab9d0963910588044e740ec0482e1b2bb3b69d3a1040ddf84cd792a" } } @@ -18873,15 +18915,15 @@ "650407ab32a2947c9874bd0fc813344a1675577ba430ba4ddefb9497ceec4df4": { "ad334487bb9276e08638e9be4af54b1205755e694d6c1911d00059d8415fae44": { "jp": { - "updatedAt": "2025-12-04T20:16:57.396Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "b78dd148720eaf7b8748a92085590aa1df613e77e2761506c18876b6e04f9c46" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.378Z", + "updatedAt": "2025-12-05T15:21:44.349Z", "postProcessHash": "c1de43aff64acd60a3cb8a3272ac4ca62790b246a95d3ebc9bdf16b9bf094a0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.400Z", + "updatedAt": "2025-12-05T15:21:44.366Z", "postProcessHash": "a3ef6174a251a61b2d3838e10802de4d2028146e428af27554becfc2388e203c" } } @@ -18889,15 +18931,15 @@ "77307f3a7d1b826bb6622b0f3ffa4c1f7706494839393590234d7206bbf2be8f": { "017f574127f909641a3e7c014420c6954edb618ef3d438854515fd0f5dd1e298": { "jp": { - "updatedAt": "2025-12-04T20:16:57.569Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "2ae8459a89f533f52077935ebf208d1e59a72687681ab09bbe8dc2f00cc7af9a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.567Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "612d2b6d43ea19dcb2247e71b21d902a459f81caed0160cd4aa27b58aba7a1f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.567Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "6c629899e6563a179a946a76d3080fc7591b76028d28c64908617e464d3fdbc3" } } @@ -18905,15 +18947,15 @@ "914120dcc6c64903cecac105d4df906767aa83b440456a677f5192431cc83d6e": { "4af035b51000a041cbfd0989fe3c52f7370aaeec63d4f8ae146a2776b899fae3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.379Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "69443a9a6a608d838f32d7035b90e6c73879b885a022f65bed9b7ce61ce78103" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.395Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "0a1bb4458ac06d2f3f7845813994b3e6a9daccf82040a40df21b930093c7c107" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.399Z", + "updatedAt": "2025-12-05T15:21:44.365Z", "postProcessHash": "5866376c46b5bc0b232944cfdf32492c122afc39d5105ee62f388d1f0f904a5e" } } @@ -18921,31 +18963,31 @@ "9c50ae2540822f01de38fd832846c44e0815140836bcf8df45e61a172e36831a": { "48e37702889833007771c8e75d0ebddc5a93b178a5f5ae6c2512d72beca89b15": { "jp": { - "updatedAt": "2025-12-04T20:16:57.572Z", - "postProcessHash": "9b6be6fb616a6b720c5ea8ff6f6e2c8b776b74044005fd71a94ae4aff5eaf6f0" + "updatedAt": "2025-12-05T15:21:44.386Z", + "postProcessHash": "d4eae1bbd36b5738af019b541b60f366c750d049a0ae20326e21253ca4a5ac33" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.571Z", - "postProcessHash": "5e9864a6a4c45617fd4b9a0fd169e952e29111d9ea28db50f922bac8692fa476" + "updatedAt": "2025-12-05T15:21:44.386Z", + "postProcessHash": "e057a4243fdf5452184628b6a7ec25135a189370719d9d02b5cccf61d76d0639" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.572Z", - "postProcessHash": "109dbf4fed9f5a9a86bca75d86613ac58898f5f28ac36fa1dfe9414c932ed635" + "updatedAt": "2025-12-05T15:21:44.386Z", + "postProcessHash": "d8234cfc8a48b1e0e2bca3695d772fec76bd15c1e183cf1b58b96d1f616cb119" } } }, "a1a93279f18aea8b2a8afde127dc919f6b9381d84fdb78e820af9fa87a4f85d7": { "8ef32573cad40bd5922dd07f6e65cb11c503497f1996866bd36c8bd70fdbb4a4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.379Z", + "updatedAt": "2025-12-05T15:21:44.362Z", "postProcessHash": "1db96cf6f48fc6386fc34cad42e5ce60569e68b84082f3b7655e7afc189be0d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.403Z", + "updatedAt": "2025-12-05T15:21:44.368Z", "postProcessHash": "477698bc6caf43414aaa8f930f561f33cc84dac8da89fd0ab9394328c432f647" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.398Z", + "updatedAt": "2025-12-05T15:21:44.364Z", "postProcessHash": "4e718d357e8f431ded918065b2af5ad0ddbbeeb6775fb29f6b5d02ec1338132a" } } @@ -18953,16 +18995,16 @@ "acdfde8e008fec05434d98fecd72ad26585fb764bb199b4ab8e0e4acc9186b22": { "965e0c2eb0c14ec2e1498ef8a8c93d171612158fad780e6309dd536f107ee840": { "jp": { - "updatedAt": "2025-12-04T20:16:57.575Z", - "postProcessHash": "e0fc94b1fb704891c315b7527d53e5d41fde3988fb4a161ef8ea849658287529" + "updatedAt": "2025-12-05T15:21:44.388Z", + "postProcessHash": "ea701a5b27951dd9e004ff842a21a6f03cd52b865c8c3b27e6affa59ac62626d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.576Z", - "postProcessHash": "443a51279ac8cafddce1f9ebdda751d5f8494b91e75fff304992c20c6fcf67ac" + "updatedAt": "2025-12-05T15:21:44.389Z", + "postProcessHash": "8359f17baa0d920f5108cf0bb22741d909a46b923f98a98a05f5a66f905d929a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.574Z", - "postProcessHash": "89c80cef1e03ca7353483486a483c25dd322e3a8ecb5cbc9a9f0549e177e3a88" + "updatedAt": "2025-12-05T15:21:44.387Z", + "postProcessHash": "7d2061a81e4bf3337b8e9a92d46330063722cf42f525d8ee8c740381bd872acc" } }, "ea316ef388947a1bd8b8ce3b019ab9377bd0b52bbf557f4ee29826ea0406c8d6": { @@ -18980,15 +19022,15 @@ "b1eb514e8efc1da765f03844ec981e8df30e9e90bffe8f559550b33fcb148386": { "dc959ee4adf1fa9bcf35767f2bd90be07a3522cafad54234ab37ea828c51a0d3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.570Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "4e252c961d7fbeb0c8cdfca4c7e78ed3d9a47930a490ec0fcff9ba2259ff842a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.568Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "21693b17da6c0672bdc03f490c034f47e0b6c622b12386d8cd5dc15469e81df2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.567Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "8e459ea4edcd0d1973e5c7304439f49adc8b83e453c921767efe5c957a7a30a1" } }, @@ -19007,15 +19049,15 @@ "c35229fb2bf6081a5aa25c5273a6bc76f7fb1f8586da22277f9b09cdfe9c161e": { "96b4bbf5cd710c7028d1dcff43630fc1346305b9fc31fd06b6feaa5771a11a01": { "jp": { - "updatedAt": "2025-12-04T20:16:57.570Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "49c7a807f11cf5e4a39deec6f00abd954857e60fb873da829a05ab6fe812f91f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.569Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "1f45a8f2e27cd1638a125fbf219fe0c1e44ff4505c3940d54948d7f42bbe717e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.570Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "6fcb5f7c2f71607a966736e4fce375f71dc05ec6d9c58f6b658e71d6973ea6c7" } } @@ -19023,15 +19065,15 @@ "c4f683be9ee704aea456e00a9bdadd74b41b2c81a61a807e96857c1248b0f095": { "696664a1a5eef3359a3250235ce385270ef743cd6d7bc089cff42a85307e3ff8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.571Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "e655fd62b4e798de954eb13fac8d265d2126b74f5e7b6c2525428141ae8ac016" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.563Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "8f8cfbc5f501bb063d9432a89723c4da07e154c6b2337840503024dc92d0a14e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.568Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "e6f5396464416b361ac3e9d6ddbbd3fb8d50cc6fb9c08499b38e8a91be49a8bc" } }, @@ -19050,15 +19092,15 @@ "d88cb52cd1ee657459479ad84c5c952fbde653226d9799e31239473fa8b0fd23": { "fb9e79efbf3a2d62721e7f715f0699a0dc1f1dbc6e75db72c520ba3026346f5b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.408Z", + "updatedAt": "2025-12-05T15:21:44.372Z", "postProcessHash": "e46cbc9f324265d037cd050a3ca1d9137e0957d7dbe63f1d6c0247d0a900d020" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.575Z", + "updatedAt": "2025-12-05T15:21:44.388Z", "postProcessHash": "761985e147a796c708da1413bbad05642bdde93d4a227cbef461d74106cde30d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.574Z", + "updatedAt": "2025-12-05T15:21:44.388Z", "postProcessHash": "2088615095a8fb52ad1d5cfec71d5b15ff47b07d9ad40f176ae1273ec13bb746" } } @@ -19066,15 +19108,15 @@ "fbb5789352a952225705586e3f21b0e7e42cd17127fe8ed8e8ca218112140a27": { "19f784e7b489f48a3d495a2e1c1d68856626b21b4cedf271ef931452b7add1ce": { "jp": { - "updatedAt": "2025-12-04T20:16:57.568Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "ef14a4409c770fdd95cb1d38ba996d05cbbf0fa46a0554d1aea0a2c6889086bd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.567Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "d7510b4310c007e2c3fa4196ac12676a3536f6c79fe0ce6fc13766b97c0f66af" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.568Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "29e9835f7a1f4812561803ebb9a2aa64870cbd95d309966ee1193f31fbb7cd3c" } } @@ -19082,15 +19124,15 @@ "123aeaa56592e54f31fc778623c345f09749d4e0e65e902af7d1a93337a425bf": { "f2e0676875f34dd5520562d2cd21b217af1b44b68311b6c948988adef7f432a4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.561Z", + "updatedAt": "2025-12-05T15:21:44.392Z", "postProcessHash": "5c7d6b3cd3264e06d8d7812df031cf9903d7fb6806ae3e0c9c1635e715368d8e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "dfca4649f757befedb12c7efa1f2f5aa52881312c7f49b06571e46d85ec75438" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.583Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "f99cc87e485f33547973c03d3091f6441b2e51e37d4d74045ecb2fd73552b8bb" } } @@ -19120,31 +19162,31 @@ }, "ad92da9d2ad16e7a7be4a085a208f9676b179473914f697e479282b6f12daed9": { "ru": { - "updatedAt": "2025-12-04T20:16:57.414Z", - "postProcessHash": "475e89b58d3d798adbf05fee073e0696b66bba68f802f4be5ea3ec4698baa222" + "updatedAt": "2025-12-05T15:21:44.374Z", + "postProcessHash": "3d65c6659d762c2f6aeac2ef72be9be297de434faeb6903868bd0aab9ae44ec4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.598Z", - "postProcessHash": "3a233120071962c816f3e71060ad4203490e4a5ba07384ad2f1e8ee52f0f85fe" + "updatedAt": "2025-12-05T15:21:44.405Z", + "postProcessHash": "0d5edc199f623365e82910ccbae92c9056bc5da3cd76d7418dc9394c466ea487" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.598Z", - "postProcessHash": "169f01b2ba1324707096fc2ad5d0a30b11e262fcf5035d89f000a491fe145058" + "updatedAt": "2025-12-05T15:21:44.405Z", + "postProcessHash": "9842b14e665eb6636b40ef7b9061bbe2bbe19cd9108798d54c59e23eb2d428f7" } } }, "1f24f51d58cccfdaab17312855078466a67ec6632bf8534638b69f8f5f3551c5": { "ac3de3782a6dcd627cb900e0e3c325463324737e43db6385a4a9edbf6ff7796b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.561Z", + "updatedAt": "2025-12-05T15:21:44.392Z", "postProcessHash": "7edebb5b4455ee9e9c1089fc1ae7fd5c58c90de7e9b2131b29c3d5a333bb5413" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.586Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "d3d92aaead95731c99241f5a26b9c413958c08d2cb289c50e73d5d7b7da3f96d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "f748f662fb02e4ad6a394569991a95594d4a56980bf9aa1c82d296dc46583545" } } @@ -19174,15 +19216,15 @@ }, "815d4a3898271eab559a7f43ac7696375da4ce6aed7381829f6d915f3c27b4b1": { "zh": { - "updatedAt": "2025-12-04T20:16:57.577Z", + "updatedAt": "2025-12-05T15:21:44.390Z", "postProcessHash": "17065de62ed7b44e4b1698bb40f7a8779eec4078664cb56e1a186d9fa38532e9" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.578Z", + "updatedAt": "2025-12-05T15:21:44.391Z", "postProcessHash": "47e9915b48ff1af285e05289639fdeeb245d586e0560581915c6df8adeec10a7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.577Z", + "updatedAt": "2025-12-05T15:21:44.390Z", "postProcessHash": "e6e78e1fe156ca834198b55ab4e07894a30fb985d6ff24d0acc95b01baf0a639" } } @@ -19190,15 +19232,15 @@ "3a83cb18dec6067fc17dcd4bf9d92d724df7894996965a2aa6ddadaa218d8377": { "afb31609bfccd3793dc26f3946f0dce0c3f4dbb5c1c5a18bef98f4e67be74fcb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.560Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "cd1ed7b544e93ca41658dee9f5fd40edb44c3411c62fce4dbf2847db3b8e7b90" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.564Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "46436804b988a5f3ed185d8462f40bd61e86a293678165f0d5c07718c72dfdee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.586Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "21ac8d5b9e5184b27a27b18df7e465f3ccc7708aa1d8326182d19f6956cade85" } }, @@ -19217,15 +19259,15 @@ "4db1e2e4946307003f6c8e7296d88d16ea1fa0a50642705d3f4a2f6130b44a03": { "1cd9bda536f7de9e39e1b25889cdf102824eed5e8c98879a779c5ff86145b27d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.393Z", + "updatedAt": "2025-12-05T15:21:44.361Z", "postProcessHash": "974e52b34d8585fc84fded7280ef420ade662eb89ae735facb188cc41eb4bd66" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.395Z", + "updatedAt": "2025-12-05T15:21:44.375Z", "postProcessHash": "33f8ae6f975657782d5abf8032d00bba21ddf463fc4ee8a87e00f67374efa9c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.394Z", + "updatedAt": "2025-12-05T15:21:44.375Z", "postProcessHash": "8d266e0a146bdf6facd693ed6fb03cfab00acbccfea70810ffd15cabc5091731" } }, @@ -19244,15 +19286,15 @@ "573d715ca8095f0e4ca44d1cba02fd75a74bbc9c173567252833684110e7eed3": { "87c69d03f3d553568b16a72f5fe7243c7fbedec0f55aa5c55695e0895009d96f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.449Z", + "updatedAt": "2025-12-05T15:21:44.376Z", "postProcessHash": "1a1b645f85716ca56b4e7a21e38b923e5f9ee9556dd9228c9fb13decc1d6be90" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.416Z", + "updatedAt": "2025-12-05T15:21:44.374Z", "postProcessHash": "e19a3bd005afc2a50da054b81abed593fe67d74a6e6f3726bf853a9ff030e8c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.458Z", + "updatedAt": "2025-12-05T15:21:44.377Z", "postProcessHash": "7fd6d5a2c64e3f3d95277021480ab28791ccf58c6217c776d5c7ab62921aef70" } } @@ -19260,15 +19302,15 @@ "6127321ac3891bee9f802edc9f97eeefd28aa0d40a647d0fa4cda55abfce14ff": { "d3499050f8c6e7b0a1bd1cf5e8bb8e940304335d153d81d9717b6c21c16c2985": { "ru": { - "updatedAt": "2025-12-04T20:16:57.567Z", + "updatedAt": "2025-12-05T15:21:44.383Z", "postProcessHash": "8ae46671d3b105490e167d3a87c01ee84d49ee596d8aead76c92f067bc37db6a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.564Z", + "updatedAt": "2025-12-05T15:21:44.381Z", "postProcessHash": "117f3f05038b7f990697c7e5ac9c82064349ab5de59d1e7c1df99e016f0b4bce" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.451Z", + "updatedAt": "2025-12-05T15:21:44.376Z", "postProcessHash": "0e72bd7ba5dff39be4c28e8d1e5a311b45f50efe576fb22425b0d6b91af96464" } } @@ -19276,15 +19318,15 @@ "650d9f2cc9a940fe5940498f6e144305c01bbf36d3ee2dc4bbd8968c9f8967c6": { "17de42c037b1a363aacffaae4c43b7e7c471839ed6cecff05326ffc1616e8599": { "jp": { - "updatedAt": "2025-12-04T20:16:57.394Z", + "updatedAt": "2025-12-05T15:21:44.361Z", "postProcessHash": "683b3137fd6d5f8f2ad3a2279a693fe3916216d7fa262a7b9b0d55330bfd7f85" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.576Z", + "updatedAt": "2025-12-05T15:21:44.389Z", "postProcessHash": "aca7860b85451932402e25fd342e73f9cc1e6eb90e58a2dc9526fd94efc757c8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.394Z", + "updatedAt": "2025-12-05T15:21:44.361Z", "postProcessHash": "a13b4669e710eb100e21d1d41b22517add88a7e4a67b8880d7eae0234fe2c6b4" } } @@ -19292,15 +19334,15 @@ "6813da4ad4c4af5afb1c7574805fe2dd8caa6c96f485a82e9c901ef475f08fee": { "b0517d0f55cd108acdbbe709883cd25fbda01a6703d9b51ff50bd2116dae6e4b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.573Z", + "updatedAt": "2025-12-05T15:21:44.387Z", "postProcessHash": "9a7953083c75ea58505ac2b189ed5a659df72ce0557a628340c2d6d8aebef006" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.573Z", + "updatedAt": "2025-12-05T15:21:44.386Z", "postProcessHash": "7663c76f0b8df2131d956db72a0e2fa03156a59295711221b82957afd5b0e382" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.574Z", + "updatedAt": "2025-12-05T15:21:44.387Z", "postProcessHash": "c8fa2bc97435a0d2801c93aab7d4f9ad62a15c6f727a43f977e586c56c94f5d3" } } @@ -19308,15 +19350,15 @@ "6e6ac7b2f451e9b54c142890ff01e2a80eb23b0ffd7b7bc15c34b94f9502bf82": { "29539529c90b3e9ad079683127ad89b005ba24b80d2ef9588cd0a3e6f7d4d74d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.462Z", + "updatedAt": "2025-12-05T15:21:44.378Z", "postProcessHash": "432b8cdc0f7f934b8e5a6c86ac707524f640bbffe8d341ca3bd71c1ec7950d0d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.395Z", + "updatedAt": "2025-12-05T15:21:44.376Z", "postProcessHash": "88f899de044e299b047e413b118c8005a05fc5c6c250744447d61293392906cd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.394Z", + "updatedAt": "2025-12-05T15:21:44.375Z", "postProcessHash": "90032ce3f0f12af0f427695c74addf5a4f22262f8dfdcb2662a1ff3fd0ffa412" } }, @@ -19335,15 +19377,15 @@ "6fb070f1b02c940c98234a8aaec25f6c6469691d330c72faa861b07763ae4725": { "15b7711f236d6afbc710de3e96b101bbdf132f753a46229174d84f106446a055": { "jp": { - "updatedAt": "2025-12-04T20:16:57.592Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "328e65509b3b525d59af7353a46e30210fcfd69f1856f6e010fb2562d8ec2416" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.591Z", + "updatedAt": "2025-12-05T15:21:44.400Z", "postProcessHash": "f9b192dcd2780c161f52e17b680aee54e64d4fe73cf0a7a8a2f5bda8503b6b39" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.590Z", + "updatedAt": "2025-12-05T15:21:44.400Z", "postProcessHash": "a92606040cc98821ffb8227b5d981abbe63ee1c16566bfb56ddf46cfd492728c" } }, @@ -19362,15 +19404,15 @@ "9d8c420729f6dd40353fd0b37376eb59e28f1b3a71685df761a9e2ad46f35ca4": { "a0b2512b24b1839bef32291210747feaecb9e749d4b925cd5fa1e21347e7f49b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.417Z", + "updatedAt": "2025-12-05T15:21:44.375Z", "postProcessHash": "b4a82e239b778ef26fba270d85b9d8d3ebedc369b5a050b858193f5346f328d5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.464Z", + "updatedAt": "2025-12-05T15:21:44.378Z", "postProcessHash": "2341f430e8873ebae8f7c1ae8ed81cff33c71f82ef357a2ed2242552271384cf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.592Z", + "updatedAt": "2025-12-05T15:21:44.400Z", "postProcessHash": "58dbd634335f69ae5a82f14acdcf801d7719d672b51a939484625e6e66e29646" } }, @@ -19389,15 +19431,15 @@ "9fe9b6ce42a6ad2189bab2836ba94c9f99886df803b81bdc3dec38815dad7c26": { "2a6580470ab1e345d52a27c96f69c6e94d335299083f18b83f4f16b1913c6ee0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.593Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "684cd30fef45b00527cf34276d31263d547c99d080bb411e047f484fc2ddf118" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.592Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "6b027add4d660f791cd652609515c4d4c5cb2dcaa61e2d84830c9a1bf265478d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.592Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "7717a3a43c708e3f13638d6bff8c0aa0f2be7c3ab0469e14fd47dd5a1ae83cb3" } } @@ -19438,15 +19480,15 @@ }, "07af586610511b700c76dae0ed1ab3334a12925f5399f3094ee65f2db97bfe4d": { "ru": { - "updatedAt": "2025-12-04T20:16:57.567Z", + "updatedAt": "2025-12-05T15:21:44.382Z", "postProcessHash": "5da1407d3c90732baa956b1e01fe23433219dab183be642242e0c47e574aa23b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.576Z", + "updatedAt": "2025-12-05T15:21:44.389Z", "postProcessHash": "149f19a2f10bf656408c2031fba812e2459c59ffff929dea4c35e440b6e36f50" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.566Z", + "updatedAt": "2025-12-05T15:21:44.382Z", "postProcessHash": "1183a298d421db9b97e21f4f01d01257c56c0cef6b8974e5abbd6aabc6f292c0" } } @@ -19454,16 +19496,16 @@ "bca19f630581f8646ca04081842168a1d45e2ea5896cbdbab33c160594c627c3": { "aa51d28dbbcf7446d6500201eb8ea20726fcac5ea9bad09ff5db9afdf1821a3d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.457Z", - "postProcessHash": "24b04f934633cd338abcd7c1d59a4da2241e50eb8f763e70a5f205127d231aca" + "updatedAt": "2025-12-05T15:21:44.377Z", + "postProcessHash": "72a4312823ce0e65beaf3cd3cd3a9820af686529703a3377a139365a63e4cc17" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.395Z", - "postProcessHash": "1381a49b2370264fe860d4bef4d729b576e853672d6d5cdcfe01e15f4cb13440" + "updatedAt": "2025-12-05T15:21:44.376Z", + "postProcessHash": "f8303723cc244bc4cde8763c4c9db3c0f60c8cf0ff23cdf6f3a68e60fd6215b3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.394Z", - "postProcessHash": "5b983b5fe49b6803c209bdbefc96070ef0273e8491209688cde56567c145f99a" + "updatedAt": "2025-12-05T15:21:44.361Z", + "postProcessHash": "5e16eece83fac8b16d3abe02d8b1ce307822046de341ae899677d95fe9a5c1bd" } }, "0e3c63c854cf8f55abf51be5d8395d72aed010f11ba09ea870f1dd42d4d16794": { @@ -19492,15 +19534,15 @@ }, "19dacaa66e2b0be54bc80666d5dfdcda3f46718eaa102d310792ce9e3c21f2f0": { "ru": { - "updatedAt": "2025-12-04T20:16:57.416Z", + "updatedAt": "2025-12-05T15:21:44.374Z", "postProcessHash": "b65cbc40e656a1470b9ae06d6a61a7b5f6c4d659cae1cfefed139d7454780244" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.564Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "902d75e3f559482a8ff0ce2277e0ffa52401905b87e42266ed1358622058c9d7" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.565Z", + "updatedAt": "2025-12-05T15:21:44.381Z", "postProcessHash": "69d83920c99d8af74182147219d69109d40215ce4b8767cad5df5e66ce84ed93" } }, @@ -19519,15 +19561,15 @@ "cf53b09fb0c34e1e63e41a10d6bc7a6922adc30f419e11b91aa28c4b6550ff94": { "3e1547b9c7d4792eac2ae0c79197b7137e4dcadce9e0b2767bdbb3facf5009e6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.569Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "2ce61454744e23274a05d6b4815ac7942d6815c8261ace32862bef2bee12f1e0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.571Z", + "updatedAt": "2025-12-05T15:21:44.386Z", "postProcessHash": "188a83c14108290b8534023237455ddfa401b4ef6e7ed80d416661d2ffbe50dd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.576Z", + "updatedAt": "2025-12-05T15:21:44.389Z", "postProcessHash": "fe1bdd270c33ed5d42691f074c8718ec1e3f45a302abd781c02f730de9e7b34a" } }, @@ -19546,16 +19588,16 @@ "d85a58d074e13f650fae5bc844462e82b569a15037cf4beb81c7fc31334227bd": { "50add6bcb155ef82dcd92ed736aa66054a116b26b9fb26de8e9ff13cfb7af34e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.450Z", - "postProcessHash": "31401254a90e9a4ba6b81c12a19957ff66b8efa4a23d8655d68f7fe7d96c1ff9" + "updatedAt": "2025-12-05T15:21:44.376Z", + "postProcessHash": "311a77134a7f0711706bd657030ead5c4944fbf091d031d19fffafd87a882e43" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.590Z", - "postProcessHash": "fb5aba312333cf2c16cff49fe32d651beb65dce5ac661fdf73dc3a9b2098fbbe" + "updatedAt": "2025-12-05T15:21:44.399Z", + "postProcessHash": "2999e1d9379ed78e65d420a787c17c4b464aeacaa13080006867d68befa8d982" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.589Z", - "postProcessHash": "3096f5428c08683e4688608a0630057893887db5d08a4cccd3cba50efec1f19b" + "updatedAt": "2025-12-05T15:21:44.399Z", + "postProcessHash": "d46b25a2e0d5786cce574a79dc57d4e63be42c00afa89a701e6f56eb9b02d0a0" } }, "b6d6c294393317eabba321f888c00ac842ed017623140b48620c5b77ecf9538f": { @@ -19573,15 +19615,15 @@ "e014a958a8137fc765da9797a531683aae1075024018fdd2793c345a9ea2837d": { "a3692c0caea63dccb572f30b9f84021d898cc0b99e942bba8475e5cddd746e9c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.447Z", + "updatedAt": "2025-12-05T15:21:44.376Z", "postProcessHash": "f2030f357dc5d21928ab4c442ed0cc7aac717f6678928f297a995e4e5912a4ff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.564Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "cc74e5cec84e4d9a2a71f19472d47247e366bbc10d224789d2529175e1781283" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.569Z", + "updatedAt": "2025-12-05T15:21:44.384Z", "postProcessHash": "964a134b825ff1b664c6ac0caff8494f2f74b2755a8c77ee0978ce76e075120d" } } @@ -19611,15 +19653,15 @@ }, "18448ec82189a3346ac5ecc5d92a8a578107f606339f0aba3af2bc08a257d424": { "ru": { - "updatedAt": "2025-12-04T20:16:57.566Z", + "updatedAt": "2025-12-05T15:21:44.382Z", "postProcessHash": "1003dde3ef519318fe17ff3a5f9d7dc0831e4bce3cb6d0adeb302dce50c603e3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.599Z", + "updatedAt": "2025-12-05T15:21:44.406Z", "postProcessHash": "9a6e74d157e3ef2377720bef046153d7a8c82d723edd72a65fb039394fefb67e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.598Z", + "updatedAt": "2025-12-05T15:21:44.406Z", "postProcessHash": "e35f79ec6e9e4aac6d91cb8fa0fff98981ac260e6bf44da146f71550edb7bdbf" } } @@ -19627,15 +19669,15 @@ "02fec6942d40034d750c654d9c675a575f12b3a87ec90a6e3786281d265a9b29": { "f8983bc303673b5b9632c8a2f95602dd3f90803ac3e493ee4ff7244ea4b98790": { "jp": { - "updatedAt": "2025-12-04T20:16:57.584Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "3e60d91065001f6e17a773783fa77ef356ed382d29f6d5e34a40edf4972f28bc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.584Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "e2870d4616cc270d794bd62520f7e08ed3a170667b50110411a2b00528730e4e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.584Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "7824ea90fbaf03f67e14c4cbe1b6e44286943883cc5c866377e0a0c069ff0d6d" } } @@ -19643,15 +19685,15 @@ "0393512198efa57d46b32a113a35375ccd26518fa34d3bbabef4214d4fb8b53a": { "8103e61160aa52995bd2806ebc1f5871330feb5a4b2c8de0e9221fa8a70d1ac3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.602Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "2709dc57a05ea43c2290d862b72d1372b6bbc798278868ef8d98eec7f783e352" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.652Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "8e846e7c412d4a1949fd30c043582de544a54c597a24c852d44c1990bb846928" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "6574bc502e943aa9a1560f72ac5b888a9c829d19b23d5aa7a04d8079340b8f99" } } @@ -19659,15 +19701,15 @@ "0c5a65f577c71fbc834405efc189e3c50da0f84a64b7f1b1ba76d9fa8e7a3e9c": { "2d31634c588cb2805bebfc13a4cefde978ae8d078f32a88954c1ee076a081d1e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.585Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "b43498141ea471dfd51aefc5c5f31c91ded72964674e91dcaf2d160d7f483fa1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.583Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "4ae9c38bfff868de076cd1b81a7d76fae7ea7599eee6c88276a9d1fd6b52cf72" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.585Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "6347eba96c167f12ec493abd68b3b4cd4e1dbd24405f54daf5b42f156410cead" } } @@ -19686,15 +19728,15 @@ }, "734cd9155fefd740d8d08b0c076d7ff45e66e547c017603481aa8c2733e38771": { "zh": { - "updatedAt": "2025-12-04T20:16:57.579Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "a25e2d85dfb298991468ab8b7de56d743bce6d5d0af3a06713f22317ae5140f1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "d490510cf4311532313f89d50c42ea55246f32ae1b3b8f7f594842387d13e8cd" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "9b712568d10f607f8f856ed264ff9cc47a645868d117f9b45f6179d21aa08da0" } } @@ -19702,15 +19744,15 @@ "16ea5fa75d5d08e032a72f3d2f70dfde100b84192a3a87d58596c7a636e73d4a": { "08b83c6534ed2ed43f2e271298926bbac6bd7c4e552372271ab8f870588ce545": { "jp": { - "updatedAt": "2025-12-04T20:16:57.585Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "637b043ea75b061ec56f2e0c6ffec2ccc66175cdbe5eba33ad7fea95b7429cec" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "45d4fe7ad00e9c2042bc777467be0483492c8e69be5490be29e8c3187cb7fb74" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.587Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "51c268d231a10015a509c2e87ac5f3443c767a72fac17a57ce1ae3cf81ec7915" } } @@ -19718,15 +19760,15 @@ "3db136efc6f866a03d8de23b61d3a9177ba22c082cf115237fe396e7ac9e917c": { "f41c454a9d7c667418cb2226d0dba5f50dc0d9a0d8d91fa03d85e6fb89852843": { "jp": { - "updatedAt": "2025-12-04T20:16:57.565Z", + "updatedAt": "2025-12-05T15:21:44.381Z", "postProcessHash": "eb4800db01f105d4702bb04a8aacde77c099ca5af2e30a61d219a4e7f8b4e57f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.546Z", + "updatedAt": "2025-12-05T15:21:44.379Z", "postProcessHash": "795c5e6265166ca294a9cbc9f7e98445bc11f9b1eab55b129428202cc70ac784" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.459Z", + "updatedAt": "2025-12-05T15:21:44.377Z", "postProcessHash": "53eec29eeced600ab198b2fce0d200b18118c83a047d4dcc98ed76af35c25fee" } }, @@ -19745,15 +19787,15 @@ "3e1a6a2d9604853fec0f6b9c21e1534bc36ba5880d4042f71f1d9a03ff9e0c74": { "50a43ff5465e5ed3b333a2938abb5b5a0fe5d616b29d9f1176535339c755b45f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "5a0705618a01eb3b4a560325668cb43ca04563087260896a31eeb025ca6f02d6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.563Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "0b026ba47a86d82886a082357463377404f5e92f5eea6770e50622990f745dd0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.581Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "89e9f6a2cdc98325fba5f0443f7f556668c96c5584fe2ad96f3a6d182b2a3322" } } @@ -19761,15 +19803,15 @@ "3fac7c056527b2656c82dc06a3baca18af73cc6545b9cbc229c03280f867b18b": { "a946c1d0dfa7b8e0e8021716ca512f6f92c6c72a0617c7843fc9f56182195582": { "jp": { - "updatedAt": "2025-12-04T20:16:57.560Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "971dc060decc336bdca43a61598211065f5020d06c67faeb55effb8215883783" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.588Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "c3e98a59712656d8ba2955f90171272a5c02cd6e19efbbd3aebb26205829c40e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.588Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "35a2b62726e14991f5c58824534b1f55af3f55295d0fc1ae0f67ed9bfc8dbace" } }, @@ -19788,15 +19830,15 @@ "5be58ce97a5c915ff2d4f6bb0a603580ec8a37cc97e4e9b54ce41df65adbfd1a": { "e6df66dfd56c3a5f3a55edad9124b2138f3c2c2e0aeb7207d62e987015a6ea34": { "jp": { - "updatedAt": "2025-12-04T20:16:57.594Z", + "updatedAt": "2025-12-05T15:21:44.402Z", "postProcessHash": "f7fb02df5c0da10a8686c9777e604e79d092494124cf3bae3a1f931a28ff4b3f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.594Z", + "updatedAt": "2025-12-05T15:21:44.402Z", "postProcessHash": "7ea2f561365da54c629c39a5bfedd424e50c5631f96abf7992d79d763486c786" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.560Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "ce3a40af1be83d79bd86d75fd2f91b8babb223a386c9f67bcc0a9b551f96440d" } }, @@ -19815,15 +19857,15 @@ "5eb08e96fd1bc79722d094e6a779abcf8a842d610d831653012ca3687bc9f9d7": { "abb8bce9e0621c2ecf30f9505bbef2d716584c9ef4ba432a4e47ade831354eea": { "jp": { - "updatedAt": "2025-12-04T20:16:57.590Z", + "updatedAt": "2025-12-05T15:21:44.399Z", "postProcessHash": "588890dae19b3dc964f3d11131386b9d7fb0cc599d1cec1214feebf071950a5f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.589Z", + "updatedAt": "2025-12-05T15:21:44.399Z", "postProcessHash": "fbd9c968c151f7936b86c264bc84dc75f2a64498b3bba499fc03e762e8dc1c11" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.587Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "9dcced3e8753b1fc29339eb17be589baa787bb747ac9cba6da4457f86521448e" } }, @@ -19864,15 +19906,15 @@ }, "4daeb6b23031febdfb1f2258c7c2480bea8af82a83a813aaa85011a7c02617ee": { "jp": { - "updatedAt": "2025-12-04T20:16:57.597Z", + "updatedAt": "2025-12-05T15:21:44.405Z", "postProcessHash": "94fbca2a335294316cd92d2bb4df8492711e02b4b4ff1b47a8372fe27bf1f3b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.595Z", + "updatedAt": "2025-12-05T15:21:44.403Z", "postProcessHash": "b6e65c5c53c1be3ff4204dd51388094bd8fdd108dacb6523c9a51c8c5cbbc3ef" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.597Z", + "updatedAt": "2025-12-05T15:21:44.405Z", "postProcessHash": "f57fb22c18eebeb60276974bd48d570560679875944c86f6caceca399649131b" } } @@ -19891,15 +19933,15 @@ }, "6baf22b6178fca69ab2233a6185e1332af3dc95190818076a2f12b4b73a673f2": { "zh": { - "updatedAt": "2025-12-04T20:16:57.600Z", + "updatedAt": "2025-12-05T15:21:44.407Z", "postProcessHash": "c4d182944099cfa257e1b08feead9ffc3da7835e6bd603b6d6d6082d4405ae2e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.600Z", + "updatedAt": "2025-12-05T15:21:44.407Z", "postProcessHash": "a66e5258c11a392db59a7afd9f75f6e99b7fe6e4706d905a04c54736f906cd80" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.600Z", + "updatedAt": "2025-12-05T15:21:44.407Z", "postProcessHash": "46610f4d9e525108e0657f77687e25efef1484cbff8256fbf3a9838cd8031cd6" } } @@ -19907,15 +19949,15 @@ "98a2ade41bd4731a099f797edd596fa78793203056404b35f51d527b8f16a36d": { "ab4ab861bb9e5302cd16890ba55359555f2b962726d92b750a912cb146221d73": { "jp": { - "updatedAt": "2025-12-04T20:16:57.591Z", + "updatedAt": "2025-12-05T15:21:44.400Z", "postProcessHash": "9c36633e4281107e9db95736c6e1dd8cace26ee02c15f336009b2f5310855e9b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.460Z", + "updatedAt": "2025-12-05T15:21:44.377Z", "postProcessHash": "9f5c7a03c93953d2fec624c45b14c3ad86d1cd83d14dd7666316874df60875cc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.586Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "b6bfe7e3cf4e93efb7143387c7ee34be6a0320586781e4d40a6c4ee4dd65a066" } }, @@ -19934,15 +19976,15 @@ "98c18fb7bc391069017a8197ca9b4b5c5a8218b2cc79f1210a3aba08ce470c6c": { "81814115cad79ea901cacf1a4876697b9b219a7ce07476d4edac8f5cfb5017fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.595Z", + "updatedAt": "2025-12-05T15:21:44.403Z", "postProcessHash": "9c9d2c22e8f96283914a1aa3c9e3b962711f10497ce1f5e6debf4c3562ece170" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.596Z", + "updatedAt": "2025-12-05T15:21:44.404Z", "postProcessHash": "a5cf88c06c16151ea880166ba833d84d23d4c171273266cd5fdb7e2ef98eae3c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.559Z", + "updatedAt": "2025-12-05T15:21:44.379Z", "postProcessHash": "c9a76014fef5ffccb1cddd49e6ad55227871e79c065d22a4eb035f889ce9dda8" } } @@ -19950,15 +19992,15 @@ "a005818ddc766e865af1ed1831655cacf269df57fe20666970c25aa1d089714e": { "a21353177e0617a8a2423d2339da6a2715dd92734a60da91f44354edb7bb6df3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.591Z", + "updatedAt": "2025-12-05T15:21:44.400Z", "postProcessHash": "7a0b812c32d2b502a1a9814574908f4967f6f73547ca97f55bfd15788c70819e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.565Z", + "updatedAt": "2025-12-05T15:21:44.381Z", "postProcessHash": "680b8b14cca1d1e74875907615016a1a70d845b6f9ac965f463746d2d1256d8a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.592Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "0c5069d6624ba2441d3756c401903b94b4f0adc1f6b9c33a4cbbd55a940c0a5c" } }, @@ -19977,15 +20019,15 @@ "a5f04cc970babcbd17a73219fd4d3f1d299602d839f96c355b2d5ca53d5cee5b": { "23193e28103b0087a2e3c305ef54301cdc3541ea5b77ce29af8eb04a17fa6f4e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.452Z", + "updatedAt": "2025-12-05T15:21:44.376Z", "postProcessHash": "fa4a09c9cd643edd4450462b32be7b5ab038ed1230e1cb8d0ff68c40edb641e9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.559Z", + "updatedAt": "2025-12-05T15:21:44.379Z", "postProcessHash": "84d2b1b9e4f778b2bba2dbd55afdbcde6a5a407f8b9969b949ba4be776b761a7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.588Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "be76dede8b617ccbbe433ec0f13b2733f9a35b6e11ec2027816e492096897469" } }, @@ -20015,15 +20057,15 @@ }, "b5127f46fc8d65c84a16ddba167f617184476bc3c5db98f881b3968229929e19": { "ru": { - "updatedAt": "2025-12-04T20:16:57.564Z", + "updatedAt": "2025-12-05T15:21:44.380Z", "postProcessHash": "1f6592afa5325d047a92d4005b0e8954eea03dfd0bbb1e854273552aa3519b79" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.565Z", + "updatedAt": "2025-12-05T15:21:44.381Z", "postProcessHash": "80742ca8aac8df33e9190d562858c19349d861d37a78462cccbe9c3e77089ede" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.597Z", + "updatedAt": "2025-12-05T15:21:44.404Z", "postProcessHash": "df9346336aeba936833c6ef50938380f2563adbf96e760e1669caa2c5e57179a" } }, @@ -20042,15 +20084,15 @@ "c43792a75d02793708f0f9c298dd1e81a2db715e26bb86c9a3a5e14f34e785c4": { "76526beb43a3126f9cd6e8837bdfd7a2b5b294aba899560796a163b8963fb64c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.593Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "cafcad036089c03679ccb094517a20ba63b22b4276a4fd5c4ac88148e22af841" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.593Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "5cd145a6775e7b9ae1d044606d92ed13830db6f9f0b743c0697f9b9e07111c00" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.593Z", + "updatedAt": "2025-12-05T15:21:44.402Z", "postProcessHash": "75165481bb165e4bdcda4a00a71ee5986e4c55ef64a22e01ed0d279f8b381fcc" } } @@ -20058,15 +20100,15 @@ "d34da7fe047d51a78fb46b67d8b9e61beb3565db263ce630e02ee4fd1c3a415f": { "de2fd7fc7b86f2b80b1c08bd8bb73d8dce37227d7b14b5fc21508b921ca7af10": { "jp": { - "updatedAt": "2025-12-04T20:16:57.588Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "5acdab8d074b694e772e4cd5d8eb974d4b3acf50b77763fdc8c77567ca8b63d3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.589Z", + "updatedAt": "2025-12-05T15:21:44.399Z", "postProcessHash": "29f2e9fa77e2de07f4d5d4522e576af9ee7cef1d42e12671762ccd317c943d4b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.587Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "72fd06feea9218b99d6701cf7385f2b2e5ca4210a36ac8efcc028281cf80290c" } }, @@ -20107,15 +20149,15 @@ }, "15560cb3fa6f0a4e7ae1fd51eff8646af3ae08a98e760dfc0c6787d702072f0f": { "zh": { - "updatedAt": "2025-12-04T20:16:57.583Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "51c4c210de3569e62af44e4ff7e2611be9137661c3b75a6d6af2f519add5d372" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.583Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "cc853f29620b9879c9bd1555c249189a52e70b02f5b3b01003b8e020bf81b42d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.583Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "c41f48194a047e16653c0b18c7acaf83f43af9f3967548629cbf4cb39546a388" } } @@ -20123,15 +20165,15 @@ "ec512023c5c9e376d6b5a73b27c72543c329f1031a88df1142e318e852a6f5e1": { "e3ddcb697170bf6b9accf7bd9484665c071ebdf44c1609b8c1f4a6ae733dd1c5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.594Z", + "updatedAt": "2025-12-05T15:21:44.402Z", "postProcessHash": "67ba59176cdbd1bb4f9d12293d544c7a5a5377e00b65b68d126c53cc53ea94c6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.593Z", + "updatedAt": "2025-12-05T15:21:44.401Z", "postProcessHash": "955f7d4eadb160c93d9451181919f2145c7a76c46d6f5b697a0ff93b2d594dc3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.590Z", + "updatedAt": "2025-12-05T15:21:44.399Z", "postProcessHash": "849c0eb47bf6384d9102f769e0be3a20534c3a99219d1350ad57e1d77e26bc1a" } } @@ -20139,15 +20181,15 @@ "f411f73869f1597bddd3a69a70dcdf627b2f48802b68eb1297c49cf998a1d590": { "6c152f17b58caad6637a04e4d427aba059026b111c90e5aa764f040e05e669bb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.570Z", + "updatedAt": "2025-12-05T15:21:44.385Z", "postProcessHash": "331c38927c19c9407728a6943bc5c1100800089fbcec620f2ee27b2c0dbaeaaa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.585Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "9bed1592f00e7bf18dae387703cc34eac541819b3a8c588ad993153015f9f8ee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.465Z", + "updatedAt": "2025-12-05T15:21:44.379Z", "postProcessHash": "d82b0bd7ba21ffebae0abe4edac136a9d8ceae2ef8fc706a7d7c3c2019c4bfa5" } } @@ -20155,15 +20197,15 @@ "0bba267be6ffcbb62a544c365f5d2cd85d6371c78dc289e5697b0225352a76ea": { "95f85b7c7a43494a5f08ae259de69c8952afb7851b1d9a887ad3107d5e6cbc01": { "jp": { - "updatedAt": "2025-12-04T20:16:57.656Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "5678792d3c8237068a96083cdfda49285f99688cc50c0db739e579a0640c30fb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.653Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "ee7eff3af93a21d39396b021afd96e657d0c5cb774c6fd4adcde1ca1d4073940" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.660Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "04bc6b4e2abc3728a804964a2237a67bda8a38309da09809b34eb9b8959767b1" } } @@ -20171,15 +20213,15 @@ "12f796f4ae9f25130a8cfc11aff488171e7376f25404278d4e5c173c8bf9ed02": { "55069f671a99d799cfd16eda4312b66b5a321376cc69b52c58ba054f313fa404": { "jp": { - "updatedAt": "2025-12-04T20:16:57.646Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "b074d55b8da5114626369121cc74820fdb214ebd596eae0dbb3f06c730ac5a2b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.650Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "5a746eb1b76fff9bbed5d64080534b643b7b11c2dc04a7ee31203a4738cab598" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.603Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "61553ae737c53f26871eabf42e1fb78d9b7c3529cdd25940d9b4d7be23de76c1" } } @@ -20187,15 +20229,15 @@ "16c87bceec945d0aeefa7e76d421913b507e3b04716834b3894e9fd3174d2613": { "b43921e7c1caab150d19b0823696bd909b5e9b9dd41fe7847acfc9dabaec0942": { "ru": { - "updatedAt": "2025-12-04T20:16:57.692Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "8085e509478f7334aa7227e7769468e5d1ba68f27b4b3e6b040d2913de5732b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.691Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "d6150b5f43b94cb084e8278e06756702bf513b2ff5723bd6c90e3e02d39eab32" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.691Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "8d30a943dd7049ba0ccf50151cc90c3b2cdafdc6cd8c25bdbeaadb833b1914d6" } } @@ -20214,15 +20256,15 @@ }, "7ac8d25006b0218725310bb4f50d2afa2fa76b42500a9587fca779027db7c47f": { "ru": { - "updatedAt": "2025-12-04T20:16:57.581Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "55822944d0ca3d818e7662491756b4ebc2b83ad6fe9ff74ba3aa6e3bda5b2f79" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.581Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "612cb0291aa25af65af9656d1d18506ee966100817edef81c1dfadde2c965110" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "f71b29640bf00a366ea60eef418ae0caa20005e98396a651b7c2d3bdd85f5156" } } @@ -20230,15 +20272,15 @@ "2644c145de6d61cff7556d3efdff355e849b2f38b5c7912fbc2eb07360771f61": { "0e301628684a655bb2d5641c57775c3259b037ac338372d82808d6c91cacbd8c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.415Z", + "updatedAt": "2025-12-05T15:21:44.374Z", "postProcessHash": "43f5173f581b4acf5a4e070befc3ea31210b152647821901d80eb06023eeef1a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "c43a0d811d7beeedae7799e5e8227e4997a1f35927a0cc7d7be4153897f0d1b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "dc513c2b487d9c80c1790111069c8b4d9d0e725be3b3223eda84db3cf6664344" } } @@ -20268,15 +20310,15 @@ }, "e28902f12acecd10b62cf9cafa9cf0227aea3ec77ca8326732aa46b01a0d4b12": { "zh": { - "updatedAt": "2025-12-04T20:16:57.602Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "fc0fdf9d5c9d6811268d6026c31e5f95cbb506fcea4a8efb04aafb9226d0ba90" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.602Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "db434e2534ae8226bd3a619adf6b42ca3045e9ca884388eadfb596ccc9d09c4a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.603Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "58061eca5b8c9473c60118eedae63fb225c50aba6b05ff5a2d83447f1b328430" } } @@ -20284,15 +20326,15 @@ "337fa5ffda5b1ce15febb15e28d78f509b83dd0442c0eecb4e5fd5ad01cee570": { "8ad0cc19f45e168f3328286b8c922f25ddb3753ff16efc3a1795161778bbea66": { "jp": { - "updatedAt": "2025-12-04T20:16:57.687Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "823a60b3ace40c2800fc852e592988f75c15f8e313fa216d6aa3be8f29aaa8b4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.691Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "dc0e2a44e5d9c51aeb0571d7216cb03a68dae0ebba3bada7c51146ca7cb57a1e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.579Z", + "updatedAt": "2025-12-05T15:21:44.392Z", "postProcessHash": "83dcbc9085d4dec66330d0d0ba2833465b52fc629dc1f333709fe07edd70e758" } } @@ -20300,15 +20342,15 @@ "3a39c3cb40c4a84e5848358c7bcda5a305e64fba4846580eecea963760143cbd": { "1a63ea8e13a6c3989444c8189eb5c95920d36ded548a2cbb106db39f91e17f56": { "jp": { - "updatedAt": "2025-12-04T20:16:57.655Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "27e8ec3a420a04a66d60fed025534b09a101288941296a8b96033153e442282c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.657Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "4573361ff48146216a20fdca51ba2f638d4ee6b572ae0ae4f5fb624f1b17e978" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "01534d33f7b61ecb12f83039d48e18394593ca38993aa3b05d91213dc48871e6" } } @@ -20316,15 +20358,15 @@ "3b2a0db3103ecc795ff82061e46875995689dee845c28a19697c2e8b7d78fb8f": { "84bf17e2315c270d4f26795807428c5ef311a937dd6e53a4b6f3a8e26bf5e771": { "jp": { - "updatedAt": "2025-12-04T20:16:57.649Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "effb6f58c64072592c934d47c27ff8ac63b1375e2b9fec9654852bfe6bfbee4d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.647Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "16bb312a94c73f8bdf7fcb1b1e5fca2dc77ff3bc920fac25d0e3f4f39c713ca3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.648Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "6046957fbe55f85753686a109f9b0332ea3faf14b2b00ae43adc07ce9983bc1e" } } @@ -20354,15 +20396,15 @@ }, "2a954aa5b3c6ae320f0f704cc2dbd8490f0b40f5d2552a4ea0cc0a372ce7f660": { "jp": { - "updatedAt": "2025-12-04T20:16:57.670Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "2980acea06f3537995f6e0c8861d13a6193eb0e742161df85f41ac4564876f2c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.670Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "ac15b162913a27353a25090a993ba54a8eb99bf06561897c2c2f7a332a04dfdf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.670Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "8242057c08e9b60c33c698b4afdb1f138ee4a5572af0b83e8f1eadaa1e17c34c" } } @@ -20370,15 +20412,15 @@ "548882c1623ad246688470b47967ff13ad16868ecad4f09349b0182efc755985": { "76fc9813a272dfbb6dda3bb0096c7a2eeb3bf0a58d344e26c115c075a8cdf7d0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.665Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "8cce58c225ae7057600cf7811ba5039561dc3dba9003ad8e1557d007fb9d1788" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.664Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "359450fe5159865ea64944f5be4fe90ec28e8e166b0329e46444f60f07b82988" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.663Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "30cb2b636cea84225dfcb326501229b458b95d9a02cd03ccdd80776af413c94e" } } @@ -20386,15 +20428,15 @@ "7d0d5bb4af482b39457517f498efb3ea46e33dd5a7cfdef6d18b2beb02e7dc2f": { "a7f9fe4cf3ef806d2de5eb8e1f83c674deb8224319845c32faa2c509b9f0d89a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.662Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "1bd505b41826ca42c331d80a284b9d07e1c02cf19b9067da463bd6c319ffeccc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.664Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "adffa03c1dae0e693402b1cc267b4d76eef7d004064838606a4ff7edbb68465b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.663Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "2a235fab93efe01442f4ab5896d3e7da4bea146ae3ef1884ec31f13fa0fc63df" } } @@ -20402,15 +20444,15 @@ "819fce8b1343a94dee6cf3e428f8d46ff343c43b0d83b49efe18129ccf292430": { "af1d949b76a7c871e4cdce3092a3b2e2b1ea6afca4c4788054f8ff3eddde3ea5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "2111238a4c2eac9d3710a50dc755c6712c30b4cc92349904670129bfec67cdf2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.650Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "ffa97f7bfb7595960abeed29a597ee8910dc31a345726a97b75f4c4dbfb1f34e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "355fb666a6c6405d55de2e318eb8a04edbd84ea2f10e6b38e0b9f814cbc3ebcd" } } @@ -20418,15 +20460,15 @@ "8756460c34802f52ffc72c46fd775666b61d2134d4e3d1de0bf4111a5a049571": { "483cc85982240fd19d9aaf9161c58f6f4b1f2cdf226fb60169450e02caea8384": { "jp": { - "updatedAt": "2025-12-04T20:16:57.658Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "7f8e52ff1a3dcf6fc66cce399a07e85b4bdead3cd2e148abe4f0597e1ed2f33e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.602Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "491a5d945987c764f0fb168d1e21a4c81ca3feac1fc95ec11a46924a097d7948" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.654Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "802fa188bb9f3cc9b7dc3bb4a776f930be6a6f6d2c4ff2c2f3d222d50f38f6c1" } } @@ -20434,15 +20476,15 @@ "99effff387a3391b66ab69348b19106aa7ae02149e5cdda15d9bd9397ddf4c41": { "635055619056b153a2e20b6a09345d76348336b24340ba32f815de9c85a7f2b0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.596Z", + "updatedAt": "2025-12-05T15:21:44.404Z", "postProcessHash": "155d02e31aa699a4bf250a7fa2f462f31f42ca0820d312441625b2cfc79ab72c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.596Z", + "updatedAt": "2025-12-05T15:21:44.404Z", "postProcessHash": "8928fbe9cc2ef1d8bf4295f54bdbef37b404af0d5332f5a006975836054ec49a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.591Z", + "updatedAt": "2025-12-05T15:21:44.400Z", "postProcessHash": "aff2ee71adabeb9f84d468e926f6611825cd55ded277310e804875b9f697aeec" } } @@ -20450,31 +20492,31 @@ "a0698fed4f549f79afea06d1dac666b108eb6f5dc2fd3c91aff7c13f9d635593": { "7bafd49c863eb3620b55c3516c62d1d11ad2c81b1333e7396261c18b3d55cf9f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.590Z", - "postProcessHash": "6ab413cc5056660213ec38a9c0436d51700f7e1c81fe111f5a6e95f06a7185b5" + "updatedAt": "2025-12-05T15:21:44.400Z", + "postProcessHash": "5fd82726463753f90d32e93675ca0eb99db1526c32b228672fdeddf4a521e6b9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.462Z", - "postProcessHash": "a6bc3718d40d1495077fc414d0af57917737294004d0d13750b0dd7f1142317d" + "updatedAt": "2025-12-05T15:21:44.378Z", + "postProcessHash": "ffbb91047c34171a026860efd0167b7c1faad3366805c7e546525832374d4ab4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.589Z", - "postProcessHash": "ec1f0e9dddf6d57b44fb57adbe015332c36fea7ef97e5b0cee80a85cec615106" + "updatedAt": "2025-12-05T15:21:44.398Z", + "postProcessHash": "798e6313c4712ef1887b672f3ef37ef6a83b00d0a81508661ad7ab194adc89d2" } } }, "ad1402ffed17fc7c6fda3f600f70cf8e3bbe5384d766081c16c2c90b4a775b7f": { "623f2f8c2f6006597fa106e18afad1304117a0a599684c3050b5f92f433dadf9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.656Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "a8099cbe05a556cee64ca9cfbfcb2a769035b393cbaea0cd8a1df676563bcf30" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.653Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "dd5f9a77ec575837021212f3420e35f4c7e8932221b6a4699858395f5a9f0c5d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.580Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "13832ce732ba5ec83691768de15e7b247a8e1a8102a1fcc0d5af5938156c7365" } } @@ -20482,15 +20524,15 @@ "d6127c27c939a8143d6bd93d737c445238b16aea350cd52caa535082aaed407a": { "af21361ca18f3026c0fcb3b223ce74e7a213c2e9016d2f7596b5103f9f243027": { "jp": { - "updatedAt": "2025-12-04T20:16:57.653Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "75e1f3c22ab847c7e3575736f7c1868eac241fc599624409e3fb4e5984abc3dc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.663Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "8280e955de9114057e63a8a6e0f35e0d287b8d26ae811127409c306545d0ef30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.665Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "fae1838129385f45bdc786961ff08dec1bcfd358cab84e352d6e92eba0fc88ee" } } @@ -20498,15 +20540,15 @@ "d679b331b013310d0726e18cff38795d35a48a549ce862414366ed5d37b17a5a": { "6884d15ae61a9e31fa06e9f6cb793ec44513338525d28650cffaeecfdfd55f59": { "jp": { - "updatedAt": "2025-12-04T20:16:57.461Z", + "updatedAt": "2025-12-05T15:21:44.378Z", "postProcessHash": "6fad68bfb31a3c2ca29f1e025448d23d9e9154531047abb5c103e42cdc589e07" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.588Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "43edba1e1f956f00ee97d6deab1b145f1c29b51ab928f6a7141ed7a09f9f87c0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.587Z", + "updatedAt": "2025-12-05T15:21:44.398Z", "postProcessHash": "70ae0a9bc13e40156ab0b8c60a1c033b1092a6574b84c4fb7aee1ff34653d910" } } @@ -20514,15 +20556,15 @@ "f23d1fdbec8862f67bc4eb334787e78bade64fa097b14c338abf676e73a1ca62": { "0206d00d56a0c7be7a356c6499d1bc4c3b24602fe48380f49f1a8be277e30ae9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.585Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "a19ccf16a8eb432296f4f6b529b37701079feccb4c928f19b9bd86592276f006" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.583Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "60aae17087c8fac0d6d4dbfbd88aec68b34510677141ec3770aacb3c7882847b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.586Z", + "updatedAt": "2025-12-05T15:21:44.397Z", "postProcessHash": "94a1fe079f2fe3282fc342bb4eb96117cd82b95ce260bd0a486f67e1545917d4" } } @@ -20530,15 +20572,15 @@ "f5d22ca5e2a60035bc7b1c39046c553ef2238bbf8c611bd22963a3cf3fe67663": { "9a33263baf26f23ddc1d61444b9f0bc17fe15f0d44c6aa520661947f7bc28d34": { "jp": { - "updatedAt": "2025-12-04T20:16:57.585Z", + "updatedAt": "2025-12-05T15:21:44.396Z", "postProcessHash": "1dce294b31e5ac04b1fa6229f4cb78612a5af6accd91c4d81667343df2aa5f66" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.584Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "12a7b6c433b9a2774024b007c4971c28c0a48ceaa69433d48c1f79b5f55680c7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.584Z", + "updatedAt": "2025-12-05T15:21:44.395Z", "postProcessHash": "842264c8e329a99f215715cd845aa0c3147eb003a3db2f684ea4ab4389daa0dc" } } @@ -20546,15 +20588,15 @@ "0d3a0a09b86406c2c362ede819ee030f9d92d058939579cd1229e361973022f8": { "9fc104791c743a764dffa282d540ca4365e02a6a6590d6c336de81ff7f63da24": { "jp": { - "updatedAt": "2025-12-04T20:16:57.579Z", + "updatedAt": "2025-12-05T15:21:44.392Z", "postProcessHash": "fcb325802f33cb167fb58f7a2f88d3589f1f273684080eb0f8fcb8d94db852de" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.684Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "d500b36ee678669ecfdef7e942677cc87111e09eedcadb2e52aa4f4e2e28010e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.686Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "3958b45d33bba163ae8a2c8b7bce67fdc96478e6d1caca94e6b0208f8aee0b66" } } @@ -20562,15 +20604,15 @@ "14364235369dc388419efc9e290886ddaa202d5023e8adc55d75a61c89fc336a": { "328695ec26f7fc60b0c8aec17edefe2b5cd222a635c116a01ed4259436be44ae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.679Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "33928766b7939bb2ef4cf1f8f8c73ed086e743826edbd7a925e686b3c9a57c59" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.683Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "2e364faee5b46c247e85daaef3d2b437f56c616ff10522eeea43cda911806d20" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.684Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "1563a8e89e250ee1c35c865fa941b64adb9af53b11e29075973a1eb60c057193" } } @@ -20578,15 +20620,15 @@ "14a65362c725c7a0fae1767f0bdaecab08516f4549961fb82c9b0d3889476e2e": { "4b5208315e755dbc3f295c8a58958e452a782c2f41e4965b7aaafc2ecdf93523": { "jp": { - "updatedAt": "2025-12-04T20:16:57.690Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "35d7d5dc6937334f3b23d3b085c18e145f11b78d456c46feaa074f4650635252" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.688Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "7e839c964f9083c5aae1272de98bc132e623777c729d3e2c2ca923a799d05945" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.691Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "c9aee2c36ff574ed70f64b86e45c018171aac2e09dabfe25778397470719d5af" } } @@ -20594,15 +20636,15 @@ "181aa5509e2dd7724e3095fd6c0f17cf6fedab2635b9af1d57fe9d1e2801ec31": { "bf2760368d2fc3a4c455358f8872f13eb6f6e7b8ccd6d529c68dfa016882d216": { "jp": { - "updatedAt": "2025-12-04T20:16:57.682Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "10d9785badcd0cc24e46ec8b1e017b4d62c8fb370ea39ddbde77864a63f3ae82" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.683Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "9ed1f590fe2efc90a6477f83bf465c9da7e2f940a000f452d9400219d32cc77c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.680Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "6669451d98f9cd189d4c414cd13efbccf2bdb186ea5d7412928228dc2ebe8514" } } @@ -20610,15 +20652,15 @@ "5181bec59897499f787e1b509cc19c69de2efe0e1437cc2001f2c7dbe8022440": { "54af2191cc8de0b1a73c6bfeceff12420569139b7347df0f18a111a00cfa0d1f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.648Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "685bfe4bfa067570b280e30de9ef63ca048946fb37cf9b0e14a45a4292726eb0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.654Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "1a302a4609052af4658efb236bdf661ac362db7fb97257a6456d3e76c84782f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.651Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "f35c1534a6cb2cd5f47a2130af68292d83181e517bdf83af3fbb4d42153c6b84" } } @@ -20626,15 +20668,15 @@ "59475ce3a8014935df370b01b5266883e7814a8041f963545d8edaf3119557f2": { "53cc67b8b0dbfb95e446a4d98d10dfc35a026203fad1b1a20cb6bf733faba4e2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.664Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "1c57804c6871c7fcbe5dcfc958f3c623b4d5540b2cd404928f54aa10bcfce307" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.668Z", + "updatedAt": "2025-12-05T15:21:44.425Z", "postProcessHash": "be99934ed27ac4c0ccece20e80c8e3db0f326db99e826c9e50653e7513f0cf0c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.667Z", + "updatedAt": "2025-12-05T15:21:44.425Z", "postProcessHash": "55383c602b43993e3cc0b0bdbd37509a15a6fb04ba58723e5470b8587f2d3afb" } } @@ -20675,15 +20717,15 @@ }, "c2ebb0c5f7fbe91be83a9dd3c9def71a40958aa5b6484433272d09dbefb6d6ac": { "ru": { - "updatedAt": "2025-12-04T20:16:57.668Z", + "updatedAt": "2025-12-05T15:21:44.425Z", "postProcessHash": "14a404fc94c7a30c73b6e7280ed9a970a8cbb85c85b928d84f9bf227e9b652e2" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.669Z", + "updatedAt": "2025-12-05T15:21:44.425Z", "postProcessHash": "93e0b32d915254ae12d21f4329de071192ec084d52a156a66e924b272faacf38" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.669Z", + "updatedAt": "2025-12-05T15:21:44.425Z", "postProcessHash": "a54e6d2734366fb18422a671ad903a555349d2f855589bcc3f8ee55a7532c0f0" } } @@ -20691,15 +20733,15 @@ "6d2c1d43528de97c8dcb1e3618555c13b1ee6ca0cec9035a38fdc267403c6c3a": { "a09b919bea9302ab3ba5a119614ec1de086c78f2af22957d06a895b8b1504bc9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.647Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "1986919dd165b0ad34257e2198b4efd79d89389d0f3984e288d24547b84cdc6f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.651Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "37c1be222052727e0614815b249e72b4f2dd897b10f3599de386d0344b33c083" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.650Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "1c80f3cc245682a22eb150181382b07359e496bb52d7795c82082fc3003f901a" } } @@ -20707,15 +20749,15 @@ "84d27978ad24cbc0448dc0661dc1cf62312406d39568cc877e9bee6c04e93677": { "4120b13b5f03f7c2fd4dd243edcbc718d6bd291d7358050064f6599242eeca09": { "jp": { - "updatedAt": "2025-12-04T20:16:57.650Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "44bef36cff7d45a14389fe979190bf2e6bc0c1048290d86c5bd89064de58c34f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.602Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "509b660d3b5a053e3c26111c46772204187a01ef33432b39f0a8e019b21e2777" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.582Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "72a3afd4b9e9019096ee63f9dd474c59fae790a15169c872e6f0b7f78101fbdc" } } @@ -20723,15 +20765,15 @@ "993eb4cbf451025e383f5baa954ba930c6f9ae51ff01592c72b8d36662548817": { "6397e782e35c68ed2849d7a8210eb150a2820241365b2424b92b3ac99815d60d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.659Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "00b05501b5e3f5a8a5004e4283210272464b1e5bdb201cb1c1e7eb2932ac4ee7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.655Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "401fc08667076aff8967c4d9f19bd32c37bc55abc1ff3861340223fc53dbe84e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.658Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "b977d2ac0f3b085ffd87d073d3b8cb04a3c94bf95d7767f661f6270834c274aa" } } @@ -20739,15 +20781,15 @@ "bc95ac30c6163794df098cb1c5b0c612d68e460c1fee0982a9fde6ad2158ac24": { "d710ab3ea85690006a2ba44bbff81541eaffd450228382acc7544df0e34c7468": { "jp": { - "updatedAt": "2025-12-04T20:16:57.655Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "03b8f73755647a6f9a73d7ea26a28a8599953a3b3f67ccf5f33ccfa22b39e1b2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.662Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "6a667df5280163acf1c0347e2f7025726fb2f853d2949b9c744bf29856b44930" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.665Z", + "updatedAt": "2025-12-05T15:21:44.416Z", "postProcessHash": "2c7a3bf72c18949af3f0da6c769cf271b9465c65071a228445a402a66caa3ffa" } } @@ -20755,15 +20797,15 @@ "bdea2c6c34b1129be3efdd889576a52c92a915a41e1639ec5331bfe00948aa9e": { "d5c5bd7080a73f05e45d4b278cac9e1b97c489d95a7c80a8edeeccfbc35abb0e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.659Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "d990c930fd772790529caf4c8b40ed0c38e14d55bbc980f2ca2439917a59d705" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.649Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "6135359e44350e325ae69b48eba9659309011bcc392a236c3780122003cc3c93" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.660Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "89313a4ffc0d8da2df46a3d1083df8adf0a7a77dcbd7804bacf19fbea65da1a4" } } @@ -20771,15 +20813,15 @@ "bef9b0e0b7b38c7969e61c98c564c4f45f4514c4992c99602befb825815d3fe5": { "ecbe5e563d38c0a661a9495fe8b3be6dea6041fe9fe0a6e674428f8d203f2c76": { "jp": { - "updatedAt": "2025-12-04T20:16:57.660Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "aefd8ed7e23196fafabc7b262178dc0f913ffd552d5c0fef5ecf94ef94e2928f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.652Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "fb6e568dd534ebc16ac4d8b7d63e98564d71657a2e780c6f68b5088cd4ad98ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.653Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "86e2c17cfde5ba27ea5111089b307d64faf9edd91ea3922d9b5005fe6a2732bd" } } @@ -20787,15 +20829,15 @@ "c86c73e2e1466ca9839d03145d28d089d50433e69d452f195d963042ce89ac2f": { "f65f3977310bfcdd03981a63ac5b1d00c85b04cbbc5ef4d29c352006d88c1be0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.690Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "3affb249b4704de25617e452b79e654d495c5789ce89020a0b5e30f4d6861fa3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.684Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "ae0a2067c28c1196a43e19e849f41085943ba9a4b4a937dc1f7b00d796b15940" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.662Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "e07c7a41f5012428d15834b680f86e3d51397170594328b6b71c4570181f7f22" } } @@ -20803,15 +20845,15 @@ "cb9c09aa37313bf52611e34b607eaa3775f6ebfd79387f2120b6b2b2ed4b46e5": { "b033c9754be40272847cfcdbce3fd43701961388f8efc8698510876cb0c0fb40": { "jp": { - "updatedAt": "2025-12-04T20:16:57.657Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "5f202645e772cfa9b66ce42db7caf7cd9c28649370139b45f796af57beada41a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.656Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "730476a1d6177985b73e2ce9e31babb9b5812e0263cc712f052ff4f6c5ee9ed5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "9a9ecf73cdeae1f584fb18ff22d40f31ae6876a3ee16f72f7b3e367557ae3af2" } } @@ -20819,15 +20861,15 @@ "d7bfcfa62fea0cd11e8181ebab38199db1c954694d8230c3cb8be3a89f91c476": { "c1ce68737a5260a794d17040e187ca291588ef715aeba34369597a7058dc2af4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.654Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "fdf1dbaa7c682b6ae678be9a2af947848b3f27c2a9322fb7cf779df35dca1663" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.688Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "6e96817fd230b5af601195a3a5fd53abd1c083a986a2210e153bcc3d1be76152" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.687Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "c0dabcbe67d17b4e3acae426cc27dbf1690291ea46124ae529c71470a4516a74" } } @@ -20835,15 +20877,15 @@ "eb4daa639a63e99d988bfe1cd009befb853ba7171f88047823ca4d63e119f46c": { "db3dcac7ca205ca613bb9129a98b90f70d1edd49164206d1bacd86ccbb885f5f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.688Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "01922858373142ddbd8ea6103ccea8940d13afd51dc2cb38f459d478218b5d92" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.661Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "eda9dd7b2161cdb6e4d96aea79a31455e54a48818da004b118383fb95964185c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.659Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "30f4d2b9d7a03fead1282034fb7c93387bfaad7d147fa32254e0c0b2fe83a0d3" } } @@ -20851,15 +20893,15 @@ "ece18ee5cf148911a064ac3aabde31461f3fa90405c4631fe64e67bf35b3df8c": { "babc66efa89a5cb73d9a68a0dceb5ae1559780502d074014931e6370f64030af": { "jp": { - "updatedAt": "2025-12-04T20:16:57.666Z", + "updatedAt": "2025-12-05T15:21:44.424Z", "postProcessHash": "e8489df5225c42aeeb337afc284f42a6932fc415547d9d165c5fcd77fa3585cc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.667Z", + "updatedAt": "2025-12-05T15:21:44.425Z", "postProcessHash": "a7318e854110db3c0cacb1a30bcef6280593857c7ab77e59fbdcfc67f46a9c8b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.666Z", + "updatedAt": "2025-12-05T15:21:44.424Z", "postProcessHash": "9747aec9f29a3edcd1d969f85304cc67fdd86e8180ef92693560a034845812e9" } } @@ -20867,15 +20909,15 @@ "eec5db41f767e87040d1a1e1a235ad804968c2645819039af5e1306f75ee2ba6": { "3294839c4121817eb15af16f39ea52c308ef56de049782978aa71dcc4c38777a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.655Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "af71c82b603bd678e62c1e75791c5c025daf1f69a9da736e1bef96a96ba7cbff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.651Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "1b3896f8cecc45415504473caa2f7494ac024c2f823c742ebe3b221239e4acd9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.651Z", + "updatedAt": "2025-12-05T15:21:44.411Z", "postProcessHash": "3403cd2bc7296ff2c748cfaddbfb66d82056fce9bab2080b84348a7d67db365c" } } @@ -20883,15 +20925,15 @@ "fcac219896966a54530a8593af31aa0dd688a431b44e0f3c677722d49352eb30": { "764c0b5706ee7c8505c4e4a557bdfcf617fad088da12e5302081d2d0510f71a1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.652Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "cba88151552169d835c6199f0ba4fe0b0d49bc433e9be193b75e2d67c89aad33" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.669Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "8d48d69356275cc1f3089721b2a4f0ce1ba01993f594debe48798baf14306fcc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.649Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "5adf6e9c0bf2f093f200f99caff780ceac2e0ffd4d5256b99906f4f0bb3b13a6" } } @@ -20899,31 +20941,31 @@ "febea1a8af326ccd97db3bc68c3ffe9b9d02860dfb6225e2ad85613d0fd14f7a": { "96025027a22efdcf22fae68b1f8666c6d43d7197ab56d27461b40b4566ccacf3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.667Z", - "postProcessHash": "386a79a1fa01867803d452152df41682f4283e1d1fe641ebcdbe34044f49eaff" + "updatedAt": "2025-12-05T15:21:44.424Z", + "postProcessHash": "9fcaad5fa5bb28c90bde6f429221ed16a2645e24f9442b4398ff15cb06041a83" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.666Z", - "postProcessHash": "57bad336244356a395113002a731092855e47166de5347800c340ef3352dcb43" + "updatedAt": "2025-12-05T15:21:44.424Z", + "postProcessHash": "c1b11d23c93d1b9ccbbca116af26356fe0f965a70e6f92f84f923de22c7e4750" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.667Z", - "postProcessHash": "4f8c6db81923f2e69451c4dfb51b272d1637d720d15d9a8527f5bb5252510bcc" + "updatedAt": "2025-12-05T15:21:44.424Z", + "postProcessHash": "b7d880d7b880b7ba8a777c232d70ca729e7cfc301e90b17b5720b065bafc5aef" } } }, "07413031937c2e03067e44df8e3cbca1210ee434cba21c6bfa6e51fe5d2f01e5": { "1e96680d8322f2acc44b5d97b8bff6f35462189f2158321fb5f3892804e98d6a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.685Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "cef6f2b8fec21b8c5b60fdd9873ad8d1d2c74a7c3f5058bc3380e42fd5a927be" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.689Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "a3ddeadc4e1879b381bfadbb2031d843f8478bc5446d5def0e928992ce80f058" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.687Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "f7ac3c594a2eed9b400fd16f2f343dc74d03423b565b1f90b22a0e6113571560" } } @@ -20931,15 +20973,15 @@ "08048e81a0b10f6fc876c8e10e896bba823ef23c25b37974243d3ce6241e95be": { "fa7004278db4a71dffabfc42db57fec5a575fb3dbd7222d4b9792bf19848b5d0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "c047f92c4d8b3e333bfc3b2d9d815cabf0f7febb6cafaf2cbf0ebe6ae355231f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "6bb0df5d2bad0f2d93abac68cc948086755c6fbc8b0119e3eed93bc17b873a3e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.716Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "7d2aa2d03bd18e28b40299d5fc2eff1e9953631c931824a01649d384eee38bf9" } } @@ -20947,15 +20989,15 @@ "184cb7accedb381551a80c780323d8467fa7bd7b87d916cb1c6e2e1927c800cd": { "20fbfd2eb1f5b24eda2f90fd903779fd0847f0d888d3b04f4c7e56590eff1492": { "jp": { - "updatedAt": "2025-12-04T20:16:57.690Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "d798b8bd51b384227814e49317313fefa2d4d3e214e6d37172b77e5d73674778" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.692Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "6970d3c5da5376752853b712806df5bdb71805fdbb956653b6b242c132d4d848" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.689Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "e3714499da18b34b86fb3915796d4c9daf2c6e3fede7f6a740e9a957a9ca1576" } } @@ -20963,15 +21005,15 @@ "1f9e1a47c221609e49eb77fb61cad9a84a56bdb680185de6655f77145049570f": { "d2bac435d9afc706018821f07927cba0b34f6719b4e95a2c242a869d2c00be3d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.681Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "b36130e4d35207f3d11a01e934cb87f657ab1e620e200e3161aec95f3d8cfeda" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "b256d16340c126bb4a02ecbbb1dbf9193a06fa7c19d4afdcf4b71fbede2cf852" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.647Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "50c1a161f97c9052a7fef13f33e69bf0f868216a66f4a66d6d37f38c3c005c88" } } @@ -20979,15 +21021,15 @@ "1fd11512dba8b586ce114f0a09f748f438a3592e967e6b26fdb70d49b49b5b34": { "528c254f1d39fc4b566d364735917ebd190685375530f8192104891def887095": { "jp": { - "updatedAt": "2025-12-04T20:16:57.719Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "9c7d433b3ad4d11286fde2c3b7f2273fbbcd97d4ea9e6e7304c9db80b170e286" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "78c4987294a9a6795316e727c820938ce9c4bc63511b38e1eb3b342369057758" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.674Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "784b61382b058c261eee34267dfd0ef43defabf1d0312196b774ceb8571b91cd" } } @@ -20995,15 +21037,15 @@ "22dec589b8fb9f267b747bb6c4caa91619a82b138da7ac22fafdf2a4d36dbe70": { "540a7500cbfe21ee07e22edbd55ff6af883a067d691b6301d93bbec754f9da7f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.676Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "a71edf9718a2ec3991ff44c721cd5145642c310e7a4e00cdc2717e738a306a89" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.648Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "b0d9a4063dd2a167fcd1b6fe62bff54ad896d089bea7c2c9ce2a150da752f0af" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.679Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "7414336ba3770185961c9109ef11217c8a4f3031c9e0644e9c25f6440155a29e" } } @@ -21011,15 +21053,15 @@ "25a566b63d1b51f62e85f3301907bb9851c8e295092c6c0cbb274855aaf2075a": { "b194d71f6380d7cf9309e9c89f192bff2723d4c46d48e2aa2b48e736c874804d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.683Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "0a8632905a12a13164bbe1617093507595fb220b1d902678369a1dfa17870398" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.579Z", + "updatedAt": "2025-12-05T15:21:44.393Z", "postProcessHash": "7e31fdb7eec4faadeff56b78034bcd236ff43f9622f8dfa087cb3d3497e86b2e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.660Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "dda149a9fb8c99bcd9130357ab0ee3d6c68ba59e01112e4cad288e6fa9421e34" } } @@ -21027,15 +21069,15 @@ "2dc1b2de19552e6b04e43bcf12a339877b5cd1caa1251210fa995f871b2381a2": { "8023c7e209034ddbc60f9efb8a61b992915d01ab6dcdc5f5a0b08c1c7a1cf28a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.685Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "d3896f53a0358dee8bc47f3a0b7fa8486f71ec8dc698950cd375ccc21fac9a8a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.679Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "6a56cd65043e01b60bc84fcb43f7e4616e87af81f363fda82c2b03d945098cb5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.686Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "8486168186dff5c750e54b7c4fbc627d90ae92e45195e5d021071c62593683c9" } } @@ -21043,15 +21085,15 @@ "356f390220f614f7e13052b738d6bac3386bcb14e99297bc57a7c7bf37c10fd1": { "eed67b4d5e2a37a8d51c1aaf6d8810650b97bd70d00122a88ebb97c212da9ee2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.602Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "4bdff42f72d48b7771d7d33b7827030aa266f9938c02efd3c6a94e5878250006" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.680Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "9db3373e734361d21273cc5a0729d6c5443a7c2ac272d7858c0f57f3e9464849" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.680Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "561356a7cf20164d944d4b9f15656c7d9d466ad586d1a4e767c01c3683fdc995" } } @@ -21059,15 +21101,15 @@ "35c7bfba55131ad9d6116db29b6547a45eabafbca7d547b5501ea16d51eede3f": { "6a8e1ca55281999c6130ae572325abcb150b29cfd12ebe451133060b6c502a1a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.682Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "18172b0f262c8cd198d83f2ea882c4d79e65e98aefb17bb9e082057d63c4d386" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.682Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "b875b67b3b36e49e22a6cfa4050c910d0b9b10e5862cdd6b992631391fe6b441" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.681Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "ca5eedc366b32edf7a57ea49f9ce3cc24398b90b60bbb08c76e63091f29631ac" } } @@ -21075,15 +21117,15 @@ "43b396ef0d459a925fcad74ebe7dbd673c6bb8eab1d24fb377b596b6d6850d5b": { "83184a4d72d70281ddce4c2b92b731c5b7e8f98d6d6bebeedbdc0a053adf947c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.685Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "ff55e43a8444c65434b2c21fb0252d5dcd227fa39da2be4890424304de5d1f9e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.679Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "f0e11733381900845b54cc42b91065eabd68519515f7e7f34f3801db1e459891" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.679Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "4f41facd9bfeae500c4fb53d8454d82b3d8e6ab90736fdc3f18a198118cb3324" } } @@ -21091,15 +21133,15 @@ "4d4c6c8d13e7ac14a5f189e798e199562f2150ad644328ef3e5b7e6d397aacb0": { "7c2190f84db7a1c33916eca37c2632206233059ad999d42ac355995a785c5d81": { "jp": { - "updatedAt": "2025-12-04T20:16:57.685Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "7dbfce849c5fa0eb1de39ce86f03bc15418d04712365fb3664d48cf83dd3f7e8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.661Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "5ee70d58e0317af1c01dd29cddd4bfc73d674394fd283dd48fdaa8eda7079ba5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "64dd723b3025f832c67da4cc88a40064dad3fabaf2ebd6305fbc82ac729c67fd" } } @@ -21107,15 +21149,15 @@ "5f7094d809fbf8e07ca4e02020e14a570a112a588701724679f8375a2bfbecb1": { "d84676e935f15fc8eda0f1c0db79ad9cef52b93ee23e53f9891fe1aaaa1180ba": { "jp": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "90379d43aa54894dba1fec53be8637bd35633cc0bec8540fddc51f1daa52b2a1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.676Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "ee6762e6048445354132eca8b65eddd65abfa0f9461214aa7c89477a47a0c974" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.677Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "8253ea2f2633d33ab11318a2fcede0a67a8fe34f26c262b5f50de825f867d592" } } @@ -21123,15 +21165,15 @@ "7c4de22baba4a87ac92a5d821ddef4976b0c230d25c52c53dfeac09fad83b108": { "6f7f34ba690c91122f3ae8820b83f342061fa594ff253407eb57463d3c34c326": { "jp": { - "updatedAt": "2025-12-04T20:16:57.656Z", + "updatedAt": "2025-12-05T15:21:44.413Z", "postProcessHash": "992d6416bf09f5ac068043bf9553de48b82483151b9c3d98fac7373367149948" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.658Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "09bbf36dd3bf7adb64f34a9a76b65da2a26e3dff1f786cdc88e410c52595d627" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.652Z", + "updatedAt": "2025-12-05T15:21:44.412Z", "postProcessHash": "f5ea5cf25c9f603bc7797e15789771284cf5c2fa7255b6b3b1ced6be16a6e5d6" } } @@ -21150,15 +21192,15 @@ }, "f45cf9b56a6023b4ace03e8b17976a39ecde2e62ebe59dd94428f3f5fb17bba5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.694Z", + "updatedAt": "2025-12-05T15:21:44.437Z", "postProcessHash": "e2e95a9a7c6c698acb85fa81ca66e8a03fb5f557c757b0eab272e09fd28dacad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.694Z", + "updatedAt": "2025-12-05T15:21:44.437Z", "postProcessHash": "fffa39792f54c18653bcc34197a5d39715736ecc47301fe1370b72b84bb3075a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.695Z", + "updatedAt": "2025-12-05T15:21:44.437Z", "postProcessHash": "10286e09aaad1f999d519bc4c70af495aec3c1d4f47230b12b8adac86cd8625d" } } @@ -21166,15 +21208,15 @@ "9d97fe2dc29c4e251fff04450d9d510ccf9c2e831a0489dda3f038dcc1a6a2f3": { "e5572fcb5876d8a6b1d1de543d82369a494fcc0715dd6012be5bbf426e7ac03a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.690Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "bb7a5ff30260fd4862ec6233ab1b2ad492c081179d1aa54b6e5d621b637ffcee" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.688Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "3721e193b7f88254b53c4d0b81aaa2654fe27bf88de6e5803713592fefa53209" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.689Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "b5229b1b64df0e86c3b5f08bc7ae178708965a73fac68f8f1ba20a6fd1a6db66" } } @@ -21182,15 +21224,15 @@ "9e660b008ccbb63b66a28b42d2ca373909f19186af16b9c41ba664f7930e07fe": { "41b27ab4937c7b922d42316551438b4ad659c0ecc6b4fa06f15edf97230d1798": { "jp": { - "updatedAt": "2025-12-04T20:16:57.648Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "a457a1295ba746250ecc29b58330d2a08e60b50d30f16bf5f6bb48f5627c9ec0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.694Z", + "updatedAt": "2025-12-05T15:21:44.437Z", "postProcessHash": "6f4a1979eb4cd2406e954f71b3c1edf1a2d04bd3cb7f0d7659cb18c73fefd2bf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.658Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "0de3b0e189441e4521d0406c60c2d875a99b6b804a86c55865e4ace2f158a729" } } @@ -21198,15 +21240,15 @@ "ac6b549d962e823e381f2519f7e5e9ff23ec0d86da8d61b9555feb375c459654": { "0f0b86bed0cbb0312f32be51c009ca122e78f92ff738c6606ff98754fca7f43c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.687Z", + "updatedAt": "2025-12-05T15:21:44.434Z", "postProcessHash": "599f0a95b7c7c07489b904187f89743220e46a48395ddc9cc7a2e62428bd9cce" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.657Z", + "updatedAt": "2025-12-05T15:21:44.414Z", "postProcessHash": "51ca72913be952490b7a55faa0605eaf64592f45b74c32630bcfbd8c7929a6af" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.686Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "cb161701ea0fd2bdd8bdf5745d73b212351371915440c446ab8650baf9ced48f" } } @@ -21214,15 +21256,15 @@ "af7eb4d69ab4cdae0eb49d2ecd090def503798009a9d8e43c2370f01f9a1219d": { "048d3372a598f7a300c38f0ddefba7da299bf7d8ba7fe1a30bbf53fd7ec3546f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.678Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "e05bcf79c6b2fd053cf849ebffd2622904241d74275505a6e16c3827b1f00c9c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.676Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "09277f236f0554bb589288be86de2b7671501ba928be5cd2ecc8818417d718cc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.409Z", "postProcessHash": "43a473fda8a70a3e1605fdfa5667ef142a3828e69ad8c465455f439e1c512883" } } @@ -21230,15 +21272,15 @@ "d613460c9b562b02355db0de5e4d5e795d93c8356530d72c4e6943e450e0cd79": { "21c14d0cc95de05e66c6024e0bc731b06c4934474cc10eeacdc8bce66de73868": { "jp": { - "updatedAt": "2025-12-04T20:16:57.694Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "6e904c99ddf1c0141552fdb17a1378553537c3a08e8394191fb9534e68634a98" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.686Z", + "updatedAt": "2025-12-05T15:21:44.433Z", "postProcessHash": "f297a08b268e50493e92f6acc7aa6e1a02c90e220e3cf13c87fe4104f73b66c2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.661Z", + "updatedAt": "2025-12-05T15:21:44.415Z", "postProcessHash": "61517ce520d7f8c088e8bd21582891499d94771262bbeab79611584245ab8b3e" } } @@ -21246,15 +21288,15 @@ "d79d5c1626358051641a02a5df10627db3ec1f8bfe82c284ecff6fc5d29ba24d": { "4b36bae2acf0c20fa2db7f654f8bc8ca933e4db7d7940a5c9c9a26463fe1a7cd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.677Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "c87edf55940c5e9238e47f976ee8e49cd7bcdd886782dea6e443d2873170a909" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.683Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "8b49c499c1cc34785226b25629a0fff667e8f01f9c2dc1351e226ee4732ee893" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.684Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "4a35adab9c0955de8c03c3133e22c61afabfbabe436ec66820708a23e0a9cd29" } } @@ -21262,15 +21304,15 @@ "09892c5c8c7770850dc4f12c85271ef2eb4054c5c9c132e0c016cfae2c946ba7": { "dc7fead9cdbb478c71bec3f2d3de2e7f32d848c704aedac7d98e3ecb52061139": { "jp": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "556963cc6c47c10968756dde4c16e5d6d01a4f685fb29faccfa81fc58293afcf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.716Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "a35976bf8820bc5acb71bb01126d3bb644d339f38f51893235f4813f63e20c30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "c9632ab67c7a64c38548a8697922757e4dfac9999fcdc7790a1b68aefae29a14" } } @@ -21278,15 +21320,15 @@ "2fcab50b97bbc9aee5c0c03f5a35d374e8c3cdd3db10dc78091477c88a2c1277": { "0a0ef87ced393ab506690dadba9b95b3965777f4f3358eb4d004ea111fe10a51": { "jp": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "c8bce9d3b60a035c22f901b545a48536df80bca154232c568c32029be8ed4abb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.675Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "91509dc646d8f47b3b2af52bd1c127df30842d61bb6933a5e887df7361fdc765" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "2c8f68dd7783fb73f86d04cf2d6a4b1cb957850707144875eb04955b87333aac" } } @@ -21294,15 +21336,15 @@ "326c8895de68add9af3b55b704f3bfc1105c0f592e4c66fcf4716d6ad3d6bd4d": { "67ed218e943e01dfd5ac6127ae3673f4c5704dc7e706fa765d94c11dd7f80e59": { "jp": { - "updatedAt": "2025-12-04T20:16:57.754Z", + "updatedAt": "2025-12-05T15:21:44.481Z", "postProcessHash": "6551a05316b5b1d68b8ca9907a28a78817d58bff04e8ba3622cfb7feeda532f9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.754Z", + "updatedAt": "2025-12-05T15:21:44.481Z", "postProcessHash": "7cc8ba766f645572c8fdab50e9ad37cd126b405af35e4612f47ce266f6e647cd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "95d0182fc452600dd4ba9d8e6947855afb49b43a55c7e352b719d4cf2ab0fb56" } } @@ -21310,15 +21352,15 @@ "3aef4f3512c85d4057c69557fd85794d38328c9e61205b126b37d4de45a963e9": { "06d1c97a15302255ab6d9a474e72aa8993ccc93d6749dfd1e5e94970da469d29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "e36d7a5ca89ded46a32863a1ca52463f5a2e803cc1b3c9a11ca6ff80f77a84d8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.716Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "6fdec180d980fede032cd966f6afaa594605ffc2adf87194bd798dab3943955f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.675Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "c1a3fc9d2ae5ff2748d9b9dac0ba54866d83aea30bc3f07b59ca24e61359ac5a" } } @@ -21326,15 +21368,15 @@ "467b72fd8dba8502decf3c42bc9358fa8c4d3014dfcfe6b42bb8f4dce198fd62": { "a67f1de09a8a84f9d6443a0df3a49146ce63494d30ed1c458b9929b32d5a4b7b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "e317c246af56757870b3907b3b7f8a3887dfdbc1dbdeecc490411008c777aee7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "354bb147f285ad5df7abc6040ab9c58baf523fedf577f95f8b46d4b93c541498" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "843a7ec415b1eada2f9399ed5024e61aca639b81a31ad943e33756c1209b337d" } } @@ -21342,15 +21384,15 @@ "4a37cce1f00cda917ca47dd0a1a69934772f9e50b5150732050d2e9f70a019cd": { "f5d8080ef6746049caf9a9d8037b9090eeef2259b54e9f42ef3e6a135b796e6b": { "zh": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "5283dd7ce378b5ae28d8bf51b9692e25e18b0e301023e08eaa95b52b7b985b9e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "5176ab8b1a922840528e4c9f7ba6f3368cf2d588e0db2c26dc640ce225b9ed39" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "0664b9c3f626b61dd01db9269e5a01397a85aad5e52d9e38e470c1e4d3ae4708" } } @@ -21358,15 +21400,15 @@ "4e436a71846d9aca6f15dc8c5445f526f911657bccffd77d51b5a4689a95bbf2": { "1ada5cacc80d636b19794a43afd3d71292a74c9e3f3fa93f182b39eb84ad7355": { "jp": { - "updatedAt": "2025-12-04T20:16:57.681Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "8afd1547f9d25eceea449fac9890137f96fd77df0fefa5a30121b7ead3259a3c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.681Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "6b88ce6dd658d514a2bd13058476be4fee5239952cc62595419bf6e6a5c92664" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.684Z", + "updatedAt": "2025-12-05T15:21:44.432Z", "postProcessHash": "b8e4b09d08f7cae1ef94027e5dbc08d760a8da2ea1c7b48a0993131ac5b9cbc0" } } @@ -21374,15 +21416,15 @@ "625ac60abe1e4f7ce4df8ac9bffd1f30f906501c1b636c41e7dee039c1280348": { "eaab285929dea7d9ff8f319faad61a28e866d384a56d15e9eb7a2ea10d96b567": { "jp": { - "updatedAt": "2025-12-04T20:16:57.648Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "f79b0bac386dc848818a2cd99d3a1d918c7283fbd3f748a7ed40f88366a662c7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.682Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "dc678b3e11b653ed5021e3dce5f39b394798c79c098a568c3b084dd8b4742cc9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.680Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "683f4b462137504ae32b9c1bd1a1b916ab907e5f5af112f64d0ddeaf3f12d8a3" } } @@ -21390,15 +21432,15 @@ "67c93fd175b134b8986f749e1afceefc6f06a4487d9ef161d2ea74e2be618233": { "5418ed61ccd90e17c44bbf1d4246b7b4344bcf595b331971dc74df17def6dcab": { "jp": { - "updatedAt": "2025-12-04T20:16:57.692Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "42914c43262bad40718d51d84a2873ebe94ee73501cb54ec0214dd7608e6d76d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.689Z", + "updatedAt": "2025-12-05T15:21:44.435Z", "postProcessHash": "6756d2622b2f3bbeaf39edc7d69f0a4c802dac0a4721ea91f186ef7a42bc3b68" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.693Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "a7711015568ed800c0da8a66269ec4bc109296daba67641799fea0ee6190e774" } } @@ -21406,15 +21448,15 @@ "8719f0b66c142c6db2cf8773ebaddac3b3d310bd046ca6effa5bb15e73d1a00f": { "9c001ffc30fb8da63ebd6c0931ef3efb9ac209edc160ae449428bb65298622c3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "ed2fe64e33aa67130b940547c707f452382c35e9cb49982c68707ae877ff32ed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.674Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "e7c5d94313bd62cc31120e850d2de2b55387423eb1b91e492b4ca418a48c8dc1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "809dce573583ed288d406bea0660493250aea46289ee5bfa1621c92601e53175" } } @@ -21422,15 +21464,15 @@ "89ea779c156a999fdf17c325da1e81dd07a635d696dfd5a115e631154d3dbb2a": { "ecc1acdcb21d77d65ebcdd760265565e99254e242903d6b4483da0a6b4a59482": { "jp": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "13c5d1741547b80439b429cfd28a76ea9665d40c8c11a6eb67ba0ec14d931add" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "1f470b07533db7b43a145b1a098e0cf992ff25fe96cca9b34c90bf367836292d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.671Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "7ea08959669f9243e9fce804bcc0f452afc93f28c1fc21aaec1d89714c1ed2f2" } } @@ -21438,15 +21480,15 @@ "9b137d113f115786a055cd8fbc160635ea3e53512ae73d845fd749380bc1f381": { "0e565f9a4b2a92384daeaab520393c6426e3c190a2625839b4ead735b7a693f3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.674Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "89675941b2fce4d38b001da357e5a9855e1e11add3611c4acaae54db2cbd9491" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.719Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "fe851b892d8dee1dfe5b2b5bc891ffb3c6a61cab1b556e61c74628e373684760" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.719Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "460ae3878353e63ec46084dc3a108adc9c1335432b3451b38a800becbc8ffc9d" } } @@ -21454,15 +21496,15 @@ "a524ef715c9704a1e92f4f92e0b9799ff822e7bf9860bf751ae2b1ff9edf0afe": { "e0f8014536b364d9d9409cff9471107e76279833faca677b2ccf2c077400b851": { "jp": { - "updatedAt": "2025-12-04T20:16:57.647Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "55141a2c62f6535fe32461c33cdeb4c66d4f71681d3a2ef29cb3cb9e1ba45741" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.678Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "18b5b965525cfb9ecd31cc564ccb311d006a1fdf899af8c54548659141e2e890" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.678Z", + "updatedAt": "2025-12-05T15:21:44.430Z", "postProcessHash": "2b5fdf0ed802043a9fbfbd8ce27a530cdf591f26f18f17a5507f046d57eb96a6" } } @@ -21470,15 +21512,15 @@ "bc010b67445245013c815d8c8dd2a711a400f2ac89689de6a705df179ad8c706": { "58a5d26b93b4269bbcac95ceeeb1329954babd6a907538f5319432f3ac4e6b22": { "jp": { - "updatedAt": "2025-12-04T20:16:57.716Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "8568a27a74c15ccde501a0a9bce8b18275eb77e8e62931d5587d460837c55b79" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "aaa883772acda6ef1493af2cd28fde6f5bcb58a84290d7e72278f3bc9b072488" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.675Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "80d06848ac2ed24c6a0f168d46a74098614e1678640aca1398cb4bada9db052a" } } @@ -21486,15 +21528,15 @@ "c0ac70d88c31f863cc7a3f822cfa525fe69266c4bf831f94c2029759cb9726db": { "b931df20b4f6c77ea8d226087a40d67fa3ecf5f9d09ed73922e7aa8f8f763fd7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "10b20af44be4b47f2291dec2bdf7abdea76a1da1952c744f17c9cf21e25e8a3c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "fd4296e6dd80576996af718b8abd30296dfa7357b42933d70ce7c3e7c810daf4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "6f8191d0eb492ce40ef08240bbe0a25fda9e5289c1135dd1f032e34cfff8aaba" } } @@ -21502,15 +21544,15 @@ "c58c920060a64568fe6e344fe00a5ce4d720ac37a93628692770ada830c5325e": { "4a343784a2e6508b5e218dd32d01eb13fe7c9d806b2cb07a5c39a775f7b2383d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.693Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "1f5e347c69dfa473e5463f80ecef88870112df4f52934d23c9cf450ef03fdaaf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.693Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "24e7e87ad18c3f5a48788333f91860eadd5a81701aff46fda68da0f2ea7b7f05" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.692Z", + "updatedAt": "2025-12-05T15:21:44.436Z", "postProcessHash": "f33a47a01f0bc67b436f1b77a069457c2145f9bca02d74f64f36cef55eb835b4" } } @@ -21518,15 +21560,15 @@ "d61225a37fe0c4d963dda12e6171915748b61bb4ea252b20fee7017863e0f8cb": { "e22f186111d1f322fd63ea2a2ab6b8dabcc933c9f1a1d547efbcaa1d9f78faec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.677Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "c771d8c6f55fbece9d9f3ff59de20bf74ab962c0aee2ec221895d2c7420c3544" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.647Z", + "updatedAt": "2025-12-05T15:21:44.410Z", "postProcessHash": "6eb114cfe8666006b0758611c3aac91b31dc7065e94a6f160447d69baf610ed0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.677Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "00c10b3a5d4860d68f8f35d76720caf52bde7db8eb7afb934208d6c6151e5d3b" } } @@ -21534,15 +21576,15 @@ "e59d25e659a24273c3eef05daa226fdbfb119134fc9c360fb8f10fa1eda0bc5d": { "cea9fed32032cdfb1fc07ee3fd025b189b279642029231324022cc8c275879fa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.677Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "9cd758575ffbcc16c2e2f18bb0267fb929125516a61955c2d93c06d18cf4f322" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.681Z", + "updatedAt": "2025-12-05T15:21:44.431Z", "postProcessHash": "1db63de25f0b2b675acfe2c8c46be9a36faf0e9fe5ed4dedb426914689a7c1d5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.678Z", + "updatedAt": "2025-12-05T15:21:44.429Z", "postProcessHash": "a510505546d1406937cc84cf51db0bb0dd6a48be8e72146a8549675d44726088" } } @@ -21550,15 +21592,15 @@ "ebcf5c14bcf3f123a8337f0e4d01711d0d5350b19f8fceb4989ba4967a454d71": { "fcbe8a223dbb47bb59f5c3e6880beb175753d21025800e5178cb322086eb6eb5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.716Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "922bf5cd2c07bbff286741ce257f7ad4c966b4a0cd32460a358ca9f3589e7e40" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "175204d3a8de64b9282f19e41a22c03c64e649ca911eaa3975f52827caf8ab99" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "e717307fce2a14a3f15c65632ce8d79b19629c74c109b38d6a16c3157adafe25" } } @@ -21566,15 +21608,15 @@ "f8131ef0252b8ff50e0e16a5c5a263d8c4c19d0d5eed0109ad5127d0b7f1e617": { "10eec051f15e6d2b7349c390f8baebb76014741ed3b8e31aa94bf797e786189b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "3d55f0daa191f0848a7dc079f86e24fbc6f67775766cd52dd1b59620df91f838" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "dd093dfd6bfc43030edf0867dedb8c4214749d8ee2420027e03ebd679b4a0e6d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "d454bac44478a0542583ca9d2ec19e218c1cb42b490a33db8214b26aeffe6648" } } @@ -21582,15 +21624,15 @@ "57ad9bdcde77c82a8b9abbf11d3820f549bfb779a29aa35c949fd4b27ff2f01f": { "1e38948feed7f1b2a7b35c47b430e56f07e2438c56f10e45d636ec500990a43d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.719Z", + "updatedAt": "2025-12-05T15:21:44.450Z", "postProcessHash": "827cca89812935c948003ddafa5afbf9d887620be5cb71f0731b0c572e912125" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "390e78cc1d2e77d34ac7a7499bf164ef5c8cc514945401938e8f6e10490b31a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.674Z", + "updatedAt": "2025-12-05T15:21:44.427Z", "postProcessHash": "e69dd3d121a43bfb9d31b4883785c565dacd38ff55cd6c89bc2fdbfcf8d3981e" } } @@ -21598,15 +21640,15 @@ "7ceb6e3c9247297b0f7f32b5bcc5fdd805490fb8b1ac4cb176afdba619355e4d": { "ac6e6531f103ea9f5613e39ee61cfcddac7133be00040a3d2577c40543aa27fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.718Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "5222678502cdde74d1dd2ce20052944b25a572af0d3c9e3439678a9a1847ac55" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.448Z", "postProcessHash": "d93021511a07dc2c6d271bb037929ffa9406310d6ed20a9e506bceb9aa4c4e87" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "16614d2e48714f1d8ad04fa8fe115dc8a67718f510260a4930b8d6400b94cda5" } } @@ -21614,15 +21656,15 @@ "b623b9673e0f28805a4afdfc8013cc9c06d3af3bc31cc33238b2d1a449d4888f": { "141f6e9d777628dad68e29e4db62adc7411f17cbe61f3611de81835eed95ff15": { "jp": { - "updatedAt": "2025-12-04T20:16:57.676Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "94051e243799eaaa2c3428ec02216d9dc3382a4d5b18f4f09db69c8c05522153" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.675Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "ed3e2d870f2d43a79a0310efed804929eed317ee8201ca59b0527c18ea562b33" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.671Z", + "updatedAt": "2025-12-05T15:21:44.426Z", "postProcessHash": "21a28c65c0e63dc2eb0b0939ae6878aef3025707057c8375f63f8a04f3b32556" } } @@ -21630,15 +21672,15 @@ "bd529fa629c3f10310f525658df96bc82a80d75ff52d1995cafe1e4b13e747cd": { "ff7e68ef737ee5b8e75daa40f60eb811c121bece05086608bbe25c6ac85d8715": { "jp": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "afe779123d9b15b40cf2cda23e3cd1b92a0d650144b7fbbbbd4c64534d15546a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "44e4638157a3d7f941e1f117300d77a5bceda858e654fbda6097b886bedddbdc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.453Z", "postProcessHash": "6e72d4ad51896329bfc512721c2ff70cb181f1c7e870c8721daeabdd1baa3005" } } @@ -21646,15 +21688,15 @@ "cbd3fd46a4918ee9b9919e72d00bd7ce3d00418bb1705c843c677adb3e595a3a": { "0613ad7af0509f61658a0f7a5e17e617139bdf209f37e63f862416353f1241ef": { "jp": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "00f9c6492eeb0690fca939fe6a03c6aae3ddfc500479e6bdc3b6a135ba4c72b1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "35624049d95cdc289907942ffd43712e6df4564a9d681efa1c162dd6baddf48b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "8e3fe49c910a80d4c49d16cc28c8e037553f1c9b5427551c83e07cb2afee9c07" } } @@ -21662,15 +21704,15 @@ "e1167cae2cc6ec3ff98f99cc5fdc814c1613d183ffc5a294e5002a5c76629f89": { "bdc0fd08e9185e494c67e0405a76d6b5ff3f2a66fb66986f38ad9fb1486504d8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.720Z", + "updatedAt": "2025-12-05T15:21:44.451Z", "postProcessHash": "45d8a86f887f200617915b92c87c6fe4ff33cc71fa5884a8153b604460ea0882" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.721Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "9b99b08bd6b7bb865f42dc110c38f15b51ce0cb66e9eae1bb40c94786d953a4d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.676Z", + "updatedAt": "2025-12-05T15:21:44.428Z", "postProcessHash": "72c6484d31b398349961752a1e0dde81145c01dade60d4fc41e3aa77e19c3f63" } } @@ -21678,15 +21720,15 @@ "fddeb9c1bb988ad91fa2ab2fd48f16446790394aee1f2ea892b74b4703663d8e": { "40a994cb1728118007e9bcec1d1e95be3ceda608e471c1a73b546b7c438f8ebe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.717Z", + "updatedAt": "2025-12-05T15:21:44.449Z", "postProcessHash": "b04322a982b1e4eb5fdd59bd9955e4f5cff6e46a4018bfef887a4382c4b666de" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "0a22e72f54139962952823f4821676a50bbc95f22970458aa4346bee40ab1ab8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.722Z", + "updatedAt": "2025-12-05T15:21:44.452Z", "postProcessHash": "d84f2a24166609a68f1f46320cb564ce9b3397364ea601f0f2825550268e2c8d" } } @@ -21694,15 +21736,15 @@ "08bffe1dc74222857bd9847a9079d22910222fbbdc1dd9975d3beb50f284f3ee": { "6ff985dd3eb042cd0776c0981bb360df764da84db1d5f50ba4c7bc2fd4394a58": { "jp": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "6bf45f39a61e8ace8225a623afc0c1c2c1ea015f283ace46c0ea4811a621f9cd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "a5b60e3ad9fdb455d570127ceae8a0401996406e768f2b07dfea167e94203953" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "18272011fece902334999e53e7749ad33f75e5793a330ba3303ab143aa0656ef" } } @@ -21710,15 +21752,15 @@ "3a9bf422a9a85629cde7696a05524d19ff37ff8a14e26aa9d363708d50ca69ae": { "3106e22f04396e24e2bcfddd311b6bf015d441abff426e8f3e45320a55f20c46": { "jp": { - "updatedAt": "2025-12-04T20:16:57.771Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "72c7a34e959c0f0a84b2ef07b83b20ec931167cb9231eaa6aebd8748fc65be59" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.772Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "6b47b4caf1476b73be8fc2144b48e4ad3af39595186bf683d3a23767b025ac61" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.771Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "2a0aa1f4477e663ca9dc3cc18f139623ec7d97a456e7697b94413195796e020d" } } @@ -21726,15 +21768,15 @@ "0b2918c33c54636514f9106c16c6353f3c90189cb35c245462f264976b158e49": { "8b5e41f784e6af3f274d3cbab3bb71a982e9a0b2df5cd5050b3f76eca71460f7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "9535c591998d631b28eaf2dc8a9df7f06bd56871a1954408b81c92911f714d7e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "be9db05c161912bfde11eac461aceafe3709a38c09081116c74c139609b6ecf4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "32a1b3b56863a10bb78cd6889c602c5353004aac0b704062096ff42b90415e8e" } } @@ -21742,15 +21784,15 @@ "190291cbeb8e03da636d545882454df1f5969a43233fa8547a340888416e0d7a": { "1e21922b278cc488c7ca6142a0b58330666f67ff429c778024409f871aeca347": { "jp": { - "updatedAt": "2025-12-04T20:16:57.759Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "09b7edcbe92b4cc6b41ea070ab832c2b7d70f31666c8990a79a1bae55d8d5965" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "404ae15d886d9f74114f0fb2bd6fddf5be90bd468d2104e1ed16405d00b15ad7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "dc7ddd29affcbec086ea80681be99267f83665f820caeefcf3217abd17f5cf92" } } @@ -21758,15 +21800,15 @@ "1dbfde47d0ccaf8fabcd5ad6a4296155b1b096aae0b5f8d17a8c1b756b2695fb": { "665e7928e61709a3964eb76535bc335c1bee18c8bc09733558199e232956630c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "d6f927fa8271304c2a5e0db1055044b5e260bfd847c8116da151ac3566c88cd9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "a8f515005ac723939d4f5463ee743c504e0072a85291432d2c45af7e843068ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "0ef63c7a84dfd9b8ec6213171c2e743ac990523925946f141d4ef79647690968" } } @@ -21774,15 +21816,15 @@ "1e6d8899d944f96b533c9b1689dd0f3c45d1f4d88d4d1edd3d0cd126273c28ae": { "874433a820ac2a172772ed12a2a2e43d64d72b5fa3f8c9060c2ea70f9d9969b6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "c995b5d0f47ce5f1b027f9390faf44db3b19020ade38918f11b31c20cc266bbb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "ee0c8ac7e05f33ffeef8b5cde7efa779506cce9b9f988c57f867669e4136a233" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "b8a091652c96e14eb803fff7f6cf5feffabce8c04113f694b453a4c7ea73269a" } } @@ -21790,15 +21832,15 @@ "267616b5e710386f1e95782b057051b61f78cf2ab9ab90a87b76171e1110ba0f": { "526635ff55be813366ca95dd8408fe2713af702ad3c42ee3f6df159c36d7d754": { "jp": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "ced14aedc77a7a31cea9926cec6c2faa73298334bc9f80ed102f1936c3780772" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "a40473617567341792692242fad3a712e9388d4c4479b5f8b1dfba340afb097c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "453e26431bfc4b1ed1e267802d2996d3b172541c53f15cc95efa32a4dc511ea5" } } @@ -21806,15 +21848,15 @@ "3db2189c4ab253714a8026c40657f8d09c5b44880bacd30f5d37a00af55f0af9": { "2e5559b28181e920ab535b8433f1644911413cf5aad2b7f7f2077a2124cdb9a5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "0d05ed0f7213b35bd64142d742afe7e7ab6f8ac180245e4765d3b6b44f97aac4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "ea9b6815a1f0ff21275d6d0046894e68495c000f5d47d4ef3b1f94f75ac84b06" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "45a0adf7cb18d3b2a0fea1ea5ccbbf27b34997e5c34cdc6f2365279e8d35a431" } } @@ -21822,15 +21864,15 @@ "4887a31d41443a8cec80c653b5cb1471ad7101392e2a0fd85344bf550b4479de": { "5d542d21d2aeff7420ac405c3efb0280de56bfcdabe3edfdeea55aee2ee0816f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "038e9e15c60993beb2c1dc3e65e409f744a260d616898ff4414b6ee59d134509" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "0f7cb1300cd66b806c98209903cf0b403b6cf1bd2375baf65c9e4c1fe8624a08" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "e5dac5bfa18675a022881dd39b4b4d296e5445e1106dd1032935be0d45bb09bb" } } @@ -21838,31 +21880,31 @@ "5e3e9bc17b90a0989880b5acd7291677843b0466fc3c36993015c0a7331f4c86": { "50e422154e7d9340b9ae3e608a02ad691373881011458d12ee9329b251e2ee21": { "jp": { - "updatedAt": "2025-12-04T20:16:57.723Z", - "postProcessHash": "eef30f662a4e5d88cdd4bdd6b6e36757a41b478ef67fb9e35f38cebbf526ed37" + "updatedAt": "2025-12-05T15:21:44.454Z", + "postProcessHash": "8e8ce4bf57ab31d9d86b06c4fb8bea1eaaf46649923ca1cc07a71fae022ed800" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.784Z", - "postProcessHash": "c141fd13cf527215adf7fc5970abd9a081e50e78c736adf93810ac1063ba29a0" + "updatedAt": "2025-12-05T15:21:44.506Z", + "postProcessHash": "5b925fdb578666f083cbb95d1cca734866f9ea12022d3c348628089fe1ff581b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.784Z", - "postProcessHash": "b85580892d4e15c10f07fc37deecb4815af1fed528c16afdd3996e235cf4ca43" + "updatedAt": "2025-12-05T15:21:44.497Z", + "postProcessHash": "68bca4b49a3eb982311b0f40c28b91323c3b2982fd7c6ef3afba30649aaa1a9c" } } }, "6820315a7841bbc8c89a60ac5aa8c0fe4457e414cad746f3bed1650c3f297bc6": { "6d8963200cc850f442fe2995954f739d20436c4a7fb4b2ec7f8a636bc53779a7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.785Z", + "updatedAt": "2025-12-05T15:21:44.507Z", "postProcessHash": "40c09f12d6185409e5de4b4c33ea667fdd56a5747c7ced7b93ae03c9376f0cb8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "aa32fbcdef5b4916a6100a04a0104aad247ee4db20b0f4e265964b5d0a664d42" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.771Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "e43194a128eb65135b2fcf64664df0f9c1b169815cefe33b94e40e45fd98fa3d" } } @@ -21892,20 +21934,34 @@ "updatedAt": "2025-12-04T20:16:57.724Z", "postProcessHash": "b5f8ee7516ce872e2445af0cf97ab7005c33e0538afecc40c64e4da4cc001036" } + }, + "c698f883fc94ee87b59f05045281ddcf9f0865d80645a0d96ec05a5434ab2d4a": { + "ru": { + "updatedAt": "2025-12-05T15:21:44.510Z", + "postProcessHash": "33743d60f5cd46d8b037fc88e09add7804152cdb55118b4188b12636e89be068" + }, + "zh": { + "updatedAt": "2025-12-05T15:21:44.510Z", + "postProcessHash": "a5124e9879c3314d5fac2f4cabc4db24491beff28dccacd79557be17f6f3abc4" + }, + "jp": { + "updatedAt": "2025-12-05T15:21:44.858Z", + "postProcessHash": "0577eb5f2ca55b30fffbcb79e5fd7e77837e3d339d6604946627250ab1992726" + } } }, "e0c7e0ffde8dc72698165f5f5a97336beb9082111bdd4a6c98f10c02ab69cd27": { "1bd7f94ef79ae4a259d5eb60f577fdcaa8d2926824240d88238ffb4e9d917715": { "ru": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "95d42ab9fb023a0392dbc23bb3cee02df92da937b4582542ee22277531047c3e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "bf766e99ffddb00223031ad6bd9f493734cd89619ec2cdba1583826ab9b89609" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.770Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "f0a0db2fe79ec27bd3ffbc024b74e6c5810adce6c6e6d52eb91e39d126e14cd6" } } @@ -21913,15 +21969,15 @@ "09967fd0502ac05bc286aeb301c2cc87873b2a18ef14f3e2acde54345b2ce839": { "ced484d2a382f8655c9d000bcfd985aa94545bc671aae3824c264e06b17c1fb5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "7e99f2d966b889054100caeeddee9c4ab7cc968c7892ada28b9a63e6a7ab99de" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.774Z", + "updatedAt": "2025-12-05T15:21:44.498Z", "postProcessHash": "8e7e7117206187a13525e26823ce9d1ed21790ce6adfa7b099d727d68d1ca799" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "3a7b51f37f79da0219126373c991de922f715c1a1a0acddfa2f4a23b19a4444a" } } @@ -21929,15 +21985,15 @@ "181adac272e2abd83cc757fde65fb79cacfbbfdd22c49560ad9938dc95ca360f": { "6aca92cecd7097cb7ee90b10d02efba74d48a3de1843308bf7b14b842592c336": { "jp": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "cdaad5869ea8e0ab4790d7d80dfc8b4c7e3e0a47c8ca3fc41412f19fc3656c0b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "9bb0ef636b32f2bddab2f6b0fc241f32c1fc2d8d18e77a2238b06eef583b43b0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "206fb87f6adad4711c3a90ccd19e865c177bb9f96a6095545bae6e87afe0880b" } } @@ -21945,15 +22001,15 @@ "1e8da80bc94e12875fbc8b4285abd87a9ebc00408979ef39716bb53ce4293704": { "cca901fd78a63bb4eb045aec0ee20699b9ea63520630a96e5bc254085761c479": { "jp": { - "updatedAt": "2025-12-04T20:16:57.785Z", + "updatedAt": "2025-12-05T15:21:44.507Z", "postProcessHash": "20cae0bbc2139994dd4324d84c4664c6c52669fa5f5a576ea8233ecd72f25fff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.785Z", + "updatedAt": "2025-12-05T15:21:44.507Z", "postProcessHash": "3f80cead9ee0f656ff8b919c7fcad6b97d2fca209330c75e1c0f25a730da673e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.785Z", + "updatedAt": "2025-12-05T15:21:44.507Z", "postProcessHash": "d7be0b88bac51571e638b18e7c6087214493b564db8bdc33fe4c6d414539befa" } } @@ -21961,15 +22017,15 @@ "28af1868b1ea9cdd8d1446f03dc1a91a48ed271602879f18d0d3211752aa2e0d": { "38f892b234c9e0a9d0e3e6bf087768671979427a8bbaf831e2c0cd94e5730d2a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.786Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "949add8772f2b7bbb93e32b49cdc3917fd693f0ac2cd8792987ea649590e3802" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.788Z", + "updatedAt": "2025-12-05T15:21:44.509Z", "postProcessHash": "29c343c732b399b47777abfe5937196506f1611f10324562bce719d10d8bb399" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.788Z", + "updatedAt": "2025-12-05T15:21:44.510Z", "postProcessHash": "0666f73f2c6b375a7f59d5b14257d6a0b278badff898382f39158067afaf568d" } } @@ -21977,15 +22033,15 @@ "352b7210abed12f4834ce3966861f5819c1b015976a552f4d8f3417367d6519c": { "aa0583b1c517ae46447bcd58d7475ba0f4350a3b5974cd1a472f07e84ea2b12b": { "zh": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "6ccc9ba3f7eac5762c1acaf4f499f227a54a6f9f8ab1da3115010df9b1d838be" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.774Z", + "updatedAt": "2025-12-05T15:21:44.499Z", "postProcessHash": "bffc5eea03dd475d76c1fa17c9122fd9bc93b8d80606793f5a421349e6d7e8f1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "57b5c6d035c29745590d7435d965ccc37b0de09dd96e2a4fdb208b04963c2138" } } @@ -21993,15 +22049,15 @@ "3e04e93b41ef14736c12d8caaaae2fd7c113b2b4ab71ad84553b87b688b2ce7c": { "44da72d1f89df587a02ef24e707acb1da8350d35e7f7a73fc92e5b863e479a62": { "jp": { - "updatedAt": "2025-12-04T20:16:57.788Z", + "updatedAt": "2025-12-05T15:21:44.510Z", "postProcessHash": "08e7e92d7ef19dd6f4bc549f0c638d8fc44309ca085418bd914f7d28d4ae7b7c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.788Z", + "updatedAt": "2025-12-05T15:21:44.510Z", "postProcessHash": "b22fb9d058bebff89b8e39f94942b1f0046453844a21f480ebd875efe56550ba" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.784Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "2f9c9abdf460ead7fbabd64cf066932c09f4f589c22fbf320aed13f2375d9d13" } } @@ -22020,15 +22076,15 @@ }, "3203f84f048ca009b9f90eec080070e282108d50d7ba6ea5bc93169f873eac70": { "ru": { - "updatedAt": "2025-12-04T20:16:57.726Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "81dadf65c9d12861a7cd623a55fd3c1b98b73dc6ff6c3897615241cb297b4d45" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.759Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "e50185733620fd94d36a547c3f15018b672d9dd32c003871e55eb22842bb2807" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.759Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "04080a10bdd0c4b69547897121f77c105442d449a1e6741332be8cfb5690cb9c" } } @@ -22047,15 +22103,15 @@ }, "f1f6c6ba727fcac4034e8e533a8a14914f296de5811f8ef69aaccc190ed52c04": { "jp": { - "updatedAt": "2025-12-04T20:16:57.775Z", + "updatedAt": "2025-12-05T15:21:44.499Z", "postProcessHash": "0ebc0c693063e21fd55eb2ea129c40e96918cc4650453ecb108b1efef1586926" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.775Z", + "updatedAt": "2025-12-05T15:21:44.499Z", "postProcessHash": "a045c0588f3f9deb004d4060cd28aa16421b7cd8966916a076fb892fa9967be6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.529Z", "postProcessHash": "86b3994dc812b0e8eee7d7163022f6a6037aa46c970bf84d68c012a4c23c8813" } } @@ -22063,15 +22119,15 @@ "56a2d0968dd32b192f6e6833bf129bd2a1a73e16d498c9f8a64c8e8cefcb7635": { "85317ab67c21185490c8ce6da9f40ae75c6aa792d046b52122da1555de6a0d7a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "1bd9d0382eda2a10de558b98139b7b0d6492fdee36cd8fc312849922e8a9520c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "2208fad3d32864b5bdae55e8927891e4041b7ace40899d02336f834bf31401a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "af7f68d48c9d0fbc19b41b54966e28172bcf36b3d6533457af42e11ada2deab4" } } @@ -22079,15 +22135,15 @@ "57fb93819b163681fc7674df87acd51d16808daf3c9a80875363e714ab6b6f0d": { "589fc5521d34b691619a0775483550005c0339c397f9c5eb2ad84a68d38fc0c5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "f166414083284477507e5c7dbfc55016e248d16e62801b9fa12180dc84660500" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.767Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "d6f1f1e65cb3757ee107d14f92216a63c14051edefe9fdccf426cee3058ea746" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "3b58326ca0ba0379c47938e33f11482372fedfa021ffae22b4fd6c77c89b56b7" } } @@ -22095,31 +22151,31 @@ "5f7acdc3b5ad3c4b70f2e0f6421eedcef49bbf5fe1541b93de796181d282e3f8": { "c3b3c36e1615ad52f46683413733ab6deb9809b9216880d962f14d2b316e6812": { "jp": { - "updatedAt": "2025-12-04T20:16:57.771Z", - "postProcessHash": "42ce9afc68d46521cca2c46a9c373ba7468877655ff9e4a2ef8a6c4f52385c38" + "updatedAt": "2025-12-05T15:21:44.496Z", + "postProcessHash": "86025fbd25d4ce314190517c4efeeadb696351f9ea0dca0e2cc18344cd41c775" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.772Z", - "postProcessHash": "46c91f9b4118b943d19409660a25ab3a4b3b25fbd53591e640d5e238cbf66499" + "updatedAt": "2025-12-05T15:21:44.497Z", + "postProcessHash": "333bf4a68401ef218606125218becffbb15599e5da23f3297f55a37019dc18d4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.784Z", - "postProcessHash": "12b0bb10349c7245a144e50b9367ac8a4ff9d016abbe1402991eadd690c0415a" + "updatedAt": "2025-12-05T15:21:44.497Z", + "postProcessHash": "74902904d6a324687ccc4ee47e6cc234ef9d089ea3940044ecd7feaaad430a59" } } }, "720286aedee663b0895eadfbb8c855cf28e8c889a5c1e959eba2cb56410fe0ea": { "8b424c806172df3664b5a02f66fa091e75d922eace7c6d17ab06a1cd4d48ded0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "f54ee2f588cc52d3291430b589cbf7c83cfc559bced651bb0e521d0e71f7f522" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "4a75bd2f32f043105ae263c777c7c189f54b5147cf3b18f4d764bd2ceb11927e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "277b227a45093d39d157c5372f84bcb6fec374a9bd5a3f9b46ff6a912fbbfd4e" } } @@ -22127,15 +22183,15 @@ "72359f73659f510486d116f7315a779a8e182fd9217ec98122618754e8e8e523": { "b7f70662c0d64e5760316e2f601553929e92b4cd5b7d382d9d395b743c0236de": { "jp": { - "updatedAt": "2025-12-04T20:16:57.788Z", + "updatedAt": "2025-12-05T15:21:44.510Z", "postProcessHash": "c29075eba041e71fd575c11584e031e0c0e468c1eb26e424057c99e0b9d83c4d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.758Z", + "updatedAt": "2025-12-05T15:21:44.486Z", "postProcessHash": "104cba0202daf96e954ee89abbcff75ca8ed95ed7a33cd466642f042c1ee3497" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.785Z", + "updatedAt": "2025-12-05T15:21:44.507Z", "postProcessHash": "a46c0894b1adb1bab0abd7f0bd4f9acc9a0b122908f1c0a269c280aecaef895f" } } @@ -22165,20 +22221,34 @@ "updatedAt": "2025-12-04T20:16:57.789Z", "postProcessHash": "73cbf752c31070a36dde6ff03d2adf238d92086ac82c4a67c738f5dce6803315" } + }, + "4c7f5ccf8bacd9ac186af509799fbfa23f06a0dbc8860587e728ca82eac075b9": { + "zh": { + "updatedAt": "2025-12-05T15:21:44.511Z", + "postProcessHash": "1c37dc08bbda7bf3b896213f571c34875f067e9754b01eed9be7b0f4d303e74d" + }, + "ru": { + "updatedAt": "2025-12-05T15:21:44.511Z", + "postProcessHash": "c00cd485deabbed7dd0afb5e684c5934858f51784f23aa20b3a8b34ad675ade1" + }, + "jp": { + "updatedAt": "2025-12-05T15:21:44.858Z", + "postProcessHash": "b6753ca0f640b97bcf0e60237780dd3346aee90a61664dce6217fa9b11ca52b2" + } } }, "a27f8d321849f13ef579bf79bd9fb504adce87fc32377cb34f1d87d0247b62fc": { "0af225620d1128bf2b7b6df1fd290b2f9272232c08e057bbcdddcb8da980d877": { "jp": { - "updatedAt": "2025-12-04T20:16:57.771Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "38665892ed7315638d4b85b0f2b104c0d6fffb0f8e4d35dfb9a0096afcc89b15" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.786Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "9240bce7da3ac06620ba2a49b24110ebb6bfc2642cd9be65cd6e9df1f9a3f389" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.787Z", + "updatedAt": "2025-12-05T15:21:44.509Z", "postProcessHash": "967979a64434f3485bc29c8ed905f8ba50a3cf3d5ee8b8df2db381c7826878c2" } } @@ -22186,15 +22256,15 @@ "bf4aa8d8478e9cbccac2af56a2392959e788a6b441ae1d334d378fe41c813431": { "03be8e55e0b7b3239928d3c046bcafe55731c78e43aa66ee2a92c237cad32296": { "jp": { - "updatedAt": "2025-12-04T20:16:57.784Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "842d6869d4cf9cd88af6c4e60443b5c722baa1a445b72e4123e50b684902a6bf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "eabf0445060f64126d7611d45f55a08d96ecf5681d38aa335df9b0766980ffd1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.784Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "2fbd27bc18f0dd632aad9c0bb0b49ede922f74b57e082b5f9346195615684269" } } @@ -22202,15 +22272,15 @@ "c6f8d4ed5ef7dc56f976117869cc7a69922f064662bcdd47f24b593a903bb511": { "66256e49527646d9c1360a5db02fe360c867281e0fbebf9751bf3d0a5e4e0116": { "jp": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "6b2beafd2d6fad7ba7ec4a34508288e28f8d2fe9540e686dd56649d6be555c9b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "d7cdb71c2ae15150357af83116e07ef37d0fbd283f6afa49a66805792dcbfd2d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "38bae75f613d2af938829b383820da55845ef2e82b5ed86366fa3f0d7db9b90d" } } @@ -22218,15 +22288,15 @@ "cf5cab052feab37e254b75324c3a852334a8eb3c58db22a1686c9494d09f443c": { "d809412f215411acf69b12810108cd424016766dd4d30a992351f8e69bf650e3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "1e38eec3b6a9658e04a4332a06c8c32f2af0479eb6ae465f9a2e6ef06bf93db1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.772Z", + "updatedAt": "2025-12-05T15:21:44.497Z", "postProcessHash": "cb395bb56f10ebf2ce60b0c93f0fa754c730ec9af5b57a76d324303f529480ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.723Z", + "updatedAt": "2025-12-05T15:21:44.454Z", "postProcessHash": "0674e3ea03367fefcc1b9ab1ca2a9fa078d015129f0523cab1e9e422793d9f74" } } @@ -22234,31 +22304,31 @@ "d9f334133320c651967d1b5b665ba9cb709fe4d09178893258245d70b28c5b25": { "ab1cd75a382114032d421c93d59ddfaae337e9528e1ac6b02cc19764422a2124": { "jp": { - "updatedAt": "2025-12-04T20:16:57.786Z", - "postProcessHash": "83754470552434729b2648b7c1cbc4a42fa4728409db6d1e9ed69a568f9f4b8d" + "updatedAt": "2025-12-05T15:21:44.508Z", + "postProcessHash": "f0eac35b411c3fd54cc11743042f07ac13e5e8029e0176284cff33ded4d733cc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.787Z", - "postProcessHash": "62eb6d78cdfbdac45b9498c3334d819c334e22705ebb54fff3da2d5da1c88907" + "updatedAt": "2025-12-05T15:21:44.509Z", + "postProcessHash": "c0a8d30ef39a18023b3c5326e097005ae46452fdd1b8c5755af89060fa1db8cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.785Z", - "postProcessHash": "f2612f5ee490cc4efb0e0b634d471114f8f38febf93e331b2f9f42160d97750f" + "updatedAt": "2025-12-05T15:21:44.507Z", + "postProcessHash": "f512ec73946dd7216ff2d2362501dc8cc4903d70c920ed29adb8f38b1aec0ae3" } } }, "da0fe2e9eb4d4168fde541e5a4aa216882f11f0fe02c65758804bc42306051b7": { "460c5141199908b2fb1f8ada87d50d25899e1061548dd77278916ae9f0194eb1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.786Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "c7ea200bb85df4ff6d093a4320996d689c62acda72cb23bcd9bb69bacbc50603" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.771Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "830a4a6d9fb1f97734b2234e8a0bac72e4499132476d1367e16c649b77a7eec6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.772Z", + "updatedAt": "2025-12-05T15:21:44.496Z", "postProcessHash": "c969464212636d27de39495bf7090e6fd15176cb0ac1a5c6ca707a25b4c96a5f" } } @@ -22266,15 +22336,15 @@ "e1c1bce938fcd121a541dda56b44194cec991a3c399320d28f68662d4f2aa155": { "ab303b424478e35d2600d95fd49a29737cadb6308b63d04e43f98d10c38b5cd3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.786Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "1e92752a4940ba86fb4f413458efb1bfb27ff237e5af62e298b31271d98999c3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.787Z", + "updatedAt": "2025-12-05T15:21:44.509Z", "postProcessHash": "669e8aae368268e20d7112f2ca66f87c270974e7f86cc02e75abe887b04fa1e6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.786Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "caf4249d5b2a452a930506e72268578143d061ced427b17bb997d5d3a7431b06" } } @@ -22282,15 +22352,15 @@ "fd5ff75cec53563913c25d3a84cb92ca6b7f928115d7912cef78a22dfc907f29": { "ba4164cf48205f79abd50e8ce1180feb106ddcdda361d67fbf580922f1a8bf3d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.495Z", "postProcessHash": "1e603a1a920d7f558eefc9e0de09a2b106e28ccc37230f439f029b7a7cad3327" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.768Z", + "updatedAt": "2025-12-05T15:21:44.493Z", "postProcessHash": "90f592d49615a2c000c187171ac7c60bc16422614438fd3ba4ad96081259342b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.769Z", + "updatedAt": "2025-12-05T15:21:44.494Z", "postProcessHash": "c95d31d3ecdcbe31471bd5ff8c70efe8481a397f75c8f2a8f3e6ff03fcdfc0ac" } } @@ -22298,15 +22368,15 @@ "176d0068a5182e14c24f7b86a941e2993dd5d5375dda5f359181472f50bb49a6": { "3c0a49ce0175e9ffb151adc18ac51e16f2d58c189a49b071eddff19741b2773b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "d264057c4048da5b061b4236c9332a656f36a65fe5ab5644b96aee307e30af55" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "d54c698e36d634a2aaaa1fbb6952b52f32d72662f281ef6f38de4f9a4d2a3941" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "bcacac99c3f0aa0f2690b95c9286fdcd3e2f05f748b90b73370615f1739cb435" } } @@ -22314,15 +22384,15 @@ "2fc9ece7b731c86425713493bf6fdb0053ccce96ffd9f63a70eea4019cdff660": { "547949490f707e9c4812b2f1acebb85c8f7858c6f4c8d030784a54ffa0f6764b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "dea6f7fec109abafdf25f96253fd53cc000004f2850dce3587d1f3ace5514075" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "7265f98eddf21a6bb177b1cb4386e321fa74648241b47eb6a70320fc82b3ec7f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "d51a1b5189fe5a8e68daf73908e127dd712986f83bbafde7d3ff7f7cc446e6bc" } } @@ -22330,15 +22400,15 @@ "356a5236e325bbd80f92c622b5549c7f59c011b169fdc94f7b59ad1948f64d59": { "32a464d65d3033a6f94c395c523bdf9d52473033f37bc7b58a4c7d5a3374d78c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "4acc2269ec5e5cfaa3dc7816bf7b9a49d914b45b4db83cfcbf944e10ab34a9bf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "0e64919e0648e036233b83e4609bac2a7816ff8f1046697732bd46177e240aef" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "75895529652dd220dd1ea6b9408b8e9ad02f8758b571b7de68c67e8da1aa715f" } } @@ -22346,15 +22416,15 @@ "4dcf3a152974b0406b6bb68f5b1c541fe9249595ec4170e386cdf67f9e97d6c8": { "144e0319e32e38db32a1efd639ffc72bf732e5ea7b5d6a3d0883a97e4bec0cf7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "d93fb854809e96a5cba0ac5064670f43801f2a08715601ad54a0eda56275fffe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "f4d85c1a005c15bb1845441c73ea846b1a482346b75a5f30919cb56f3f2feb27" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "52effaef55277754fa186e2b506fba8d8c7c1fd076df40b5a928a37aeb90cc58" } } @@ -22362,15 +22432,15 @@ "512bf2a261651531d1f44db97f0e2477f9009f4f748fece66e5ca2554439601d": { "f65ce8822ff0abf42d5c376dd8120812baee55885d0c7b7b65bd770ce9d25050": { "jp": { - "updatedAt": "2025-12-04T20:16:57.798Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "46c765d2f4be2fbdb711a9e02a09add5997c27529dea3e54692c154744b34396" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "306244b35167883241bd29a9f09b3f67154bc5ce06c1062d77e1cd86cd0a40c7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "b4db0c2c9881232e323642dbf749878f67ca28668b388fa8a42d06fdbc35b27a" } } @@ -22378,15 +22448,15 @@ "65955c38f425b134d13cac38e2564b302a84b647113466a30fa84df4625f2aff": { "e5d27d0981cb097f6f8db2c3366ef654946ffdaba0ea5433e234e0200fed3d99": { "jp": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "fa640bc5520f57015f1224bc5a796ebbc18f4a9160edc801a99cc620b4eff2b2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "2a39c216a822c7fa68e61edc40f1bb0535d07371c5abccb4c674772b4d178ec2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "8ba96408a8f1e3c8f553ec73606a32a83b4e4988351465a4f65f22a7401347d7" } } @@ -22394,15 +22464,15 @@ "70760b9ea84a1492768f54f60022928ceed80c33ef8d2cbbe522324f7979123c": { "5172acba2103f95752ebbc8f74579f1012ec0e81bba84d6402deb3f9ab3b0bfa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "a073455c5b55aa911175ecf3353c4beff76eda5b433f919fa1cd09284d861402" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "fcaeecd3a91f734107e2919c4a5a484386e314a2303a38678b01cade9afbb3ec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "e1dd9442d9afbd2f8c04c01a1be26841d421f22d9270a4d2b0abb4e931b66cfb" } } @@ -22410,15 +22480,15 @@ "832f10a64dee00c5573ad8927271c0f08e6912344a6142b218901f374557d6d4": { "c00fec44d98d20ecff726432315131e9d6815d1bc6d528bba1cbde655c11121f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.784Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "bfc76f5bdd8e9593d593ab86851101a864572ed0fc659b63327c00116e812c1c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "cbc1bfb3102543ff7b000f4aef012159a27b1c2d5aa93d7071cdf7b449232727" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "9aac770c7439acb70a6f9b9a0b7c52fdf3c2081fbaed1412d53efefc17ee0601" } } @@ -22426,15 +22496,15 @@ "85aaa20028d2fe29973bbd19c0fe7f0bbf9b2028122048baf8aa80c366fa2134": { "3e3cfccfbfc2a9aaaa5c073111f54d43e1d4a01447a2fdcb70bbf2ad0fa40c15": { "jp": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "59baf1674c6b7404b7453309dfb6b3bdd92f9332ed2aac4be6dd793268a22a2d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "1c2f51dfd9496562471d059fadef889709f152fb330e6772262cdd79bc185c6b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "bfd8b5a9c9b83bd19e925d38b1bfbcdcbd3cea2baaab97089ac1dacd1fc6729b" } } @@ -22442,15 +22512,15 @@ "8edf9e4f287ceba4ca2d82f14382e035360e320bcc403a4bd0ffc3569444e7f7": { "0210849faec51fc728046caa3f03b71304bb9c646dc07169ab1c6d9e340a0aec": { "jp": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "8b8d69da71cff2fe1d6d3853a2c5ab5c96616797e78341be5939c6825fb67999" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "8bd136944775f734866af38f97e77f643084b37bb273155f4bd47d773ca6c90e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "2343bf56ee5cadbd6439b29a12e9bb4a47d8716e250f75f57167d247cb543b59" } } @@ -22458,15 +22528,15 @@ "9c07a7cf8bf10809ed5421b224c9702d1daf802a6511bc28a61380182a3cba5a": { "4e8ed6a1feb2aa52a5a2a4588b3ecb8b8ba68dec83a27b9280790c81f51a60e4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "28fca144efa62b8497f8b505179d25bf4790a34ed4bc08b921f4c426fd008e8e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "999fb8b88739487517548e63d84cb951e2e1de4de05cffba44ec9fa4ffc841a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "2d5fde14c9f42d119a43577f464081efdeac6d02c4fc4d29215e1d5cae8194aa" } } @@ -22485,15 +22555,15 @@ }, "2f0734e7c9a31840e186f5a334fbbbc73d1d52db49e8bbda9d6d1527b330a0f4": { "zh": { - "updatedAt": "2025-12-04T20:16:57.776Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "dd2cf67da3b00f05537a0997e5daa87d1d5c6c6f8686daa8e24cdcb49a2d6fff" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.776Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "73dcd12bd60b9a196041beb2e23a2641374c7b4868c76d67685a3df4693c0a9d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "522ae35fc4a279d68c339284282408d304f3049dd05132638cec7068fd0b2a45" } } @@ -22501,15 +22571,15 @@ "b39b9077d3c9edfb0122eda19c18f981a977ba3d4b35e87ca4e9808c93c00357": { "c4806c1db71a5a0e8cfe750303156d37b0c67170fa9901e7e2fcd40bc40df990": { "jp": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "85bb605bc37caa317fe6a70b467e855dae02234bb70228cfcd908f60b4f56e3b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.783Z", + "updatedAt": "2025-12-05T15:21:44.505Z", "postProcessHash": "455cc629ea4453d86e910aa32b689dd5716668cb35e66f91313a79e20f867dc9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "7e6bc52fdeb64d9f2908f13c79ef6748872d40ba3ac66bd40c014cff21b68fdb" } } @@ -22517,15 +22587,15 @@ "b57ac847efe3da698e4e7e930e7c66f735f45e722a25a0fa39bc6f7bfcec60cf": { "9c431dd0d8265db20267a05a0e5cddc327c798c7acfd1be5071f066d5a7aee28": { "jp": { - "updatedAt": "2025-12-04T20:16:57.785Z", + "updatedAt": "2025-12-05T15:21:44.507Z", "postProcessHash": "4dd770507d26130a0b1de186e20ebabb0cdc91b51b426da778e92033f3c4fb8c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.787Z", + "updatedAt": "2025-12-05T15:21:44.509Z", "postProcessHash": "fa701c769b8fe9e5acef9111f6b62155cb8f4d6f74bf41371eb2f9484e825597" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.787Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "7fef35812803798402cd1d38d25c8f00a5691375dc71942d1a2720e9927310f7" } } @@ -22544,15 +22614,15 @@ }, "a9aaf3d0acf90c263febea571cd562058a89cc9ae231894d698d45f35f8a8089": { "zh": { - "updatedAt": "2025-12-04T20:16:57.775Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "8d44baf931bfefb631398d6720c8294216b9259d94e498451f4648460286bf4a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.776Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "25f4619e67352ea62c0b94a6f3ecee87e15c935e67d3ecc8e96f015bcf5c654a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.776Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "5093f405fddd981852a28d79837821e638e27d11bab20e27ab956df40781e337" } } @@ -22571,15 +22641,15 @@ }, "ec5f228d8cbe81918d49a04cd8723d3de119fd01172ce2e2b1517fecf7a600f2": { "zh": { - "updatedAt": "2025-12-04T20:16:57.776Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "c8b039c22bac7fcf18198d32e89a4654d50fc61bd2d9d084e9632491390c0265" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.500Z", "postProcessHash": "0a56b38d22764bd93ca0bc535cdc63148881704f4f0c5277920314aa0136a2e1" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.777Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "168bf98677f74e48cc878904c21e74389719cd7be775beef762cdeda2fb6148d" } } @@ -22587,15 +22657,15 @@ "e8326b6e3e229b53f7f7616dad224e62d5aabc8c99d1885fa0b294be36436442": { "e0c19959bdee8150958356d19999762296868f26f8c58d573bd31ee946774713": { "jp": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.524Z", "postProcessHash": "7825c903a68226800808b53b160bcf8da2f848ca4d42b42874c4b33f5ee767bb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "5fd49c0d5c3005d4cad28debfc17ca50c16718efbf7ae1a3794dc0bf50bc38ac" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "cca33cfadd9df5ee9334e24c3dee3b0c11041bdcec13ba28d46533fe04acd9cc" } } @@ -22603,15 +22673,15 @@ "f6456b0e678701e28c6a4e322798fee754b4c6d0f806d50583a4b3bd2c244c77": { "b8b48f150dd2033fc11782fa83bfba12af99e2588c361eae29e969d7df966696": { "jp": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "15ad4363c1e880ecd1a91b34436297ffd9469abe98b90995180d65ffd65df71c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "dde08503690f9559922ea573a2668e7361d7110abc1850853c2b1f2bd7136092" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "6ef16870f4f8d45f0b30cc6c9373fbfba2e12813f228e1eb1bc341e40d4ec294" } } @@ -22619,15 +22689,15 @@ "581431969901be3a99a89764a4cd843b136cf34d9c36a58c385d297bcf0b5576": { "848b4e2ed1094aeeb74cb89d7d3f155262e075c04ec6a136f164406460b1c404": { "jp": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "9cd40743eba518104799e1fbd150de5f268299cbb974e63020ff4e7ce49438bd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.781Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "5f3bd11c85a9a2dad8aab7484a36dbf45bf85baf66e642759a96e5c7b33bfa8a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "6d6793c8610a3629e1dec8f2147a1ce66c64ddfb82572b7a82f59ca87eeed78e" } } @@ -22635,15 +22705,15 @@ "90b8b253ec086b1363c721e07a29dbd20c3e79932831c40618a9e15eaed1259d": { "558092fa5958f7bf2b9c27c89f455619f6ca6f3513e83b59425458536609e8ef": { "jp": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "0b7ee556656f336e7cc1b432771a317ea784b3f1f5bbee99f16d7e49450ed8d1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "95fa91b06b664a692091ed41f1dc9c6b179915cbc0b64cbe8e548729c0652441" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "5067a69353b28d4a530ff08bb1d8d3ceca3df2e24af4c32958b8226243e09826" } } @@ -22651,15 +22721,15 @@ "b22d1260a64a32ed7c646aebdc8304e5522445a10e936e31715082f3976c0efb": { "0350b0c4a0edef07c101045887230f235288aae9414af376658d84671b54adbe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.779Z", + "updatedAt": "2025-12-05T15:21:44.502Z", "postProcessHash": "12f7274991c714800206b8f46c9e0ee754aa1a3a504a0cc3aa9c035cdeed6c1a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "94a3bec799d124f474fd3fdc202acbc6fbe3a73a9f0bafe5bb5a10f462f5025f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.799Z", + "updatedAt": "2025-12-05T15:21:44.525Z", "postProcessHash": "a40bd800967ed55ef9d25971bd3a3656b462599c801b2d88ec679dcb2a63420f" } } @@ -22667,15 +22737,15 @@ "ba3d45a637c836f2218890eff93fee4103508fa1c470944799207121717e02a5": { "f3fd1aa8bafa81bb6a7e865a5de62823158a0afcc7ff7586bf136a8b47ee3a88": { "jp": { - "updatedAt": "2025-12-04T20:16:57.780Z", + "updatedAt": "2025-12-05T15:21:44.503Z", "postProcessHash": "84a0d63ffa335e65eb5dfa8a84e19d4f5c3d3798426a4e9a88b067d3766ba780" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.782Z", + "updatedAt": "2025-12-05T15:21:44.504Z", "postProcessHash": "371f9505f83f8a3f1583ad155231a8b2f4d589e7a0e316230300ab4eba355444" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.778Z", + "updatedAt": "2025-12-05T15:21:44.501Z", "postProcessHash": "c80ff5fc8bcaecc2a69449eeeb45ce32c1208637ce0d8d4a1aaef8f57ad6f542" } } @@ -22683,15 +22753,15 @@ "fb6facb17dc3579b44508a305bcb4895b64ecd0ac72b1f50f97559b26bc78b2c": { "ad02c360d5787e1cd581329efbb507dd02fe16448697b4344569b5bc44e930ea": { "jp": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "1135f956cab2cce629707b969e309f8731ab86bdf62aa687e52974bd9d2056f8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.803Z", + "updatedAt": "2025-12-05T15:21:44.528Z", "postProcessHash": "b34ba0424c0a1b9a33bf874116d07cb423a34f00b5f6b3b596e166c7d1aa241d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "40098e525ee9e446c30af8b121d4a16543ef3808e219e86b556f1b8eb83a491d" } } @@ -22699,15 +22769,15 @@ "035ee5282a6d20879fad6bfb6f79b4341721a15ea3c52c10046b1dd3709aa16c": { "58cd6998f41fdded6a804039b2debea7d2278499d73c45aac0012b7439df220c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.858Z", + "updatedAt": "2025-12-05T15:21:44.626Z", "postProcessHash": "e2229d07b793c18b8a013e9fda5c20527e0233ecf58ceefd6b419b98d9a7ff08" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.856Z", + "updatedAt": "2025-12-05T15:21:44.625Z", "postProcessHash": "b49526a2f651360a1a34eab7557ca06ecd6e89f7856e957bef515a74f82d1635" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.858Z", + "updatedAt": "2025-12-05T15:21:44.626Z", "postProcessHash": "f8264286be3baf0cfbb8c9d3e80c7b388c45c53246531ac01067f9765b6b1452" } } @@ -22715,15 +22785,15 @@ "26fd7d38f92eb5055170efb295d4a4f87a521a38805a47e252302040001b2050": { "6311029c9bad9285962dc8c797429aff225c5d236c038434dbd0c88cfb8a7048": { "jp": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "d9b5346483ccf6334a5105ca1c30ff8dbbff248c1080bd2b1fc4d5d745aca48d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.851Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "24dc4f8d296569e12ec97723c7fa07d56d086ef04ccafe5253da48eb305b765e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.847Z", + "updatedAt": "2025-12-05T15:21:44.588Z", "postProcessHash": "392c23af8f16584bf49c5883da5f4e977982041c039ebb7dd2d9a3a98586428e" } } @@ -22731,15 +22801,15 @@ "3f43afba791f6baf15364b9b47e22c85a9f1b3dd6af0e12ec732f9dcec39457f": { "1dd4bcf22efaf403e36fb2a77e769a0046ad25b9ce5480ba0ffe16c707a0ef4e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.854Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "dd8fb975228a3458ba44dc1147524b9063fa2889c67c6e5c6ae7f930716c042d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.851Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "635608063008778d6447fa8358008b12c3079ced85ecee9a34b5c43f1607eb3b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "aaaa5bd1fc11bfbe1fd5a31b330f54fee44c568df82f0755fe36a4deebee72bb" } } @@ -22747,15 +22817,15 @@ "645f7fd9f0334b6f31287f3ff16746bdf9b9befb1bef269261f6079af9ff22a2": { "4cfca9fae37346c2e6b247de1cc83bb1880d5d141f5ad266dea6ae52b8cce258": { "jp": { - "updatedAt": "2025-12-04T20:16:57.850Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "abacd8ac876d3c9b874ca4022906c9c48605657aefef9d8da7b95de92440dcd1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.562Z", "postProcessHash": "b15220dff7fa0c2bbb6b7ecb357a7a2a4f965e102cab4f74aaa581c1b6f15770" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "f9f5ccfa1e8f2a332f864e4f30fe3d9cd78d061d3b0b5b38002be9890b0d0c2a" } } @@ -22763,15 +22833,15 @@ "870cee0b248ecbcf72715dfd0eeb85ec9af5efaca8d3edcf0fe8c5264910fd76": { "31443088162bd3a031a32984a7f4bfd930cc979d324a47439b26f35ddd40c4c4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "9b49ad6232da1b55e3433b962c3b120951c38292fb74af0b0a2973d8a04eea17" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "e10211c1d3b3116624202c30f3f42e13c5d68630413e5540ae3ba5ecfa38cb54" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.851Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "7a7368b9afa511a300e041416f2a06da520f5b88ae0025a83c31d904a0a7fd40" } } @@ -22779,15 +22849,15 @@ "87cdbf09a8306f33d341ac3e84a3332c186b170f3eaade4500b0517c76c52c33": { "27bd6d01dce2d6441ee156267183789fdfad03cbf3cae1fe51042763a3ae5190": { "jp": { - "updatedAt": "2025-12-04T20:16:57.851Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "10de940bc422fd1ea8847a42eed793ba17e3676d57e0b9bae9ab2c9240f1d90f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "a6cc17570dfc61b9dff9629fc9e8f0c46e380456b65e37fc674ea84c6a2eb1e5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "17746fc6089ed959715c59597a889785160b2c747d16d8de309c88d405be6383" } } @@ -22795,15 +22865,15 @@ "03d4f9de31c6bf8adc70ca8cc91ea13e8e9e9c9401061a886ff406f2ee77507e": { "31a8fa488c7303d5b196d590f58b9ffddcbbaf82dd7d661a3d06b19f60b7ddc5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.843Z", + "updatedAt": "2025-12-05T15:21:44.578Z", "postProcessHash": "9d4a8dad949638de7706ea258e84172c8d91bc3f7e099c4fd41fafd0e2fbab50" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "61cd00e72e82b630013f61eb7ab60d5583b76e1cb2846efd1e6d39c79f87cf3c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "da3d7ccbd4be86514f0b8d76db690c64fe25f00e1bf3959f2679b42d2b8f71f5" } } @@ -22811,15 +22881,15 @@ "185920906ded891a9d2e00cce1434c3336837203f6a4afa9c0afd1752f259e14": { "fb5ace8ecf41cd7a84a0650f9d96ead8a0c11e0b73eb701d4b8a50861ed41f3c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "17aba8c9eda6d586a1be9d92764b56cd8a2f522b5d580a4aaf2b18cb67980fa1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "98323875a729d6ef81e69611d73b2ca33b1cd569c050af967a8f88b3d5514a47" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.849Z", + "updatedAt": "2025-12-05T15:21:44.590Z", "postProcessHash": "e996a5702da585fc6cc429ddd01451db98e75baa509ca86608f2efa75476d799" } } @@ -22827,15 +22897,15 @@ "3b5b38cf7b3fbbf741ef360cdeaf09b58c18acb3ff66337f95d902be5f6db59c": { "b37e005c51f403fc9b37bb6c5b5edef44101e2fc840f20186238b36701cc8e6f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "ca1e341b07be4ef743b7314f5656f68624f5fab78dbeecb1551b9283840daf8c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.854Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "786369bd7cd308758497dccb0edbe468640e646f9fd0b91e24591fb5635d68ff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.849Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "c5b05d5fd2bb665f846cc6464dbf0c97a5a2c3699366999859be3f8ae45394a2" } } @@ -22843,15 +22913,15 @@ "3bc42dea80614a09ae6a300caa882b3109109bbf2c1ff3e4a3cad15872847cb5": { "90eb1bd6cd2087520e2d3b6a42056c3549761f9a48d001c400844b96b08b2d5e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "0fbfafe6753379c795c3bece846e4097879575b3ef463243b783bb47af88703e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "ce445b8e39d3fbed2d151131d8b116da9a9bb6476f2047517c3450a49a13dab7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.859Z", + "updatedAt": "2025-12-05T15:21:44.627Z", "postProcessHash": "3135375419003a3f02fb6a7f9cbab1803d20daa094bca4ba908e095553722fb6" } } @@ -22859,15 +22929,15 @@ "4864254e07b5f2ba04547ffdc42c9fa734db92774140cb47efb6c312ff52493e": { "6dadcbfab042a7bcad0c4076a815d1b10666957ab124f50642fb026d185c6859": { "jp": { - "updatedAt": "2025-12-04T20:16:57.846Z", + "updatedAt": "2025-12-05T15:21:44.587Z", "postProcessHash": "a0c189af7b622e1a17524651a9364f81de68d2702c7ff16d9057a387b69af9c9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "817c782da1fe7d732496466147d5ade788f24630ef63881d9ca25474da785692" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "79c83c3aa154c79bf8726bf8465feb8e26c43c289f3e683a60cbeadbb5e73947" } } @@ -22875,15 +22945,15 @@ "4b4055e2a3996b0cc1db8bb8b7f1a428a61fcab906f4eb7fc9e8525523570823": { "fe2aceb75f41309c99fba4ee2a1fcbdba1e53d1591a97e9fee22b69867854012": { "jp": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "af98ff505e460c0110e1a1662ff63c6baab28f333acdd0088144e7cbe184a696" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "948421c3e1abf23e8120eb54d5708aa41f709dfd2d448cbf3254cca3fef07358" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "84ad3d5c36bd5075d34e4b48e4df942398316c37917718843549b39f9718080a" } } @@ -22891,15 +22961,15 @@ "4c57ae2a858123d1bbd05031233c5f830692e6ff38484e60425dc1e644619e86": { "ac07bacf3135df09429ba59c3085014c51cd2dd6322c81c9cf515a50ac42020d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.863Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "6111b3143335a4494b11b1e9e094bad047f45fd314afc01605b45a74f7c2cd96" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "7639e4543fb4c76832aef9b34537392b3cb0c95171e9f08a14d2b741632619b3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "b72a001a1436505d89e571b38956253d9cf50706d70a7e9b21e87518c99f3207" } } @@ -22907,15 +22977,15 @@ "5f4dd4a5e3b9c2038ce5d97add1c57db4cab04802675890f9a71c7e24d65298e": { "54f6ee288acad5771ea6bb244846d3f7f6f97153a3e95cef843610f79d82f51f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.850Z", + "updatedAt": "2025-12-05T15:21:44.590Z", "postProcessHash": "e056bc809c839d0ad66263647f12f71912a49f7c57b9d4e1169fff2283c4f5d3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.847Z", + "updatedAt": "2025-12-05T15:21:44.588Z", "postProcessHash": "7cc3a1bcfad0e799329cfa70d25ca3db5417d3104ea3f2808a92edcd3fe04c77" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.851Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "621e006f1700c63e06745812dbd783d4cf18e1e5383ddbae3fe350237b519d92" } } @@ -22923,15 +22993,15 @@ "8c9ac06d9f96470f385b45eb7382ea57d23824bef86ddd9dcd04eb31af945385": { "8fd53472854410898a96195caacb583e709b2c67f304949a81fcdc9a6ab77a22": { "ru": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.627Z", "postProcessHash": "b5d6797ffdc4684cbb0c61ce1959479b14134a77037579d9a1c105a5c2f1ec7c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "21f99dd641294eb9b2ccb285f893daf868667d6c03eda18025b46d13a446cffe" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.854Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "7c834d32b1e8d0fd34bcfeaa5721e8aaa93c80c7a8f3e5e3775c7b6abc6ad07e" } } @@ -22939,15 +23009,15 @@ "96f086ac06293e9e587823d8e326b7bdd10741ec2cca41ecf709e6dfda01a137": { "8cde4367a08c4c85a443e691e36a03de277bcadbc7b5b8042f83da242fb60262": { "jp": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "b53cae564ec2e6a926df37c3b324647c061ab8c942313758e53941fb911b7649" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.849Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "5f0614e8ddbe6cacd50bea84167b26eb00120970046ae5cdb7002ef4be0f300d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "508adbd82073da69ec35818ff2669bd57e163613d9287b2fb34a01a12cd257f7" } } @@ -22955,15 +23025,15 @@ "98763ad1765b4f7ce59ab7c28c03d9f16eb7ba20340f1fd72f141425b73dfcda": { "2b4ac034aba018ed0128e4b4b5e46817e96795dc002eb687680ef694d17118a7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.850Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "b244aff5353bea41ae51c0ae589f9b007cef05696a1deb51e2aef51de0a16d74" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.854Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "3c364369e548400b5b8f68d69de904605b5d9634aa74981e0e6160f037162899" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.861Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "240662d35f9cbd70a717e10ea9f8661ec34e9e300fb7c684e75dccccf968888d" } } @@ -22971,15 +23041,15 @@ "a1f67d04d8c6c016319715cd37f1aaa7fea045040cd960873db250061b59677d": { "c042f748c77a461dd754ffe542382a34bd504df511e412aaa671006d2a6ce920": { "jp": { - "updatedAt": "2025-12-04T20:16:57.859Z", + "updatedAt": "2025-12-05T15:21:44.627Z", "postProcessHash": "397cb04223eb44d1482af620be7685558167e7bc1f37f6ff7b8bcd72ff38b953" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "77b90fbfdc78bbde470a584ef730f0f3793375ebf5469e5a2cbfbfc8cbfc4c48" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.859Z", + "updatedAt": "2025-12-05T15:21:44.627Z", "postProcessHash": "fc399a9f5b01cd8dd7d0b77db118005fa08ede69a3b4600f41869bafec281bcb" } } @@ -22987,15 +23057,15 @@ "b6e6ba59aea8d42356d10f15f3e251c9ecdf84b70f6b284cc535f8f2715be871": { "78c8f7d218a9c211659cb2bb3308ce5d14d1718fcdc5e47d42d5c5f55050e6f9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.855Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "1af561a397e1f2b0ae403f5afadf68e6368b3740a6722a520c35b8eb47f87b11" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.854Z", + "updatedAt": "2025-12-05T15:21:44.593Z", "postProcessHash": "c0e5eff4dfa6784e506a8553ddb2cbccb342b7309e3be761ab1a1f34694145be" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.861Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "666358cce77ec4294d864f1aad959cf8814c750f4d9c13a2a22a87db1fa17a55" } } @@ -23003,15 +23073,15 @@ "b96f31274279db19ee455ef4a211f35232718d535097413acc9e87b2c16cdee5": { "d1a30df1933d77a7366535efca514780aa4f237e66085e619643f85b025ea495": { "jp": { - "updatedAt": "2025-12-04T20:16:57.848Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "792a6e342647ea48c99b305adc66920f6b7eb58715d1de859c9b68c26329c3ed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "bd2fd3bf12938f24739bc7b5097f2705ca70c79876fe8a06c7895492d91a4aef" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.831Z", + "updatedAt": "2025-12-05T15:21:44.564Z", "postProcessHash": "0d4436ed8265bca29df34212dccf91afdd828ad27c3e42d94cc0b07008205d06" } } @@ -23019,15 +23089,15 @@ "be5bae686c5d8c7787f030404d9391d2b796570ebe3949ebccadac637ae696ad": { "aa76d4c663800697eb6cffaf9162ddacf8d4a6e9e85ae8732672b1aa668497b2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "e074968d784f976e2b6d377111766a1470a671f18d70d0d5bbc9e7ca0ca60ecc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "9d532dec0a6331be42abfb9b9057b604cdfce9536b7ae647f94fc2641e2c8c5c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "9009838fea16ced2e5cf8322f2a19e91e4ec944e001b4c923a189cc484d707a8" } } @@ -23035,15 +23105,15 @@ "c61d725ce51260e373784d5a559f17b1c985d873f35f4f40d34e5dc3c9d30214": { "164319294d8a4a2d8ae935edd6e5941fde821158fce1cb0fdc3c94aa7eba994f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.834Z", + "updatedAt": "2025-12-05T15:21:44.567Z", "postProcessHash": "3d4bb348e802446513f7de4ff23905a2cd4d6dacfb23fa3a0baabde89ce6b659" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.816Z", + "updatedAt": "2025-12-05T15:21:44.547Z", "postProcessHash": "764d34c033809dcc02ece51d8b2bcea4e2cc9c65f9e1f83401ff83d9e4c906f5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.861Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "e94c6be79ea28963118ea49992489524259fb3d81bb25bd7130f06bd2431db5a" } } @@ -23051,15 +23121,15 @@ "c9a3c995b2d1f1da16df65c84fc5fcd7d61a80112b46a37925da4d4c5cdfec2c": { "fe45037d34e9b052151f9190e1da1d3bf5cd89744c552cf345b160f37129f8f8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.861Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "bcd5b75d93a82b4d290daa33ab72d0b54fd4a5ee8118bfde1189ef29e81f93e1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.854Z", + "updatedAt": "2025-12-05T15:21:44.594Z", "postProcessHash": "f31b7b0d8d0d8031c519968c9e50bbc66e9408ab6a3870365211a11fddade1aa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "99004e3710aaf1af12829154b3057ca1d90d1e0c1c31bb520cefad9e6af19791" } } @@ -23067,15 +23137,15 @@ "e87d7bb771e6e969df1f4f17a2cea74b1703104f920ba5110ee4c2bc95819b7f": { "c626b9222d67c0a16c11e25def509ff96d4a34afadbccdcc1676284d3fb3c55c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.830Z", + "updatedAt": "2025-12-05T15:21:44.563Z", "postProcessHash": "284e640bfe912bb7e4403cc8506a4b2ca589529414c76f895a3cc52a2079c800" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.859Z", + "updatedAt": "2025-12-05T15:21:44.627Z", "postProcessHash": "0286bf5647ba331f08c9d8324722fa10cc46007b701ed99f07787ddc5c36e7c2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.849Z", + "updatedAt": "2025-12-05T15:21:44.590Z", "postProcessHash": "c70231b20a97585083aba0222fc952f559c71302b5deb4b8e4a5c53b8738b8c0" } } @@ -23083,15 +23153,15 @@ "f366eb4cbbf4ae87e0ea8145cfd5006bd57589104335fc046ede417d016c390d": { "e26bd50b67b6a44512d1f83c42aa88dd3b0ee7eea44771e913a93704b405e585": { "jp": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "0c68cf491e9333fc7b3760dd51d09ebaf3b00ab1edd349dfc2534f5b85bcf8d9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "d42d0c574516c4d0645d46342fa743d64b7dc074d711c2f60952f80ecfe94cf5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "bfe9489d7b160957108ab21680a4082d7bd00cc47e6ceafc564fc3f74e6e0caf" } } @@ -23099,15 +23169,15 @@ "0dec45ecddb0d4b9ff3311f5a670eaeb053be15ec02969e2e3cc776a6771ff5c": { "77a1b67ca7c88505859a9611495e54062c95a3d5051d05c9862ba6120252576d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "3878d919508835373102707335a5a124a853aaf72c41230d23030942be2e76dd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "6bebf36bb854770d6ac7f8962417ceeaa9e694e1305011efecaa254ebe0786f6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "dcd125291b52cfaee5018b16b2b8d5b4f07d202dc8fce9e24a8489830df7479a" } } @@ -23115,15 +23185,15 @@ "1345e1194d63be447e8235ac3810d70f7853efd69e98e071d82ffea7cffd7a32": { "40371c6acad0719623ab143c6991d629d5eeef18fd54755245385719989fae91": { "jp": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "264b8a354e88aa7386a3fde62cd9a810f409df6fdc75ecbf805451ddb23c6832" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "bb8bae1d541af25fd66b49904afde7aaed07d5fe62f0ef706fd33e0b050626ab" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.867Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "9154967fe3c5037555f883c28d43ebd7f9a963693812ed2121b373135ef87326" } } @@ -23131,15 +23201,15 @@ "1784873802e351d4cbfd164226e7d919a480bb1d6312139fa09de23c15d16a8b": { "8742e923d01dd09dc7d8778dca915632a84b942a268948d3212bfca23e4e87e2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.865Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "ba7790130e9847c679550260303e7bd90d29779990d6a01db4d3d0636832461a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "fb23458ae75693c8bf1bb6c7ec5998493219348445c758f848487f3fe869ef03" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "90ac8e7e636384c34cfbd1039a6fb5c2eb9f6e527100f8822a03300892423488" } } @@ -23147,15 +23217,15 @@ "1976a270e928ec95aa014d1eb571385ad93c7acfac83fd172543fcf63d413493": { "28f4800b7936b39a171e2fb6c8317b4c9829a963ca30e0d8f2cb33e3e1dba27f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "9c5e6083c62927e10a73aff23d771c1a4f64db63a1f23f87414d9e53e0e2f75e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.865Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "00e124094f669e8c8bf09cc520286bd77728faeb3ff3f6b1f71817a05875b6a0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.844Z", + "updatedAt": "2025-12-05T15:21:44.579Z", "postProcessHash": "31e9210d4396d546263f943540e14b096f498e017068b43794faef186b4785e6" } } @@ -23163,15 +23233,15 @@ "19d053d8db1755b3bac1323b8dc5bdf881a37b3de8c55e8397cfd48c70b492c7": { "a35e75c19a0f228c55c8e74114787fa88e13457d020f241643da1e080c35d9ae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "41f1f122ed49aea4f379b562e4ff9153ba9b9acc5b4df2ca44c56b9f6848902f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.864Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "5c80258df833983c7b274708fa062ca0e3efa0bf48adeedc2fe08df377e78211" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.844Z", + "updatedAt": "2025-12-05T15:21:44.578Z", "postProcessHash": "906cc962434989601007d3957f5aa5adc48130c09e72f84d656bf5a97e2f20cb" } } @@ -23179,15 +23249,15 @@ "1de644041acf945417d447dae1559f7cba704ddb7f42f4989d75f53b3432bcc7": { "0d354a4bc3cf5327de48753ad84ff21b24119bc6b87f048f6f36a86e9a56461f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.867Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "6e2dff9ad0146dd7635c9d17238f45532cfd4e9c77baf7206fca280661d82586" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.866Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "c38c3bd35f52876fb2b80c04c383769141a2e1168112ec5ffdcadfea6674927f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.865Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "8bf8e0a2c822167174c041a57248197b68656796618771b050fda1c53641866a" } } @@ -23195,15 +23265,15 @@ "21df29d894f5394f8a93a1ff43ddfcea466286f726a703a29d7f5ad5f777ca4f": { "f9004a0faa2530c5a49f802aa2e8e063889d07b4b5779757539ed40941914621": { "jp": { - "updatedAt": "2025-12-04T20:16:57.846Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "86cbfcbbccccda6b1c586f4633473a2aed07648d4219b254f5c2b0b5a740349f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "f84baa85de5904086a72d87af510cc90de8821bb04b4da2ec7c5cbf3d33048aa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.863Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "972ef2602e1592fdcf609d8e878c4b072c9b81bc31eb741ca82d784ef5cd54c9" } } @@ -23211,15 +23281,15 @@ "22ff9a2316c586c12132ac52204a80c3282c99ea70504b739a00fc4e769b9090": { "9b6474c5f66a5e775df7e704ab5583bc77d7b503d80449e41bcb0fdca582d72f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "6ce4e20adc483b9eb412a6ca5b244acbb226d6b82e1408cc9c710afd82e15199" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.845Z", + "updatedAt": "2025-12-05T15:21:44.587Z", "postProcessHash": "ebc87644cdabdb09ee9892ab16418d3b56d467710c44e9aa29aef0a702d37cbf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "1860a7ea75cf99c380b45e9a1d8a370a4973f732e14beddeba1a719bd6988d7b" } } @@ -23227,15 +23297,15 @@ "642f1cdcfe6481dcca55bd2f485397c27b2cb519506bae85d0903d1022a9a534": { "d58e38a4b38f0454d5c08c7d2887270f277c732f8c21e5a62fa24568ae4fc2a9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "1a9f83ddc292362420c6a52de2657bc7271f5c21ba3ab0abd2ad1bc2a8b1107d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.844Z", + "updatedAt": "2025-12-05T15:21:44.578Z", "postProcessHash": "22e211ced8488ecf55bca008b238d7ac47d7adabf9e5bf2e3aadc8871c61418f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "f64d3c780a504461888778408b202e10c4a9fb705b84295aa98d66dd14c51490" } } @@ -23243,15 +23313,15 @@ "76e148edd42e2339581c7f24e0a25ab51ee37d3723b355157641afd3cf2a92ac": { "96f0f82692a94d11ec4bd22df9bf9c367d91f54e7f111247f17715678d4f8a7c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "df55ed088f3c9193ef4a9840731f673deb78f7a7a219e084bbf959d429b57d69" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.848Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "87ca586acfde913d4ce97da52a9b9813f1d1c4a076f6bd82679ff6390930efd4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.849Z", + "updatedAt": "2025-12-05T15:21:44.590Z", "postProcessHash": "50478e4300bedd8a55a138b668e7a6d5575c7ba27f82675dd67a25ea88581634" } } @@ -23259,15 +23329,15 @@ "877ff646acb9d8b60cc0a8c397ec6865271899314d2f8d8c3bc6835ea0a51d87": { "cf8035df5e02498f9892ec6d01d716e4e210be81d6a338a2a670b395f2d05b5f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.851Z", + "updatedAt": "2025-12-05T15:21:44.591Z", "postProcessHash": "fcb554e37e7af4c053e1e672331da8564ae20285875f2210850e6a0609794365" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.848Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "65034cf5fce14a18bac91cc847960dfc3da465cc9a759c15b74b2cc209d8c5ea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.861Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "9319090b82e0165e7795cae925d2fc35275c892060b98661ed21ddb13a1ced39" } } @@ -23275,15 +23345,15 @@ "ba2b228d4949b83493253e6cce36fa61e4aab29868007f5c4dea719bd97fe4e3": { "bb371d742e1c3d8bcdd77214bf030643a0331f8f48e7727cbd847a8a32b85ac5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.853Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "514a925382e7a5201b4d202fdd21b6f8527498b7239b26432da0b044323f0439" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.861Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "b5029fa6b38c05daee2427f694bcc4de7d3c45e00a7991839c51801d6c8662f9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.831Z", + "updatedAt": "2025-12-05T15:21:44.564Z", "postProcessHash": "8dc81aec40cf12dfdac8ec24b879365aeb6b7a1dab892347e3c8e63f740d96a3" } } @@ -23291,15 +23361,15 @@ "c88c05312ecb48fece611ecb971d8437aee67aab577a01d65950c88e236c100a": { "d28f12f9ff28bee751ec769892ca255d368223c72a14abe462c9cf6ad965a8cc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "918ad5171e00dde35e8ceb4a21227d70175a98a165f3fbb2744b9e45a2677eda" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "a8482fa3c4cf8bf55633b046eb0ed82451e1489e4d7153f1248153f3bb973d84" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "56c91b4ff2d87498b4173aa8a265302f5546e84e4c80c1f657939dfd25c2b812" } } @@ -23307,15 +23377,15 @@ "d517690990eb5a5034e28f3526bde41c42990306742079c31f30f4ed4524ed91": { "9c79376ce670521bff71e976361e6729afb8128c48c2bd62e07e55c58efa6cbc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.588Z", "postProcessHash": "957dfd0d6384b88503c8e585ae98dc5e0c273cd6aedf00de4bea5e3f405c5727" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "54755606d721f0dcfc6f2a2cadca5cde84cb6c80f3e4b913cbddcf5d4ebba60c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.566Z", "postProcessHash": "2c35252f68f1a923640589b00e0f8ea0275b103cad7af80698565b052a5e87fe" } } @@ -23323,15 +23393,15 @@ "e226489ddbcee1a5f588fea5844e21dcac309588b3ec1f6bbc9f7bfd26b0953b": { "5792c89f06fcaed31fc80316244e3ff2495629cc4d68214bf2ad0fc8b2cafcae": { "jp": { - "updatedAt": "2025-12-04T20:16:57.833Z", + "updatedAt": "2025-12-05T15:21:44.588Z", "postProcessHash": "57bdd7362459e516623260a58040d69a7a2e1654f40a25903d815f563ad7caf1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.860Z", + "updatedAt": "2025-12-05T15:21:44.628Z", "postProcessHash": "e65fab7028c7749170d441414b1180e83cb45c68f48da136059e9d47598cfc57" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.847Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "6d02fd7f4ac3123851eaa4d294bd5679844a586bbd0b7b55b21e07da1802294b" } } @@ -23339,15 +23409,15 @@ "e3904a052cbf5a3387388c389ae010ddc49649dbbbff19900f769f6e6cbfa1ee": { "e3e518cc255f67640d601fecd3cfb11ea7e915ddf282acc6eabba8311aae5b22": { "jp": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "7915ad17bc085b7ec17f0144206c4a2207cab99de9a6fd3243b28ae3cf206c84" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "f0280b151f5d1abcbf656b7d1e622f5012fa583f4e0757f7f4b5a8eead7e1dce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.852Z", + "updatedAt": "2025-12-05T15:21:44.592Z", "postProcessHash": "1511a9b0d60c7c3f5b5a39c0c60791b6d91f7741c4afc3cf4b77ffe6fb334b41" } } @@ -23355,15 +23425,15 @@ "e6ad4f2ee58b9c424f0cc4e12e443aa3bb9dfb641432accc87e403a8b0597b0b": { "d64cf4716347332440eb8c9bd7192e0eae84a3f3eb49ad6ba4155f87567e3861": { "jp": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "7d9deb042363000045617733cf181e0e372434880588266736556441925c13e9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "2d1bee15b8a931170f51bf73787dbb9b01b2a3a6f1d3e50a368339c2ac5c22d1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.630Z", "postProcessHash": "b554123c51646d20702b19c35e17d2e7396e326346254e10bfaac707da27525c" } } @@ -23371,15 +23441,15 @@ "e8d810b58d2fc954739ecb8eae76ec7772a7459c01a08dd48ba208a5ab4b2b58": { "0d3df994d73dcce5dc7c4ae8f510488dca241f13863b2cb49c97f6056079afb1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "1da7a534734fdb80651bdc99bf056a4ad1c82f53a1d3e572d24408624de1db4b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.847Z", + "updatedAt": "2025-12-05T15:21:44.588Z", "postProcessHash": "f86abc0e6cf798945f18aabb41c62bd3e74bad4c5f748c59300a7d5ddcbfa292" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.850Z", + "updatedAt": "2025-12-05T15:21:44.590Z", "postProcessHash": "5c155421ad507b5748d625f5815793cb034f91f2b5fee29985cea0a41dd8570f" } } @@ -23387,15 +23457,15 @@ "ee906a548fde378c55bde17a104978853c964efcc0ac2037f2cc5f90ff301836": { "f49e9e3f91b64b3519c5cc4cdc59ffcf9a84b52eba96cc9a68e95e42dec254a2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "b817e573aec41425bc346fc4ccc846f18eb70867ba5a2bb1929b46f4044d50a1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.848Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "16a7838061abd7362de6abd0de9885d4cd599be510e2172c833e622cf0eea177" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.850Z", + "updatedAt": "2025-12-05T15:21:44.590Z", "postProcessHash": "886f63c6915cdfa20765f0c93d93966227d2efa4ddecdd0573c991d5ff95e564" } } @@ -23403,15 +23473,15 @@ "f17585a5d8e2bdd6a2ebea5f856955881ef4c473fd73048cf4f26e56bdcb5db2": { "9e7753f5e285750271319abb9baa46c784486772a2b4da88514c28c5141c5c81": { "jp": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "1bceacb4672367f8d44a241a3754cd82454b970db609d86be5696123ad5459b2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.844Z", + "updatedAt": "2025-12-05T15:21:44.578Z", "postProcessHash": "8b0a78860492900df2f0f53ac1ae4ac7f54f8dcb3313f9035fae8b87dc556500" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "ec5d358a26e1b211a660ac13d764521c98294f781f89b058e23a2071d95b1261" } } @@ -23419,15 +23489,15 @@ "fdfddb9175ea6844a8f625eb6ff292798d8dda51dbc62ca44009000f3177a4c8": { "a1fbebb2555661587982370786b093295909d4be9fcca7e32ae5eff02acae18d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.848Z", + "updatedAt": "2025-12-05T15:21:44.589Z", "postProcessHash": "bcf0b7534c579de5d06bfd7131c8063bc180e7f1503a2717026df704a17358cc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.847Z", + "updatedAt": "2025-12-05T15:21:44.588Z", "postProcessHash": "f3b5ff21c5e81dde8155a3e73108c3b04846ae1d871cdc641ea2d7046862d5f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.831Z", + "updatedAt": "2025-12-05T15:21:44.564Z", "postProcessHash": "e84fff1d045cf9c71092d91955562c704761eb8e4de0be20cce15599e8ac06f6" } } @@ -23435,15 +23505,15 @@ "04fc2fc59d087b4841db1401316e4d1c9ac88f144242faabf25ec2e969a5215b": { "414e7c4dfb6cd3da8443de0d53c94c82fe3258fa5fdaf93915afe2a8ec3736d4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "34771a3855369b70075c89682eb246030899b2597f5d7477c49d50d82973990b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "d936c6c3fe40c206d39139b147128a3e0862ff950513cdd59d30aacbd76863cd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.865Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "8f3c28fe7c62594402a7f8d27d1582934cadc2eba4f8bc87b7b3d0e75219027d" } } @@ -23451,15 +23521,15 @@ "2fe2ff96c504c59daad55285eb365e9e69fcc5eddd301d8a0409670d1de5a9ac": { "79af085e05f9fd1374cba79aa1eea65a5fa7bcadf0fcbabfc3df348faf04e6e8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "6793ff84b8af7d5d8b7da81647f5cc3b4051f37bba8f934deaa1fa048b942794" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "95d415dc64a9f8e8e348ad1e8aaf96140f9954d2b314efdc691084a644878156" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "486a98f503013431b94e683a374be1173e56c396393b30a357cc8c3f36be8f1c" } } @@ -23467,15 +23537,15 @@ "32c8d946bfccbad7f54bc00de27ceee1cc1719758ec7a678b9763d7236502014": { "6c958d1bfa513f4a8e0811e9c383ecdf775c2aa645e088ea7d02462f9209a69c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "09192e3e213aec09b8739b8ca76927cb47ae1931bef0394c1fc8a2d566aa41d4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.866Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "3e40e4930f6f47417242edc9ca907236ef8ae3dae126b9bae198c55ec8c43243" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.865Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "dce00b6aa4729edc895c305821b237174224c992efff4e656658184ed365736d" } } @@ -23483,15 +23553,15 @@ "341eea9182cfeebd2c27c019d06a39d1fcf951c990bcd80fa61f11ffc6f9e196": { "aba92e4ddf93c8ac27c276aa33d276f9987cda30270a7b50881edac3ee8d0b71": { "jp": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "33b0e8257b8c2f4f4ff28bd76c8f5cb50b29926015cdbe9c6a3d3140680c5fac" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.845Z", + "updatedAt": "2025-12-05T15:21:44.586Z", "postProcessHash": "d7e3b1da7be143e33e2973304e3d9b7b7f1bbb8a91df883b75b84e7571084d21" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.845Z", + "updatedAt": "2025-12-05T15:21:44.586Z", "postProcessHash": "c889b844f42e4450548262b4874575c28e375220a7c7f4e7caf10500ecaa2d54" } } @@ -23499,15 +23569,15 @@ "3fe31c561edbb5416b22ecceae952bb5b07567cc07d75cd64ad4a2caca7689f8": { "af620cd5ed38d2654712e19961c6712bdc7c780d345e73f17ae49396a20d6df0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "552ca3c3025e1b660cde0afb3552c932d40d1e28e17650a0d92d6efd360000b9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "bfa1c0d4a034ed09f1d51e3d64db06a614897cb7cb1c7fca57aac4714d6a9c5c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "368a6907bf13f87c188b962943377089df692c223e1498a2fe4e969486775527" } } @@ -23515,15 +23585,15 @@ "4afdda2989ef4d77a80eb6666ee0e5fd90ac3afbba1e33f8e39a07be3bbd203f": { "6d99a0d2cef83d17f6510958c4402246edefbb9b9d564c2e37e017791950e3bd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "56ca848420db0579611181a512335e8e9c20e6a4a62bcedc9a400b448580fd49" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "f3dede27606f3796bcacba25eadb245278de1f535f359b5fcb8b11fa4a22708b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "e452b308611a16ff6a5d49bb1169de90c144ab983a5530a85eb50a30af675d7e" } } @@ -23531,15 +23601,15 @@ "4ecdaa59771417d8a6341e9feb60dbd9c4d4fbb10361d6cf230a66334329d458": { "32e97893f5bdae1c411c78d8f927f38c3f5f53f548071542f0aaa587e832cecb": { "jp": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "f383c684f798a441c0bf9e216b0805a3e83e4d9835be6d4bd97ae6b18f933dd6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "26ad5ef4ab9de56dbfbfaea7bb9cf7fb13c2d0c1672b1be89d33e2f61a8bbebf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "c8f094ef0c4b7a6e85c9d0bba8459a5b45c984ba601f219e64102a1c7f300133" } } @@ -23547,15 +23617,15 @@ "5ed43729b9d1c584d6d2715ce2c8e0e8690a779f998a5295f954f2f562471776": { "1691e237ea64aacab998e397d87c92e5419d9695a9c24f1829f61653d169f1f3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.844Z", + "updatedAt": "2025-12-05T15:21:44.578Z", "postProcessHash": "651056230433ee9dd9d54555bae0723ec2c8c29263db4a33a7898c90e47d0f30" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.867Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "2d3a7df8d35aee33fe591e5045369d87bd245532382ccb83f38215e7dab9aaf1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "69b530b44617a0cde638a41373c328a4841acefd0806983bd5ed0cf51ce5ac1d" } } @@ -23563,15 +23633,15 @@ "6b19fbc50a3d75e95082802f1b3acf6a3fdda3ff18cd375f0468fb5136f2256d": { "3dcab33a3b2dc5934e1b739f426935f58ec2cc8e37d9a43754b1941d524c7eb7": { "ru": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "97ce10d0e7cb39bf4fa679af139b44fc13b35d8f92a119a4113ad7b66cfb7575" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "02e63d393d46e21e219a6f3e7cca7d892ada6c7f78913ad6e824c92db8bb8b64" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "dbb913cdac833b96615d68cd0e6018a4a9679c368f74884035eb6e9f9a9d2650" } } @@ -23579,15 +23649,15 @@ "7043bd98baa35080107f5165fe9bbec5ef39eb9956052fa0c10ef9ac22039a33": { "e6b73b30c4502fd5f9cd04636be35210ae5ea65dc8343c3daaa83eba16905924": { "jp": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "8a1d61040594d0d9100de611970f617272c26a7c61bce51b6c9128637eff016d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "662951e59bf9b4f70f9d52f9df37f94dd279c3218b9daca00073a5d29b56b15d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.867Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "a76e4822fc70671bd0dd9a751ceab7c2ca15ac69ccef98eed56fa8aa9c336e8e" } } @@ -23595,15 +23665,15 @@ "73cc61c275b13e314a195a2bcdc4cbfb3fba91139f9fd1bffb19f48a659d4e6a": { "190e7c7b34bba92cb96c18d30898280711152aa225a02af84331070d834800de": { "jp": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "69e0ba42d38ec3783b3d6329d5afaa50069a9c0128bb75417f160609d741e31e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "7381da4ce5840a9d072cdeaf58ee6732466cdf2c1cfd7bd8462576340ec67134" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "b2e3fc3f022ebf971aea816ff0a390da74602ab9b3d63167b6b48215c32548a6" } } @@ -23611,15 +23681,15 @@ "7478bdb164a78a0066fd05a6a86be0fa7a2ddd64b6f73b9baf2265c59d70f4c4": { "e97df2367ee337a5ad2b8ce514b44485caf7b24462a66eac4a3d178503301830": { "jp": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "ee44710816026ff858f7397a9d8fc7762d7ca3bd0a4a0803924d3ef8396cd70f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "00734b6601a1867da908013690211d8699cd2a04634816b3f5ba80b77e22e13f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "45aeb32c58e18c79ba802a04a57740e8187a27ddfc5dd140d8ebdebb5aa26a4f" } } @@ -23627,15 +23697,15 @@ "789c0931dffcacd3c5e4bd954c1cc49f734d35378bd8d9f099bac0b7d7de0017": { "58519a4d43db394ea6d5c15ae1e4f7bfc823bcba6a23e04e1f1b0fc5aea36241": { "jp": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "ad99f675c5196766388a11b9fcbda3b965900d6bcc756e80ecb78f1f76b4e20c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "8577a057783fab21101f49096d66716772e6749437b13500875d37f844207839" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "e1db3d5c02ac3150a0b25616dc1496bf61ebbcf5105974aec463fbc2372a7303" } } @@ -23643,15 +23713,15 @@ "85409384bc3d4ff1f1449d76a33ced011be9773bdbf0758e6975a6dbd1ee1dae": { "1fee80d8af00c415d442c78b9ad825b9a0656bc47f1eb00d9ac9cec8430f1454": { "jp": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "6a315de42fc209c5b1287ecb783f74ae407f8af05b4f539fdc2872f2128c2a12" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "9672b42b60ad516f490fb3281e40065f600eb7bb8d21b4b7bff69c41c5cc9817" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "a970a84cd18592943bfffefb2b45be71f43302f80ded0a69e8e54ca9cf54c542" } } @@ -23659,15 +23729,15 @@ "940bcfdd1a4ad18a6a6ccd9181dfd460e21675b41985028b535c556f22904357": { "8379073d04e59c3c4b33a28508240fa2ad889504e267a63230a17f0b31b60377": { "jp": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "0aade2e43a61130da226049874fe0947ecb5ed3483b82e1a09e817603ac898cb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "41629d1c56c4d1882a13d92e7c7084fabab50811b91d70e2a4214c15a15654ec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.887Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "75447afdcc9676b853d6209512eb08553a8d71aa23d87490013108c5acc9b96d" } } @@ -23675,15 +23745,15 @@ "ad44e0a653a277028da523b8bb2ede38b5fb8ae3edb129aec78609264961e45b": { "c58dfcddfe9b317538f8fc75e87174efab26fa62ab436b5d3a1921bdcdb71dcc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.844Z", + "updatedAt": "2025-12-05T15:21:44.578Z", "postProcessHash": "c2c012e4d44253d8bd5233146c87fcfcf756c06a115e2d2cad56beb33b8f1911" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.634Z", "postProcessHash": "7df127040f9fa4dba62cee9ea6840e07bc9e073f3e9f88678af580d8b9b4dbea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.636Z", "postProcessHash": "09d2121aad813a230f229040ca6cdc165bdc93f86ac2b7b027dc9481d9b61a27" } } @@ -23691,15 +23761,15 @@ "b0371f0c5ed81dd8c1a94c3d4fbb5068eda546a915ea97e900025b7967fdc506": { "1adc889763f86e0775ccdc2cb7db8ac95b53182b5f48d36f86a8daf7373c5e8a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.874Z", + "updatedAt": "2025-12-05T15:21:44.640Z", "postProcessHash": "dd71d8b97392330654ce47574d5ac1509fa1c33f221014933f958cf070cef650" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "8fe7995ff7dd434884de0496045c5412a74a45b5810451b0b168dda92755f308" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.867Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "6507e7e363ca8c0a2f81d676688fcfa1de6b072261724dcac7b1ab5516db89ac" } } @@ -23707,15 +23777,15 @@ "c720ce0e77810fdc639cfe83c2df1fe9c3d97ef4dd59cba6540e1d9e354f6866": { "3f956529d37242046b0834f1c686e59dd0dda8c1b7de96710b47b1ab8e5544f6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "5b36f94ece8e230d4e65b9d6eead5961c5f51da20c20e25cf1c7f4c477bb22d9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.845Z", + "updatedAt": "2025-12-05T15:21:44.586Z", "postProcessHash": "2ccd73fe365b2ea6bc10a9c900e4086812c9609599c8529a2bb77b3377e8d061" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.845Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "3a80224ca78b369f5fa27bcce394ee05cfdfca55a9d77d26c29d571818cc7fdc" } } @@ -23723,15 +23793,15 @@ "dfd805b622edd8955d58dd44846aeefbda562b1c575f0740533a458f2478f495": { "c61769f8b34a280fa8e6d8215850f12fe517dd969c26c4527ce9543b9b4052d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.865Z", + "updatedAt": "2025-12-05T15:21:44.632Z", "postProcessHash": "f54df4ae5d531f39347d88045bd1712f08a0894bfdeb8a2d5d94f557d70c958e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.869Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "ad1d5fd67676975863f1b32eede946980fd86a6149acdbccccb38f018f93fc3e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.866Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "1531ee8b3e45c6100af1c4c49e3caba2bb4a5361e57cf076c257dbe9e16a2e84" } } @@ -23750,15 +23820,15 @@ }, "322fe8c1dc3f914114b9612a364b492415419450af0b86100c9c57287d3a878a": { "zh": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "540df2a2ad43c66f47f954c3b8004106f04e475051adbb2ebe39596ae9dda6c5" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "5ca664da3330bf44d30cac2365d985df2d8440c8eb2b73238a2940200589b8fa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.641Z", "postProcessHash": "0adcee1d1cf9875be3fad442e19aa1fecc7a1e8431a1745d75116d0ba42b39bb" } } @@ -23766,15 +23836,15 @@ "03b5ecbbf39334e6da0c384a22e5e44c1c2d4e7293956c81e85ebc5a1f9684da": { "a8ec8b1cfed8dd821d7646fedd89af692c1d5c39ff7e6c8263486a44277b6811": { "jp": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.654Z", "postProcessHash": "45d102edc911ab5c31659ddd649bee507b4ff2a6507667527f3f1b51d45562a1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "c3e43851b83f34525653db6796d9a7ab3985d99c0b7f358cd05c8172d11c1778" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "6e6cbaebd1c20bb8aa802a7ec73035c318aac8d150e2aa543ebd2971965b65fa" } } @@ -23782,15 +23852,15 @@ "0b126951a3c780c939a55fe4567f097c8702408c235f214c5763699ad6daaca4": { "5b529866221693a79922a1408a19f5b678c1f0fe4b7ca31e7401ad0a4ce64dfa": { "jp": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "304bfa8a6272dc7d2cbabdf30b84b3f56dfb045703e740b64cb239d5aa88f1f3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "3c08112b8d99509e4ee21c06401567fa49f2ee48beef9d898f577a23e64702d2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "5ab2f0eeb9aec29fc5eae9ff2ea46eb9ee21e24bac473de2d0cd90362987f40f" } } @@ -23798,15 +23868,15 @@ "0eafecab32cbe234424b7ea9a0db39d81bfbd85c2d891597fa1309dac8735c8a": { "94efd6e0e379a3b02b71963dbf0699cd5c5ab603e5cbabbb278630c8bc3eed6e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "17a73eff1be8e48d8815924f4706985ccf7a297d5bb4f070161b975eab4e5cc1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "b3f69a11426de6fdeb9f7b53656197cf7f569dc061da7bd3580abd0b42f3d383" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "5a860b2ec6d808b98a0576fdc6b994e943e80c9490cc73622182e0c463b5cb94" } } @@ -23825,15 +23895,15 @@ }, "21ab0993ec46252ab7b40a1b418b9c04325c81c889a8af72daa16bc54b1f51e6": { "ru": { - "updatedAt": "2025-12-04T20:16:57.863Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "a2f33db00bafee7f9768502aa3de84e28a0b35c8efb4768162bede07ee7df2a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "5becf268ae67b7567c4e998c7286e22148a6f0bd22a7b550a9833c65f29eb9e4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "7808a9badec99348eab7fe796579bc6c0ab9bfba2b242452121fc60e3123a7a1" } } @@ -23841,15 +23911,15 @@ "22a6c0463fdb5f5bd56c1f342f979b7e0fbc638e39a22abae139379b580611b6": { "c126bede64139b7c6ab143d42c036651e266197fad3b70012de0b058cfc8a7b4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "df14d4a4c4b5c565f3da870bde6bbe6a452044d2160f00bd81418b350606080e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "2b2cd4e11a723d9cafd4858f905fea1fa5adf507f159e58eaeee5015e279a3c6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "0c03e72a9c6567cce381ede5e48034acf4ad74d99ea8a194d375ea3e101f8636" } } @@ -23857,15 +23927,15 @@ "2f0ce2fe6b5d1318ca2c2c11f3ca3100561f2c3b056eac0c92885f76ad381df8": { "22f366f08d6beb4fd69cd03348a69d6ad0fa2634f22a96d663380fcc3e61900c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "420411cc96e91149e8d1ebd3b74bc315a3d3adb6eef25ba5da22ce6fe0518831" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "83a526eb85793371548fc386cdfcd7a9f9073b8a6d2a33913a1a986ca3c4ed58" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "f566503786d1b86a98399c85e646df8744220a22a40b3a1889211ea714a048b5" } } @@ -23873,15 +23943,15 @@ "34bd47b9631a90da1872337df6289e0170c67b0cdd5f5773b7367e05d2dcfe48": { "7bea2cf57bd47e48dbaa0fb6eb99c5614d61a80b75f4b14d7d22036a5315b2a2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "3f1afd0003549be2632cf0c4bb558afe0b5f1e317209aba10051cf265a776b26" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "b2aa6607e0e7d2448323827d91cee88ea1573b708da75c5cfeaaf04501bff451" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "659b20ca9997f3c36f6b45d98eb9291e0c561052ef184fae03b51831c504257d" } } @@ -23889,15 +23959,15 @@ "3fae7c4513dfdc82bcd5d84b957baba453f6cf9cb2c3086a653e40e66ecab9e5": { "ebb4c00f401d9fc73b63d71739322aba770f129d6784c881ec5e9cd702ebc982": { "jp": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "1723174181eb45621cb95bfb6dbd756c37955ec7376e9c50d5fd6e3f653e1b60" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "f85af05f4fbc6caf11294c8594a0f823782a4b7005013edd855956a4c459e853" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "0992069d4470c29f2d8e372e42d39a05d2303e843ab4bccd8ef7bd8922e198f6" } } @@ -23905,15 +23975,15 @@ "8681a5dfe4cb1dc88d34f905cd6f0b880732c556d84f4c6c1a78c2a42a1e2e94": { "937c3315f8641ae220b02e6527a850efc428a4de748f9fc10c3b23118f915818": { "jp": { - "updatedAt": "2025-12-04T20:16:57.880Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "e175012db0f964f6a79911a51c12f28c55a97a99e5a175a8886ceed5c9a12509" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "c23ca98ee59c8188cf74321b403a225ff54b5faefebf4bdf827fe8f6bed03895" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "16dbc38e16086163769bf83f790f7a8f32a4edde6fa108f4a3a2cc29e977c095" } } @@ -23921,15 +23991,15 @@ "9679382c066536c0e977c5bada387315bb3174921875fc2375dab0f8ecb14a9b": { "775c06f4143e15814d67624ccd103ecbff901762e4be69292f9800d11986493a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "9705a5d1c9b72412ef200f0e65d035e220927aefd739416e1e633adcf9b9aef6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.880Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "5a5bd5470b147c93e3d09e5a98f849c921236d98b8496646c0aa17720c156df4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.862Z", + "updatedAt": "2025-12-05T15:21:44.629Z", "postProcessHash": "cff387bbec6170f88d03ec27ee8cf416188b63bdae56b60016edf0771587260d" } } @@ -23937,15 +24007,15 @@ "9f914435087a98e271276ebb87f255c29380082ebf766e89899a246c457e4677": { "71530532e2635eadb067e7bfc1e67c37d37113e6474b6d00295249b91f5e556d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "bb403c4c6451d41c4be772e85067cd6525548c98249a0fece15fbf729db00d57" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.871Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "988499514a8ff5ea02057a88e504cdb62a1af881e22a15c7f444f36daf71a6d8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "304ac2fbb61cfd9ed79c8a7c5cc3c253f7ca45dd20380d989334a524371c533f" } } @@ -23953,15 +24023,15 @@ "b5043154caba774e4d5afd58609e8705791d168d7b610c441a9f5eb0c01aebe8": { "8640bb0e91d0ce2469cf06735ac41d782b10893d26d5a5e4bdd88f4ddcf19c10": { "jp": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "7e56601a8778d066afd82cd888e6b98975e414a743f124ba21c50c072f97a562" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "e09fd6e43c3c5edbce6d33986d804a170927a2a3fb8253cb48ed078c3aa97328" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "0511f8bb68c7a0ab03eb0a3b5a1171bb46bfdee145ac316f2f4f965e02fd0104" } } @@ -23969,15 +24039,15 @@ "b6b46b2ddce58f83297d4fd3e22a20c0689c8846b02b00d6c901ad29353143df": { "6526c7597b3e43dfe18fbc51f8dfea10476408a65acfc8c77d19c20114264de2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.867Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "cf882a615cc788a3dea86467f0aa984af4882ce3e7fdf5453ccc6ae84d3093aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "f81ed251b67849bcd7cdab599d052c4e83be831fc64128f45f245a3efcf09acc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "e292900cda9e5da3050874df5d066b2b983937a604dcf7aef206df312682fe65" } } @@ -23985,15 +24055,15 @@ "b760d26fdf8b09ae16032e0dbdd66a6e812e5b85cfc1a2dce387a41c031415a5": { "2a83ac2cbaf9b2ed36fecb623007bef63f6aaaf537e37429095c3057b999a156": { "jp": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "3d202caaf223b1e4ad7d6375133a2a2781554dceb3584d6aa755ae85dca925b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.866Z", + "updatedAt": "2025-12-05T15:21:44.633Z", "postProcessHash": "6215b2fa26ee923af659ad622bd02828ee717d586ab5ea9a33b1678a5edb690e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.845Z", + "updatedAt": "2025-12-05T15:21:44.586Z", "postProcessHash": "0014a11ebcd9886f835705275d63273f24d550a694b5d9b66de2700e7de6805a" } } @@ -24001,15 +24071,15 @@ "c94404af6396786f2d99e4b9e86fe62f37fba23be9fb0992cb4462421350617d": { "8e9c8e608b5e9c9eb4f01785fa62ca818e1a1957a5723d6cb412ed71f639a50b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "3d888b3f0f556a299f1dbc5d507a9cdf8fb8cfef4d66101c1a129d6824fe7009" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.873Z", + "updatedAt": "2025-12-05T15:21:44.639Z", "postProcessHash": "84f52b029d075625aa67c20c2609cddbb954acbfc721ce31ce874145f6ba301e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "64605067e9f90909ead88b1aac520ad5a306c25b8fcc746b81542c9bd2bd7fbb" } } @@ -24017,15 +24087,15 @@ "cb7281a29c8577f9362237b726ab73efa4133f66aa1f532e94603029a6608325": { "e7e9ff403010f7419e6fe70d3329c7fb4d95f62d59d52fda8025ee90af8ad89c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.885Z", + "updatedAt": "2025-12-05T15:21:44.651Z", "postProcessHash": "a566495ba4b7f285354c15226950e9f2e3ec118c7273badf22e1eb95af4c0e12" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "793ddbd4c8b47639d47308898a4c6e9a6f720810b40c023068ec0c087ab6cc6d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "a21f16e62780db0aa0627209b7018658c201fc59af53306d64ecf0b9a4f15b0a" } } @@ -24033,15 +24103,15 @@ "cdf00c31e8da5ad17f2b40732cf7e7baf65150deaf7488eac143f7201d1dfb3e": { "3c8db57986756c0b913b89d2204dd19e77508a68267dc6a6d737df290161badc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.872Z", + "updatedAt": "2025-12-05T15:21:44.638Z", "postProcessHash": "1282d52a42d8e711c7b9c99b0989e274172a685cd4d0aec1b6d387ad54f496f8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.868Z", + "updatedAt": "2025-12-05T15:21:44.635Z", "postProcessHash": "e31ad8fdead4a1cbdbdb9c8e897087df60f0101252e4ec3061cb57eca7707f0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.870Z", + "updatedAt": "2025-12-05T15:21:44.637Z", "postProcessHash": "3fe501c8bb5a3286cba447647dbab0d3b13f548282ea07770dcf7cc389389312" } } @@ -24049,15 +24119,15 @@ "d28f5c5276140aee0909af043384a73dc6d1e54e307092d06f03528d2b1110ec": { "c4f358e96fb5460080efb17e46f53d378939fef04b5fcad4e3e2c5a580a10128": { "jp": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "ce545d05ba927ebb6758f9b1a7d015783d0f71cf4233f2a7ef5b1ae7216c280c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "f728f8e8771a198e826729d367d4a1786cee2fba2225eed9aa78e8ba7eceeef7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "ca004f5bdb73149d8a9cc89f1bc7f43288431f7caebb5f8635f24575a2003210" } } @@ -24065,15 +24135,15 @@ "04a08061427f75ae80f6c5be1bc33f6ed46cb17ac49c325b49ad3ed082b48721": { "8c2b821e3c5410720085eae977687f3169e4a39395d1aed6e45d331e39dc20b7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "502f7f2224468321a87d848f4ba378852646b7291ccb7f527e9567691c836206" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "342fe40e7449e7a4b57b3aa2e0527b36428598dc57f0f706b39a586460161b26" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "69443e9f7be327a9ce2c5754542f3354fbbb5bb76c05a89978c8e18b8201054e" } } @@ -24081,15 +24151,15 @@ "0f4329370fc5999889692e3e2374c65bf3f4dd5e8903e64957d654e1c712ee1e": { "87fcfd05b5f0e870d641b6800c171abf3d47bc7484fb7612f4151d70caaaee3c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.913Z", + "updatedAt": "2025-12-05T15:21:44.676Z", "postProcessHash": "08c64340c404c5ed8814c4e3e0da7bcddb5d406049904d36ab209b6e14adf9b9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "396be4281242e992e7d1f4a3136fbc299f1edeed5e80a2539ccb92f9450bdfb4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.894Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "95ab71529516c47649974c2ec908f50a9b91e75f1dd7e233ab4dfcfe25253da3" } } @@ -24097,15 +24167,15 @@ "100c02e77cc38427381d9c58741ebe9d9d8964c870d4cbb14624da2f386e6691": { "2d845a508a5f777e5f61b8dae330312410e821c6f517150d000bebfbc18e03df": { "zh": { - "updatedAt": "2025-12-04T20:16:57.894Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "dd7759328f986fde9b37d86078cc307604a45ef2726aeb28d2bb6cf4c5bfc864" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "3c4ac7567071a71fe14bb3dcdc4734d46ee6a563c1022116fea4965808891a1e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "680b1204dc8114bf5acfceea262b076ac3fcf2825f6737b5a74d8889ab6c7e15" } } @@ -24113,15 +24183,15 @@ "1680a9db2b149a398008cc3048b13dba799f74c5bfd3549470992ac1fdd41eea": { "2b8b81210547bd248aa80daed1df50ad236049f83eec7fed484a31e64906811f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "8ccc1e3d48c0ad89cf0666bab5d2038055edc6c73256a30e29d3b12d9ca9257e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "0f6d838ba6dda5f689eb1df53b0c18019303301268852d42dec067a8819eb9e4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "c0325a80fcf7c600872265c2bdf1abd5eb3ef0ae544e033fde00ddbfbdad7267" } } @@ -24129,15 +24199,15 @@ "1b89e2e1ad09ff845cbc6d24f7a759d61540214cea8a5c79bc2e68f266ebcbba": { "9d8c96f15a9c91e38b4c55448e86a206752b8e56970d31964de0de00beac4133": { "jp": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "d0c29dee04f700938770ae33095cc7901e30ed9fb7b1debf118cdc42f790f35e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "3ad902b68bbff11590172307b9ebad17e52adfe02064d79149810788cf327f72" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "865fe1da7ddfa6dd8af7766f527f1edc685e6074a3e9dc764c8596fa673b655d" } } @@ -24145,15 +24215,15 @@ "25332a58ba046cb340c206ff61639fed4457a1aad56ffaa7b53917205f1bb761": { "ca54f12c897481de5b60e4f4170eccc7217a2e000c56dcbfd023eac144ae760c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.880Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "35812bac96225c5b56234946079e73b78a4aafb688f2f5a4602546fcbdb98fac" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "ba5edbf9c64cfbb8dc37e06d64ba18fa6215d73ceb9174a4f772761eb60cfb05" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "db489a99c4afeebc2628b989f3c4c8a315c2cd60a9067cf24c6612f0577832a8" } } @@ -24161,15 +24231,15 @@ "45912b7cfa3611f18ba43d31b4bf270d57e4bcee3fdf2ac5e2ff6ded3b672601": { "25bd45fdbb02d82cf7af7820d3acc7ccf1701c6afe3cfae317a6b4ac9289a67d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.913Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "d32afef8080dcb97c082eac36f36897d194366b3c4416b4fec2d283cf742dc88" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.913Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "04406d7576ffe2a73ff025631d89a9249ffe058f6c1069df3a0f9b8149abb22e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "31e64e3687ef0bb0aaff26b36d647dde95bb607f9a1daf3cc5975669214310de" } } @@ -24177,15 +24247,15 @@ "5a251aa88d6ebebbfbc12913926476ff0da32b3862d705b6ecb28ea2c559b45f": { "b32b63bf76eb2d854a947bc3926ad7d875cc3ed3eeec677de22a5a760014a32d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "989b46f24aede5b3af482b932b6d136bc76105006dbc54df97ada08bd92b3992" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "60b9563bac641b8868e1fa544bb5ca8509f65b86b6590d2994d793cf1ba45332" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "955960fa780eea9b71e4a1a671db7420666ef03fede1037e6301a3f5341396a0" } } @@ -24193,15 +24263,15 @@ "696be7be6ffadd8471bfb91d7ba6ec45956dc7e449f3fc81dbaa6fa67d66b3be": { "8aa635a63a82ddcda9a254960f313fdd8f129e472d9fe8d3e6dc10d1b38c37ad": { "jp": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "4dc797f49a8a8287394c9bbf8723b831b094de0890d5ff6e8121b529c3ec5cb1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "19dbaa2dd53ab0d7c8c7e713803d772838f9123b95c9c45bbfe5fff35b7dd501" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "0121943389bc34cd24cc8641068ad137dd33d5b7d99cac5e5a78021fabdd445a" } } @@ -24209,15 +24279,15 @@ "79e7241d6edd82b0dc1989f7d3211668c2f24f997b5fb74c55c6db437b7da25e": { "be2734886fbef14228e09151309f47d77c7dc82d6b8d68b9d3f8b6dedeaa8944": { "jp": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "d41172d34f33648a494e75d32eddb012eab121dae1ce7329da70e5a4a45dc421" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "2380e757b48565a6bb1c96afa7e406d5364e7b1e8e2214002713580540c45540" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "8b8f420ba891f5036e4d4a060ad1dd39f2d6cf0e84301100ef5d7d7a1f1fd316" } } @@ -24225,15 +24295,15 @@ "7aca79eee9aaf67fab4127f69bfa7778f63bc7a7f6b384bee18e809c672f7b49": { "55febc4e35972c34cb1792867e0fc3cfea4841faadf9de0e30f4502a613b8363": { "jp": { - "updatedAt": "2025-12-04T20:16:57.913Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "9de09f5e9c3164e4583e1b42828d6ddd484727545ebf1a70d02a9dc8ca1bce6b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "f84f653cabca9ac4864ceec978f15ef9c00aa87186bb5cb55b587ae03f6f4406" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "a096528db5ce114db80fe19bfa4821fdac881262272aec537c1f588445b28a01" } } @@ -24241,15 +24311,15 @@ "92f16152dca7a77dde912f0a5b22ce16b22c2dc499873bbedb28221aa56e8739": { "f3fafaf3dde2049ce02a32a17ef225150db00d0562e505ad5431a06ed8974f2b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.894Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "133c7686b9a631cf247dde3093cfbc0b8be229703250524191088d220732806e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "3797f9ba10903400a090effce4b252b507f88a29dc9b4e9e394dad6560729c23" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "d0392fd2193f8aba28ce480cbc6c081d1e2f315ceb55ac394cadf61b4791b525" } } @@ -24257,15 +24327,15 @@ "972010f567fed406e9bc7e9fa61c22b7128c4779998665424ab71c46338d1f3e": { "ae02d48d7b29f026ead3f4af508a4e2b3a97657cb5051628dcbbee9111248f7f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "d331b64a04953166407735126184d0113eec67318331bd6822571d5c291c0c6d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.649Z", "postProcessHash": "d14e7342169a700c3904269a73245389c00b8d04d8ba249519104735e53a28ea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.886Z", + "updatedAt": "2025-12-05T15:21:44.652Z", "postProcessHash": "942f028e720f0e0867e4730801ecedf79000d2d67192f5ef9cf119c9b0a60722" } } @@ -24273,15 +24343,15 @@ "a15ab08919f6acfa97670cff9afca686c2351120dfd9d4f8deb2b45ddb99aa0a": { "d344fdb9b77fe64b9863b88b7aea7e3a8e4c7d7db3d3d7a7d7584b626a3c8054": { "jp": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "81f73e3fc11134a99646de9136329692550d9de6f87ad15daf138b00ad623752" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "5ad34d5aecc89f1175d98cd318e5c5dab995ebf69e5efa715a49ba5cd107fb7e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "4ee1d70f38580b8db0a2e894285440020ca0c0c04fbcfd8f085a5b150b1df734" } } @@ -24289,15 +24359,15 @@ "bb1dea393979951d316dea0be45235c346fe0c28cfe6756a5876f4804290c7e3": { "d3ecf8e3f0da56d9ba8034a953040427b08dc7fa1c165a2173308415b8a6d17e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "9b438dfbccc8ed411f3b92c526eaa1715a664f25cf7f97e9a6d5516ee4f165a3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "8919c17c288a2f9b66dd3b0ad5f141f5df9e33df5cab700ca87e0e04195f9b0f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "d425b0e86b13a4f8392e109a10bd32f065c8f4fe4ce4290b81be1d35f9ae285a" } } @@ -24305,15 +24375,15 @@ "cdb1f009589e1e0b485965e6b6f62f110d284ec9f225d0eb9717cf9f54e381c0": { "694473bb486e1e21cb8814dc53f5204436b1e5ffbd3f851984bd46f00c011179": { "jp": { - "updatedAt": "2025-12-04T20:16:57.875Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "72052c16381b05eeda913dfdddf6e898b79f3b71a79d80126babfb974b763b65" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "a8c1f4153baa16f9852ed6b233141436da9f6682cde56da0549916ef5bf05a35" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "3ce26fb8500933f8e6dcfd94effe589d648e3e6fcdac654b4e5f77e130fde301" } } @@ -24332,15 +24402,15 @@ }, "7f17768c7754fe62726af95719e525e92c0e64ec5573a51db338fa863d1513be": { "ru": { - "updatedAt": "2025-12-04T20:16:57.863Z", + "updatedAt": "2025-12-05T15:21:44.631Z", "postProcessHash": "b9d54a8c3e95c9258ac3179e002411b85c8c8f3f7f1edd416565224e8fe686a2" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "96feb1806cfe0332a6f850050bd6dd0b506b1e488178d557cae55afbb7495b14" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.888Z", + "updatedAt": "2025-12-05T15:21:44.653Z", "postProcessHash": "e5895702ed9dda7110c1423d89a210e3e1ed8816ac398a27a49c4f9ecef6528f" } } @@ -24348,15 +24418,15 @@ "d7c9bac812afb3a149a06c61bd4d64e33efbdacc006619f813e625307caa403f": { "bdd5ad8ff2c6c4cbf81696dcd7cf80196be279d10a61a61d0f45caee15d90df1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "257c4c8344e461d76920ae8393f24c87edc697499389fd9decd8d185c3cad248" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "46ba61cca9be2e547d2d5bf8ded5211a740fd21e322f95af8d1952a3e4c9aeed" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "ef8e692da66816ef7cfebd024a6957b5804226891b31c3e88df7a4fb1bb91d56" } } @@ -24364,15 +24434,15 @@ "dd8bec416e1a990e1a7ef46ce2f7761b51432155f4c149641fdc484fffcbe786": { "e43ff80310727083fa06482849132d96578ddd46a8478a49dd3bf42b62882609": { "jp": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "5fc50c2e29c575645a23990b85191d09859d81958931815d4a9f46d1359e32d8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "f332b5aab8022ba892057b0c2c48265f9b88e7f7b5f275fc8c8668922d73ef1a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "9ac918e6a5811102a441d2472bb0d6570f6c1891fb4f5f9049c6bdfe8cccf601" } } @@ -24380,15 +24450,15 @@ "de693811d680fc3f30e32c9bc40614fb35f73f55847f45a16264e614a65d74cd": { "8fa72ae7500048bac519db43150657d9500e969b9167f548ec14e8f2a73052c7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "a49e7c2502529ff17655e6d109f58ed4010dfe4d5c2f57de3648714708ce6d1c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "371a72820c4144fd514e9c488b8f163a3640be9a89ec71be27a5de1cc5a7d9e3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.884Z", + "updatedAt": "2025-12-05T15:21:44.650Z", "postProcessHash": "85ef2a78a583092d90f79dd14f0f627199b81d14b1d3de9db7f34051cadedfc6" } } @@ -24396,15 +24466,15 @@ "f05e54b97f0cc26e7e6d19993081fe3b3e87410932334968bcda276a9ed28bd3": { "1d9ae46b239c5f237c2f10a2d4e4c6dbc9261c9c864accb4c80b847fe59481d8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "9734bb932d822831b488180ffdadb1af13dc2c692b57d16ddab01a07d73b40ee" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.880Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "e26d763fcb1b080ce4295e3f9b3c190e182bd32ee4404a2364a569e4d0d865a2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.898Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "caa91c3943bbca0f545030dde2dc2514f20793055bd694372b1a665f20382ab0" } } @@ -24412,15 +24482,15 @@ "fe5b39e56c19c291226f7e3197f67720f7eec98c8343fadf7b1a283589869ee7": { "afa11621c4420fe8e64e6a032e92ea848928d0c35428ff0c7a1b50f7215c04fe": { "jp": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "23a24ee37ccf631ff821742f1ff91e57757c794a960ff0bbc8feaebd9d561d86" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "bde8597c11dae1ed8502fce9e77a3243fcc8ea95f40a94406c08b40cff1c59f0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "9b4b2308899858a518e76208a706d20c271a8667e2f8a6aac51b2ed2362890cc" } } @@ -24428,15 +24498,15 @@ "010d68e65065006bb03ec5afd6da3fb00d5d932dc58d86d356a1fb32041700a1": { "097920bd8ae55b0c4c40422f164718639bf789af17784fc7d268a39285332660": { "jp": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "8d490b9e4d6b796553eb7e2a775ca73c95a3c90800d9dcdda7e98e66c1418966" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.894Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "ff609f5fd51b2d633f938eab16cdf0fa437808a8fc06a8dd6e0d333e3c6f174f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "c6d0305f0d417d25208474e1cf5ee49cc3ae47a1ab1fec50cbd36bb817d18256" } } @@ -24444,15 +24514,15 @@ "194312689f754af1eadafa36fb316871d927e7555a7e9237115b13fdf9c16217": { "efdd19891bd36c4b5ee32e3469c4609b62a971eec1305634c7e49ed5d594e5f0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "f7ef0e1622c746dcdea97a3c6bccbc6b8bd5353064d062c845228b2913ba3b3f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "c3aa3d8b033edcdfd9a3f4c4b499ba6914a7447a3643be74544904a78aec2715" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "31551cfaa3803ce7cba54dfc8ca1a585aaa8d4c11c8d1479379c84ad946d2a28" } } @@ -24460,15 +24530,15 @@ "1d9872faa89c7d85b9aedea5b9a72b7f79022036a883f0d76368ba0aab461711": { "70eda1446c7a201ec8f6c37abb74c39a9535a96ae3e057af6538915558876b9a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.889Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "ae81fe1966f5a4c45d670c83f098b0d12155d8ada4dee6045d3791e39c77b4ba" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "aa2b29e1bb81f2d44fb14f8d3d389576f36e43e6aa03cba814f1ce8604ccc87a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "7752b12cedd7d0fcdb5f09102f50d6a655ac8a84ab0a18f0cf8817a562b3c6bc" } } @@ -24476,15 +24546,15 @@ "20fbec5fbf3b5f7168ad991d57410b2a6e132fb9884af790cd2c4a29f361d02f": { "36ab0d9536cb78b918f577f351ad01da73a11122ce416a9654035e7dd9a193bd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "9f9584caa285c993155f6f2415dc82914da8901cefa5435423a4098aeb2c0d62" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "265c6c141ae0e4292a36f48478df04ff3e66477b7799d130dd1ff61674160094" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "a07979f6a12ca64831c95dcb3a647dcea5fc18471deea037c55737477779e0ec" } } @@ -24492,15 +24562,15 @@ "286853d39a677e8828ecbe663218f27fedd5bf2bf0e04f6a0845b378f6e8eb8f": { "b384e9d652969f7c44b75186494dd5743f6f7d29a2d07cdc6516f906170b8ecf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "aecdb64ddd77fd6d4a61049bbb68f1a19acb919c9f3722023e4010a735c88a99" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "b8daa3af318a4d423de0cd05c4de55d8f78be0ae61950a973a3840b88c0027e1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "824bc9b08383112117b04fa220490cb946a4122f6caea18bd8eceae812f14e90" } } @@ -24508,15 +24578,15 @@ "31135bad715065dcea06e31337e3a5dd947f27dc411676ba95164d339409a83d": { "763ca58dfeaadfb6457a37642666f8a6557e78cf6969b41e8b1c31735f7e55f1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "6ca824ba0609e0dcc9ff9606f8b4713ca7df5fb353689077361826b05c383df1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "8a15932f2724a339e2b405de2ec37456c1bb0669a1b59a433307f6cc334c8652" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "f990906b4d4b9d9dcb5a6125d59b2450fb970fb59109da00f4d5f66ca253b2de" } } @@ -24524,15 +24594,15 @@ "3d5ae5ca94ad055105e113940b4e5f4f01c26351d5e0aa85b01fb3569699f7c7": { "db7ea4892aba1694aea64f46778e44e4d3a93c6f1d8d5290b4d72c844116181b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "3fe7353c61decc5d72c2aa911caead430389d94e172bb0df3305e2331e3d2f8e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "93049eeec93adf7a881563ce84798565ff49f3dd736cfc5ec25333d52ae0016b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "81fb031eeaf9a9fef4286a44ca4724f24dbd18d8da14672620cff794f05e0e97" } } @@ -24540,15 +24610,15 @@ "42c6ee1d7586b75ddf294b270cd91e6cbfc04990b03c458263060339691f65f0": { "e28070dd3b8f9c8e1de1f84e6213088ded4997089a0463fdced52aa0d7126bee": { "jp": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "e8586a930782ebd681965c9b32dd48dff3fc5a5e10dc146c809314c6920caaf4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "1f48741210908e6a400270f29ac658564a0ba4c062307c57f46be7c6d0d7a121" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "b7017a739356eda90fcb52ba7e0c678f76cb3a728ab3c57d91541029a94d97ef" } } @@ -24556,15 +24626,15 @@ "957a8d1238fb98455672f68cf73445d00c58150afae706f656904ea7f56bbef7": { "438d8f6bebdf4c4f748f67bb045a037db4fe70bfbe607e05bf05fab5e60702e8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "67277e181deaa5900b706ca3041f2ad0a0f71cfe200da192f3fdba6652ee21ee" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "4a079fae31e0dab4f8849ca2a5e1100fd6f7676b38aa436212749c9d11ed9f74" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "64eb0254394380f4a58ee3b855ff33e5439307efad9f1d43b2068541745eeb88" } } @@ -24572,15 +24642,15 @@ "bddea4d6e2b142218cf0aa18075b105f560306487a43f98ae93666cc5b0a2088": { "d82b30f533151c915ffd2fccf00cb93c7247a81a9af41c32c0b6ee0a941f1dc4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "924a576751b9e5582800c7297c2aa53fffdec58e85aef82bf14acf85dbb560ea" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "09ddf4bada82aed2ba05c7072af7c23fcbf26ccfb2dfb1fd394914481f82fcee" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "920be0430f96ed262ca57011eae8e8851d08d729d0590e061f3a4d7bd6293108" } } @@ -24588,15 +24658,15 @@ "bf43a73f5fb45ab9aa1813ec5b3c6567e2f43085622a3981fc47bbafb9f28c10": { "e5f80b1293069b81103b1bd7abde9c4afd1e877bec64781bf8b20adfa5b92acd": { "jp": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "127a3535d46775f90a8e6321082f47e55ca07cbbef30e0e8cf3505429a381d5d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "ee554c086a7e74a84a478f3ce03f9f94f037bbbd3129e369d3b2c2ec2764c891" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.876Z", + "updatedAt": "2025-12-05T15:21:44.642Z", "postProcessHash": "7cb809d79f82199d1692b2a2e0eb2fa7af89c84afd31039c77550645289e7efa" } } @@ -24604,15 +24674,15 @@ "c2092e34e0d63b8d13f5c437a2c60457a006bad8bb89baf8c2cc3dceafc6ec29": { "afa4682df8ae8c2d39481ae157b1d008ea8cf2cf75aa79ffcfdf3cacb4d9b0be": { "jp": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "275b700d69d510c157ec344f7dd0c5a8eb429b3697d6c0143afc3494b8b8cb65" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "4f74204a39c490f963aa7b30e7c2f49452e7cbff84f7df10953a4c66bd563d8a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "226597b35772c4b368dfa82bd2ad022c4604a23cfd7b6738bc9974b4ccbda8df" } } @@ -24620,15 +24690,15 @@ "cf7f50d7a1e362e6ebac5f8205b53d0c8eb6dd0efeecc010f23b8d8f09ea8f80": { "b7f62ebe9c2d110ae4ae2cca482b48cb6a82bf22cf7a6a11933cd85ee6309d22": { "jp": { - "updatedAt": "2025-12-04T20:16:57.881Z", + "updatedAt": "2025-12-05T15:21:44.647Z", "postProcessHash": "70b1fabdafb4eb5fb7451d9741a3dfb52edb472bd8ab728fc30d14c6ad169738" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.882Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "42723f4d21e00e9391b75c61d826345654d7a0818b5df5b8bff8677e703425d4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.883Z", + "updatedAt": "2025-12-05T15:21:44.648Z", "postProcessHash": "d1d0bd5f8628d3d39e78a84c994cb6a83b7b567c673bf11b7b3573b8f75db45f" } } @@ -24636,15 +24706,15 @@ "d1838a9b36c0c0fbc1be851ae978af65ba7e34ab07c37daf5e5c0c741129fd76": { "14af3666e0c05efc3ffcab87b38768b94b93945123edbdb09cb8537e7a7d07b0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "60032f1510e4442720d95ee40018a00d0facbb473432166b2186a286c458f671" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "c0ddd07a5f78ba3609b509cabb2eb82390a3de5aae9fe33bb3107866ebdf5e35" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "6b5d5d9cbe14e7a6dd99395088c6278ef56d0b172666d6c20208cb333072bea4" } } @@ -24652,15 +24722,15 @@ "d488e5566dd6bf95742db0d7525010310bd38f5971c4a87992a3ec793feba8bf": { "5ba7a81bc990b2456dc8374342d01a7253db45b5183ee93be9b51553586efb4f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "c1853aaa72262b93f00cb8632114451ecbc1703b22836dc8103a61ec14bd51f9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "9d870a92e362b3168b61db8499ee6e04e552c640673c868acea8cb7a04880456" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.645Z", "postProcessHash": "32bbecc91f58fc799133abab45d11f5e606520ef704741ef9f551e33ec8bc338" } } @@ -24668,15 +24738,15 @@ "dbd27b188ad3cd04691439c723e924796170d0bfdf59a9e9b53d90caca0178bd": { "80b5c91060724e755120c034531a62ece1e13c4c261ac38e2e448b4e2d0e61c2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "a52de9c3bab8a01f0373f4ea29900ab5319819de81ca22dfdb209011c259b063" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "b01b14f2a35c5e8443999fc41a31761ae741dde445f0eea2cf3d4488a50089ae" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.661Z", "postProcessHash": "c26aadf1268a9fd7c03d3d6e5b46ed9aef287f3c5f06456454305c3f8f3287d9" } } @@ -24684,15 +24754,15 @@ "df4069454374e8aa9593f9687f16b9e3b26d64e2b0082ac22a7123faaef82740": { "e7ed1c4a6adc17da8ad5806d7ebfbb340ba0839bd13951ceea09267bd14c0a6b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "f9a98f823cc1861db4565537072d19fbe660e4acbd405a51c07ab6c305bb5056" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "79838d0d41f478fb34ac2990c33f9c99657867fc9da21a868a380d1cdf056fc7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "d4dc60eea0590ff677fb60d5b3e7f94420380748928b65fc0ef06f8d9ce4d2a5" } } @@ -24700,15 +24770,15 @@ "e1f18ff34031035a08fe64318b680c893d2d37fb3ac9d30c908d0671a1180f50": { "85e7c92ceca8e1da3949120488020e40a9d10af04a565222bb41223f27a16de2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "7c3faf9cff1e32d8c7dc7e9e6812af0603e54de17752d306de9c0562a71974ea" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "8bcbf110cff7bf92af0a40850a4063b2a520bf6cd347ccd94a7bf0f96b0eb9a1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "0b934ec494a3d55ac07d9ef85c375d23b5d52fe8fd9f892af795950d8def6196" } } @@ -24716,15 +24786,15 @@ "e4102128c26bcb3f9ad172af76f46d964de749c24c132d5348f9ee3e3de5951e": { "9f2615fd10d6b26b0f5f878a17f58c2100fb6bca45e41b0b5783df222e6dc6e1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.895Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "371fdffd8c87ccbbfc6a1b72510d1b2eafaafabed522856fc7acda97cc670df8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.880Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "b6cfb2542c9cbf132a0af095ac50de15cd38b0805de7150027b8b17379f4964f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.896Z", + "updatedAt": "2025-12-05T15:21:44.660Z", "postProcessHash": "1a3dac6e022cebd3d3b608fb79d9ca5221cc155723f98d89dae758ecc5bdc31b" } } @@ -24732,15 +24802,15 @@ "e6493689e0bffb010f12f340386981233dcc9a2f28df11fd9a6e6066d3c5ce8a": { "8de8a8317a3584199eab7b620cccbff20a6c44103452bed63f66cf645cda12ea": { "jp": { - "updatedAt": "2025-12-04T20:16:57.900Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "fc07d3422e7800ece1222c7cc0f7c544a63afa05b8d21edc119264017f7793ed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "f497414b08f8dcfb983dba049c462ee47f7a19ca2745142ac3c513f464aa1acc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.664Z", "postProcessHash": "b36287be4d4c032165873fb0d7d4306ada50c307d2aea4c0e7049213b808f144" } } @@ -24748,15 +24818,15 @@ "f1b73f2ce3c7b6d1ca6f0f28439acb8cc45586fb6f3d1fda35224a8483871689": { "84181ea71df19456b8c88cf67e1c18c054443ce40152a17b3fe3d33911ecc651": { "jp": { - "updatedAt": "2025-12-04T20:16:57.899Z", + "updatedAt": "2025-12-05T15:21:44.663Z", "postProcessHash": "88c46cac66e42099b8c1956e8eb1cc132dba7c665bffda0549abeec99881b972" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.897Z", + "updatedAt": "2025-12-05T15:21:44.662Z", "postProcessHash": "cbb9f0de216406e01421ad92adfdfdabaadafcb87952f9630df1ef7a993e64b8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.880Z", + "updatedAt": "2025-12-05T15:21:44.646Z", "postProcessHash": "21d848b50e628e4697bac22570e1c2d526c30c5f85d4593d2554563e1018deff" } } @@ -24764,15 +24834,15 @@ "0060f21968d741d1a0f39b19ac2622ebb5065bdb709b03e138eef82e28e31244": { "2670f637399d04628da2e0f038d37565f781605423d4d054185eb0cd33613948": { "jp": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "cc58a73461fac3d3b1946529e11e588340bc74bc20c2b1b0f26cee8011dbd55f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "9e5ae7b89f7e3bf3472249c620ec99b8f1ab7d4026e85a55ac028dc47d4bf3f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "fe4cb09f79343c8a3290fae6eec5048c86fd83b1b8df1f951eae95e4ab92bf93" } } @@ -24780,15 +24850,15 @@ "1e131dfad9800937839c4d2f0e5ef58daa6a99e44ee4ff5ea4e66de6069c7c37": { "f76c1f685c5d14375dafd9a42aa84e6f31aeb5b84b0d8c24a2915f02c875d4ca": { "jp": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "2ba3c00ff60f4a6bedf6754f550c43608e028c0c10586d2d7daa702c7032a0a2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "00ab2ad06f32e67fa98705b28d3346e29258b16bed12e39ce43f64cd27f6f8b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "cc477d5f950cec44900e9c6f7365daf78f922d54fd4a247f3674aae6a7f2ac2b" } } @@ -24796,15 +24866,15 @@ "2149ec9c3299895bf0097e125705ba36a1e04efee5f43e59c08371caad0cfd45": { "349711e0368c3473e04141d6855c62a92897b88020143c2fd44659089f128368": { "jp": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "4fddafed2a43e5e009106c14d5a3c9ee2f3fa09349d5f1371cd88deb1ee38e2b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.949Z", + "updatedAt": "2025-12-05T15:21:44.687Z", "postProcessHash": "55deddfa92037ec8176d60c79e221c90b1433bccef974c5eecad24cfda4fba6f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.687Z", "postProcessHash": "525eeb574f90a79595344ab779b936aff120f9c4526e22cdac7d1b7d76c3351a" } } @@ -24812,15 +24882,15 @@ "2a714f7169c51c1804757b5577385bc512ba198c41b0cd228e98a66dc148abb9": { "47388640fbbd48eba401a20cf2754eced76dbed9147e6841f469e2f4acc14075": { "jp": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "2d54b861afa7a6527ae0630101281dab3239387521453c1a856ada9c1b0de61f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "e93cfc4f0e5847cd974160fe40a906ecbabf56664040e8ce00adcfda3cb10aa9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "0ef0d5ac815af5580000cee78d1888578ef5fad0b6c42a30be050d215bd55c1d" } } @@ -24828,15 +24898,15 @@ "3f24f2c556bcea3bd4a8da649d898ac0d1aa590efbf76127ecbd252c8df9b55c": { "87fc99663ddeaf7b1d38d03a534b4d0b7cbb70edc9c3b460d5735be114f9f413": { "jp": { - "updatedAt": "2025-12-04T20:16:57.889Z", + "updatedAt": "2025-12-05T15:21:44.654Z", "postProcessHash": "5f38df9dc6c08a5b03f7d8480d8aa9507ec1656722519a1a4a416f0b13fb1eeb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "bac1934bdcd500f3c4f4750359be0f2fa5d6c5bda248b021ca91948ca42cb2ad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "2eef56187ab1145d04d01ad653a58e66fc3f990beb026697d0b31996d323c429" } } @@ -24844,15 +24914,15 @@ "42ee6b1cf2d60dae66ca7799b6e3c96a470d6fdbdff801031e35cb9e1891dfdc": { "ab655d464095f3f0a801879f7e0058f71ddf7741b59f1ac855f58f9f7d807344": { "jp": { - "updatedAt": "2025-12-04T20:16:57.879Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "e95b7682df9aaf2361898e7544eb99f652587cd31c613a95c196625a217e0369" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.656Z", "postProcessHash": "07440b2517ff08bdaf5992888e7b2c278612665e3033774846e854821957ca70" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.658Z", "postProcessHash": "96ac34ba183b9dcf66bb8a9d38f272e5db232d564952c6144ab620ddc068f490" } } @@ -24860,15 +24930,15 @@ "46e9f56a57a3931558fcf69333139681d05b4c2f69040e2cfe7a939c976963f3": { "e1fe2166283accd68531dcb58d1682b96cdfd9ca452ab7df14ceb9a7623b7419": { "jp": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "8dcb3d6dff45c09da61fc2c9d3352cc069e6351448be4918765c3b56fcdec51a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.687Z", "postProcessHash": "5d7bba5dbfd8ce3f148c3d1714ec6b782b64d8ed693d6148978f82f1d5cc07bd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "c6df338bb7c56a4e1cdba0a8840146c7c1c2868873fd03dfaeefb4c482480079" } } @@ -24876,15 +24946,15 @@ "46ff568b059cec990fbf679bc4bed642abea08d09f7bafd4747a7036515b95cc": { "714391bd24db523bc05255d05254efcc0766f0f4b43e9f23aaaa7548eef953df": { "jp": { - "updatedAt": "2025-12-04T20:16:57.894Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "d04cc21b5f3ce9b2bc712a69ff4da36cd771fd553bae290e4551c3f3e85255c6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "697726d542dd0f996bc7148048de9a17ffdfbbbb88ec848cf5ecd5d3a069a624" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.891Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "4769d265d27475661961bd1d2d820227edf33e8e834526f025573f3a2cd2a3eb" } } @@ -24892,15 +24962,15 @@ "4fbdb5b1520dff0a17e0429f575aa6011097f81752684475262c7ae6aa200bed": { "1ecda987c93d49e1fca1c7c93d39044137cd955db9a36fbd10169f0b85cbdbe1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "b167678ac61abd011deb00a1d914afafbdf6be97721c55dc546818de73ce60d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "5c59e6325b701042a58da3c448112e8c37391b1518d13ce2faea666d7d8e816c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.889Z", + "updatedAt": "2025-12-05T15:21:44.654Z", "postProcessHash": "9030d1af79fa3e8b6cddf1c1549d90575e58bed469c26e6132493723576291ab" } } @@ -24908,15 +24978,15 @@ "5083281bd3b547bf9df36adfb2bfba73c9e0cc795d0090fcfa111ce30996f661": { "b09f8b5ff58806fe3abfa9da3b343ccfd7b8e980a6c46bd43dc32927ebac6ce0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "318a2c3da1e6202517fe1911bbf38d5f836a7b98df903ff8c2d1fb5df15d07d1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "6135cde851af74e11fde3e31f09460b65ff67c460906fb832944c08f84ea5ec9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "2fe3b6b01619791a4494a5e46215183c82420babcb7f543cd764104819d9d5c4" } } @@ -24924,15 +24994,15 @@ "5b010922cc17b528fce9cb609955f868e53ad71f5f8622066d24f7b3953f893a": { "83759792792ece10deacdd4a65c5c3b089a7e420df7df362574464fe94fb9408": { "jp": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "831c2eaae1a897743e2604f2c8cad8da12ce62d84883995cf2e4cfd18e04917d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "f82dab472885987c5e715de851d9fdd99515ae0f80bdc5797f50ae39f278b3d1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.923Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "6cfbb113fcf2cf8c8c37ac3da9aa0e3e865009d590f609a981870eca6f68b761" } } @@ -24940,15 +25010,15 @@ "5c4315a7496585196dea68631d46489e99dab1c8daac61b452a0c580a509d21d": { "4c3fab4892c9a5c579a3017bb4cbe36c271aad9734d4760fecd5bc4ac75d16d6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "c0ba7e1d3041218e81500928ae417059dd1bd19de1b107d68c7dce812d274014" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "a3bbb234a689fa3b6a49feeeeba45dbc965e50a060fa826402a1fdf370582ddc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "895709378dc79f407194b50b01b8b73e62e6b76077477b6b928d9f7f8b5a70d2" } } @@ -24956,15 +25026,15 @@ "857a5c3ed29e79d55112d1802865f308f93fcc1035cbad65451f1392ced56b55": { "daf1366f4d86b97aac48da95d72257524192b5104b5dcfd34230427de3762a51": { "jp": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "d1962e1f05c5e03ed344ba7b8defdd542a50e830d79bcf1c9a94f81290236cac" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "5d65a0e7ccec40cbe5f7b3bf7e32eee17bfd42b1e89b0c2db32e5b50af3b4260" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "e041e7108a02093d8853a3df07ca246fb30a1c0f740ec1436b80839b5325a937" } } @@ -24972,15 +25042,15 @@ "8677ca6f754c9510b46dc0569151e8695270e1ddc3a7791067d3b1b9e5ed0ce4": { "daef99c2eee6c12072def84a2de12f54a7398d20df2b000023b0e91f2100e934": { "ru": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "7fe865cc69774f8ae7a7a53055b00aa3687e67ef4a216c6ca2fc6e4c2cd70263" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "8f87709ca0c8a1d2392c9d90dab8f78a3d64de2b95d17628ff3db743a2c2672e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.889Z", + "updatedAt": "2025-12-05T15:21:44.654Z", "postProcessHash": "8f574dfc770fa58dbb940b5eeb6ac46c54a589ed516829fcded1807976a56cf1" } } @@ -24988,15 +25058,15 @@ "9056916609446b5b12baca0332da8e5e8ad117eb3017488e4c5391bf09af1c65": { "5c1ac19a6dd8304196f8b5c3c4538997259c7d50017642a246b97a60197a70c3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "1397b41e76bbac1baf75e0a6f14ec9372aab5fc0c3017f91c9bfc6d765416b99" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "3b988885b8d47a0c13dfaa8add35756be5d035ad11827a7571e12f8681faf3ab" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.893Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "3cb0ea5af5990414d97e94b3ebce6a84a2c7aa8b8b3dfaaa8062196185296960" } } @@ -25004,15 +25074,15 @@ "93878162d293d38a3f960218a0ee8b1904f199878f15fb0a11f80cc5c6b78ae4": { "38c7da17603cc8d822478a774e4a0851139aaaf988b5e6ac6aebd7c75546c08b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "28164fb4c37ecfee48a4599a1fd657ef756b7efae7055b8a5e44f04a3ab7f013" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.877Z", + "updatedAt": "2025-12-05T15:21:44.643Z", "postProcessHash": "15079f8bef55569c92fd762cb6a026949284380fc2a904cbe1d84c0322f23ccf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.892Z", + "updatedAt": "2025-12-05T15:21:44.657Z", "postProcessHash": "787bb5df3b7509f70fb007848c446813f000e03ba5d5bce7dc2020c556a15c7e" } } @@ -25020,31 +25090,31 @@ "9dd17b4dded970a85df00496de13a74873211a7c3eabb2bfaf1670710eaff639": { "3c77cf690b82a05ac07374c03da339b16bb18f1f69cfa9c51ba296c56cc2f48f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.907Z", - "postProcessHash": "f2a9861fc5f546100618f83cbb9716457f3dfc63d89443ed4931c236f59fa1f3" + "updatedAt": "2025-12-05T15:21:44.670Z", + "postProcessHash": "fa3c34d95ed4ece5a2a578ac6256bd6ff6b9e2e061d675f21e55f57b32f06ef2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.912Z", - "postProcessHash": "da97c5ce7dc18f47f175e57bfebad570a657dc63a6685acab22274efe91a4fcf" + "updatedAt": "2025-12-05T15:21:44.675Z", + "postProcessHash": "6d31bb2f2e57cbd2383bdbe68b1eb0d8fc10f35584821ac7b6963ce35df0659e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.890Z", - "postProcessHash": "97f4e2c19882c1e5b24107758f3ae2de3889d0d2af9bfd26ef61bb6ce60c260e" + "updatedAt": "2025-12-05T15:21:44.666Z", + "postProcessHash": "c987b2644cf944e62f0243325edd1a81bc9cf299c78e49706e320e7e92afa4e1" } } }, "c9c4898b83cd686a39de5d1507a5f2308fdf824b67d0f19322fe25b8230ae68e": { "81003853e9247deae604d51fc5acc18e581a4e0c4f0d79dae6b9207ceefe7142": { "jp": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "3bd212560e6e0111ee3986061feb8d5e2ffacc5975ae5fc59e057e010a0d53e9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "a130806480e20ef0b8d79a7bf6e69ab26a728d6a0427d3e67e3eb5eb9ebad8a5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "136f401f5e86f082c08a9ae4ac315c5cab2cd7da274dc2e4de417914454e2d7e" } } @@ -25052,15 +25122,15 @@ "dc429afc1c845ad436d31b61fb908e473d3a84f5a8919f5d78c6cc647e6e44b7": { "f94a5951c5c6355f3214aef3392f0e31f245f1c2a14bce98a45d190388085326": { "jp": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "c77fa378ca7ab8068d30ec532c0a704d56f40cd1c9d80b09965cc53367b08b79" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.889Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "cceee4e1e3d053eb476e7990d4edd206d3b74fa75c9a91d86c4ee7aeb95703f7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "ad35b896d8d07108ed611671322c55cfe7763a148af0d77233b190cad1a1b8f3" } } @@ -25068,15 +25138,15 @@ "e8b753d96adf0305cf90b9e579ac4cf927e2e7f187ad62582b9b9a11bab53b3c": { "d6af628ddd5106feb87f50888fafc6fb21ea322d5d658688b385daaa6e2bbc05": { "jp": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.655Z", "postProcessHash": "c37464751b49d7dc9ab7ca689436e0472d8d8ad446cd32d188958d21ce31b22a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.878Z", + "updatedAt": "2025-12-05T15:21:44.644Z", "postProcessHash": "149f5b23be317c723e8646ed6485f31297947ae8406e20b5840b1f2d5c6cf9fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.894Z", + "updatedAt": "2025-12-05T15:21:44.659Z", "postProcessHash": "e94f0449814e7dd193ddcd53767d403e4d464e8858652ef3782248f1bb62a1b2" } } @@ -25084,15 +25154,15 @@ "eaa9435dae8d90063d0ef13fb0d0245e00f3c444e99fd608251e1fbdb283ad76": { "5671b5319cbc284bc1f4dff7b698d72202dcbb66b153aa004c508aa68e5dff04": { "jp": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "91e03d6468dfd6b782e5cb7fdea5502516b884bd2cb871ce9d55c5d15d9b8739" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "8ce55bcf546f97c13886c399501449a1d7c44d330730828a9f01d5ea5f8db94f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "c1d11c3e92774ee4598b5c0873de893ab41cf59d5061aa5f67fa70a7582070d1" } } @@ -25100,15 +25170,15 @@ "0045741a471f4dac9a3db4c43669d28583bac040167b1d39d7e25215fcda5ccc": { "dab964b634db47350d340e0931ec7aea4b46dc1764c4d7c24c6cf164792b3f29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "253f313883ca88f552e24b940fa89166c4ce2007d3cf15dab12db8c1556274dc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "8d8501fdeba4d1e6cc2c22505c479b6d7d42cc63f4301dfc89a84e9c48370529" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "fa9967a51b217d869bbd33441a42b260115d2763afd057569187493e8a2b0f0c" } } @@ -25116,15 +25186,15 @@ "189388fe355c19cd463ff375adbd81bb8d731d323bbf7cf2cdbbc3058b2bd826": { "5ed3b23bcc3bc844b8a42267d9198f127c4ab515a87acd7da5858ed9dd6fe278": { "jp": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "abcaacdfd0918028eedc8e1675d31cac3658dc986e4b5e4dcd5c74d599c9bcbc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.907Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "f8b5160672802d2f898d0ea72ec77dc6eb1b534956acd58382a310cae83be527" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "b29d6266450e4123bdac5f2761d96c0846b7730e4eeb280cfe677727763f1f79" } } @@ -25132,15 +25202,15 @@ "23c47eb4902870785fffe1e4baa6e41d6084e1f924e6ae197c27e7b51f843750": { "052d52be77d868d3d26620fa34155f9eb31b5090d664d799d412457b60c3f050": { "jp": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "9880b3f692fd9bbe392c3f804f94a86933eb950b2692bafea1e96fe7a278d32d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "77b8f90180fb62f9ba63d8b4d1050f5f08d8340da7d576126491fbf965598692" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "81315cee4f7953ca914170308756a150d85ac0ebd52e53bbb60a2935fd81e765" } } @@ -25148,15 +25218,15 @@ "242658032c19f8878ea27fde8bfaf1c2d950073ef6e50d896370f00b777e974b": { "9dced94c1aa74f4a1989dad0844123eff9d336fc99be750b0bd645446ef2190c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "6eebe742e3d95fb68ddf4fec51c9c4f9700b384e92223d41a924d209a3fcdce1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "c4473b4318c9a8dd30ab59bfd381ebcc8c7d6beed1f6ddb44706c3228affc399" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "33200ec6518a946f76b3a8582a331bfb9d2aea06c499662885ee0af3024a28bd" } } @@ -25164,15 +25234,15 @@ "302b0ecec3c1a1792dd0c359652c37057d430e76b3e96aa7c8afde8a7172dc09": { "3c7b42d588a09f60f2e03cc7401555f547ab89b4421ae45faee2a50a6b0b0401": { "zh": { - "updatedAt": "2025-12-04T20:16:57.923Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "3200075edb9f6a9d14181dc62e71b0a8be5c14788665f050bc5ee9df4fc8ad41" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "541d08d59589d8d674fef4c1e5c4154b4976c9b6c2be4deb9a2e5420ca511c8f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "dad616fc7c44a99b06f7e0bedfec6e3508fbfd4b33368eb725ee361666d3d1d5" } } @@ -25180,15 +25250,15 @@ "52bc7e8ec1f25b547908a73830b6d7664f88e3007b6ea89191268490da4b6c29": { "e4376d6532a2d24e4f86f129429881de208f3ea0ab1bcb5f5e31cb841a06df0e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "4f0a70789c21def14e1ae925d1e18c00626f199c780dcfe11e004d12c510c63b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "a58320623ed8adf648396b6ef87306705b6141740aca0375394328f7bcb2dd38" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "676d55342c6fa37b2a30e79dda42e222e4b142eaad18a5a5e1a784c44fb275e5" } } @@ -25196,15 +25266,15 @@ "55d7240c880120e92dc6163e0ae953ba2e5f00fe1352161637e7b7057888a3b6": { "d8020d4cb0f5381e78c97181bfa0e7bd2ff6585f606db5db616fcb0afaff7589": { "jp": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "1289a1a1da9a5bdb46791e920d5705fce21840b5916197eb420c6423a27d3f05" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "d7e1635d4d41141e40e1704d9d77e9e77484a1131ff5897e6a0edd9ca9cf6654" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "e7ac6012c55217cc76b01be4dbd89db584781c3e3b1edf90071a39c1200fcb7f" } } @@ -25212,15 +25282,15 @@ "59b41159dfba51bfc26167978b1127378d106b8d443bfaa28a298294319587b0": { "c8e3b18d83b85dea1ed5df57b3bcb5d76702cc3807eb0d8ccc3a2a6bcd46acfc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "e67ac546168913b1f53633f0395feb870b498e561ae836f1782b2758d28f21e5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "a16be56f9cbc0307968b323146d9d96c6f6bf9480c3e2f71fca5ee833f8323c8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "2726fe821b9e6770de3498abec06903396e63ad35b4e572f286b41f6211998df" } } @@ -25228,15 +25298,15 @@ "5a412fdae8fb53a15204e66324bb2d0da4e638bc75ac56e67179382d206d7374": { "02f14c2f65f281503e41f11f04ee9f6cd6ab49c4babb7d84453226444e626ce3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "b36939c1c095d5f9db64b50ee763a7e4c5e090f58a76db743a1b22c348fb1275" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "cba825dea2cadbcee154a06d6d027a523a0cca4caf6fc4a502a1075721d314f8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "bb13d47507cae46fff9db7678162017e6f1095616553ab5645c1a63f2ca64679" } } @@ -25244,15 +25314,15 @@ "65b791b7c4a125ca183cc9f15c013f5460cca336367cbe0b2dfc01f119a90d1c": { "1a1f03cbe833217e0e2c1ae7fd100d78ebbcc8c0657e571385e72c88889a8da5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "b84abfe9abbe8379aab76e95cc36c62a9c92e8284eaf593bdc29ca0697fa78b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "41250871f25032f498b6cde08b68f462bcee6b11b45bc76649351c94e0a2fdff" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "4ce8e506cf60860f0c376cf54ace478930d2d12a3915f95121d25fb54257f9a4" } } @@ -25260,15 +25330,15 @@ "6fbd798e9fc4be572840b3ebe3124e7c1982606aa96d7b42be53bd6c1ee9676b": { "123889af8c3d0c2ab264480c584493f0491363fd067fa94edea8459b1555318f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "c41d686d84d7e82af819622013a54cf91a55c7bc98438b76110339d07a6bebb1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "8afbd968baa8f2b7588186c2600cc9497a4b0d5068fd897eaf20b2be9a3bdf85" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "823d672c357b5cefb3c1252c7e4b008c0fe130f7390195543c0a137d6e18e9ef" } } @@ -25276,15 +25346,15 @@ "a44ac107c2f03ea1cfc68d15bea4e84005ab3111943ebc6245e22ba05bffe8e9": { "30eb0a47b3a70c9804063775a6d033975254804002f913220b776bebe7566da8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "db80899e8677e8b7cd296655e7c30064b55314ee85abeeaaa79fd777acae0452" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "ae58b24cefff500895152ef4f760ea0cbe44eeb2b1df87d4c1d7dbb43fde474c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "afd24e56e05d3e278520ff13cfd8b0cfa7b33c7ded8e421370b913bec8ae29a2" } } @@ -25292,15 +25362,15 @@ "b8b5935e6157dbf3000442e0ae9da10c119186446dab9b0b6ba59ecd8e081b43": { "3aec0cecfebdb1bcc89b6b5e6d7edb63838928162cbed60f94e123b0001dc3e2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "42d28a1f6d1dcb9a8c6ef8238d2200eae5c104f4c668b38911a9356b0caabf0c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.949Z", + "updatedAt": "2025-12-05T15:21:44.688Z", "postProcessHash": "ca35e36525bdf9432ed7ad3e00a3749842f286722a5f4aefdcc1ff6dc3d767ec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.687Z", "postProcessHash": "4e5838c149a6cbd29ccd166406eff21175b2472c6cb214758adc0d56721e84a2" } } @@ -25308,15 +25378,15 @@ "c2b6b4b09ba9a1b69a2623b9e76c0169f2800d8215a3a24ec9aaddb566e07410": { "a509a683d08d5f5fa0027e4566599afd99d8661f1932316929ed7b7f5f1434fc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "ceaeff49976cc1124bc18a08d46c82592131f1978205b3ca62c388c091dc0969" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "53fb502465af9ed2a9c260b2330a378a244c3bc009b8572aa786c75d52d38f3b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "d763f50709395f8b2b57edd5b1c5a47ec79a137ad61f77a12fbfc948a2dd58b9" } } @@ -25324,15 +25394,15 @@ "c78d724ce19757f519a89ae81413bdcf8c707c62709608c1fcd90f8f2ad2737c": { "ed98e153a80901d835f37a02ef176c4789e69c4833533e0096f7181d92ddda23": { "jp": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "122cc6a693135cb41fcd89d1c2d06ce9bbf0b721029eda2c882305e38dc538bf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "7b85e9aa329fdfb40d37b0b12549cfe0a311c394b31604a61461e2a8ba64e7fa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "d5761d18e32c91d07dad12bc89721a6775683856f6980c2aa3dff4ef56d59b4d" } } @@ -25340,15 +25410,15 @@ "ca734035b219f4714c9e6c2cdca7a1904792cff5ed4cbd21e39a0c5b2a486565": { "73b78bfc9381e1ef4959ec2997ac7ae0499ef6be647ea0c493a48b57261785b7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.912Z", + "updatedAt": "2025-12-05T15:21:44.675Z", "postProcessHash": "40d76e963faee1adeb008767b59a9d2e513836dfddf09194a06c1f4d5dfa132e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.672Z", "postProcessHash": "c4d8be8468be156e31fa69788bbd0dce8511421457715964470ca2928dde8743" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "6774fb80354fae4bf2121a6b6b494506baef2aec3545a22f3aa2d2753151c78e" } } @@ -25356,15 +25426,15 @@ "d7e629dfded6aa789e7b13dbe976a72e204135dfeb9119292f63ce16cd39473c": { "995d171ddfcf778e23a9288af9f2f3b5372f8ce14a4ce8feb377503b79703cf2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "5388d433ae54148ab732d974e4489ded32c5171e1cd93f1a4a64b5b54c3fe81f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "a5b3a2dce520aca20e1875fbba94b102a043df22fb5869065b599775e7726fed" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.908Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "40b6400294e641705938f93ba2ed244ae67a9ef8aec20fbc8a8452488e648cf3" } } @@ -25372,15 +25442,15 @@ "da9d4e8b0bdf930b4854e634849ad3b851aaff67143620d95a9ae1e5cb3a7b9a": { "bbba21070424707e5a6f8591bd4bfaa20069a36dd6b196fdc7050d7a1ab8486f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "b8ea3057cca6467dc70da699f47a64da6f588b0cd1e93483e59ada9bb04d4585" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "7101e6984112ca0b13886f5d094bbfcabbb14580b48f86822d0aeeb80c162871" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "25e9303898d8a23c6127a29445d30e93172781e3ab44b2e93866a0e62044f372" } } @@ -25388,15 +25458,15 @@ "e774d95a2c81c53102c61249027c7f00d0f3179aabfad8f71a51ddceb6505a11": { "e0d72b4c4c836c1bd36aac8338da95ae7abce2d57528db5e7d5f1ed3d95b6f29": { "jp": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "05f57619159b0a17948f253932ba901dd9aad60c705281b8aa296b7485f1924a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "e302a20a39469e11b1b33152054f8f29c77bb2a9e919462b88c504b6de6d2059" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "96985dbf88cebc1a9b410c2c988c0c29fe3e63e6aea7f2552c0daefb0da2c5ab" } } @@ -25404,15 +25474,15 @@ "eaef488a67183c3737450e1c070243954054aca5bcd96f3b4148d73f6a7399fa": { "893797365249d93ec499eaffe4b1ed5f848af3451b59dc62b1c2c0828602a016": { "jp": { - "updatedAt": "2025-12-04T20:16:57.911Z", + "updatedAt": "2025-12-05T15:21:44.674Z", "postProcessHash": "3e0d8e0be4eeafbd21a89e483fde570aa88f054119baf5de519ee7e7e2e50485" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "7818a3911cced07ab48a7e6020f9a34e4f6d064e8db01a5a047dea8c99ba25fb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.909Z", + "updatedAt": "2025-12-05T15:21:44.671Z", "postProcessHash": "adac287473e4ffd886c1ca7b8a214915a86ff1b46cdd1821d3b15e3041b6a336" } } @@ -25420,15 +25490,15 @@ "ec49a0cee949d263027a7b97accd10ea82850898c06f8611df19e985e58a554b": { "33e16cb7d3af2bae2f39127844a9524539563891c9e3db379b8d508c23f9b634": { "jp": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "9869876106f62f5ea990c02d07ea0f0bfdde310c78048cbcd1a8ec99c32507ef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "a1da742b0336c273e603c22d853e3e9de062e9b048a538c754f17ccdae53049c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "850da214bc48cd4c9cf7cf3471df3e752a7da8d1c4351b2d1bebf528deb41211" } } @@ -25436,15 +25506,15 @@ "ffb2e794247dc89ebed0e232b0ca7c0962e63c5651c684b4d99f74958eba032f": { "3e28ee25ce5b288bcfcc6aa247be220c6686ae678dc50aa107da3672ec9cea32": { "jp": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "38fd00417f3b4b4a349b8d59dcf93e8061db27cc7371b66907189fac34cd738f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.910Z", + "updatedAt": "2025-12-05T15:21:44.673Z", "postProcessHash": "7834fa00bbeced0af131a1d44efb3b8131fabc90b63799a70bd607f037a7bcea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.890Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "9ab170e6fda55aa5525990fd88fe7386ec0622b81b45716a9e383850162f0b17" } } @@ -25452,15 +25522,15 @@ "10bf6a851bc722dc218ed84feeaf049930bd2d7b38be10d0175a4b45da4c9e3c": { "72a26e0ef3fe81a02e1eaba48c8ec2828431893b8e50ba8b3dd2152f58c16698": { "jp": { - "updatedAt": "2025-12-04T20:16:57.946Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "b67e314dc7e5e94b4d1a600dc8b4a9502fe2d8711b56b4c19ead717be608449f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.923Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "af1d2a37f9ef1545f6e4ee2f4a151a8775b096d267b2ed38f02d71fa44a6318e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "9a81c2fac1ec6fc5698268ebea202b6e2c0092ad5cfe99f1b3227c5b3edce00e" } } @@ -25468,15 +25538,15 @@ "2ba4aedf1481fd714296b22477ae890f08dba4b0496e12c98e62fe2811b6431f": { "e6c19e03fd150258214beab57caf618b7ccc0baf4e6d85d9c67796cb3ea9fd44": { "jp": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "1ce4a83ce9ceb2a62e1ffba36f2c00b642b8d7cbe45101644c23b95d02afd54c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "07d15be89228b5dff4901d85f02fd77421cb13748c4b497d145b82f4a5a4226f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "70fe15c022d7e5edb65062a2899f6e4c03b5dfe26c3641b393125ee635cdb642" } } @@ -25484,15 +25554,15 @@ "2cbf8ac76941d9ddeefe32e9f176ff03397d09339a8d40eb2cfc57efa00fc1d7": { "2d3d7395ba3898aa08ea4bb981e7bffd7607a25fc091046d7a6a359bc9c589ba": { "jp": { - "updatedAt": "2025-12-04T20:16:57.960Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "3722fc52a2ae4065ab22cdf8feb8c2d9dbd29f3263e4ab7531341f6f586de342" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "e1d512395e207ef8e04a25c768f9d254549c871061b24c62523f08e1d5dfccb7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "d4a76132e7d460a1dee73c242bfac29f39584eb7df213b52db437026a75a4dfc" } } @@ -25500,15 +25570,15 @@ "2cf9993a309ce837e0def1fde3b9ec81b984bdc367d668342cfcfe3647301013": { "f44de4bedc5c963bcfdfb8f911d7420b96d114fbac92a40412a2594ce4bc5180": { "jp": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "5d0d9a8ac6c7c013d7084e4cbab8cb5624510b60a81c7b238c504b8dc6fe6015" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.687Z", "postProcessHash": "c9b4db3b46adb10ab5ac2688ad55da1888f573542d307ed49b8bbe4e4f01b229" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "cfb6fd115e4d763cede023db093d28cfb4d6dad4b58d0075c652e1b3658c38c6" } } @@ -25516,15 +25586,15 @@ "3682e2d45de97f6b173cd748b8b4d7583b7f1420f40557e91bf935dd09b009da": { "28eeefee37cae95ff6cae2142c3e8807b596db44875ceafb1b3e3c2b4f5b62be": { "jp": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "f91370ed8fcfbdf27ee7f841f2d9704351608b0c8f82b06d7dc71737e370bd32" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "7ccd7ce55f7941d66d4163ee04c4e9938b50de16f7f34dd37db447f5c3df847a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.923Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "9e122dc904efd71dae61d6cdd24dd4398507b418ee601c036e30890e176b2d94" } } @@ -25532,15 +25602,15 @@ "49403ebf7c98c9603a561ef10166db22cbd8708cc533f76c0feedc9aabdcf4ff": { "512f607384640e8f1cbaf19b2b517930edc16a84b9a618f37f91116a4393bef7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "b2b5fcbcf9928708a663e75756e70d039277e0d03eaadcd92ee60b153378e490" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "d6dc5a24d45660c2d627c1b5b43f27ff6566c5189ab4dc0d0988131fbb9ebc62" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "b5a7e8b0cfa00645f52db0133d948bee3543bbc31836f7a25478a8cb2342ebf7" } } @@ -25548,15 +25618,15 @@ "4c4a469c4038db0bd30d547c74475eb77e6b3c4d4eb98a9b5406301541d45581": { "32eae8f070a25e27b3cb7b763fb46241c3e69525a2c4d2ba527136f413a778a2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "96030444fecde77bd7218a86998d4a642f8789b2925bf20d6a1efabc0c68708d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "f4a7ea046be1de3a34a74a37adf809c84f6fd18d9576a58fb54faae029d7d1a6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "2a36463d38bf179226371c425d35e9fec64b6d93e2202df601740f92a3127e39" } } @@ -25564,15 +25634,15 @@ "5e529ee6f1c6b44d742cab16c2436b0f98d61cee3d67b6c243eb91fc94e5747a": { "b5eaa7df44d170d16be268ccac271b07809b8f738fe7f6bc1658432e3f8af2ad": { "ru": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "9d2735ef3aa5f78e478e6e1b2252148764c4ca0fa837897822ca1f3197aedce5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.959Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "6e7a908c68f330d41a79fbb4ed880c439c07b2287b5c5f83ba2fa6e6c7bd1bf4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "e605296d5b2c979092b737b1f2e0b9684d0c124d7638b7f9695eb5d6fef843d8" } } @@ -25580,15 +25650,15 @@ "69dc87a0a0efcdc9ce162824232e0caf45af3973a79857510730075407dab81b": { "f55102d7e2ca214c7f9f0866a2bb860df9999592d3a40c6d9b97a2ca5a47cf98": { "jp": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "1a8674c0b859bcdb8548c8c274bc46a5a6c60cb9b8b6b9c254cc046682562acc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "9aa5997be323d13dc0887d6f082a614c89012ca409f397cb953d684f4a34191a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "a287e030a8cbce7ad6ff7e3fbaf3e7579887c298206009586d27c5d8af22cab4" } } @@ -25596,15 +25666,15 @@ "7cf646c7ec8330a693b4b1f30fc05c3ef68f7af5200b4c3d5be55f5e6c627d12": { "b392f20796bafccc3efe1e80f4e6ac3a7db083acc7209c5e540ddcfe853a6127": { "jp": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "f39796a6598b6f76fe678e5f12878633bf0cc9cfdb53855a2403d1a6572df26b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "058dbeb00bd553770b04419f99cf9e2457607c542b8eb58944a6f4bc815bdf54" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "31639d0beae3efee63d1b035c0fba8de85e9868e1ede30e4358b30028dc63116" } } @@ -25612,15 +25682,15 @@ "8b692c2ad787a446b25292433cebf4bef12b92c8e1c334682420d14be45948e3": { "59296f60723eaca7cd5a35c2a97534cb75c9c73d8715867db0a0e547de415157": { "jp": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "ab2d8d07a8913d481abd103c31f20bdcec790686852d9d5fd0e67910fd32b254" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.678Z", "postProcessHash": "8da1c3b0bbc80029c72cc233faaedb1439be2b901a8f8f1b77afcf46156d899c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "9a8c9bc26d690d410b8352ebe40e265486227efdfb6ba98072cf61e32bc75410" } } @@ -25628,15 +25698,15 @@ "92ec8f6b08ecfb56cf3d8225b5aff3170cfbbd0aa5775ef3532b3a6f5090f16a": { "24d1012de894e965ee2332b480daaca127319bc8cedb17d9ff8c5d9d4b57de00": { "jp": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "76b5f8ddf66a2beebe30528b0b76328db876f097d5f9382321f43c63fcc961ec" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.905Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "f56a701c0cdfbb3edbde27ee75a7d0438e56d0603fee3913c14da1206c216ffa" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.669Z", "postProcessHash": "7deb477967eb0070ab3d0cb2c8a22fe920b33fc9e92d243b2ac90e4f8a3ac949" } } @@ -25644,15 +25714,15 @@ "9f34b6230075d04ee88d715b8efa4b4287ac5ef974d0bc4c4940ad96532f8fcc": { "8527ee18d786491e874ba6c6733def703ace3ed743538e924d577e8b8cf2ded0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.906Z", + "updatedAt": "2025-12-05T15:21:44.670Z", "postProcessHash": "8e76294d340e2e1113f36a5c7474f76dfd527743b04f16a88f26e64da1165c93" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "af2e42c5876527570a46792475848b388708a8a1dfec4a5941a38c11f5bdaaca" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "ebd31ead7b9a49265e285238a8b50b9291211a6620a8a4a78cdfc039ed16b170" } } @@ -25660,15 +25730,15 @@ "9f6597744edd6252f669f69c58d2636f8aa9a6b09dbc8b995f9479c4221e22e7": { "308c3f9e814a2ad27043440f48438bae8864dd4493497ab0a517cc656aa82356": { "jp": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "79e79764cedd543692cad3a720ec3ae11a5a4d4a193bb12128246a0250c94e4b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.948Z", + "updatedAt": "2025-12-05T15:21:44.687Z", "postProcessHash": "18f633dcc4cbfbec91d39b5fb6b3f659d9207bf4f83f102ca3616bce6b286696" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.920Z", + "updatedAt": "2025-12-05T15:21:44.682Z", "postProcessHash": "348300fe99ff5be116735639e58599ec245dc94cefa23fe8df975ab99a602e02" } } @@ -25676,15 +25746,15 @@ "ac52e240a096d2b15ce8bfe0c48a2efac10eda017b425c2339c5001cfcb72318": { "56334f7f1fa03f9b3a42096ca5749c43c65a9573954fa56e40e339606f36c1c8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.903Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "418d14d38959f7759012e6fd062d9e66f0f214908dabab01f8e22fd165beee7c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "dbeb9c2aca63434eb35a375ce6afbe0842bdbbe6a533e58afd1f5dd8fdcd37fb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "9cba57a60cf5785a27c59ac9074b567325b4da0f255b6a608ff98c63f1d7b0b7" } } @@ -25692,15 +25762,15 @@ "ac7c945a9a70e136f7bf663953e5789b51065cda16bb4013fffa3f1f5633a518": { "79c8e3c46a6ede7e07368f66bfdc60525ced4d42f656a8f57a26ee701ec28b66": { "jp": { - "updatedAt": "2025-12-04T20:16:57.949Z", + "updatedAt": "2025-12-05T15:21:44.688Z", "postProcessHash": "04ce7f74fbc0737625dfa9081b573386074d1a5cac11405c3166588dfdc9c81f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.949Z", + "updatedAt": "2025-12-05T15:21:44.688Z", "postProcessHash": "68a4f0ba5f2a3ee201b00107731df1e409af127ba43c98bca0228db3fca6b4f4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.949Z", + "updatedAt": "2025-12-05T15:21:44.688Z", "postProcessHash": "ff6b70345579dadc751de1d5b982a40e0616e20f8527dfa9f67ad69ed491c6b1" } } @@ -25708,15 +25778,15 @@ "c36157e661a0ed678a48034a7b5806bdd2feedb466d46088c035d8bde2fd79e9": { "4b9ecaa4510afe985e77b7c0bf367ca64dcfa7463bb738f45d328855c7efc166": { "jp": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "d0ab89f2f4c56f0c6cf6cd474c45e49404faab89fbf8aade7a9b53139c58c126" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.902Z", + "updatedAt": "2025-12-05T15:21:44.666Z", "postProcessHash": "76ce18c038da85f76b2ad0f27a922216ff10b9b18c02cc6e9f0f790a1c01c6d8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "31fa69e28ffecc9ffd9212c8179dbbee1531b0ae80ba82cb7fb3b68c4ba6028e" } } @@ -25724,15 +25794,15 @@ "c3d15c85d4784a496cd8acb62a731024d5bb9915807be3522653ec7b1167d18a": { "608f13e19408e1adf4e6688ec8886b26bf677b304247727063c881c2d33f3968": { "jp": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "e44023d532fccbfe25b2b31afe55177162fc0bd62bf8c3bba74c89bab0f2f21c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "1994ac962db52d4a53fd6a4db78f3d94879865d969b8ef5f11a674dbb8d7121a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.922Z", + "updatedAt": "2025-12-05T15:21:44.684Z", "postProcessHash": "1fba3693f3c26be6a16e04a3b8dd859aa2c9ad51349f495a2a53b28e145b67af" } } @@ -25740,15 +25810,15 @@ "cd116d178423eaa55d4970d5d78d398dc1e5099ee13c6221d781e9ee5978b899": { "ec13b6563341c4b7d66f4d675ef48acbc1e40f169c0016ceecaeff7982621eca": { "jp": { - "updatedAt": "2025-12-04T20:16:57.946Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "3293c946ec5a2c45c682363f00fb87e8582c457a8ace8f3e43f3ddfe891ef7b2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.919Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "cbc3a1dfd0baa8b0956d745fcac7def0f1f0b84f7f03aab566294d84edb9af58" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "3089b3e08e0044685873547cc3997a5ad76c9541e763ea491f9cce3e4a1511a2" } } @@ -25756,15 +25826,15 @@ "d0d17f6390066626b3cd9b1b5cf3bfbe37d88dad9a6142c1db99eeec90102fa3": { "f10f076ae99bcca2c49fc911b738e76676d074aa2444ae614ac526d5065f04f7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "f7a7fc4330db3938f5cb4da71fc385869ee6a5d262f62b00fc7a1a932a052e9e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.917Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "a5f56cdb4a1a56bc0af8c98f3465f2cb1a4c1d45e2cae841badbe1a65ebefe72" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.667Z", "postProcessHash": "2c5980a59b0f382b73396932387960579fec4445297f5de20d50f0966395a984" } } @@ -25772,15 +25842,15 @@ "f12a63823b74d3b2b90d31871ee06bcf19ba66effba17bcc94c800ce464bb39c": { "5f9e4fad6300cfb262a29845e8e0aaa91d2938f09671d81c5ae2b2c69f9a6483": { "jp": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "f9810040c6cb233ee3417d84469a8b876ce9f61aa5b04aef17a277fc70242342" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "5400f9cb834c2589848836aa91217e2813727288d9e7cf2403616d01b415fce0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.904Z", + "updatedAt": "2025-12-05T15:21:44.668Z", "postProcessHash": "dcda78eba0a38c6b3370add3b416c02d1231d70b045b16bd47d8fd2d3b01450d" } } @@ -25788,15 +25858,15 @@ "15e69bdeb4774e041a333e57689381522781cd859797d0c321068053bd1ac55d": { "ecfdec0409be257ba876146227e2e778ae5f272c3aa56e2fbc1cacb35dd43ca1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.977Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "a03bbca893e0cd2cfc23e79b0acc9ac5a546f066e051ed11f90bd798649de7f2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.976Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "42e17945fd539f512397c478e7ae671764a4d278dad79a4f9259c6f403f5998e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.977Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "17f1486fbf6e93eb0b2487158866cb2b81ecfea2aa032e1434b4397c3dfc0cad" } } @@ -25804,15 +25874,15 @@ "2441b704f1648bc3443c9b054ec8854f3764cbbd77801b8747d10f0c1380e055": { "8946d488f9c46e6c14fad461ca002a664b5a2d6561da01977d53a7c95d31e4bc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.977Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "8f62b78e498ed7fe41789cfee52083b63c341e0933f095db32f61576cc4b4f91" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.980Z", + "updatedAt": "2025-12-05T15:21:44.712Z", "postProcessHash": "9119a7762b5f4a7e03e896bca1b587151f478a4ae522671beaf2a24f4369ee0a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.979Z", + "updatedAt": "2025-12-05T15:21:44.712Z", "postProcessHash": "9bc173d87a8bc3e7b4901bb1609b4997e23f7014d4ee69bf3e734929093b0cb6" } } @@ -25820,15 +25890,15 @@ "253c517a16655bd1af2910bca26a946ec5b5257507a84e5c1083bc68edcbaaae": { "383175d865a3e8e5eeeec2ad520a6706a7fe906490a2365a6c124bbbd35fbaea": { "jp": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "43aea793b5cf8221dcd2f4a8c4cd2d0e5c3e911a6561fb339de954a4b6cddf43" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "e281bec70544a0f39febe4e9f758385e1f2ad8fb9992882e8efa6ee9b07014d2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "3842d35f7adccd887bcb67fb8f4f4b19752611a82aefe1f6fa0ba0352eb41ead" } } @@ -25836,15 +25906,15 @@ "2c3512a703d975c2b75e7502a141cd8a3e8b086796e9dd5b92d66f1f2a58358c": { "f1c375550607f160ff41977c4e39aad3343f7094f427e196bc55d8e72c22aed3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "d7ad8208511c7aea613680bf796cf42fda0a0b0ed15632825e46aa442b442fe8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.974Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "bf073d8e07ad0da3827549db6b8db6e750a01a12b27ff409b1231c5cad41f944" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.976Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "08cd4394425921666998d9d59f134304cbb5aa8acfa8a4d42a9c7bba4a2a7444" } } @@ -25852,15 +25922,15 @@ "371cb4852709d9ca0ffc244925c1336472d7b3607e49eb600409ac2634d29c9d": { "2c08ba9df01012e99f6db6d87ed3274138d3991bb7ef1df26cf943bbe938c83c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "096f16e681336a2ea06af0c13920feaa0259ad024599aced6a5ad48156e973e3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "8188d4725789c52fd30bb0931460a7c4c15860edab7d7a34df46e771292dd2bd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "89442a5a1d2c716829a8486224becc217c1e2c21a3f1ab5cb0c6c8f679524152" } } @@ -25868,15 +25938,15 @@ "38065e7c3b022c9edd666529a176fb393cfb28490dd15161ec6ac71c2d9529db": { "35e6467692a1dada24e738d0c85e6530cad77f3c956b13d30d9734eec88985a5": { "jp": { - "updatedAt": "2025-12-04T20:16:57.956Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "e5b0a9566318bde340263da9186cb0126efed874aca6d986b671f8e0803ff73f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "b6c61470e8bced13b70862917e96d49e87acc10cf73b346070221ab105b3a065" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.956Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "78036361117d1443c66d679ddfc8746b0c3ccf4bb1dac9fb3a19efcd95dcc27a" } } @@ -25884,15 +25954,15 @@ "3c1dbc013406b1c31a215c47a6b9edb7f3dcaf68974dc2c38989fd26dd392af4": { "54d4adf41787f75b127c52923ea0abbe3e269714267d20e9e3f8f38afabbaf56": { "jp": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.676Z", "postProcessHash": "7d15bf1371fa44c6d79c4afc732bf47c58f481c2ab0b4c11e31d24aaddacd9ef" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "be55a85cbbd1c824bcc6c722b07a5053912eed0618093602fe6f47b9dcb919b4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "e32cd339fffd144ed0bbfea1e68ec0baa7a383d6fe11c423fd31a25cf6d2492b" } } @@ -25900,15 +25970,15 @@ "3d0840c01249868fda2bd1e95b3f042cdf2c618bd34004df654106ee3d7fe77b": { "abd6f88511214360a8b3d4a7acb1e68208916aae6edb5e22025418320d437381": { "jp": { - "updatedAt": "2025-12-04T20:16:57.980Z", + "updatedAt": "2025-12-05T15:21:44.712Z", "postProcessHash": "85bc529fbc04502daf2a78c397ab1fd3ab661a54f9121319afe9fe1b5adb1417" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.980Z", + "updatedAt": "2025-12-05T15:21:44.712Z", "postProcessHash": "3b999a83f48325ad7464dfba413f252ab0356c40cb865a2eba33964e50b7609d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.978Z", + "updatedAt": "2025-12-05T15:21:44.711Z", "postProcessHash": "538e6c09feb94701871a4f30b31c56e2d61c90ea913acde234ca18c891a078fb" } } @@ -25916,15 +25986,15 @@ "3eb17266fde17cf983c1426830939c4712a727fd7eeca3116f2fe348d7489f01": { "d7d5ceeef5f34571ef1e4827cc0966f80aabd85dc08e22be3a3583aa8cbe8a2f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.974Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "c35dbc5e683229e1a9c257c36cecb673cb533f68a7a0bf5d94377b3ab87e0cf6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.975Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "ab21c5d536783771bab280754e2184fa157b7fa5eba452ca8db4c5b9a8ce0e88" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.975Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "44cde42de95cbe4da1101d5b2d3663c95fa8bea423b98284749132e44b3ba039" } } @@ -25932,15 +26002,15 @@ "6bf7c7b51f6adc00dec7d08e30d4d16d28e682b5d83a2a9112cfe37d49b6b1ad": { "3faae72ad8b1f70ba0b49e66e434c0ca46525d70f145c05758337bee07817ae9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.958Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "e1182a5db4208222fe15925dda4a654183f3a52c0d2c9f53478d3ab0f9d894f8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "0775977bbbd380da3ed7f284d2f48f946c39ff6118b563d7e0860388a6235875" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "25181e4fa5c3cb9319646e1a063aaf2e20853d2600aeb85383b453803e378180" } } @@ -25948,15 +26018,15 @@ "84bcc067be4c969ca78c33fa50f4efff4f2a2daacca3a415c5c86d0fceedd5ac": { "2eb8e19e71aa05266f701be373a387f43f2c6751db4a43fdf67169c2efcd862a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.685Z", "postProcessHash": "559fff0530c2e420ae7899c767f6d3383c92b16f2c0375a8058d75486b346dc2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.681Z", "postProcessHash": "fa78487273e51d713ad71633e3db7ec910f393faa4a4e8aee1c099c4b6dc64c9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.918Z", + "updatedAt": "2025-12-05T15:21:44.680Z", "postProcessHash": "d33e83d1d0fe44bb86db139731cd7e30935e1dc292ce15ca994e16b9ea90317a" } } @@ -25964,15 +26034,15 @@ "85d48d85dd722310026bcee5e22617e344f2aacd9f8e9ec67d816fdb2703a37e": { "92cdab1f6b712fe93f35828375006e26f4c9671ddb601b08780bfafa9a16e196": { "jp": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "3d6b48ada141a87f3111b73b43f409814b3e103054086bdc8bb2bec23df17659" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.916Z", + "updatedAt": "2025-12-05T15:21:44.679Z", "postProcessHash": "3c9a0cdb268aa82b52d9a5edcd31748db9e78ac0dc3edd557728333cb1c00302" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "ca83d40fa47d4c27ad9fe958e697eab41d6ad1e0ef625bc90cd5d204952f4e44" } } @@ -25980,15 +26050,15 @@ "8d8defb12045ea6e4b617d20e5212582181c730d58236e675147eba18be53d95": { "c53f9e7ae5db8452601cd25c2b2d9ef7eb21620b4522dce992bc50fa2ca137a0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "aac93fff6c3df97402d7fde9fad33b164adc39afd83d65053e66501dc50ac036" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.960Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "0980609b75e4f836dc1632d414e35f3f1d4c2aee9aa8e96a36d3563408aaacec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.956Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "91d1383fcca67bf170f975e1e97172a5d2ab495825aa4542e42848a44bc36ea8" } } @@ -25996,15 +26066,15 @@ "a5236951d982490ee0af310dad8356d6d6153f403e1ee58f4ce2f1c0eda6a81a": { "c1b636cd594663b0ead8b055a758d770ff99552ec72b5c80bc4f4e7f722236c1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "de4e9a14e4e1f6616fd2700b7ce589c60739b3e6c62e6cf766e6892d9b2450d7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "a93f02c1e27240b2f04444f5fab55783d4b23eb9f3a7d40b96cdcf220cbe253f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.958Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "78fb27dfd605d27bba57fa35520f2bdca35214a271d7a4db04bb0a7908c3a6e6" } } @@ -26012,15 +26082,15 @@ "d4c8c149a2085ffd9c567e330ccc163bc309990242e7b28d9b404761f935ba4e": { "37cd2110dc9673e6ecc3c129fd27e5e27a8e403857f4a2d17738870cab29a747": { "jp": { - "updatedAt": "2025-12-04T20:16:57.959Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "9a9dd94f0e695a6a9c72468d5ce2dfe05dcedf4211088f624ebf68a553222c55" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "ba33f9e3bf0ac8f7ee449b01aa97d88d62447cd36bb6ff214b5f3503f9cf9211" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "f05544f1c281ba16e0c2d373c20c34513c6ece3aef4b0c66a5bd0d8ba260bb2d" } } @@ -26028,15 +26098,15 @@ "d9be63b990bb973f2145b0fede5008f532e3efe16cc74b19670e7c30fb33cce3": { "6520ef784c8cb65030b31629babb751b59c90c4785704dd342ccc7196be05ee1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.958Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "405e479ae2e28c7fa56238cdce80f48aade70aa71b6a76fecd7ff044bdbf341d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "36479702c28d41b6ca10ad00a0d49ee353d8ec9b6dd1f0efd5f735439be5963d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.960Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "72da0ca21be7cce62cba92c6d1afe11f692f011f1c9f4c7b05d6ff522caa0c99" } } @@ -26044,15 +26114,15 @@ "eb49ba497d8db0f37c1298e8ea9f8be1b244b82d159157e8ede112df8f3c919d": { "4b16adf3d0e0aeab42ce3ab01c36acb9cff5de72d7b2802148d15353f359ea9b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.959Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "857024e574341293293eb04f891a61dce21681dce4e8f64a1e3937d01a3af76c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.958Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "58e0f030bc8929f072f5deff5978b284cac3c8dd23bf3ea2d1399657f865040c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.958Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "57848e10599e7ccff1322b40db22559bedde4331aae5227f963fa50f293e44f3" } } @@ -26060,15 +26130,15 @@ "ed2113745ac93661c6152589c4303163561a52fecfcb50853a532d0c4d3c4c8c": { "91a36f6307074f27f0253a1a697372b4dbbadd48aaa0cb2381adb6ffad7ec3ee": { "jp": { - "updatedAt": "2025-12-04T20:16:57.959Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "5417ee55dd54a625f24fad6b3ed7da3088d2c769d157fb09f00061bc0872dc17" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.960Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "f6091e046a80bdf89d0a5bbbc23edccea6c1844140a7321f12c618e313cfc766" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.959Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "0ca2897bf935e1d9db3fdad309eb70073c61f66d2c4da2cf2fdc507c372ad2a2" } } @@ -26076,15 +26146,15 @@ "f7ba33421a28aa3de7f23177b5e40153a4f0e0efc37a2106a3e8b5708fe45005": { "4211afcb557ca12ed79b2828ba3000b6bfc93501ef7266a7012e6f73ca63a27b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "0dec70d780b4d80f5c8f8a862938ee148db5dbdf69c68b4cc46609acf1b87699" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.961Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "208734603e447e0f5f44669c876232ea99cd78245be78a57be60add29deb58c1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "d8e26471246a2324809be8ac33f56368a38793af40b731d579bc40b45145b082" } } @@ -26092,15 +26162,15 @@ "fae26c9194eff01a95214ca36a03f887f3e266e90a64a4b894ad55f02c179bb2": { "7386d025ae2748ca0b87ecef00be245390faaaae8fa265f80c33e3480d854a49": { "jp": { - "updatedAt": "2025-12-04T20:16:57.901Z", + "updatedAt": "2025-12-05T15:21:44.665Z", "postProcessHash": "ea4507c46597c071a2f386822000ec4b51c0c0e5864086bb1649634b53db2d3f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.921Z", + "updatedAt": "2025-12-05T15:21:44.683Z", "postProcessHash": "2a40b160a1320b043fdd890a5d4dd33215628bcf9bceaea64d5b2d744064e9a9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.947Z", + "updatedAt": "2025-12-05T15:21:44.686Z", "postProcessHash": "40c483395c3e7c8ad3a0a20970f5208d0775180d2a017c93615d7785c231aca3" } } @@ -26119,15 +26189,15 @@ }, "ef588f2b6385c55726c920e57be588ac227d274976872debd444eae9c0c673b4": { "ru": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "139f1f8ebaa1b4f043784be40ddf9daef8f3a3f45d35dd21bbd7f2e7f17ce395" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "eef307f96f009426144636796ea74e077a85374e001f8e1d96d2bea963cdd1cf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "0a81e0d72c5b01b4efd4b1253cd8bf7144f47e3921da750fff0b7df58216bbf2" } } @@ -26135,15 +26205,15 @@ "04c615906de14bff138af4cdd85c3c07b4fc5433296761dca010e8ef60f78e93": { "91810a26e7bbbe9ffcd2f092006cc98930eec1fb41bd4802d4297bf1f45413c7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "2a1090308e19f6be11ce6b386ee6ee0823b5f5f9f9b7f535961c5382cb3bee64" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.977Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "1134a8c5dc114979dbbaea6953657bff6e21c94ef9ccef6e998dda29d88894f8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.970Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "2b29f96541147fa2dfff41017c4d38d354afa44612ddc93ceb6e2708ace74199" } } @@ -26151,15 +26221,15 @@ "1580309aeb8bf89a02431ce4e3958695fd0114d89488a627aab1a37097044adc": { "a04bc210be5bcbbe776786b33eff75770784c182f110822abfb00ecf17ff032d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.979Z", + "updatedAt": "2025-12-05T15:21:44.712Z", "postProcessHash": "3752c7865eb0b53f55216ed4cb69725772774425e14db91467d5ed492d28dcd6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "b6c4aa915e125d3abeade6a8b010ea7bb778a9c888dd1e33719cc5af04f43261" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.976Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "7ebfaf32045ba4aa2a7ee03731f510b1c3d201fc6ae2e8fad44b1d6fe6309894" } } @@ -26167,15 +26237,15 @@ "176150c0e3d077975a3bf364d1abf67e535d6c7aead2f176b61c34aca79abd59": { "844838ff96f065aabb06386cc366cf66f183135f983db2d969bbf61b47c89398": { "jp": { - "updatedAt": "2025-12-04T20:16:57.968Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "dfcc5498de6dfeaa3915e95305314aa56a44319eea291164fafe7245448c0483" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "7f720cc301dc8ad23304ebb8a6ed16df32277fbb39a229a9a794a314e86397f8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.950Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "a45b55eaeb7a3f687962780cde27f9a04639513386923b7e5473528fbc03a14c" } } @@ -26183,15 +26253,15 @@ "1a55a8d8cd9d21c74eaa692dca8aac6491f16ba3aee28f43616128e2d9ef200b": { "da55650acb4be1e891fe2ae5f1756740a01821cd992f3a8ca4695951fa27e52c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "effc9bead930e7bb1eca17e01c80d50d3453906cfd5e3be62a1b08c579a95917" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "54f13f1f3e6e9c0a48f2f0ecf2662c95fb214782fa0239f41fb2952c33561624" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "28f1708a9b997a6253c73986620664075db4700929e26a80df9ecb8615007307" } } @@ -26199,15 +26269,15 @@ "1e61b3b890446ac615cfca4d43e26692a7bc7544426233b862918b5d3fb722da": { "68327a573af2128ef9f8b75c6d3764adaef0d6d6a2518cca36e25acebd3d72ff": { "jp": { - "updatedAt": "2025-12-04T20:16:57.956Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "d8ccedaaa4b0014d9ac7b08a3c8ebab3a9c06ed4eedabeed8ee0f8b04671f6ed" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.956Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "dd72d0a86dcbbf6717bfbaf93203244bfe1ca0db2d99c44988868099ae307ed8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "25005b34e41bc623a47e2de56ba027387731ece9827e2061dc9a478b4bc9c6a0" } } @@ -26215,15 +26285,15 @@ "2365f342aa73537207eea12c5ea5e59b84982495f018fb65d762d8ced77d7432": { "303a2bb1adcbfc7e719c1aac71a6de6454f8a1ba771cf607483f97b277db1bd4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "e9a3954d8156e504747867473f52e9ca2dc923c827454def4fb1fa39a3e5b168" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.950Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "66ca2d64baada5fb5cafa50a8a82d0b85a451c114aff8e0e505706aaa69ac23e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "e81685ad9f2005b647782af40003aeabd47d1b81ea164c60347218ebe4b10658" } } @@ -26231,15 +26301,15 @@ "361b5b1d32de2ebb3e52e8460adeb4b22ec4bc8ca04ceb0e717fedc703a31195": { "10b62158d3216eb8065dd2ff7515e8754275c4c7f5c6d4eed8d2ede3b37286ee": { "zh": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "d810624cf7423b29ff4d81c67231b4fa0491a15ad5ca328d0c417dc74ad36607" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.974Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "a3242824c76148e6858ef4eb30666ebafe25d4f252726ae0c6175a4d8f8e29c6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.974Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "2d7216a06ef21322ac07fa7399875ee367fc3eec6ca069398ad32ff06f787c39" } } @@ -26247,15 +26317,15 @@ "3e3f9cdd02598c16b281b93fb32c30b1be85298c6b705aa31bfbce0e5880e103": { "e9242354e112109aceb1f980cb5bd9997a81807b4b2b9ad51d2e395d6925d743": { "jp": { - "updatedAt": "2025-12-04T20:16:57.950Z", + "updatedAt": "2025-12-05T15:21:44.688Z", "postProcessHash": "a1e6c645176e39da205781de5e5b82e52700f81cc95963109308d15b29ecfee7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "169481fca9e352f90c0c1212e90690e9a4b701b8b33a9f6bee037d757e46fac6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "f19650aebbae837c804d88a04fb43ab808e27170f9d660ecd2ba408ab2db1170" } } @@ -26263,15 +26333,15 @@ "47db68ab348b969e40c4783275dbc11e1b7c3f0d1e0f7993066d41cd80abc360": { "eb30b9830f751c6d73c63c4e71376e8e862a1b79d67ead319e3a93512cfb332c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.978Z", + "updatedAt": "2025-12-05T15:21:44.711Z", "postProcessHash": "e275018c47ac0dbbe36610c0f9f68bc798e0b654f6e613a735ffb5527cd42ed7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.976Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "cef7ad5cd5e09daa97d9a8194a604a8b58b98ba83a2b298c85b1c80cecadf3a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.976Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "38cbc736578d66c521d0186ed302280ddb55455f3e2a5a86d89a122a0a499bd3" } } @@ -26279,15 +26349,15 @@ "49e360371f0bc0d697298f4470438952e521fabefd1b9e98218955be3cdbbcc0": { "974e376db0d1f6bc3a3c2778b18c785b8cbb420855a07c1b3d0cfb100fdf6562": { "jp": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "7a8fca3087fb12294ffae6bd5f755bbfd4859fba68d88f67ae8475906a11a345" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.970Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "fdeb776de39e39edd8ee304e483c358eb4ab48a7fb4f81d2adecf6593f83a217" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "84fceb0d3971f255f49edfdba3398df1ccc4bf29049df35cd7945e3a030caf5f" } } @@ -26295,15 +26365,15 @@ "58cd3f4391882ce670046b8d82826c3c127fcee3b6aa2afc15ff717cd3d10d71": { "5015c123581af2b4d332b12ea65e8e6ccfdf0a8a5c76d9fab3a9a30aedfe8767": { "jp": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "591179ed9f26d8c1fa32c8e31ece93ab9055d0fea537721122ea2707a1463022" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.974Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "97c8f03440aae761b3ba00d1ecd4cbfc5cb5f9b7593c69252fa595dbee01ae11" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "932abb07d594494ecacd915de1d9c4fb79871976556b0029797bfece1ac15346" } } @@ -26311,15 +26381,15 @@ "5d6ff265e282770018f2a3801b1d623cdca059cd587edf9408ad75b7f0427f29": { "7bf23f00d17d99986e4f0927c2dad27c8d9b95293b0f84a3bd9420e9a2cd90c4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "d9ce87c4939decd0e700415f899f83f8901a3bcbe315ce65b6119467479cd426" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.957Z", + "updatedAt": "2025-12-05T15:21:44.695Z", "postProcessHash": "75eb8d64c4561bb70642e8e7f3b0a17a29702d7ed5d760aa489aafe4a75ffaf8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "5d510d09e1c66161714c4824958e919cdd8ce3cb73c16132b745a3c275a0099a" } } @@ -26327,15 +26397,15 @@ "92e00a40688842f014f868586a36e069a52b6ebff0afa9668aa0116030f149f7": { "507162d0c5f858cea0fe1b5f4cfb599166143072817567489682c950f1313b5a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "f1c5f7d435ff322b01d3cdd0aa445f8471fcb516056f9258e49a3cc06aeffb7d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "dccb52874d3bd89a3767117080eb13a26a60e692dcee7c62f36a8d975885c4bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "b4aef90cb7abcfaf79d16b01ce5094b5ab27549ef2cfd0b27011e1e803d1a0ca" } } @@ -26343,15 +26413,15 @@ "94305f7921348204002c5fceee250d8a329b22e97297f5de432297ca6b6ce190": { "68e6800c1c85abed9956b13cc6c1349b8178fe6cfb23ebcc8aa5475efd99f8e7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.950Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "71c24855c314f95e77bd52d5b5fa4f3681c547c5c9746488462131c986893156" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.978Z", + "updatedAt": "2025-12-05T15:21:44.711Z", "postProcessHash": "222389a28cdb74644d904b69f237c945cb5b0ec2a13468ef137ea85b70db676c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "642ae1e256456eacb5a1f4f5f5c968be83c8279208fafdb34bae7b84d3bfaf9d" } } @@ -26359,15 +26429,15 @@ "978146b52bf1385e45bd326ef044217c2dcdc8bb47040c12f8ac16274fa8addc": { "229b20a3b9f2e01d63cbf0aa22d459b44b4535cff9593d53b6edbfdd28847fdf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "b9ca39067947cef786dbd137409b88594b9d2f32977f4f40ffa8b59aa773fb6c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "bc00c70892679b9adc8a4223dcab7537a42c1bcde9b98bbad7e5de779a3b1d93" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "7ac8c3f71c8511ad69ef17a67ed998ee9d4fab1d190947413c40a9fe7bf707b2" } } @@ -26375,15 +26445,15 @@ "b65057e512e1d5ba2b482da61eb41e96a0451b3633379d8bfcd74a74bc5c5255": { "d590e32dca83cbf697fbc724c2b52de9f53b427e55f5e82add0e7c98c670b72f": { "jp": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "cd3957b6edc9174fa530f6540701f7de4ea76598d72f34931de299793e0e5363" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "e1f8b2419bcad2b4edb12090ff5a2b9290cb16d1a3fc70fc060aa10c4d1fcdb2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.962Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "259d58e26c6bc32d85257157d3f93bfff6a2467960b0f4d8998049f7bd8d0ac8" } } @@ -26391,15 +26461,15 @@ "bbc79010b259fcfbd187a6891a0f4fb7b780904c181f0266b6753f4d179bbd0b": { "9124cca07daf9271adc7984d01efad4c1a6d47441c45c6be540d3204e5502916": { "jp": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "87704c635095c368e5f89e5ed060240042cc2c41f3b91d595e2f10de09f53111" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.915Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "234b7328cc115ab404dd2808d118530081f93e0319a6d00f93a54177e379a11a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.676Z", "postProcessHash": "0ec7cdac4c09347144587a641e279b7facccbc0f3654b68637b003460c370984" } } @@ -26407,15 +26477,15 @@ "c04de4891f93a0ba91486fc9aaf76205c21818b034acf58a753695af7332b3ac": { "783554b75229a238156945270a3356288601a5016510ae7113ea4d4f746a89d9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.979Z", + "updatedAt": "2025-12-05T15:21:44.711Z", "postProcessHash": "32043e15d00a4300bb37977e199d7ca3d5f637da13d6de9d95bc4bec3579e347" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.950Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "eccc6675486c6da863129b95b0828a39beb61bce814751b1d449c8f7acfb7f9b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.979Z", + "updatedAt": "2025-12-05T15:21:44.711Z", "postProcessHash": "0928567d5c1e5356bd7b0d0e3068bb8cc53b42f12202862bec62273b165e9c58" } } @@ -26423,15 +26493,15 @@ "c5ee15352746ad76714767dc88162427e77db4c02b35d0258b67bb1a35882ab6": { "1e07570b89f9d1753c7c6fa5c9dc7f96cd00626361968edca1ee15a898637fe7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.960Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "9ce72dba4c3c592586466b44a6d9343f95bdaa488e54aa97200ba4311566f9da" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "dad2b1d8dc4e8992de3666ad6d01d181bed3cea27bc574277da6af804ed9939f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.699Z", "postProcessHash": "8e91c3a574b898640eb2380fb15073ef9148917d621622dddc82c38ae60e13d9" } } @@ -26439,15 +26509,15 @@ "c9f381cce8333661e63bd1e01d8c4f1774748ca4686351ffff148b88e9e703cb": { "e4a9139614a7f11d3b10e77e31631df6b358e364a358b51b7e9d35e161a62d0c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "705053e27bd76029ee3cda704e216687410dd156f266f6392976505d2c80e060" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "00480164cf4bd4f91ff5f2ac9ee361f4a789e31c01e5b035358be468525c509a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "87449791129ef10364b3c39e8b80392b1834f45c3c2cf456f739f33de0fbc29c" } } @@ -26455,15 +26525,15 @@ "decba6568d82bbae43bf10ae33288e0bb54460fab2d76fb910a5037c036d8b31": { "b3961ee327c6fafcf4999b1abd14b74444d3905528c75bc8bb8c2bfbefbe9765": { "jp": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "8ca57091aeb944193c91aec088d9b72009caafa29b96d4ea385a375d7f96cd2f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "9239d03284dfc27647b5182fc083c43ec90423b9e967e9542c487d96a8d7b2d1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "0ee8e82715a4b02b696033e738e4577e6d4fa96011ebd7d3717e528031a29a40" } } @@ -26471,15 +26541,15 @@ "f8499afd2bca127eb328fcbbb1d86926a4b6ed99899c57bf912940e11e81fa53": { "57d37a6031f92bd82e315b49237fe134b84352ea376fc2fb6ae7f50d8a63cb03": { "jp": { - "updatedAt": "2025-12-04T20:16:57.959Z", + "updatedAt": "2025-12-05T15:21:44.697Z", "postProcessHash": "6493b503e9c7d7db7ae546ad8b9518ab546c59c1fbccec074965e8e2ee3c17b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.960Z", + "updatedAt": "2025-12-05T15:21:44.698Z", "postProcessHash": "061a487b8433820dc5e9e0fb286d96cf7c73c5af12c6f8017455431a0ef8d63a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.958Z", + "updatedAt": "2025-12-05T15:21:44.696Z", "postProcessHash": "81357eb326959a9abe7459c72e3455dd2aea4cd21fe7de5fc8ec2cc7829c0c36" } } @@ -26487,15 +26557,15 @@ "00801f2886d2097d3f3fd23c2495271df83abfb95d59a9c9a2b4a905b8ec2d19": { "20cf324bd963db14b9a1a4346dec4811329f6ebe733b3eeeaba7616399e4d20d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.993Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "2062274e89a9bf7c25c6d3f2d0efc1541cdce2c3fe2c4ba3254b87e378aef52f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.993Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "ad7a25248430104921d117f8785046fc45f16f621ff898fd4917759fe5c1d99a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.996Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "e6569a6cf785adba8128ebaf2dd593dc6c57bb37a3ecb7866615729c91ecf8e9" } } @@ -26503,15 +26573,15 @@ "0d7f085589a701521498ae4f2032eff79402e3efaae1bf069e42f610cc1714dc": { "65b6c024a83d6653e55cb1503b9816b66a3ad761b629019961fe3f8f698afb45": { "jp": { - "updatedAt": "2025-12-04T20:16:57.968Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "cdc7cd4b6ec4dbc9ee6185c15fcded5ef93e26b7103eb330a278bbcbab74b21a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.989Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "f43070632472ba49b38dc89f947add96ca933bdaede54ad1d7f258e06a82115f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.991Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "212fb0c4f57097656f6b239e1b0f6afe7e70e3fa56f20d6e48f158f2657779ed" } } @@ -26519,15 +26589,15 @@ "1b24b02c3b8b44ef65014e1185ac74c302c13f1cd510990f907cbfb6af75565c": { "153f09d0dc6e1710e949f8df69bcf6dddffcd2f29e7b48e271192abe56431443": { "ru": { - "updatedAt": "2025-12-04T20:16:57.990Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "bbb65618b78009fc62eec1238d14cc907afa2e8ba85e015b7690a17e2d53f03f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.969Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "75543c2f6ca499eaa7b068a9ac524ba93e4b9aa63c1af6080ded4d7b17c289bf" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.990Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "548724a7936970faf6f84f22e6e4fd12f4d08690871ddffd5cb2076225b4f092" } } @@ -26535,15 +26605,15 @@ "1d3ae6305b61a5daa4272a2fdf5bc89befcde6b3c3cd8ac506e835ebca98d2ce": { "7cfed78448288b1e3ce81098eb348b43d832571045d5f68b5c05727141c3c15b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.999Z", + "updatedAt": "2025-12-05T15:21:44.735Z", "postProcessHash": "5fa6c43c5d42bdc0ce133a3f1dcf51886e56607350fab6c9d44a5068b3b49f9f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.996Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "24b3e741d8a1460b7c9688333f70c9a680c19309fc0008feb501a472c33edc6e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.997Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "238f6416bbf77ebaef9e5d212c05ce1d0ed8653bac812449cc66d36e53b9c4fa" } } @@ -26551,15 +26621,15 @@ "221df8cc4bd4c59f72e569ef5c6a2072eeed57f90181a227e34cf111231768d7": { "c38114543f910f77d0865008910f7e9c6395ef18ca1ffab216e250ed274cc4f4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.993Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "4f5ade0138784f61cd6e20797ab15e605c1cf3d35f8f34e96de3ea8ac8d05e97" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.991Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "9761a64d4b7aa1e83ac758c888cef83c787ab44964412f14a8f7768e4297b2ba" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.969Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "c7dfd7c5b1e3fc9cbf147edd08072de3e9dd7680bcb70efd1e0374e7ad0bdb10" } } @@ -26567,15 +26637,15 @@ "2dbf7fe23f006182359a9db8a0997fc25605a170bbf502414f10a4d0445f3741": { "a3d059702798e7975e6104e13702831f09dab10cf354c44b13f40788c8b697a6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.991Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "21e4b25901ffd5be77b4ab569d2602b4ddbbef84b0f88352518ae9baf5ae398b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.994Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "823900b1283282d4b5275f6f9b9c553f331ca881d4a04df6dbda5dc41f6ceb98" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.995Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "48dc628dc2677794e6a054092ba912cae0653f3546c52bc480b64b7443ee9f8d" } } @@ -26583,15 +26653,15 @@ "36a66d817a53f3419052a70bb1815a864c606b97c1626029b4822b58ad82c762": { "3d820438e1d508017cfc5d486b3974a03a6f0475286a479dfda2cf575d825e99": { "jp": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "5f0e4aba98abc592b9726e3eabbb9b43f69a85a45f87ce5b53389a47e822e9a3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "04cfd59b8aa4ea2b351947cc409e0ed5592714b93559f88727e31871f274eff4" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "084cad5340868e39d05fab1ce8d073367dc8092b3785ce2f084ab01176e23876" } } @@ -26599,15 +26669,15 @@ "424e2c03bd385b0d797e5742bd8f37c67a6d1d9878707ee374ab10fc13b79f63": { "a39308aed08887cbbf1b7ddcfcc47a901be42991586b7b0c15366672b1a8486a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.998Z", + "updatedAt": "2025-12-05T15:21:44.734Z", "postProcessHash": "fb6141666abe56b207fa9666b4c5df770e8d2bfda88ff708e31950018842786d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.999Z", + "updatedAt": "2025-12-05T15:21:44.735Z", "postProcessHash": "1518fa434b60154809d2fc7c076fd287a61b7be5b2962ed4a9647e9954d1fc46" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.980Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "3c23bfe9e39f1bfc385d6586cfd5a345a7e90968bd612191bd30800d2f2f88af" } } @@ -26615,15 +26685,15 @@ "43e8a84fbf33b51194a80d037248d79de4e1436f50520586eff76e3d3f2af304": { "f19d15b264b03da92de17398ccc6c09d43af2b4d24b0b7c5e1a05393cd4b3fa6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.995Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "16a5d961a77bfaf265b5e159fdf353c7f22f4392f89aeba8f9d278264a803589" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.996Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "a17ba46561227fea7d2efe5f77cb19bb73a46c146c8ce441258265b7f8e46425" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.994Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "739f2c7a5aa3bb011da67b9ed9f60d5c3b46a688627fe5c5bb944d23d8bf7c46" } } @@ -26631,15 +26701,15 @@ "519d5b1a64a00744511c1f3e47df4f483237ba323bcad90f4c2eca4ce9a37794": { "f9c93f24237acc26028d821a685b28dcc71dc3b5ef28ed3f611cd0074fd7d695": { "jp": { - "updatedAt": "2025-12-04T20:16:57.981Z", + "updatedAt": "2025-12-05T15:21:44.713Z", "postProcessHash": "b8a73a50f0be9b04552097c496626087e4371b6f0b1f16681756b5b1440ff4c8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "88d237d75338bca796af5bc25eae4aaeb01972e128716c84937e8c0f74229fa6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "8ef9d2f776046709e0ad74fea167eb08e9d1125efb24300f1121477fa7b01111" } } @@ -26647,15 +26717,15 @@ "595165a4c673965a825c2516944ed6da341d1802ba4af0d1f8e1442aba248fa8": { "8396ae84019ca44433161f57c91a29f40404e3a589100e8cca8e8000206607f9": { "jp": { - "updatedAt": "2025-12-04T20:16:57.970Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "03a3154ba4f99d31775c62de341551a0904a15612a5e106ecd610731c6c89b68" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.963Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "a7301fc43a16530f9c0772c315c12c3631b968b71e3ca09e3fb2bd633d9a43a3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "9b8d80857be18ce53140734003199f2c285f1ee4de1f4cbb828a0cefce47b3a0" } } @@ -26663,15 +26733,15 @@ "7e455500c000c9cf2e608bee5ea8ceda40748f754e86eb2dfa6fb808fff46087": { "bad6198b79924e96476294bbd990cd527edc29dacccf3bc3408a2a70258e5f0b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.975Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "7536119e8bb960242d159afb7e219109e33183f9b24941c9db2f6f6d1769adda" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.975Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "7788b3d1d48180baf7b8b1a6b2fde46f49dbf5a562ea3fd92cae27f28f88678b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.974Z", + "updatedAt": "2025-12-05T15:21:44.708Z", "postProcessHash": "25a825feaec0d17c57564ff96ca6b2cd00227601feb528b6fbb90954f8af8adf" } } @@ -26679,15 +26749,15 @@ "976d169b47215323ef4cab38c850345f280e34b651c35ee7a506d07e901ec587": { "91662735bc3f121c2f531adc960066dfb766691e7210f186029e52bc32f80b4a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.970Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "25bf6c4210e412fe0dc57e35bd4d77f2104703c3fc971bb9e0027b363e6ec3a1" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "15731bf08b4141dc85d2d9382827760110448ff2a5a2b6e3337ebf6d606e86b5" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "1a313c2f807ceb551d36fb9f6f8a2da70ef9522d668db3f6808a80eb8e3c4dee" } } @@ -26695,15 +26765,15 @@ "a2d877584716bec8ddf5f64a0ba5fd7a0a6b67f9077bed82dda87ee72bfffb8c": { "8d6d45dafb5a931c179b3f202896d1e34592ec42eecee9e2f9c96e83bc4cc999": { "jp": { - "updatedAt": "2025-12-04T20:16:57.950Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "ef2cf38acfb532a1def6af379c4c7f59b8e3e90f17aa0fafc450b94604a26b82" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.956Z", + "updatedAt": "2025-12-05T15:21:44.694Z", "postProcessHash": "cbfcaeac9e3f730a1cebb16b7b423995a7925f5f9536da2002b314d7f1ac2bc8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.955Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "472e3fdec26971246627471c587a7ddfe9acfa5ff246a718d1ae1528dd3b01f1" } } @@ -26711,15 +26781,15 @@ "a5c7b243af8ea45f4cac1779bcbf974f63ad2778759dea05635eca542de84b9b": { "d7c29ef5219d22555b84953c119240e3967ba43e9caba2c80886d14046eb7fc2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "9e8b61081dfefe4cf26f5af9fe7ccea595ca71de37b9f717eb56a4467986fdb9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "baa386238c29cedac978290e6bf3e1b4fb39b7120ae275651fa513cba1782775" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "67385a38c74c6206e6d6497e2ce040344e9f75d1af9135a37a172bf28cc0e9a6" } } @@ -26727,15 +26797,15 @@ "d20916d14ade0ee04f39675be5d395d4a057b6b2238ab20a85bf425d1e48c431": { "1ba41582c1e8ebc8a0609ed6a4c503280d425de63584ec900b123ce79c518b7b": { "jp": { - "updatedAt": "2025-12-04T20:16:57.953Z", + "updatedAt": "2025-12-05T15:21:44.692Z", "postProcessHash": "b37bbf8f70d4ff381bc44de27f923cda8afd8932af6ab0ccdf56f247e157dbc3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.676Z", "postProcessHash": "ef09090d0b1da406f30f2d2ef88e5500baa3004a3fd50e8c52cdca750ea19497" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.914Z", + "updatedAt": "2025-12-05T15:21:44.677Z", "postProcessHash": "47578b12eab28e0038d122bb7cc16afb06ce4397f5509efb013a7ac9e72ca880" } } @@ -26743,15 +26813,15 @@ "e4ba3f71170ffd976d7ad1047d155c73155719b1d252f0fe0608a02ffa3d64ca": { "a6ee74f4a5fa3c471abd0d72cdd9151b4614ba229d109564ac3a2e5c5454bd4e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "8fdeac88a355bc5e9c999c4759031a94714f86fb830be308b4a7df95b8d9281b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.964Z", + "updatedAt": "2025-12-05T15:21:44.700Z", "postProcessHash": "0878fa62cad5719c555c5ad67562e732776ba2e3f9623709b80a866a17f43cad" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.975Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "1513b2feeb6b3569185823c04eb51218b668e9bd67efee9e911db33dbb61fd87" } } @@ -26759,15 +26829,15 @@ "e7b858b48d1c9c70d32c523d9dc6357d0917ee69b16fa5c6a88fd2a2cfac0098": { "092cf9506a86a0643021a3bc1abcb0426387f5124df02aa60181da49a76114c0": { "jp": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "057de8c114d5e2565d5aac3f8a2a3c6d16b8b36d2acef7ae318230128fac4672" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.689Z", "postProcessHash": "6e4de5767563bb9fb18427dbdaf2f3b76ad39a6f2d17edbe3bdb343bf64a6247" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.965Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "fd871f843763493e362e886fa1f04008f9da769b46dbc4035b3a13d31fc4414f" } } @@ -26775,15 +26845,15 @@ "eb1a1f01631b05bf1533ffd2c55c66414eb49c1741c154d4907afc8f73f7235f": { "9a41183439ccb685d921031462bb9652422322a842f20a13f989ee4825c98e54": { "jp": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "08416915362840ec089904d32bead6d37b2acb975c31dfc085817ef110e254a4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "3311bb4ccafde6d15ee9008273ccf12f5fd335975bbed37aa0e3a766c34100d1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.969Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "526184f7801764b5f50fa68cd5f0f0f72a186a4d85b3d8fd25bb4d78b980a68d" } } @@ -26791,15 +26861,15 @@ "ecc50ef743da07587f50e2e433c891d853c4145a43e14073bee65beca199ca9d": { "e3d9d895a670833c385d032550d1d2f2e8ecc66328713f84bde5f6eb645a9a70": { "jp": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "d93ad14edcecb069f7720e7428250c1be552c9a43c8ff2c6d9fbfaf95e08ef01" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "f6aef821614e275d5b699a1113412f5ae0ebd1936d79e8141ef849bc916ffc2b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.952Z", + "updatedAt": "2025-12-05T15:21:44.691Z", "postProcessHash": "9c7efdd2a2cb429c34cf4f497e453d024463dde894387383ddc87ddaf6af140b" } } @@ -26807,15 +26877,15 @@ "f811cef1e60d3d76b1890136803c78a8a4f1f5c0702d5e269d8ea318cf5bc7b7": { "8ed2a0a54a6b4cc5249d9184642124cf15bfe670fcebd8151de225c2a95e77c4": { "jp": { - "updatedAt": "2025-12-04T20:16:57.954Z", + "updatedAt": "2025-12-05T15:21:44.693Z", "postProcessHash": "07a969b74918842b9b40ad5f0930842ca3fd27f46d7038b22ef57217837cb43f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "ea1434f7d0b25aa9966cdac1ce8a014d401fdfb9dbfdef2db4615d3fedfb0eb7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.951Z", + "updatedAt": "2025-12-05T15:21:44.690Z", "postProcessHash": "d455dd0c48bae06de0dd49ba68a2dce7f2d8fc7c5c5fea3dbcd582c0f1280730" } } @@ -26823,15 +26893,15 @@ "037cf7beb5f9d2290c0e219686b1115e8e4b773c79f541f5c81f9a4989e58cd3": { "3f6353039db49376892bd891e326535ed8f03543ad08cc2ad5b7bbbe193ee94e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.990Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "3a8d7ffaa9444e7a288d168a8bee0cc4f5d25733fa495c1df9c6b900dc125a7b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.993Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "38cdec688fafad29cb0196e7d52dcf0ebc79d468fa122d17030733a904c9f5ca" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.991Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "ae3addb58b08330f4cf9dcdb567bc37cfb5c2a6a385e959bd8ecd347d82f5333" } } @@ -26839,15 +26909,15 @@ "0a6b34520ca8168f8c366dbf6721239ffec9e0995481a49f17e32bfdf43182b3": { "d12d9428ec537b38678164b4a2d6a7eab105d1f3658778da83f05b64228fece8": { "jp": { - "updatedAt": "2025-12-04T20:16:58.015Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "aae8639dfcb4d05330da61c726224576925db03e664398ea060182ed154b13f6" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.014Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "930b770730d099618132c293163290633606fc2c848d9efcebd7699b4cc3f891" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.015Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "5c3048791b049b2df77d766b505499c6c7ed470e015ac6ac589c3093d7a14d67" } } @@ -26855,15 +26925,15 @@ "391cd20c30f8013777a8a8300b0127fdc765340375b9fa4c319adee3b24ec843": { "c91f5ec1d83b0cec76d7a0b4857bf98e46315d814f9cad3887ee4296fdb30001": { "jp": { - "updatedAt": "2025-12-04T20:16:57.996Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "70a072707fe323afb3ac6f2839e68970867074fa091ebe73ae2c4c8444ca0327" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.997Z", + "updatedAt": "2025-12-05T15:21:44.734Z", "postProcessHash": "bd726caaacccd38757f2982b4bc52df9cc44a8d6a863f34fb019a452ffbb1d3e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.996Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "270278f2f4d02433981d96c624cb89b1553a35e806084a3ffa132dd1618e75c4" } } @@ -26871,15 +26941,15 @@ "4fb36325d48e506203d8d75bcf6b70879d8bb4bd5ac0aef7b03cf1d784b85934": { "e592ec6dc8b770289b11562b8d28fce8a2ed7c9589b8caa85832638eef552890": { "jp": { - "updatedAt": "2025-12-04T20:16:58.016Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "c05dadae1f20728daa76a1a652991a29230c7a741017a0ed4adde3ee2b6265f4" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.017Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "eb24b6e7d280da615609f641194603f6156614c17156243ab5950ae4063903ef" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.017Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "bc5425ea7f0bb2e9cb1b2087317f634bc42752bbf106c263317117bb37ed2b84" } } @@ -26887,15 +26957,15 @@ "54668b892baede02e5b6a5cbaf788773fafac8277e523ed65fc920f4ea6df2de": { "0163d4482566b616b6e411361068fbb4094a1c1d66cab5c5f906a2faf1fe96f8": { "jp": { - "updatedAt": "2025-12-04T20:16:57.989Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "7395fdbd8a4d7865e0a4d9b53e89d3c4a16a2daea8f097d7c14965c6b7ee6ce7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.989Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "0a97782489196b977e009683bbf33b16d0e5e868b49aea49c6df31eeab803ccf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.989Z", + "updatedAt": "2025-12-05T15:21:44.728Z", "postProcessHash": "5e7c4df17c64524380cc1c650caba6350a4192f770a9f28045b4ff3f34b8a792" } } @@ -26914,15 +26984,15 @@ }, "babb148b7bd1d5550fd997022b79bfa7c7fc825242898f499f8001b7d0a27451": { "zh": { - "updatedAt": "2025-12-04T20:16:57.967Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "e3ac99e61b71bb4a8f3b754e5a0e0a3faac10ecd59075e256d4cfd7184a3ee65" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.999Z", + "updatedAt": "2025-12-05T15:21:44.735Z", "postProcessHash": "3f30e5fb2f2047cfe887240f73487c2b10bb219bd1e1a7a499447b032b603394" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.968Z", + "updatedAt": "2025-12-05T15:21:44.703Z", "postProcessHash": "10da1283692051fb2bec6fc31bd3e9d239c152999a54014a0fa4dc87fdf2c02c" } } @@ -26930,15 +27000,15 @@ "5ad0090f8bb37d66ad4ec384fd8c183a6ce6d85bd5c293bdc484cc9f40bbfc3d": { "fa3251d9fbc086f42e5d133962432d1e0e3306745b593aa2bc755f7b16f5bfa2": { "jp": { - "updatedAt": "2025-12-04T20:16:57.992Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "0ad57c45005714a50777ebc21dbf3d96788cbb02f7c7ffa0569f7f0e887b5ec3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.992Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "18b79f24f8fe0a4489a35a2c8c06011840f2353728daf767833c520c068a01eb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.991Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "170b108784098a488eb5f393325aeb451002811c0eae6ad44593322bfca34dd1" } } @@ -26946,15 +27016,15 @@ "67deff08df6c97036b3da071e7956e16555880aeb53c7d8ac63d1316e5f89993": { "8b19006f70430697684ec4194432408cb6d68b05965376bdeba185e83774be1d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.991Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "e94aedf66d637b6f275980467625fe2ced852b26c96348a34e422d2ca1f5d695" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.990Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "948347908e015afdbe6635bf35f74bc8fe85bdf5e88d596d604d1c4fd8685bba" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.969Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "2f58e50197f8aca8c51a76870f33e79c5cb0577bbce8a3d80b7fef2e5c87b277" } } @@ -26962,15 +27032,15 @@ "72054126de2c0ba649ef4842d3a88e42bc8fbabd3ec579abd629308399d48364": { "f53eec1c24f726e22bbfdd53d757a2f052bbadb6e11837183028dab74cbef510": { "jp": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "db6e04c46a89993043fdc233cfc4f01614ae311ae0aa9166fde68bbb9fae5310" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "2e0345e868c14464f470b16f9afcff38db5afb0aaffa421faa3895f30bff1071" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.969Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "d2f7a27acf3c587c848427f284be7956df1daf6f1259aa523deae38633ca2fad" } } @@ -26978,15 +27048,15 @@ "79354c33a23d98f8b63fe6e965aef5d6b18cdc962e36d20a3b148d8cf335f86c": { "a1b7db6e0aac3869ff670ca64a57cc2cb592944192a99aea022777ca4d6ae73a": { "jp": { - "updatedAt": "2025-12-04T20:16:57.976Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "e05a793bffceddbfc93630ce0ed9374eb911b7e668639a3d664c025a953d7381" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.975Z", + "updatedAt": "2025-12-05T15:21:44.709Z", "postProcessHash": "8d4276ed81e19ac6df6d65d79e880e2eb2a8c8fe2404f50b9d29bfb82ed2c1c3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.977Z", + "updatedAt": "2025-12-05T15:21:44.710Z", "postProcessHash": "b2ffec7bfdc2c7be20b720d8c1c2cbafcbf64ba3719b07859aae6234f79b0369" } } @@ -26994,15 +27064,15 @@ "8ef8c9df9ddafcf602e81139aa8e6731772a4658d96021c4f2181a1d5e213669": { "bbc0b523bb0b92fbabe619f5570db6bf3895fcc93bc57a5e31d9f3b2110f036d": { "jp": { - "updatedAt": "2025-12-04T20:16:57.998Z", + "updatedAt": "2025-12-05T15:21:44.735Z", "postProcessHash": "2ace1cf9bd4d631b9f16200194887e26a4121ce1026928bfb46d428f9e7af2cc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.998Z", + "updatedAt": "2025-12-05T15:21:44.735Z", "postProcessHash": "3e48c7c0aae614a42986488ec4f3326f2d10b3ecf38d7cf64ab547f9eed8f431" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.998Z", + "updatedAt": "2025-12-05T15:21:44.734Z", "postProcessHash": "de07d4a2b8f44b2e4bb703916d55aa0cb744bcb580ccda88a8fea1721d4286d1" } } @@ -27010,15 +27080,15 @@ "9a882460cbd2fdc9c5ff521d87a5f2d2b7ccd55f1ba81bfb3906e7ca923d1c1e": { "437e57c81c3f0872003cb47aa8df2359ae68ecc690d887ec26b6e38a740144f6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "9396d5bd50d716c07ee78824c8b338348d0c6eea75190ff0d8f4d1f70a6d92bd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "9167e54acfdf70e9ecbbbc732c5ffce61d92be6b5dbf7032e126c00f7bf7bfe1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "d479c2fe0dc8c0ea513cd749ee41985de8b730eba039b746e694253e03c23326" } } @@ -27026,15 +27096,15 @@ "ad780b9bfd73ed606b7968549e04e8b3334085724088340ad05f2447559d540f": { "2bddef7ed07c45258897c9370efaa505180d67c313bb2d16ef2c830e5636aa00": { "jp": { - "updatedAt": "2025-12-04T20:16:57.990Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "a8e7ef842ff8960a1fa33d98d059a72c14eb538a90144a86ae34bfc538a0c894" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.989Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "ab8724c194d83d71ead6579f107c4c4c513907057048b74a1339776792cdf33f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.968Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "d313b64bcf9a377701cd5c8d37aabca63fa293c6dabe91b593fbdb193dcb8b68" } } @@ -27042,15 +27112,15 @@ "ae79c700aca5153218493e8a943d16630b2f7ea345ab07e3105236857b43d93b": { "b1e073c8374abc5e997e5c6b5beb49db3202f0731072d2c28d7fbb0d58ae5e38": { "jp": { - "updatedAt": "2025-12-04T20:16:57.995Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "be6e10f5ad3cd913986200ba5313d56d95fd20d4f09a4c470481d65e87a275d6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.994Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "71918a8b2e540c66ad8eb67dbd7571f6be10be9a101077f39fbb590eba7702de" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.994Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "23ff635818cc2f345d93b8454bb43e54b7795c73f9a5fbd7c41dd36fea601821" } } @@ -27058,15 +27128,15 @@ "cad443b0bb3344ed063f7aa4c7fc2b79aced5e32830119e2376d8bc59ea14c52": { "7d224b4658e83885570c772a1a61546603db3deadf2539b9ba2ed630cb97e6a6": { "jp": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "2ceefce04ffb0694dcede58b65e6bc3f584f63af1c476c005c3ba69b0681ad58" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.970Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "4baa3386d48a5df9aaee378d023d5b47abb5bf6d1ccc3c8ded54f9d947124dd8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "46da44c1b548528a24954e49e2bb7338079bd3965c6b0bb7838a96d08e7729d0" } } @@ -27074,15 +27144,15 @@ "ceefbdcea6747301b15ae01324b1afd1ac12aa220ed2fe99add6fbe53f6c7269": { "5840e875e6ec0ff5abbf5480df1b95d85a50786763ab037f67b711d24e4e67c7": { "jp": { - "updatedAt": "2025-12-04T20:16:57.972Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "4d82cdeeb64d7528c55a9b20653eb13bb0c88a7cb0440919427d4ea49c2f3a02" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.968Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "3f229ad78931abbf0ce78e847e5b255bc3480901f102ac1225dbc77819a55051" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.973Z", + "updatedAt": "2025-12-05T15:21:44.707Z", "postProcessHash": "beaeb1c0510d9cc44fb0e9e0f19c97617e2e171797f0e8c9b1d40c5dcb44614b" } } @@ -27090,15 +27160,15 @@ "d4d0c35c5f0beed1c59fef3df7f5bfb3c862a52553491c973702a3bc2127649b": { "57ffcbf7d6cac66182cfea77cf8aba9e7c9e489b22f114253119e9ff7f8c1f83": { "jp": { - "updatedAt": "2025-12-04T20:16:57.965Z", + "updatedAt": "2025-12-05T15:21:44.701Z", "postProcessHash": "c747eeccac4ad64e673b826b973232bf8fda23017a0bf4bda7184a75ea1c50d7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.978Z", + "updatedAt": "2025-12-05T15:21:44.711Z", "postProcessHash": "6761e3a9136b3f04dfb4959659c033d7868ad6de4fad5a67856181787bca68c7" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.980Z", + "updatedAt": "2025-12-05T15:21:44.712Z", "postProcessHash": "8dd15bfd773d922efabf72c8b6066f064cd4909171ab6fde399352cf1cb6aed1" } } @@ -27106,15 +27176,15 @@ "e14b170922435b64e35287ad9833a81f16ff54cafad9dec0721b50d4150e5eff": { "a7e402c7578841050808aadfed7d6deea52ece0e68f8352e2e942645abf29aa1": { "jp": { - "updatedAt": "2025-12-04T20:16:57.968Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "a6953d113273aaaf5f9cd703e87b279b4191d2c6925050fca0e97811613ba5c4" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.969Z", + "updatedAt": "2025-12-05T15:21:44.704Z", "postProcessHash": "cc7399a1177f64d4266fe77442152db5e030f4423e01c0b46db6571d37853efe" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.990Z", + "updatedAt": "2025-12-05T15:21:44.729Z", "postProcessHash": "249050770e8ba433100f495b721cfcd972b66d79aca737d1e8f4334d3b0698c1" } } @@ -27122,15 +27192,15 @@ "f613caf640545aa0661fb14392a49a46e530351b4d92bd137405952d82f5b4c8": { "d8b96ae66a4502def2f78fdd03f27807df147056c6b3fc7bc330500d5a9451ba": { "jp": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "0e8b26dd5b1e873d9eab512084bfa901fb3a3426b8615cef9a4b8f20f803b2aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.970Z", + "updatedAt": "2025-12-05T15:21:44.705Z", "postProcessHash": "5bf2cf700b10fd148eb1ef5c5968aeb7ce8346c381fe84963dd7ebeef294b729" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.971Z", + "updatedAt": "2025-12-05T15:21:44.706Z", "postProcessHash": "f558a308f7e5e125364863d7ae132277ce6e42ce3062a74cddc32eff5b474337" } } @@ -27138,15 +27208,15 @@ "648b00935dbd871b726296d698650b456ca7a653fa072fd74ce364e23a608928": { "ebc9c5357fa68d5d160cb6ddf6f938a834ac5bfc24d527684b3b9feaa9bc6a60": { "jp": { - "updatedAt": "2025-12-04T20:16:57.993Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "aa393e1ab562a4e50991927c50fdbf9a901863c6d2f595dceee2b83749f13612" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.992Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "7434826143cbf1fd2618fcbf2d7098ff1d8f6501ee54dc1c692b7982e045697b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.992Z", + "updatedAt": "2025-12-05T15:21:44.730Z", "postProcessHash": "ef7456f9afb2c0a32928a0d4f22decaad436bb7e700ae28a1ee0c582dc2d1d57" } } @@ -27154,15 +27224,15 @@ "6d063f7195776042aa3f0a6d982cef56abab4e4b689ea926e2fc79ed09f5a2ff": { "cdca3b6d03d5aff13d620991a578cf9aae185e67396d308d55838c9401281d25": { "jp": { - "updatedAt": "2025-12-04T20:16:58.016Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "bb751cc4d1e54e875c52006b54e91cd5c9807e28e1bb0bf1bd7a4c8fdee6ef8b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.994Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "14490cec8cb6f1b85cd7232bee78f8a502d315d882b8bb92ac60be619f6466b8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.993Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "4ef36ed6a257a406313ec91a7559450737d378d88b4e0edf2ce54cfc254aa8e3" } } @@ -27181,15 +27251,15 @@ }, "000b1489bccc8788cf74aa6329f6c98ad06511f167f46f1b934a958a5c6ce2b4": { "ru": { - "updatedAt": "2025-12-04T20:16:57.965Z", + "updatedAt": "2025-12-05T15:21:44.702Z", "postProcessHash": "f1a6e9f5e808e64096b5eb06777a9fd630a8e0b0613a766c022a4f1327c78d1a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.965Z", + "updatedAt": "2025-12-05T15:21:44.702Z", "postProcessHash": "842b3a0eb92fe1f815ffcd1a3d32ab257e797edddb7ac763e54ba23a8aaedae2" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.966Z", + "updatedAt": "2025-12-05T15:21:44.702Z", "postProcessHash": "b632dd29c7f5132925c1246ed5664daad9f1dd2673d73d4cc689a280623d337f" } } @@ -27197,15 +27267,15 @@ "99b41ad75a6b23d70cb86b644a533c095785f9bb812c802ab52b650473d678ce": { "aa16d1a33d3312895cbf47d1ede82586dfb4df0a3507111d6cc8823a5446a979": { "jp": { - "updatedAt": "2025-12-04T20:16:58.017Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "32ce42679a2c92d69a092e8b1a9c411c4905801b729f74b0290da8383e209201" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.015Z", + "updatedAt": "2025-12-05T15:21:44.746Z", "postProcessHash": "6c169ae4d235a9c1d0dfb4562680280faa583409ffe0def6f758e109e58e28b2" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.016Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "7c9c40b3e5b49e192277c1beed49ad527e4478e74e0094f006074cd0aac0f4a3" } } @@ -27213,15 +27283,15 @@ "be4a5f793e39d6e7b18691ba8685878af8c580f898c9f09efc5b93e0979b3902": { "b95eddde3a53a14028e00000ea72057696b55e352e2a30cb66fda415c9ba5d5e": { "jp": { - "updatedAt": "2025-12-04T20:16:57.992Z", + "updatedAt": "2025-12-05T15:21:44.731Z", "postProcessHash": "ebe04f6b0e5add0052a46c4d98f037461beb28f2cea4d340dc0e8d9b671af0da" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.995Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "35062a645098ab1cb42eb22ea43f02c0ad74c81ace097c9abb272aa41ed6c219" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.994Z", + "updatedAt": "2025-12-05T15:21:44.732Z", "postProcessHash": "9c40422306542d1b33bd23f9ecc50d931d4acc34ad63b373ab07fc00b0644d58" } } @@ -27229,15 +27299,15 @@ "c6fb4739e8e0ce948c34c03ed0f585498d9b45c24d566dfb8456926c4160207b": { "1d24888ce8aa77edfe5838c52a804ab3149a5d9497f036556a3e08576311a7ea": { "jp": { - "updatedAt": "2025-12-04T20:16:58.016Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "206c86770d60be69d78c5041054e095526a3550ca874a551f77b1fc18f589b05" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.017Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "447b1d3c7230d123b3a8612b66738be2957ac64e17db606124af37b5914d2f1b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.017Z", + "updatedAt": "2025-12-05T15:21:44.748Z", "postProcessHash": "e52cc34ea054e84b2b867b68a6ac9a2d817ff02ed573315a5175d52f0e08c58d" } } @@ -27245,15 +27315,15 @@ "d917e72b0a533c5af5b78c94fe1c05954dfd7ee48fb7ef7ab50f924f25fd68d2": { "b98abd6c9ba813c4b4a7cd9bc3018c8d18d3b4e71c0ec5233cf5d8da0a0f0441": { "jp": { - "updatedAt": "2025-12-04T20:16:57.995Z", + "updatedAt": "2025-12-05T15:21:44.733Z", "postProcessHash": "6d7e1e04dc4de4b7762b9c2add2cb0513137fa933e485911757fddf10ff36100" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.997Z", + "updatedAt": "2025-12-05T15:21:44.734Z", "postProcessHash": "a25b67ac981a813e93454a065c02f474a7db097493dd107887a4dfecfa883dcf" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.997Z", + "updatedAt": "2025-12-05T15:21:44.734Z", "postProcessHash": "8c2d80fbca315caf65320cbdb9619ebf8416e3818e4d3e39e7b71bd675cd1cd7" } } @@ -27261,15 +27331,15 @@ "e05df611d62735d38ef4d916bb8f4ebe7a8d79a8773dcc1e94584527d5291d29": { "6ed109f9852559b92ce5667c817e8c2bc706b8ada65ecb41dd89ea0a07d5a71d": { "jp": { - "updatedAt": "2025-12-04T20:16:58.015Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "b236d87529da82a82c443d416b4d3f238299db9ffcc9d45ef6c2f3318c021580" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.015Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "ba16ea7423c96bbf6ae7981c949a17edadef3b84f8b242805232c3ad44a315ba" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.015Z", + "updatedAt": "2025-12-05T15:21:44.747Z", "postProcessHash": "e910f76cd143d052e6fde292752e8dbb209fc9a9650cc2f075077d3956a809df" } } @@ -27277,15 +27347,15 @@ "8e4cc87be65a0de0b75cdf694f1e368b68e721094e28ad05d1ab2af1aa7c97c2": { "b4c7e25600e2e0bab1150a0a7777cdce0d61b9c3e50a9c73e33bae121c92cbba": { "jp": { - "updatedAt": "2025-12-04T20:16:58.102Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "713a33d07f67aa81c5e94df9357525eb992cd84e5b8de4b33c75065ae90183e7" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.102Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "5cb63e2cbfc805a66153f2a0b7e0eb50431e18a659f8dd0df4e892bb4889105b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.102Z", + "updatedAt": "2025-12-05T15:21:44.797Z", "postProcessHash": "fcdb53f0eef5ee6d7bcf511efe0e736257a95d4c5d0341c48b91fd888eebe2f4" } } @@ -27293,15 +27363,15 @@ "9dbbdc5c5acc11dc5874d8f84c2ec9210659a18cdd63bcc17e5b9addd0e11761": { "ca5dbd38b58fcc4d7a89bbb3e287de8dd7982f758f2a8e314589026ceed00758": { "jp": { - "updatedAt": "2025-12-04T20:16:58.078Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "72aac5265ba0e946d0a5714203f68b03fa3e12de2b70363bc1853794f46c5d5f" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.114Z", + "updatedAt": "2025-12-05T15:21:44.805Z", "postProcessHash": "d0d5c65fb4be1b4d607387f7433e1efab92bd7c402186625d19603b205f0460b" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.077Z", + "updatedAt": "2025-12-05T15:21:44.779Z", "postProcessHash": "ef1caaf6885cdaad84bb404e6a152ab1f7f0cbb3c3fb7e190f4453cfa676f118" } } @@ -27309,15 +27379,15 @@ "a1ae550295a483325655e321e7db058409614a56e29a23b67cbb7b001c387ca1": { "8978ba1f0ad1f751ccb53c78a3aacb61cbebe5e747e9d35fcdd7d9a45f55b790": { "jp": { - "updatedAt": "2025-12-04T20:16:58.077Z", + "updatedAt": "2025-12-05T15:21:44.780Z", "postProcessHash": "7f3bcd4393f59fbfb6d61e50595b4f619303931f2fd4b1fb0045b25aa8c067fc" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.078Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "be6f2c0efbd26f47ff866ca052b7bcd3556397e5e4d44a33fc127de0f2bdaee4" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.097Z", + "updatedAt": "2025-12-05T15:21:44.793Z", "postProcessHash": "4d17055463206d0da16a17b80df59d29714f48198e709b60d85fcf69b5a4a6d3" } } @@ -27371,15 +27441,15 @@ }, "544caacf28d1d13be0e179fce871929bdd7c09bb92703dd56b759837518ff545": { "ru": { - "updatedAt": "2025-12-04T20:16:57.296Z", + "updatedAt": "2025-12-05T15:21:44.289Z", "postProcessHash": "f61f247425677a4ef3c2da3e14f2f63b3af97e4d01ce43e682f0c253fa99dc4a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.296Z", + "updatedAt": "2025-12-05T15:21:44.289Z", "postProcessHash": "2536314589a3c6d12865da6e8b09f893360f610a913bb2e64a9c5b58b1dd6c1b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.296Z", + "updatedAt": "2025-12-05T15:21:44.289Z", "postProcessHash": "818319fbb58b7264bf77fdef73c74e6d47b77a0742928a12f99095e04b3a8e2e" } } @@ -27395,15 +27465,15 @@ }, "4123bf4754603cd137b2c347ddc2ecbf727880d70156ebaba4224dfc6513ccdf": { "jp": { - "updatedAt": "2025-12-04T20:16:57.784Z", + "updatedAt": "2025-12-05T15:21:44.506Z", "postProcessHash": "b09f38bb2497a5e2738410acd1fa3eceecc540d3197faefaec25321fedbf9b53" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.786Z", + "updatedAt": "2025-12-05T15:21:44.508Z", "postProcessHash": "8996dd0bffd21e07932ff2d132b2eb8f580bc28a13bde7ac0f1011ccff2dfafb" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.787Z", + "updatedAt": "2025-12-05T15:21:44.509Z", "postProcessHash": "6622e66d490958fd3aa95bf0528a886b0ccd5141311d8c9d77e63857d2cd716e" } } @@ -27419,15 +27489,15 @@ }, "027d2488fe130352aa6298012c4d7a267915572c0674765bb593b91d195456d9": { "zh": { - "updatedAt": "2025-12-04T20:16:57.292Z", + "updatedAt": "2025-12-05T15:21:44.285Z", "postProcessHash": "cddc24770a56c74f224fc8a924029eb2e83f8d58535d69f2831bf97238a2d949" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.293Z", + "updatedAt": "2025-12-05T15:21:44.286Z", "postProcessHash": "ac201609e6222d857e5f1c6f0ae325b1d2288b3ad77ea808d0906c0823c2c050" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.266Z", + "updatedAt": "2025-12-05T15:21:44.264Z", "postProcessHash": "24582a05f2069fa46e18a7cb381f2fe2345e0ad28b3db4593ee7cc26e3bc840a" } }, @@ -27454,15 +27524,15 @@ }, "2020a467b74c2031b09501bd31ebb2d005e1c3d366aa4673be3ded168b7cf3c3": { "jp": { - "updatedAt": "2025-12-04T20:16:57.800Z", + "updatedAt": "2025-12-05T15:21:44.526Z", "postProcessHash": "75c60a85252e8ac6bebbcb87449ac0d95c378b782a3cf89015b17b0037fe5aac" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.801Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "4926ee8caf607b5c9d11526c23729c9b4696ad0118d4b4ade61fabb5d9f18702" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.802Z", + "updatedAt": "2025-12-05T15:21:44.527Z", "postProcessHash": "b32ebbb92a17c951dd50a1d149a4f823a45853441a35c933d264ff73d93c2f3f" } } @@ -27489,15 +27559,15 @@ }, "1e00e7ce8c07b67a72f3c30424ca0c2d930cacc231adf5a1336f323772ff2edc": { "jp": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "d58f98a14dd94e685f166a44d468cdc1c0de1c4652f89710c26549e79f0d4093" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "af0a63611bf0bf1021afc1ccc48db0131596e4a09654a210756d9b4fbae92911" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.100Z", + "updatedAt": "2025-12-05T15:21:44.128Z", "postProcessHash": "2a27c63a71c49cc6722c8f17686cfe9fb45fabd5c0daf4c1594727e1e296ba10" } } @@ -27524,15 +27594,15 @@ }, "a99976a7a738ebb33cada2f4d924528e1f6779ca2332591b2c1eaf27105ec883": { "zh": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "b40dbbba7e989fa9cae3d49b1ad3584a08ea3cb1bb6948112e26d1b0cabb39ff" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.198Z", "postProcessHash": "35247abc761d249da7c7cd1664d0eb0ec0717f3cd6840fc13a796bce7c6c6364" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.211Z", + "updatedAt": "2025-12-05T15:21:44.199Z", "postProcessHash": "a3ae6705ce3d926d87770e140ba2b303777239252aa6fb61f48c5ccb6771a084" } } @@ -27559,15 +27629,15 @@ }, "82debe159b38d56f0f7e43e16823ebbfccd913c0fde77cb1d097d676eb7fedb7": { "zh": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.456Z", "postProcessHash": "5c48a6036ce8e595022a70b9e858d66352a6518534b20c1ec4e85167e058fcf3" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "0a3ebe55e7cce6d0b2ba9332a43f6bd4eaec3bb4d75a676ad183d96b7bee0249" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.725Z", + "updatedAt": "2025-12-05T15:21:44.457Z", "postProcessHash": "8b4bf1c526076b08848728fd206d4819f32b5cf7115256d25af040ce33c2d199" } } @@ -27594,15 +27664,15 @@ }, "18ed02e06f16dfce881d97046fffde26c9f0db28c8ce1161a1f73a89b58682a6": { "zh": { - "updatedAt": "2025-12-04T20:16:57.913Z", + "updatedAt": "2025-12-05T15:21:44.676Z", "postProcessHash": "b94a749587f8245881eb320e74216a80c7f65f80a755716e944d145f632095a5" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.913Z", + "updatedAt": "2025-12-05T15:21:44.676Z", "postProcessHash": "da396aae55b7ccc27cba684a3234b5302bbfcc71fc924b8b44ec47f97c396fb6" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.889Z", + "updatedAt": "2025-12-05T15:21:44.654Z", "postProcessHash": "cb3ad973df28701bb8f4875fabcfd0e62e58786f5800c5d924dca3f687c3216c" } }, @@ -27648,15 +27718,15 @@ }, "0af616e387db07695b2962dde0bbbd92c2ccccdb78cfa45a093fafcc97b3918c": { "jp": { - "updatedAt": "2025-12-04T20:16:57.581Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "e5779be869a7afe8b83fdaeac50fca27c4a92a937316811accb2fd746d1cd2ba" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.581Z", + "updatedAt": "2025-12-05T15:21:44.394Z", "postProcessHash": "ea77db6ccfc387f20723fbdcae62dfb32442a45fd78f30f7bd556e4c516f10f3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.601Z", + "updatedAt": "2025-12-05T15:21:44.408Z", "postProcessHash": "a2060bc28db6d7d600c8c1c10a4fb4eb1ec63bf24e66502014a9a3b41f3282f4" } } @@ -27664,15 +27734,15 @@ "466fe68cf77ba8d2f7e6b11a62dcea8f2b8466f8161a1a4fb8352442e971815f": { "0fb852baff9f99f784eb97ea0fe1e81f329d845d7e142f0cf03f1c59b7c10b6e": { "ru": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "a2f861b06cedc87cff28f0e87a874f0ca6810222da9f8e6f3d226dc39ee35ee6" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "35ad145cf388d16f5d4a4011168a1fc7287db6205d3337996d98df0726ff1b0f" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.985Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "e2ef30245dbda7c76ba90432299bb9dba01f4246d5ec47d7fb135e93ffb2a722" } }, @@ -27688,15 +27758,15 @@ "16c5698666ea7909d9e1753e9b13a5de1a08200f19d637afa8cab711a0379f73": { "38ea5377628be1984cefdabbe1181d528ddf34276864ec19a7193979c8dca03a": { "zh": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "38ea5377628be1984cefdabbe1181d528ddf34276864ec19a7193979c8dca03a" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "38ea5377628be1984cefdabbe1181d528ddf34276864ec19a7193979c8dca03a" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "38ea5377628be1984cefdabbe1181d528ddf34276864ec19a7193979c8dca03a" } } @@ -27704,15 +27774,15 @@ "85911f3bccb6d5539862e976203980d7d51391821089a818a002e7424e1242da": { "d7b1a435f7e4fe293383e5e8731be7cd7008caf825855a2e246a89ce3676aa9a": { "zh": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "14f020971de21060c9dbbdd97881e50c823b8decb3af6933b6786b810c784b05" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "4ca4488b6240f0969f58775cdd28b38ea19b72d09ed672806dd6066698e103b1" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "2e8935b774707a1fc1094bda03142082e4ee9cad3e7528e694913863d61304b0" } }, @@ -27728,15 +27798,15 @@ "237a635525e427bffb1c840b646e1b41486b8ccabc7712217a3d66d8c582f1b8": { "727edae2b97b38f4fc6c0b0dd353075d4fe831d345dda64ac9471ceaf897e490": { "zh": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "b1a18bb55dc19c1ae6d59cc1d7b85fd42acff628d3ca1636bfb8236189f4e211" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "b1a18bb55dc19c1ae6d59cc1d7b85fd42acff628d3ca1636bfb8236189f4e211" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.038Z", "postProcessHash": "b1a18bb55dc19c1ae6d59cc1d7b85fd42acff628d3ca1636bfb8236189f4e211" } }, @@ -27755,15 +27825,15 @@ "7f4450440bea714d4def4ce9d273c25160fbc93f8195d945039db1f03871b626": { "98ef39e86680ea8421985ec9e48a11480382a84780d7c51e21ba7c7c08ba5de3": { "zh": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "f6d43fb3b1bf3cb544f95ff4148624ff3f59c0d98fc9699c1d5e9a552673770f" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "046a9d5b6025a5438969893155368430145da58084c1a1cdb51b2f442bd31728" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.038Z", "postProcessHash": "5405f106a4b9fb9d494ea8c8b80b6348537da13d5055b9c84176e33b694b0168" } }, @@ -27782,15 +27852,15 @@ "96339230d0b0662c9043872f701165e62b1dd1a9ee98448c3678014c12742331": { "f9dcd7d2195374981d74d8864cbac9660f4fe55a672e340bfa424e86bd032bd1": { "zh": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "17fc1ce3e7724e08185d6334367acd1551db3403000c885aee694b8cee1b6ffb" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "6e8878bf1b9d227317cb48a45ab9134707488c84ad6fd609253a2e8ba3d90635" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "e30256fb827d3f41b02c4a19420ee45e6f4b22c9f126bc600b0e5d0ad8d78885" } }, @@ -27806,15 +27876,15 @@ "7b1152a9f1bfab485338afd2d917ac4d27b6ac598d4df8c416b5d34f5f2f2dc6": { "e85d9475b25d51b62300a450688edb90649a6b929805c4c6c7dc02c5c82425fb": { "ru": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "4414fe2db8210cb07462ea37b5f252d3d1a08aea83c8048ed4bdfdf8e502b069" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.982Z", + "updatedAt": "2025-12-05T15:21:44.032Z", "postProcessHash": "77b3f7333c54264798591573269c51eb187a6530077b8c89d00454a32b3814c7" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "a1eab45bcabefaf3193bf256217b0716bcdd3e9659c09f81d14218a16fb060f8" } }, @@ -27830,15 +27900,15 @@ "ff3c9f598e696982267c2ce9a91a552bebc66583c1163dc1c4b27f82c5102f1d": { "128e8ba5fd3b5e0981c42ebd31c5b3e87b6845262805a4f4bff3b70534bfda44": { "ru": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "ce53f996740d70842ef68af1655918f3eb1bc9df687c4df73d2d93719080f97c" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "21345561752f0d94aea8069e30373e2f370e4ba9287cafef0820ff4937dc0a05" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.981Z", + "updatedAt": "2025-12-05T15:21:44.032Z", "postProcessHash": "aede207cd5ce2c77e07aaa05b0def28eb8fc4c9a032f7e14fee2a8f389750a35" } }, @@ -27854,15 +27924,15 @@ "0361e95538168e72e0cf9076b4f8a823f82bca2acba30f30499d1d7ab6a5509f": { "d46f5caa45acdc3ea0cac4ee761116eca50f70acb1faa2569b6101636d3704f8": { "zh": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "f0a97c134d3228bd813b9fb2631caeb8537d464977843611fc44a3fd1c12d58e" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "7eff5614e108ffbe8fdbb7cb7a60ce43f1c34abb8dce2015fa7c6e289db7874f" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "8b472718c3b01cc58d0348751f5b161326d90be2ff4adeed0263bb244d13b231" } }, @@ -27878,15 +27948,15 @@ "4914840b74cd4cd05b93446005c1a3f9b45c7e7816eb8b20c953782a78417420": { "66ffb1d1eb8cc149ea48f7ecfeda0ca180b36051bed03928a1992c631dc4c19a": { "zh": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "2387c90b6734fabbf5e34855d9b7087a56a8459199666d9324c3f8ecb8753f8c" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.983Z", + "updatedAt": "2025-12-05T15:21:44.033Z", "postProcessHash": "40abf84cb8f86fa1a58b9ec5523ea457c40aaf25e3b348ce068ffc50600529bd" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.038Z", "postProcessHash": "ebfbd37d08e77529f334617e1c65036b6807197b47ecf072231bef4ded2bb5d9" } }, @@ -27902,15 +27972,15 @@ "7c40f4e2df36269b352d83d988edf0d606726b28f6527552e7eea3bbecafdef3": { "199bb81cde4d12c23b1adc97c7e2bce05a479079d23a4bb65c6826ef95452990": { "ru": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "8993be5bf11b6be7d72aa4c611b0e7bad5fc512439bb9d1b6e206fbbbd7cb05a" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "370a91b8533a723d2e4b1549c35c6735c837f2f50c1c4d609903126372f45d30" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.041Z", "postProcessHash": "f100216dddcd5aa6d5b2a119631e6cd22084bdd495347e2d2db5afc49cf02124" } }, @@ -27926,15 +27996,15 @@ "1eff56196650aabbed5f57974122db842d54e3093cc55755e2f4b980a957f4ac": { "598e57a0788cdc232382a72f993fe05e0d9a2ec8e815e0b23e6780d39b245171": { "zh": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "029477b5ba4e00e1984a59313be1408fa79f1ed3c7374fc6e054cd934ae87d9f" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.985Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "4adeee00af2b7dc1689945fa1a3ea72870eb8d82635d23c24f5afacdaee2d9cc" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.038Z", "postProcessHash": "1b1d29c91919156ad092d3fafffbdffcefecd1464f1867980a3effbd3fd97ed9" } }, @@ -27950,15 +28020,15 @@ "3c95fa2e161d494b4ae0ef9bf3131f3b028f13b824f5b7ede9ad688d11b58387": { "904fe0150e0e8c168afe250519fee5a4c27e23da832c312dcab667da64fa503d": { "zh": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "663fef6d20480babb22d86296b66037222d2a2650250a2874eb7d07cc37b3547" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.983Z", + "updatedAt": "2025-12-05T15:21:44.033Z", "postProcessHash": "296904d83e2f05abd0d201b63756e4993fc070bdb04cab19f7310a5f4982f1f8" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "fb4b61ca36d8a883539ca6dce8170010ea218fcd51a23bc648986737dcd53384" } }, @@ -27974,15 +28044,15 @@ "19260fee9e23907e67f7f4589d997bab22cbabd4ffa0aa96806703a3b19aad78": { "1352a2dbb90191a61432180810a0431b454c526d658886e1c33fdb1c71cfc2bc": { "zh": { - "updatedAt": "2025-12-04T20:16:56.981Z", + "updatedAt": "2025-12-05T15:21:44.031Z", "postProcessHash": "a935a5a09bc41067f7e9c61a4009822ddbfaeaf43ca1b00e268f2e7ea3a4e899" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "7032d2644260720142d73bb5705b9bb1dd26018cb12c421cb43c6bd87452858c" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.983Z", + "updatedAt": "2025-12-05T15:21:44.033Z", "postProcessHash": "19e5d22dfabc6b3fdd63975fc744155573e26a0e5e36750f12a91be21edd7e34" } }, @@ -27998,15 +28068,15 @@ "c71190c424029f1f3166b0dc0c975e43b747cc77aaa7477e6c8834baafd715ec": { "40fb6fb53bc03ff95d4c2a5b88f33db598b6bbba4a8c8273a31dff8b7c9a3fcd": { "zh": { - "updatedAt": "2025-12-04T20:16:56.982Z", + "updatedAt": "2025-12-05T15:21:44.032Z", "postProcessHash": "05e82ce73958e29dd50beb65180a9ece7ed4537018031676393d39297799eccb" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.038Z", "postProcessHash": "35eb622d4a1673d7a2b49ac6d4fbe5151e7dad205dad7c16e0e36879a5bbb7da" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "54be6d29af47684e74d868f4b06c2de53bcb843f4152ac7556e0c16fc88d749a" } }, @@ -28022,15 +28092,15 @@ "3490c72ebec2d9960e4cc311de931030fc0f1de3f2421d0d2a30876926a983e9": { "20143fdffbf6f144ae3f0a848c2c4135b1dd5359078f18a35f86e5ad0368f0bc": { "ru": { - "updatedAt": "2025-12-04T20:16:56.984Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "0e900ad1be8eb2f429c4841464e0b4498a05a4709ef5a077723cbb0fbe51a0d8" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "716d4abd1d53aff3d2fbee3ec30720b9388d98d71e41c650e6551e5ee79417a5" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "97b5b0db4d259d57c1a14c378a7372983c27ab7a03505119698e6d7525f02926" } }, @@ -28046,15 +28116,15 @@ "df1cbab9f5b7839553ad76ad0b3799099daaf2d5817b6bc1eea8369de5c5842a": { "3a49b42cc312e4959cc3883b924f895ba1f241473240bcbd42a5ff859048c600": { "zh": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "5f07fd1c30c64c511b3526fef59eacc817affb1338679fe14f3a924d4969b25a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.005Z", + "updatedAt": "2025-12-05T15:21:44.055Z", "postProcessHash": "f9d645e97cee935ded980b682b04f4dfb10ed1ef757f1c0a7fa4cacd7075b0c7" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "d942958f2d16a67f98516c8ba7d5e09365cf17b1713224474006387c823f1f17" } }, @@ -28070,15 +28140,15 @@ "d133c163191364466953c00a3494895f7b213291fa7eec0a3286c15ab6588c48": { "5b79efc25b16535ce983e05832f4052257d44d2790af29323a727be1048bc054": { "ru": { - "updatedAt": "2025-12-04T20:16:56.984Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "1c12f6285ada04ba5ce9852d4510890ef1abfe836ea02241cb3472a9e193134d" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.983Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "de7e11301702e7f96f6fbd025a9103d0ed8c30b19a1bb2d879dbd161c1061ad6" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.982Z", + "updatedAt": "2025-12-05T15:21:44.032Z", "postProcessHash": "179118fead23799b810921a3e169f3bea8d6683c40c860a67c860b97a38b3b54" } }, @@ -28094,15 +28164,15 @@ "5ae13595aec14e94efae48ed27bd30882ef99ca22e926c6eecac01f4a69b6e60": { "4c6c9c998098906955cd0a416322eaf10b8ceb9a33df69bb90b4e0206e58399d": { "ru": { - "updatedAt": "2025-12-04T20:16:56.984Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "e095111c0493f9d0840646462377d2df8319e71207872038a26812e8e26fc1b7" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "832ebe1b67ef5ee07034a93035676b1d6ba9f009d34428f33f25ec2daaa43771" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.984Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "be346f653831042915548f58d754323148c15bcc68ce4d4da3f3f1cb6843b67e" } }, @@ -28118,15 +28188,15 @@ "52f1e721b650aa5a8bb67053afa7caf447a7332e92f416526d36e8941d726d04": { "8c41257fcdc2d116e76c9a1609bc65adf58513acff260b8f2aa36d74bccf31da": { "zh": { - "updatedAt": "2025-12-04T20:16:56.985Z", + "updatedAt": "2025-12-05T15:21:44.034Z", "postProcessHash": "12bd4e4ebf5e50aa1242bea2b6d42c8a189578955d473976c1297fe908646b19" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "630e5b84780be36656bc937645ed65fb88179d11247d1e85ea1205ed29e6f931" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "82e84b3390f9f8829658dd58e2d16c166aaf2e96fa5c3350c51960492bd5f800" } }, @@ -28142,15 +28212,15 @@ "5a0ce1710868a408e43b0c9859a80ada3b08b93b0d26cb45f2ea004556e9d2b3": { "ccdecf590d1994e9c17ae91e353b32d2f66c08e379ce1eeb73f06a674afd8375": { "ru": { - "updatedAt": "2025-12-04T20:16:56.985Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "f6556e33a7a453d18a0af0e707e23c87b926a1ed049f3aa11215b62fd2069a41" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "a2d654d0961b9427057876a5b47403d5864939d9a0cc302f7941e73ea9093498" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "cec459b53ed81777f738433c26adec08ac1214e5d748451d10347b50bf3fdc2f" } }, @@ -28166,15 +28236,15 @@ "9b3e13e23b506d9d9ec9b2c5fbf8b9d2a62e1de7d0175c5f6330498124203aac": { "86c47ff8f3b3666e1a6b49b2c8302b448389e1e3b41ab3b1450e055082821549": { "ru": { - "updatedAt": "2025-12-04T20:16:56.982Z", + "updatedAt": "2025-12-05T15:21:44.032Z", "postProcessHash": "c0defa7229fee6b27c2a2a3244e13cc4c0ed6f0f4c6f6605a86a70bf36b99648" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.983Z", + "updatedAt": "2025-12-05T15:21:44.033Z", "postProcessHash": "8c1816d77d3551c7d6dd5710ccc8274f66e5809dd3cea3606629893483ebfef7" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.991Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "96a408123b4168c543a77c179b015d8f620e6307650d53bdf90c2f19ec9ab2a9" } }, @@ -28190,15 +28260,15 @@ "30f843a3827d19f26bae893b6a89699d15924309d3ee0d771f1309eb391c8171": { "a5eb46f97ff75367e3c2a77e86b555adee47157db34a73cbb68c4faa8e14d033": { "ru": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "da0c38fbfabd7c396006ed747fbe0f6aa5c0dfd8e816c461ffaab1707e3a8e7b" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.989Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "655ba8e4e20f3b5f89cae3033f51649118b5face2393e69b8ed2d63f7c170bed" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.040Z", "postProcessHash": "89278bc5a6e84647177b28cdc478fb16c00eb59607b5d452a4714361a554537e" } }, @@ -28214,15 +28284,15 @@ "15cacb127be1afdc884be3ff13c61ff48d4ae41e28740309f5f445002fb0fa90": { "a9c8fa4f53951ce4026e170171a0517a80777e9037e5bb2f16eab83d3ffaa9cc": { "zh": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "98be0adb514ab99e364abdbbab872ca95c8b60c312d3df36ed607421c9f38c2b" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "c6b1ffeb8a927241e2108dbeb02a8cbb166d5b270f1e7cdf770147d6ef83a7d2" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.985Z", + "updatedAt": "2025-12-05T15:21:44.035Z", "postProcessHash": "100a6e4170215f9fe15c083b750d4be45500a2d7d7846dc224623388d9b9ad91" } }, @@ -28238,15 +28308,15 @@ "941b4aa0aa9dbadd0a190a16a820e2bcff3884350dd172d2d70c5e4bc21490d1": { "429135ca177730d77f47327bd61c6aecd212a21d1a4625d711d13a6e0c6886bd": { "ru": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "429135ca177730d77f47327bd61c6aecd212a21d1a4625d711d13a6e0c6886bd" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "d744ea0501987d0d0496e17c8100a30396b41d2cb02d4b4937b9c75678cffd0f" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.998Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "429135ca177730d77f47327bd61c6aecd212a21d1a4625d711d13a6e0c6886bd" } }, @@ -28262,15 +28332,15 @@ "43aa5066af84a8c935f0fb2dab57ea37c855c50a8c4bf2fe5da1196726ec9767": { "8102f53c258449f037fd5c8bfbe1d4547d061cf4c8af817be8f9e6c45a4504b0": { "ru": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "c5c494264909d5f706f37779f7ef7d2444cb21e0a76c174cfa993154925c11f1" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "bc18044844f416597eef2c300fc30d72ea362c8100b916b3cde37fd6397a9e41" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "db0d66c6403ee0503be5db1613463d024904161282eccf111024893eea2c5ac1" } }, @@ -28286,15 +28356,15 @@ "a3a2fbdc5aafe02b0407589bc3e1a8e94202c17584b7025219f1bfd6b9bf4a39": { "4874e6e4325e8473fce83ceca9411bf266bf400e8eb78d3c9e8eec128469d820": { "zh": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "dbe129e41240b3563a495e332c1a7537b68ce199d3cb0d5d8493e657c151ef94" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.990Z", + "updatedAt": "2025-12-05T15:21:44.039Z", "postProcessHash": "1b128db269c12be2125d03f195c663118806c04caea0bed54648c79f2879ccee" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.999Z", + "updatedAt": "2025-12-05T15:21:44.048Z", "postProcessHash": "77dc02c6a2dda09ee7e27e8c8b6c9974f8c700d5e3fc9d9a5857aa16e47a4bc5" } }, @@ -28310,15 +28380,15 @@ "4877e91053b08c2c45734e5085ccf9117e8354554dd8460e2ec3e3afe7aa0ab7": { "1e4f5fb2eb3f3d09c80229402157ba0cccbf2f37d7521185e9cbb71109edeb84": { "ru": { - "updatedAt": "2025-12-04T20:16:56.987Z", + "updatedAt": "2025-12-05T15:21:44.037Z", "postProcessHash": "c416d8bbe6b0a14640ce093aaca194afac08b23afaa8a014e84781695a67e2cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.988Z", + "updatedAt": "2025-12-05T15:21:44.038Z", "postProcessHash": "ff50c271592348dfa10d95b4d2fa83784b90178a9865e6dcf8c7996829ea7358" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.986Z", + "updatedAt": "2025-12-05T15:21:44.036Z", "postProcessHash": "d8baabec471b1d32f76513bd2dff9b6de15793884ce64d64d293b113f1e10fab" } }, @@ -28334,15 +28404,15 @@ "a444951bd73cb75b037df1739eb17fc3c4057630058e2cd15b863d55feb1e497": { "be2b70c111bb68681c2eb58d9d87da824e86dac80806aaf1af31eb7e683ee46c": { "zh": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "a69a8cb01764a876458f03b69a78516212b48aaa83276822a31cbe95a9280447" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "f5b00425366d9e5f9f1d74bd931c71c3afdeb85f0fe83d98f4796346c102a5c4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "41a6112aac463dfc4595f0588fc535754fdabd82c8456928dba0310427926364" } } @@ -28350,15 +28420,15 @@ "b61feee503868b9ae36d297816fda3d2e834c0f1ae6f4deeefcdd9b66b895886": { "4ef342336cc701c4e8d32cd01c1302bec119023fab8a7c695a4baae3e097696f": { "zh": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.049Z", "postProcessHash": "897d22cdc95fedfb5bc831477c535f31271b80876df77597db415be5838b4fe8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "61c41b1a73941c06c3deeb890532ae7848b0430f64dbbb45e0d8c7076d999431" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.003Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "bd5bbeaad62d6e4229654b54bce7fb7f79bb7acc0a4df7c38d5a8e1e36fae921" } } @@ -28366,15 +28436,15 @@ "b2e9e9045947db36c00975d8bf16f27ba366df3f4c68a977779fbf5a78b77948": { "046cb0e8076cf8c0b6c68469e0acc454e928a24cf0dfeb0b83292ecb2957f821": { "zh": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "69f8c78a9dd7192f9cf0a1c5436633d814683918858fa04bb2f446ea9d679f7a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "4b6701c830b320543ff22211f68de3dcb9496b2ae82fd87a53da2108a258f77f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "50a15c131b000a30b244c4f99accb805712b621a48522d7106ef8d095399bfed" } } @@ -28382,15 +28452,15 @@ "a8580441e057aef43ff213b00764e321caa0062300adad449c1147c6a00554d7": { "803165c43e8eb2cc396419bba2e85a710e5a34fa1c1f8c024a4ef0cd296866fa": { "ru": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "f31c14c692c2d439870e2c7150c30d1c0a074c5b4fb93ca45f9bae4a87c3d2b9" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "30f3a8d9094d10e45dcb119b0a61e90ea813d4635d0115fd60c9791d38e94584" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "ffb811afaa4dfdf9543f7657d891b8b239a93d69a0e4e11bc9e7e696d0cc60c6" } } @@ -28398,15 +28468,15 @@ "581f0a6e4c0d192c8606c68934251365ad7ea4136bd5acf7058f58a76f6d5710": { "ee59cd484bdaa73a60bc061cc701d580ffd417f73fdcd689e3fdd983d9f475d2": { "zh": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "50c626934c76a76e2e75fa9d7c049c0df13b0b5725e77db2d25a13168fd3603f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "8107a19e4db88645849555abe6df6ec8e3ef104ac58f8840dbb8a407706a8628" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "bfe276699542536286e67e0c4110add1d5cecdca9ff9eb4090bb3dbde9e278c1" } } @@ -28414,15 +28484,15 @@ "8d435bf9e6c99e8e1a52f439de6bcbecd2baf3265ece4535053d1e1416ca45c2": { "0c0d01e2f586c0d713dccf1bdfde13a36570342ea30a52d1914566a1af56d594": { "ru": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "b5fdf0954a5691554dd1c793a5b4d719fcc7984c40ee13ec4f67410eab88c006" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "43b5ba9d9e7e98e549020b79dde6974e9828c53be7d59b16e36f99c5594da813" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "127f17089634bba7ad88f57be5d5a89bbe812d477de0e1f40a59c9dbcd2b000c" } } @@ -28430,15 +28500,15 @@ "ff15f334dd81c6f832484d8628568a040ff836d4668005abe916911afbffe911": { "5255a26915e56655751575c9c47141ed725215520f648de9ddb2650d95ec7c9d": { "ru": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "c60574c31a4505724187b7b5cad83eee803524309299521a30db0ebf8bd17aec" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "3d6724177214f5e12e01de50929a105a2af94385a9af23c66014280f323017dc" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "ae0eaf09bfb68236c84975e8362f394e74b2ded55ef62b036fe243b01ff40435" } } @@ -28446,15 +28516,15 @@ "84d3a07f6bb23015f78e31d1cc93e61eaf670a2dcee7c14342d97b32fb037866": { "e5b0ff50a5b4e2b593b51ad0606dd79a8525ea9ba7bc58e22bd24ad8c5a925cc": { "ru": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "07b6f56c0b906579b68fd0fd1a209a9c7877cf56147e377a2f16765f515d1293" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.107Z", "postProcessHash": "579f32273f08ca6cc55b0d613a1c72d20317a18e17b2e7511a0e12b1ac2e0566" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "aba8a8a188565b506f8100d134b363a24314ce75b612fd5ae33b8c2954d405e2" } } @@ -28462,15 +28532,15 @@ "54d5d67f63f4e8a40581478b2c6f0684322d03116d22c84c5ebed5934c483f47": { "04a1c4adbd60bd15811afb47b49c06837b0eb88b3c5f243bc17465571d25d192": { "ru": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "d218f953c26c5b85acae57c8b792f848e540d95a54ec75ebaeccaf5c959f27bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "3f3f40675eb3d2cdfdef0eabec565749eb3a9cf8823f2d4bad4b97b0f020b6fb" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "d6074fa42ba9268850aec20b31c2c5758215e6a3735326d3cb91c337fc550304" } } @@ -28489,15 +28559,15 @@ }, "44a2121418c10665853a536dedd7553eb6cfcbb6bb546a6e81e42e329c80cc55": { "zh": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "d6bda9e56bd388821fca08d697b62460ee2da3f7144750f7341c3da0ba109704" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "e967ecd99a86a93a95b860e26598f57e5b23e313b0c5b3ddc1ea558ff60c3d8a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "188be55915c40ada4125cd538e4ed34362e6f099e6d2ec846e272b53ab64805c" } } @@ -28505,15 +28575,15 @@ "e9c8787fbd5d3ab34de4fbc2069baaf46f6986970cc7b8edaffc49a991d61cf1": { "7b366931a91740ebcbb465a17f5142106ecae677c271c9b69d08fa475ef502a6": { "ru": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "4ead8ffe4624b732fbe4dede640fc270488bd4812504ee0cd5dc64edd8f8d184" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "60d29a44e24697d707c709e7df3c3f9a75047a9f9278eb33ed079c76cc363d51" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "978677d1584966a27761d4f01adcb26eb6b587cf52f014de9038a11c40d5591f" } } @@ -28521,15 +28591,15 @@ "14c0bbca8f7e350393ed679d410ca4b9cd58e0c5ee29885f7e65beae7f51c703": { "82258f2bbaceee1cc2b71c162991c1eb92c67498d494693cd385b4bbbb78fedf": { "zh": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "ae6c618166b1a02456839b9bf23203163673ed14963f4ac519ffe4a98d1be4d0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "2532ed3a72f32bd9238b9338740f6f2f40f1bd69d66c019bec758d2438f63850" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "8ff38c82865454afc973e19b0f425ffb1cfc8af48c150949242c6e38334ad5ea" } } @@ -28537,15 +28607,15 @@ "dd1f243e110cd8cd4c72fabd62923f7077ed63859ba2c578b1561943fa5490a9": { "38b8464001ddae6ec2a702908a9a44c1549405c54b818345c5ee01e6079833f1": { "ru": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "dfd988f9bd931d0f62129fc532f917b6063872e9db7ad418f6fd10456b767cd8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "1b51e44d2d6b2b3b520e9f9cab02bed1e37e7741d083185ba87232f90841282a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "da1985256a75ae72157e2fc4ca3bf9b061c57e073b251534027a7bb848495691" } } @@ -28553,15 +28623,15 @@ "ba14369199fbec0937cc2e6400083d328a65fa21e4191586d4474ff60d50b27a": { "687b275c30319ae8712f2bb22a713be7698df9bf60e3f0a3a92687b0ad5813e5": { "zh": { - "updatedAt": "2025-12-04T20:16:57.050Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "c8d9954849548a3263e9b0eb80061e7d4693c67e20195e446dda88803a55f4d5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "87108a83b9186570711f4b9d3511971bfd4b6e9db4b994af38c60d7df0ef54b9" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "191d52b5d09ba978ab40b360d705b79e405e9e922b3819b2880923ebeeb1a806" } } @@ -28569,15 +28639,15 @@ "0aefd7962edb78c98f3d45305d81752ebb2eaf0195c75d6a1cd6e7ad0ef5617a": { "5d1d0d81a87bc16246cc6d195a4d9c9f3090b00692a1dcfb3dd44b533128b6dc": { "ru": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "25a4d5a1ba038139d8a58c140bd372faf7ee59328c30058d47d051ce6b487902" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "d9c6b347d5ee84b8a02f64c39d37e1b8d26d18fe687b6f68b91296cca384e5f4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "cfa04f69e3ac27506e0d411b8e1ca17c6b3edf6dc406d6909b5d933d2d8ae94c" } } @@ -28585,15 +28655,15 @@ "6b0a1864f6fd70f19415c4e085caeeff45b83244daed33758454b88d9859c692": { "ecc79a94c617ae9c2438b3b427bea3004cc3f1e8a3f90157b36f8157166a99c0": { "ru": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "7328e13acaae794a00686895198fe25cfe5eb067f892c749f14f3899019cbe8f" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "2cbfcd6a3a217c2df469624b3c932378563e2bf11ca3e6192c22d8bdad69eb17" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "5edb8c427f4061c4bf532253e23ff06bb241dea7f56f992c9ac0ae9894611a72" } } @@ -28601,15 +28671,15 @@ "543d200284e9587853538717503646bf5a945bb43ccdb3b059dbf4eac4c1219f": { "54eb6cb69d7901f33c8b60f1ebf53444695ba214c41ecd088af34c6dde0d4e44": { "ru": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "09a774cec364865b453196c440ec674f37c8819f6e6e3299646b87a9b8cccd1d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "18300940bd3fbe0bce544b3433d34f143c978387e6c622e4704209dd63c3202e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "d5784285e90f51c5e6d51300f6404fd3b1d4add13a1906de20009df03ec7a23c" } } @@ -28617,15 +28687,15 @@ "fb3d54543e5565bc4305346ef7c2d5312674405acb6e193ffaf4fb30ddd7ce71": { "df9135ddc19fc1bbbb29d708bd2c3afbd621e4a67a544ede4538a80aa5b420b7": { "zh": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "d4e168bc9ba3c7299b663a8c967d8f663174e0d8101eb437e3f876f5f56a82aa" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.127Z", "postProcessHash": "dc9dec5325ec3b560c03ebb60dfcb69614acd3f1defde76e30af6e73dffe845a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "0428993b2a0635368d8d3708970e2d2625a646297617317fedf5f74acf530001" } } @@ -28633,15 +28703,15 @@ "14b4676b953c664afb277f933e119c8da2f742590c1a9a4bb7b2beee22a7eb7c": { "5ee021b8f49ccf1b18d5dd6f94a9b7418709365c4195a6b0854ae20f5132dd10": { "ru": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "f7d3aea7e4adb0a83741c09f20eeb272ed66eb3ab09bf033773ae75e9dca8d83" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "322b9afc639a9106704da961eae5e243afcd2081ba6a9cf78c6a96da5e9a152e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "f3d9410444da9ef0d3eac52ca588ad510152ca37a30a3077dabd32c7e3dac7a0" } } @@ -28649,15 +28719,15 @@ "0f67bde502826e1dba901c267e553e40b45a88ea2514fac35224b3011c9eee95": { "40ccc189c309d81655c42b58d6550569ed8e72b0cd53cc36991d1ab17eeb62a2": { "ru": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "333599dc00bf0ed5eaa17824b51287ee845207e8952815a17db448d63e9e7e4c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "8933570660f6547d74908b107d4fd178e63f1c1b44ce64193cddefecafc5ba04" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "ffeb0d89b04c883c01c798c5c901a15dc5addccdea6bfceeb6b9f47b7bb2e713" } } @@ -28665,15 +28735,15 @@ "93a056e5b771b1f20f3660dfb370f302960d593ccff14a5684b961c760cac61a": { "b34875547efada966d6f58a27a70b1a17213f7251649cd70a29b9fcfe4aeecfe": { "ru": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "8fa36fc7b6781f18ea683d84f55e3c9cb77526c7a5a8450ba81e3a4361a069ea" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "569971bdf74c2ad9b5664b23a720d68ce2429d66f170ac4259d8bbd15c6826cd" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "d3a962ed96c2dc442dea308be94850e0805661c3eb6bbeedaf83ce49e38119ce" } } @@ -28681,15 +28751,15 @@ "ebc5db761ec12b7516bddcdbb93d868ef5c7d1458f56a4288fab25b5e45a980e": { "e20f9f94eb03e49c98c43e022936ac730a22ccaa64a4911703f457858a10f672": { "ru": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "343dfcad413c71040fefbd674aefe668766405519d9e0fa38c00675d72fca7be" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "90820c9820c1c014f58535dd4658a4873488a2c657847aa99b35978254a5a72d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "1759f76c0922f45c12f0a7a0e6a42b3b0e76f1ea4cb7d77a59b823b79afd6e9e" } } @@ -28697,15 +28767,15 @@ "f016a1612cced253f74884a4791ce47126fba584f3ee773967310982b7597b83": { "cc687fc17daeeb33c7c5bef1a2bc7ce51ba437f92c4354369ab58a024c2123b9": { "ru": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "6a5618a14c838dcf5923004409d7e1f8ca812655a1cb031a9b1a26779e69a4bd" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "c7e64faae60d8f10709fe22b95cef0e05f7789874037f3b456094e010a62b97b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "e2f69896abe6a444c8c20a9d5f88d9effa159344247f5f2de38d20e8181668f0" } } @@ -28713,15 +28783,15 @@ "f657cce435f5bbd4c37d13d06e137048b8588d93820f3ee19d2b600ed82b6819": { "f4e41d0b3fe1c04866d1690f92f407974255a1b7b269dd34af873b60f54ecb09": { "ru": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "8c0214dd58224cfff2b7b1117bcdae1362d1f9f7cf1ae4cb3891e8367e01fb26" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "7729aa1914b3ae3ec6bde046f8562d1908bc2772e0696dfd0c1233d1972f3af5" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.097Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "524c0d09364249bac454cd7267ba2a9e7a79340cdfecbb81781a7d895c9eb8eb" } } @@ -28729,15 +28799,15 @@ "5a8a41312c127bc8ee51985dd35b7a34db3722502d9dd3b6517218f83ee15209": { "cdc27bc165065afbf272c456901edc7e818c1288e8bf98aa8115b3cc4184e430": { "ru": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "aaab8ea39002d0c440fc5827168d98bdd949cdb200a865f5749e238545956d98" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "cf32a26a11746b8e1fc32a47f449e7379c3aa3c4f21b94569139b2d8fdc4d84b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "122e49ed8886133e84ce86d7a7fb826d78e948ba0d10f27affe3d84fda64aa58" } } @@ -28745,15 +28815,15 @@ "bb301384e711a26eac5ab620725ba3651e9a050418e5c4b03409244a6916096a": { "fa37176654ae0b31692c4310f41376cac060e1fac5de1cd5fa4a6795dccc88be": { "ru": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "fa5471ff89c0226a38e50b999de92d42c1683d5883c57fed41822750f5c08a2b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "66f378585eba035adc97329975619f798d8d03c0c7308c6577a26d4086d156cc" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "f5d1cba45eda9a17dd97ce648afa7a47048f5247cbbb5589efa18b257d58103f" } } @@ -28761,15 +28831,15 @@ "be5b2c5f34f09aeff162abaf45ccf882807b091723c8992305ab5dd6d9d85255": { "a4494efc6991ad7d0de3d84b86e624697071ddfce8e39ebd42923fd6777c8531": { "zh": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "60c6f04bfec3891b311b6c98f310fe5bea538ceb93121b0908b1693775092c79" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "fa7f17ee6d18ea60185075cb5227ffa2b47976735734b1a15715589d333969ed" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "8619037edd0437b1205746861c21a460513f8e5c092fcb6d01fd73285becfd9f" } } @@ -28777,15 +28847,15 @@ "b7ac58ff02407e2eedc607e8ffaadc709667604b213c6400361a10c2a2c6e252": { "ae94f635f518e540a73bbd471cee47b91d539ed719fbffdaf358c667006c4bb0": { "zh": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "9198365aca422eb022abf08a160a409a8aacdd6df5907b72e87f0f22cc06ca11" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "8d1884e5b30236d65b1be1d05c476116cea395b4553cdfa3549aeb943fc51286" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "3339b3303898d39914a3587ccb9abf36df71d277730266f66d6895714b8083b7" } } @@ -28793,15 +28863,15 @@ "f2566c10efb98a7e07538653cda7cc2135c5c1aaaef306a48e8e753ebc662a1e": { "86c47ff8f3b3666e1a6b49b2c8302b448389e1e3b41ab3b1450e055082821549": { "zh": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "8c1816d77d3551c7d6dd5710ccc8274f66e5809dd3cea3606629893483ebfef7" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "c0defa7229fee6b27c2a2a3244e13cc4c0ed6f0f4c6f6605a86a70bf36b99648" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "96a408123b4168c543a77c179b015d8f620e6307650d53bdf90c2f19ec9ab2a9" } } @@ -28809,15 +28879,15 @@ "c3d6ae1d7c3ab47f1321484233d7e2d4c6960c431966f43a50c94da67e615da5": { "7fe2061b7ffe48c965db16b4f632dfa6a0cb32888881320b91a370311396c437": { "ru": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "68c99d929f252ea3754819bd8550b2a2a7794a65733dec05c2fb631087e62dce" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "0f45fa5978c715f5b70bac97a40700cdb702e95641146e734337da0665b66347" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "cbe51f81ff245663766792d694b95ee09dd8d09a492fed40eee4f9251ec512f5" } } @@ -28825,15 +28895,15 @@ "6f8f89ce13c70fe1235d08203ef798a559154950245f81065ab893d0e5c542e3": { "f96e0b809311db6c2baef6eea1807c7d62c21afafa50f43dcaed5dc333127e20": { "zh": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "ed9e3cf9f31df034560bdea315422808f234d9f9b3f28d82950b4b1f08cd6eb8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "d4e7c4f8edc510e1b92d0928a91c4688aede5e5a4e116a12437845e4e733b166" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "af42ac78de1b3ef4af093dcb3cab937585c253e6d5c6fffa8cc9537e39d3c8be" } } @@ -28841,15 +28911,15 @@ "857f78e82a54d7a2128693b3d739a16697e3d23a8ab3595b336d9da8d6d1d643": { "3fadea060a820d56c666c2cf5cdeb8e49e9c833dfa43de6b17bb735aecf7c763": { "ru": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "8d42b622db5275d19c8b2345622ed89f140fdf3c8dc21016e057ced32b953a8a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.104Z", "postProcessHash": "ae48f70ef7cd6be30bb28a567152140c98665d7b69810e4557151902877df6e6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "0fa1d64f7d00e47668b5c6ed702b5207ba1b593291d6965c23fe6a95a4d21ad7" } } @@ -28857,15 +28927,15 @@ "98f9d0cfd669fd1fa447820ed42dde75e265419fd66cf20c9292293dd4a825b7": { "ef840aa109bf499596594d13130b402a3f00f31d42de8569556571fe1c214cfc": { "ru": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "bd159b2a23c7f8c3497a7d329c4ea2ea4da4e350b1ddde5131a909664e590036" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "0a155db6dab1c70ab5658bf1841efacec4a7ee27ba36ceaba9bd014af7c9151f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "70f45a1ef0d746002c2acedc01b7520bac040b80837e2c05be635833b07ce05e" } } @@ -28873,15 +28943,15 @@ "0ccba8d2db72b1884bbc46c41967afaeff1aa84c34d44e471d4f0a6956691e16": { "94c625175686dfb070b11d461168883b7020c135e87e95dc215bd6a1888c5c54": { "ru": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "59bd1cb4c7bd530470c995b1e67c7dabdcf6213fb83ad1d543daf94722afcb69" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "38c35b4d3cca10d0853f982094bffdd938b92744c668ee76c54a1787b62b291c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.065Z", + "updatedAt": "2025-12-05T15:21:44.087Z", "postProcessHash": "dcb769031d0d88c31280de23e339ec94a17a9909c7584b9a1c2a904e2777a343" } } @@ -28889,15 +28959,15 @@ "c3624723e67987627989b19cf8887d0607b1cfe3b554bdb9b1a4afe0241fb796": { "394ce4286ff89f65fa6b50578d4a94d4eaf540883591642f71afb2825984bad3": { "zh": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "a66cd8437683b26f7af6e64d619aabd6068a06add94b6fd451cb715efdb1c2f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "c5c0b3b4e4ca5818f4374dc058baaa8104f9fda8c2649e574f9970deaec7bd1b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.003Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "3af582fd0bd98f1c13b20198470f199d3d7217b42d7bfa57ed3d1a32b3b7b0aa" } } @@ -28905,15 +28975,15 @@ "3f0eaac3f28ba8b2234626f11889b6f51135f12393d659a739adcfe6bb3acaee": { "b93542926f20e8394566dc0612022ddaf2939a3fdd8e5ae25b2ba31cb94de320": { "zh": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "0e031ad4f20b9cbdf52611ad1fc97d0490095f64cf9bee205cae5dd123428d3c" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "bf7a090c88fc25b1be905f3362b42619b3c968fac506f55e335238ba09e63dbe" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "76517663c1b5e21fe516f402de4b06334a38c51059015c4b6d06b8b251767fc5" } } @@ -28921,15 +28991,15 @@ "101a525d5bb936cf99909df3325b1ed7ac0b685ee9889c47f517b4323eba52db": { "fead6f3f426b4d09ad7d10dd975751d5778ec0e92cce0f8ec88ce01950911970": { "zh": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "a66cd8437683b26f7af6e64d619aabd6068a06add94b6fd451cb715efdb1c2f7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "7c771e7995d98b5339ba5b4491ecc81ed23ca94fc99827cae5103402b977ec9a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "3af582fd0bd98f1c13b20198470f199d3d7217b42d7bfa57ed3d1a32b3b7b0aa" } } @@ -28937,15 +29007,15 @@ "6bc2d77e531374ac95719fbbe878154b867b374b36d2f4e8485da1fa3a3820c6": { "d33c2c466bd3a7370a079c2bfd8752318550c559a12158bcc434cabdaec31040": { "zh": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "97d63ebbe33eacb75318984f1bb96c5deb2efab5476d64cd29a50d40ad17119b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "21f5b073027d0a295a20551badaa77de4bb3cb364434c2320e6f222f61e6fbea" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.096Z", "postProcessHash": "14953c1f212d148bc7b7dc2d3994f16f195b190f0ee1a6321cdb983ff93c32ed" } } @@ -28953,15 +29023,15 @@ "43bdb45dd285638fe98614183eaf90571d4631d1e726c04b99db3c3faa08af32": { "4ba84b799e9b0e8d9b223c47606c717ef7d6ddd565986bc7b238eb33165681f5": { "ru": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "061bbbdef7b4442bb86b67d55ec21cec63215c4283cfac8c7cf7744e58f0c06a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "a8265952d50ebcfdc89789be02d25b8e6fd34cc838316ac41eaacf191c8f1c7e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.088Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "a25eb0c3381a78811592f7adf2c919fe3de5884654029b3932871920950b1114" } } @@ -28969,15 +29039,15 @@ "fbc3d920f0695e12f892f5ecdcfa4bc88cf0bb49809defb12c39db77838dee89": { "505618685d75d6489d64b01bd2297e8b2e4ce44b92900a9edcf4d95a5eebb475": { "ru": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "71584fd55158787ba134cbb8d3a0c3613fb8627d2740bffb9b96c977dc3ed2de" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "9f9ab179d137856b44f914b9f1952d53f661c975160f1af482bbf8f15595bba4" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "6b37e8d88ff04277cda84645346cffc2e4efbaec3a1127dc857f68a3f9f2f387" } } @@ -28985,15 +29055,15 @@ "67e6b09bfe484e48895cf047e4050cb1f08398f2f779e27c7acf3ff69d9c5e8d": { "7b905336c6f753917b4e006f53075b8ba27cb105a18643882989eab9b01e424f": { "ru": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "492d0f5d8d0aaf468917753fb9f24560fec8ed2b2bf0cd4a22c35bb08165cc5f" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "74c7e38513e5e670975cf582e5e4335ce7795bd2dcdce704e81dc8eca802e45b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "f53d5bde6532d08d476d40468e4ed0f725e2d2c9b51b7a93f6628213e3fbb99d" } } @@ -29001,15 +29071,15 @@ "736363d0859d8864ef39d3c2b3906d5ee9e8520ec754a5daaa253102669dbfe3": { "4c2ab8cb337c681d306ce35ffbf49cc6acb8d68b78b1f946b2757bbefd07e898": { "zh": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "9a818e8efcf144aed66c1b1f400b3420628916ac5a200a0980347f5bfe80824d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "0dd508fc178a876624b3a6ee87cc3dce094bf54a591f560039c6ce4956a5ab0d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "6103f6733c2182c6a52501f1695ed0c67a515b0d263b5d4530942613f2b88d1b" } } @@ -29017,15 +29087,15 @@ "f9122446fb42667abd4d27483874244c927449544300488e6be5e19f0f5c5196": { "fc2f22b778e933aded713c592fc3c7f36b5925e3b1dddf870b9f00d0d86f3078": { "ru": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "caa3c48541fe7aaf1918b518972ba1174ba7aa83280c337617c2020bf250cb34" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "b59296574bb970fdb8ce9d451e4416985b7ad291ff333397defd7ebe7b53709b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.075Z", + "updatedAt": "2025-12-05T15:21:44.097Z", "postProcessHash": "7ab50d47c3d979a4e3c4b017a8a567adc7540b2a6ea1300ebe42604e657c5154" } } @@ -29033,15 +29103,15 @@ "235b40c46d2961005ce3297b1e97ffe8edc82de828ff56822b9e32359796e9a9": { "c5ef2e83c2e151559f9dd5524371a9d5b3447d2d1d74ee4818d09823d6de408d": { "zh": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "519f0f8085c6634af570c30a243224affddd15b814021513cc2a5008a6659332" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "572d5ed8dc3508cfda34ba0960889ddf1f165b5cd4cc2dbab076864f1e407c77" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "8a8fa81e297ebd605e32db3a795d8ff577af712ba31a991b09f3760322f76400" } } @@ -29049,15 +29119,15 @@ "462cdde9af0d98973a369e372516b17fe788292eab3b5888894d73e9cbffb6cd": { "d745f7b346b2c1bf0d164fbdb236d9160be09038c4c9ffee5d2fe13aaa441118": { "zh": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "de63337cd3cbaa8841cd41506eaa864fcaec48cec5d74792f5ecf4c5e8ad5e5d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "f5f72bc47f30e9d554030fbf022a7dc4e63babb4dff5880b006b4c8f2b1e24c4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "2f3ee22a3a89cb53a24567da1aa1d4557cb714c57210a9f0fedd825a5c51118b" } } @@ -29065,15 +29135,15 @@ "710ad55c0afad6985a560346d1622540e29d92eadcee6064888e0cacbfeda384": { "54f1a9cd08afe76cfdeea722af528c57303609afdc34748e3328885c439ce7bf": { "ru": { - "updatedAt": "2025-12-04T20:16:57.003Z", + "updatedAt": "2025-12-05T15:21:44.053Z", "postProcessHash": "fdd83de4abe81a4ed4bb122a604e23067c32dffcd83dba38657e520419b3ae3e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "d35efe2e0066999e95c6338a2d6836d4ecc51a7416f08e3412a4befa518da96f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "b12595353bc9683f72c5322d26ffdf1c3fb19f79e2d1da0b1ef02686a14bebc4" } } @@ -29081,15 +29151,15 @@ "0fb5c4c89db0cb83f6bd1cdef9a19071c391929cb24660f2f66de45b10763ba3": { "23aae78ddaf4de455a27e50918cb30da7db97d56977cd4dbe8df7b2e1cd49fc4": { "ru": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.046Z", "postProcessHash": "04191fe3fee59a776d496d7a2ccc8c8402fc28c0e5df8dcbebc0ae1f63933d1a" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "7ddf021182820cb62a8d1a7b6d5f2e40827ccf8e55664b97716aa90a96208bcc" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "89bd734baf8aba3cf4c713e0df328b7f6a39b086b4811cd4df5760d775952e02" } } @@ -29097,15 +29167,15 @@ "45c65db56b87943c8cc881cc85fe81f875a263a988b758817095b2448ebeab1c": { "ef02a49eb6596c142aa773eb78cf22212510b6f1bb9809d02c025e4d34ab82d7": { "zh": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "4804ad65fb57bdb9aae2087131d4f787992f6dccc19a450e62271cfa5c710c08" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.050Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "30ce8b03c55a5a9b0353c2e07d37c4fb5b4a099916c00a6611284da91756faea" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "9d7cdeabcb3f07fa3fce79db2fc40799c79179bae0f2e83b3ce69ae1e3c3aa11" } } @@ -29113,15 +29183,15 @@ "b58d28384b38660cb355b5217eb858f4bc83ad7155278c40ae4663b230c74fd8": { "f5263d91719fc0aa0d4dc51eba8629ecf707553c3c6fd5144e8f1ca748775d75": { "zh": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "cdf9dce53ddaf9dba1e246859b599821a0ef153ab4c5acd68408082637706b2d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.041Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "ceac3d8cff8871746ae78dacf2ff3d4af6e139977fd74cff746880ff3e14b226" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.072Z", "postProcessHash": "a7c30d29fcbdf3fd2b581e7fa039d2ea8d752b662b5fb2f5b3078dc67be51d6c" } } @@ -29129,15 +29199,15 @@ "8d7c4ba98d5f5bbc6e42b2591da7f2b20f246b15396b0ab2075839fef18b5697": { "157c626f8a13dd4dc09e8313f1bf33c397d35bf379c354eb9d973e648827bef2": { "zh": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "634870082c95d1522b45f62a7857160bdc67886b683879bb41d0c890fd99adf8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "2fa50f3fc2507386389b9a857e9e5ad2630e09d9fe5d9c2b57b28a3bc7025273" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "86f4bc498b5d9b8ee1dd49a68754613cb4a82ebe9517132cb39e331dfa168506" } } @@ -29145,15 +29215,15 @@ "4d0528f558f80f4881563682077f001ad134becf467e305c86fc84dd7697b089": { "42d9d42562a4f705923103bf4a3b7173addf1f1dd5adc163a37dbd936aa49889": { "ru": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "5459db3b31761f3ca76ac094a0185198c84ad1144c88192a14e656f78307d20e" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "42a1736ec7187aa3cafff4334d578962e384feb006b9bf55434a01547cebf836" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "fb96153f83493290a1266b006f0bb1e762a46d537480eb58a9d879e8c5b2375a" } } @@ -29161,15 +29231,15 @@ "a5d93e69125f512b3e1f00266e424585b846115536039af5f58cae578c2829e3": { "ecacb8f11638f831b9c20da459d9a74e871ae3943e5721f34aba4985e3a9d9eb": { "zh": { - "updatedAt": "2025-12-04T20:16:57.023Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "f2d38856c09a7f650086f8fda185c29472cc15fca22e4cc6a7d5ca0bf79be929" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "61416b99de4acf86a88713bfba1053e4128c12050492982a6a97df1d26acdd1e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.050Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "7bfb420411dd27ed774c6384024f85f04b9d1c9f2c493bb98fecb28cd0e2ac5b" } } @@ -29177,15 +29247,15 @@ "5bb6610775ffe555ff909d1e5c0cb423ff2c15c044240729c60b0ebe39bbca30": { "d2a5526c06779a9c79d3b4da1256e4feac0aed57c3171d923a4e08990a784158": { "ru": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "896699c2a91c0403f0c75aff2e8e39126d295ad1fc5ed6b429c59ec2763b27df" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "d96c713f32d024be1339439e06ae2058473d9435581f4b05eb4e17e7b481cf6e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "d4926dd360f6873412aa0cbd75360ab853ef071498311d02bda96b1526beff10" } } @@ -29193,15 +29263,15 @@ "2c61f03a4fe808580cff4e8aa1a6939d84eb12b9a43724b98bab278d020bb194": { "4158e73583a46ee61d2835723076f3fd91bdae28b86fb6f4d6ab8870a8146937": { "ru": { - "updatedAt": "2025-12-04T20:16:57.024Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "bb27c0e8977f8883fc2bacb1f2138b7e10bb5a6de31b1dacded084da94bc0316" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.022Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "786adbbb891856df3581844d21e00478e36dfbf842f3c248032df20ecb3f9680" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "fe25581377d35b8251e8905f61193ae88841991ce7250353d8ab0b3e5c1118df" } } @@ -29209,15 +29279,15 @@ "8fb2e5e5d61ff6b4830012f315c75ccd22ef6f64c4ee7685c2cd3215aabfe79d": { "c393d1a8b5995f5444564d2d762f97bb4815829fdfb74c4739bd527681d89cee": { "zh": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "fce2531e47b053738c341a053a4f1d5a7a259fa5416e8faa549949d51b616f30" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "d5cab276a8a68815b617467166bae5efa3fd5a25c8a8a98dde613df12f0166f6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "7e615d0aae97110e6a8b2113e47faea783e1149ada9e3db30dcdcfada708785d" } } @@ -29225,15 +29295,15 @@ "1a54cbb6d0259ab1c0a7866c16289a6efb190e3d138af3035a9b892ce04da57d": { "35875b5d8355a345f2dea01781d4a86cccffca2873f0f1c8151df687559a6ee2": { "ru": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "d2834ccf8d420fcb7db1791af2c366819503f1cae26bb00ff87acf9844376d8a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "353653f590f914f0e36c71ea1015177fa6319fb43e1990c3375afba58d480b19" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "2b2d57a64e6e26bc189f091a8ddf381e8e68492f32a6fbb76c295d67f2d91412" } } @@ -29241,15 +29311,15 @@ "c5c96baff0600024d6bbb610d9cae24faf4a22e4f54fbcc16da6eea5801d716e": { "75a61fac01b9a0c4dc6479a31dfe0ccf020bf8c906301ce66ddb70adc32e62a1": { "ru": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "60de08b9e73291dc6c1821537073c223774439ffb9ce26854d2a030e8c02c31a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "fbddc0aab46e0e38e842a90822d1797618d82eb5afc9e1d022e431d9a547fbef" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "2c2835f42eb3989f137eb031dd860631073f7b6eb88cdc373a3ba01593d5b27f" } } @@ -29257,15 +29327,15 @@ "be5b364ee73eb51fe865a890d10236c2eae4146ef19afc9755721c110139579f": { "e55f970b0157d55548b665f2a95fc93e3875eadfb7a385687eb591b21d592f97": { "zh": { - "updatedAt": "2025-12-04T20:16:57.008Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "e56c845f189f57f778d546fd7b2102b9ed58a2c25d9c8e0dbb92151e3ba279a7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "aebd0815e50ec9585a3367a1ef158aaefb63ebb42803f65547dbe770a4339bf9" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.011Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "6351a2fe0f0e41d9b085dad38a029886e4ef6d20c99581d6fdc43ba41b92b195" } } @@ -29273,15 +29343,15 @@ "4449f60ff9c38182ac376f1ec8ad4f5c377a1d189bf6b8bd0b3f294437ebd1a5": { "b4657b26faf846e566012308f61103c34dbe662b80add135f7d0720222c74ea5": { "zh": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "8073a43fae69ede3a1ae51b2be353a2bf6836ee6bc9657c6471282179c661f61" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "5eb68f4888d23e43f2a29ca42ac2029ee1873a27b20ea38b669d7c7872cfdd03" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "2eea3a7779228eb500f0b41920165c8dc1bf404adf8e44b1365663b944211de5" } } @@ -29289,15 +29359,15 @@ "809f990c2475c0e585de5f7677ad5e69d2c480395ed833dfa2922067881e3350": { "1534d3d5fab78c52b36945dc4157e83845141abc6b963eed5bb780b27e5e23e2": { "zh": { - "updatedAt": "2025-12-04T20:16:57.003Z", + "updatedAt": "2025-12-05T15:21:44.053Z", "postProcessHash": "304d553f81d8f32b45f191a97f030e329dec694c341cebf2f8d4cc6081dfb897" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.009Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "632ec9152907e487aa044775fdfeb4adea2ef628229fbeb0ec7d5111aac09d97" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.010Z", + "updatedAt": "2025-12-05T15:21:44.059Z", "postProcessHash": "c4ad0bd0aae172ef66ba1eed1dc722613f248c6cc00edca869716b93af48db9b" } } @@ -29305,15 +29375,15 @@ "8184344ce9b79685863100b25d75f907caba31a6f26b64caf68881e98ea41913": { "8fe3205e82057a29dc0d8aaa2e33ec896cd304ef416bcfb7264bf8da1fbaaa77": { "zh": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "03a5f5a40f8dc3934220239ca07ac797f8920bb49158151891f1bc9ce44975cd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "d2e64b9ff8d18e67bf0e1b1836e9f5cd5bf7b8d5bf5ec71314aefb01d386f5ad" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.098Z", + "updatedAt": "2025-12-05T15:21:44.126Z", "postProcessHash": "eed284bc3b5f8f5a17ec5f24a1394fdf2dbc3bfd2df7f75f7edb55b647ce0162" } } @@ -29321,15 +29391,15 @@ "0c03db74eb0923183ef12e6e957c01e6d8255d17051d0474807d2dfe15494516": { "8d293de1b22941bb10fe562a4e677c7c7472f7d882ef5aadce39c9033dabb63f": { "zh": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "73d55400f41032841cca8bcfbd887d6421af028cf505d45ff03338f36f727988" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "40468e117ddc0eca1aa83dca340adb06436325664cd746635eff46ea5f1092f6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "64e00eca368f5b1c24f57423cb65e33e9cda41cc4d35a0422b80e06c226dfd62" } } @@ -29337,15 +29407,15 @@ "a1c0860ae09b803ff5ed9c9a0c438bd6b2800982753e32c40c910f32979fca1d": { "48ad888591a6dabb0298398a02a18436095ab5c603d344f9156ff7e7ccdb28ae": { "zh": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "792d1caba3a0258d816ae731fa188a4112af233ef30eb0ade0b591db73f76271" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "2e1542763054cf7a72ec74976e88e4243e6d66d200e85ef26acc31b6bc656946" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "25dd126d05d40e6d16e0aaaf096cf838a65034b4f00e945e2d7060079be677a8" } } @@ -29353,15 +29423,15 @@ "86a43cc92512a5c918f3385b494d3169c660273f3661eb8dafdc49055b720698": { "60b60a413c29322369042c265eefb3d9aa56d79f8c71fe607cd1ac9eeb60e393": { "zh": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "ded3161d5311eaee733d7805cd602dbf10699324922d3a0022f76fc063a926e9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "3531ba8b2d1f83b7281805e2e08d7f6d69e5998385d3a5ca0050f885a9594b48" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "071f842f3610436b701fd6b38bd298de096c98654e5a89031c2827a5c22f7738" } } @@ -29369,15 +29439,15 @@ "036300ef3b2f4858d6615f663b03ca7a594a026409e0fe0ca41882745b846afc": { "1ad91e7f68dcee666ce7f7d2260270095678629c6052b5b84bf68dc6d54020c4": { "ru": { - "updatedAt": "2025-12-04T20:16:57.010Z", + "updatedAt": "2025-12-05T15:21:44.059Z", "postProcessHash": "3c2888d7a09e1627ba18e35a9310b6818aa6febecebe1c99265aa6699bee9ec6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.010Z", + "updatedAt": "2025-12-05T15:21:44.059Z", "postProcessHash": "de04856dad3d8bc67d26f47fd7e33db5e0730335c39fd675e1b193ef9dc5cadf" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.009Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "83f08dfcd635bcf146e52a19e0188e81904d73447650c5799a628e1f6548834f" } } @@ -29385,15 +29455,15 @@ "586898784b2000de57eead4932f64db3ae6900471f06aee84b184f3bf8efdf12": { "9c727f0fda6cea3eb8d9add0737f40fd7c2a246e0b779e6a2ea7559741c3af0b": { "zh": { - "updatedAt": "2025-12-04T20:16:57.004Z", + "updatedAt": "2025-12-05T15:21:44.053Z", "postProcessHash": "55daf6e6e1636043971af6d76ef01f5ce2a1c834320168eefcd3f636da6b9fe7" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.011Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "2a93c2b6162732704de3342ed51f84e6da676ed91b6b248751f2802b84540b09" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.004Z", + "updatedAt": "2025-12-05T15:21:44.053Z", "postProcessHash": "9cf4cc880cf7f0fcd8a1fd165aa8baa1ce1e12e2aa8f14fcdef93927c4e3b6cb" } } @@ -29412,15 +29482,15 @@ }, "5962997760b38b2cb309d629f1dcf48964113a84f277bdc508e98c8bad0fa965": { "zh": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "e57be5a38a35056e0731c1c24daadd1eadf503373a393ec690f196c7d1cab9ae" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.071Z", "postProcessHash": "5d2c2c3ea0ac2596c96eab4ad2d20d1a72a42fe6d80985d5544abdf8ab2259ad" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.071Z", "postProcessHash": "6def404d595e172f0aa922586d045d28eb0f06e23225e801949ed59e974fee7e" } } @@ -29428,15 +29498,15 @@ "e79b575c27312875f3076748b2d4de3bfd78216748310c894e316b5c6b915aa6": { "7a7699a4379151bff326d63b86c2e5f5b0c36a7de56625710bbef094f9488e4d": { "zh": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "3d54240fe31b763edad2e0363a2da20ca7d0492cd7987091c22c8f1621b1f19a" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "18246fac39c18429893bfabf32cf0c8993b4a61c6236d5bb4e6f97459582422b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "2dd83f5a4c2ce5580f27d2ebbfecf5cf162227dac9a63a831b43a22f109ac7a9" } } @@ -29444,15 +29514,15 @@ "c74acd4897e7b7ee4b2df0bff72a35b3b8acbfe976eaa8215f2fcfc031f94ccf": { "720c459362ca150d27eb7701d7e48ce41817e1142bf4ebb8b4e2a87705715ada": { "ru": { - "updatedAt": "2025-12-04T20:16:57.021Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "1b4e6cda6189456452254857006b4403498ef4b666c02b1af1328a0022cc1cac" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "4b6198ef3035f486e26a5153cdbf0c1f9f3fe99a2e51dde5e6b6512898a6806a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.034Z", + "updatedAt": "2025-12-05T15:21:44.067Z", "postProcessHash": "6767b83b8b66f340b28a7000993c89ea59d8a039e5bcc60676b2e2de3a5bb9c3" } } @@ -29460,15 +29530,15 @@ "503329b0d4a76ca6bed899e9672f8b552300a0c87af309f4216ae734b9861fd2": { "675e12d63a5beef8dc9c071b80bc5249b9dc320e87ed8e63ab1dba75742d1c49": { "zh": { - "updatedAt": "2025-12-04T20:16:57.021Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "b704c606b356f3a171fba70c6ce71bc5c099843b54d30e01dd00ac95741bdb85" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.022Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "2d93877d4177e77fb15d317a85a027c58ac401aa16a3a0e0d36b8d7086cb3b83" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.022Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "5201ebeebeb0f38fad123dec53571d050f556a411b01764acc191901d2166595" } } @@ -29476,15 +29546,15 @@ "90f0e15a1b59f060a6f0f952d87af6522508eab261e93dd1ff9d2f135297bc7b": { "b323a03a283828a8dd2bdb1310eabc167e779d51e7e53bc928a0c3475022c6ed": { "zh": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.100Z", "postProcessHash": "af197fd421aad318b5acfc40e94f1353338a16286ce2b7940867b5014bebc20c" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "ecdd44f368cab2d6b3163104185a7ec046bc8e500863629786ec0844ac478849" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "5ebd0ae88693b6ace149c505ce402968900d3041055c87ce07b329fb941a2dcf" } } @@ -29492,15 +29562,15 @@ "e1777c4c468ab2516b850e57b6f6bc5a611e182371ea737b4494074aa581da40": { "c93f95ca1da1b0eee11a33d644aec21a8b55b826129592b9eba161908812b369": { "ru": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "836ee4e7f66847d750737872d9d4a59991e855597fbc8e3bd71bf78abec1c59b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "a9b5953af0eb576e8ccd31667226ac22e5dc58fbf9a8b1ffc47658b1f929d2b6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "4ad47bfdc7bcdbcdece3681127236bbd12268bb44b79e46724f82eeecd344f11" } } @@ -29508,15 +29578,15 @@ "64e0092d1db56a02e6a5bca8f0b5056cf1f521390ec3925bb3e50df81aa7ac85": { "9a5dd87bf7b220294da0bc415b255ea64029a767c79b1e6a895b5d3d57801055": { "zh": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "6705213bb38bb5cebc1c31867a4fb1a8ac67499ddc647d49a75b98258dea0828" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "c0424f2e2a53b60e9ff3116e0f534d15b1c7ce7d255c701b96fcdcec4890c2c6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "14f815cddbeb52ab3431dc67df5448f3427371ee5a0030625cea835f6ec3961f" } } @@ -29524,15 +29594,15 @@ "d012409948884982e8bdf1e450327b34af2546383469b4fd132b635459e6f305": { "95aa9403608d32399c22cc7fc263d9ab30a605eea3844947170400f89d7e71d1": { "ru": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "2943af782b90e30c378c93d5a5f7a78c15d59e0ac6a8c5a8411ed22d9a3d56bc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "f27c0c2cbf8ea5537615adc29303017de4f60a5a4e9ace846574deb87dd3e36b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "565173b9963589c92d99543cdde600cc8e43f420fe4f56d8f9bf2208312684d9" } } @@ -29540,15 +29610,15 @@ "00174dfb396f321fadf5749558a865565bf4dae8cc5d6fa8f305ef68a7f1c6b2": { "d2f79ac832b7a2d7aaa410633fb001b9e95f4660cc65da2bdbe34ab52df0894a": { "ru": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "a1273037a41f448e543a49cc6b332dcdbdaa76e4508491ee3da2a5c2167f6c54" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "3884ace469a387c8b6ac18e67d74191724952ebc944ff8743ce8561ae5b26bc4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "695036bf7e01eeee7d215530e63fc8ddaacffc258d6ea3f9d4f62d2125600d51" } } @@ -29556,15 +29626,15 @@ "774db99efcf187fd85ea22f0f07cfb6cf5fb6cc68251b2913b976e914e74a951": { "cc59400f1e7b6cc7c2ce5902dae7bd2a641bff181193f2f3f16b2cc24b094add": { "zh": { - "updatedAt": "2025-12-04T20:16:57.028Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "8906063e9e65110a81c13e0b9c9d2e387932429614545c441dfd986b3d5e3ebe" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.037Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "27ee50bd3c1244c541a78248e2ae5bba4ed1718c59c5eae4a9500df066c0aefa" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.021Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "7021bcca7d62ee663124e800241dbcb400244493f00cc139410d912657fc36d2" } } @@ -29572,15 +29642,15 @@ "4da7a2a8dcc0e8244d17285e749f8d2f66e7c939010b06d93f9506b5e0443395": { "5d4659d3e6e8c514f951b33a0e387bbd5340061d0fa6ede0b8d63a27a889570a": { "zh": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "4f6e6c2465dcb5e419cfb4490536a5e632782fa47282d656d2cc41f1a0173de0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "af43641fbb074d300c972b709809ed688e65ec09542fe184fd5297f1a0367746" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "7c5b8ba9f23aaf091dc52813bddf19fbfb93d209eee0c1e6613c74cd0a30f883" } } @@ -29588,15 +29658,15 @@ "8a9dc951991e7089ccd4e1eedd2df9ce190a4888a63408845057666bec28693d": { "3ea6e01fdab2aaecd5561d6a3738320c4c955d0937ec5157cb9ac2e69e3fa30b": { "ru": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "525b1b5904bd3a4f1ede52fea7480e84df3a895b478e17d8501531e38f4ba0bb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "1bd517214395f0da20913a0edf5248fdcdd6177ded8d65d15996da8f3678e9e4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.069Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "5ac84e9d462918541c5dda231eb1f52b194d0965af30acd1b0f408126ccbc350" } } @@ -29604,15 +29674,15 @@ "e0416bafda40f9b0abd3190774a6d8b8b6fecab49f9676913bac6e5e053b382e": { "aa3e533069b101ec06bf29cb5c1935709f54b0a36858f4636f093f238b277647": { "zh": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "6654fea34bc9331452f1f41f95104e4eed60a2895b61576c1e18c6de058c5261" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "7b6402f41ca1c97095c4db7170bc95383e5618534977b9876f767883e3da27c9" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "85db98062773c3ced6f8d4c9d920d46b6af70c01ebfc2f063b2897538f311ce0" } } @@ -29620,15 +29690,15 @@ "6bec8fb9d627bbc8d58479b40c1ff2e2105bf84d0574e514ce2d4a909b35d280": { "9892fa9d4ee47152dab0a70403163228e13146e378a484ac01ec35395c96a186": { "zh": { - "updatedAt": "2025-12-04T20:16:57.081Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "3f97f5ce3a5135a571368b8ec9dfc44acfe51f8829295ae38a0216ebe2c79852" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "340ef0ab5180da2ea399e1184659d15f4d800815ffcf1760699f636c136b4d75" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.083Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "6b47d544d572cac89965bbe6eca8b89de878792837d01762c3545866eac862a7" } } @@ -29636,15 +29706,15 @@ "d600a99ead8b0977fbdf31462c610327f9207f07a47047e4cfafebac76ac6789": { "ba98a569e23d5a0b5a2bee157907242c18d05d010d12a96d4526528db77500b5": { "zh": { - "updatedAt": "2025-12-04T20:16:57.028Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "b440aba6aedb14d8b49197e5b73a22be15fb4100ffaa22b66edc8fe9700a50b3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.033Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "78385117d611fbb9ccc8936ca1a5e91fadc350a437c5e6213143383b1d4681c8" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "79f0ac36b636ffa27a801c3b37c5a05877df71e945e61ffe2075b52802e4c1a4" } } @@ -29652,15 +29722,15 @@ "6c4d95e5c9add2129eec07c7db776b15731e42064678712cecf1b19d27e9fe1e": { "26bab87ac6555b58f09e971a206121597dc934bf1607e0bc1d1c1ca74b3c8ab5": { "zh": { - "updatedAt": "2025-12-04T20:16:57.029Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "03b3c36f8339c6f2fdba3e82b24c140e8cbf1e911121e4e0b6eaecae31c9b1b8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.021Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "52821f095c2415db10c2dca47b1c3996708e19d4220cf820c1348f82239305b9" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.033Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "2bffbbf8c4e580a60031e783c9b80a917217cdf1b1300cb72155bfaf975d9ab6" } } @@ -29668,15 +29738,15 @@ "c97c8d3fc1255144232e48ef1068845cf9a505bf268924eb00d02e4a764b06d4": { "cbf44b30af8d393437b434943a6b72c84ddfbb0c5021ffa6ee01fcee470fce64": { "zh": { - "updatedAt": "2025-12-04T20:16:57.031Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "16318728cd79e90b5a7be57591fab378a0bbd83a947052bc7c5f0b5745651673" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.021Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "d070a83781226d5f96f72ae5d7f9ce826325e7c75aa5e539ad4d19e1060d1adb" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.028Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "d337dec79e7617affc078de5ea0ae84861cb8eb5ad6098536fd3a0f593bca97c" } } @@ -29684,15 +29754,15 @@ "aa965228754f809fd54c3e57e8b77d0a2e9c4a048e0e68cef7ae8c333114457a": { "f9ce484d23646e185c37dd955d8f8211aaac0ff9716bb25cc7a6c1dfc7722732": { "zh": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "9503c3d1f69c8825baef824f1528bc0bb2b3e8dfe0478382f2da8df3ebc509e0" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "b8d1cb08f2dcc58a31109d5a9acb65feb9decfaba3a792cccacf273b77ee7607" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "65c95b387a59ecae0ba7efbb103fbd9defdbc7fa7980b825d124594c9ae80945" } } @@ -29700,15 +29770,15 @@ "db4a603afaa721633684ab401b86356ad8252b3e4987d3d7f3a1c55750046ef3": { "c71c72e22f263d7e5cb4b6bc6151025b50d1a6999e50ff20143e7d9570eab7e8": { "zh": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "f080705bab0cf6c730ca1b98f4b2d1cace5f5ea774a545034c4b22cd807fb41f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "a83f89a51480901146348052c7bf4d86bb0100e769064d0a7f0470f84f68a630" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "00ef1cff36e55b37922eb94720f2f12a81e849ca99532e0c56a261d4bff40328" } } @@ -29716,15 +29786,15 @@ "cde7d435635c91652b2386bf1619cb7ad40c1a75333e02d9abeca5d374b5fcd2": { "7ed8aea2f22f07b5e6da1bc31a668115f599b57278bd5f78ed4d027851ee59f9": { "ru": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "3cb9d9cb5d5691f81f47d7d526def332c2ec3c80d1d18f50bd6f6cf123863c2b" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.050Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "4d6b555a5612f38c948aded9f09f1833c7f83d0f16535d41fac77b625d50250c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "8ce0421aebfb1435ed08e9a1ca65eb5d3a54babb7d02039c007557f3898925a0" } } @@ -29732,15 +29802,15 @@ "baa5800841c33574a763c76d84029b7167e28cd0e383b549d3c87bdde30230b1": { "4e66ec48e4681668b3829e07df4225df08079780a33326c20145dbd63d2cf115": { "ru": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "a3e1431145e4820cfeac27708b19095df00f2180627147668b67ba010acc53cb" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "4b44f18b0ddedb74045f61c47a88c174bb7714e89989b92f29093af11ae54d97" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "928622a94290e5f9b1135290c7e7ecfecec4a052cf03ce15d427f01e1bdebea1" } } @@ -29748,15 +29818,15 @@ "6999f92f0023fe1dd1e922ddaaf1df722f316e49e43a1f46219683d3add8c812": { "9280cf92c0f64187017d3e623d9d06cf5122c9cca98da66abea3317bbf634e3b": { "zh": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "6ff97b094763880e16d5d718c47c75784ae23f08beb66d4d12f81058fb0dd861" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "897b020f973f736f9193a6c129f226d928b1ecb6e212f973125498e8e7cf40cc" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "3d36090e5d2c4b45b214577349e9f255fec1b189eed042a130f6ec2b593e4a44" } } @@ -29764,15 +29834,15 @@ "534c97b1abac407b7ffecba5c237d20ca3ad4c270a44ed90b44e77de585a610d": { "7ba7deb86c597b598ca684677abf36c48f1d224dfbe3c8465bb1e2b40a280f81": { "ru": { - "updatedAt": "2025-12-04T20:16:57.032Z", + "updatedAt": "2025-12-05T15:21:44.066Z", "postProcessHash": "302200241db8ec029ce1fc1be1327078a42f95f7dc85e57fab7aae64a6f4e229" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "7d132f8ed0294f97dc3f86f7fa91d2d4082704018343dbfbc7ca190d18431acc" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.044Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "13f52d5e4ad688267a5106fc924dbc7eaff735fdb1c1e8666f68d4f6414883ea" } } @@ -29780,15 +29850,15 @@ "2c9a0b8bcdb6bc350cecc5d8a2a8571d9ab75452db549ce31e1fdb37159adb97": { "a30a7c92ea08285c067ff0984feefbb3785f4b1f14d7715bfc668fb4bbc9261f": { "ru": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "163ee88c0791f2cd745adeb64a5fce934748418d31dff380d5d842e49f43ed6d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.036Z", + "updatedAt": "2025-12-05T15:21:44.067Z", "postProcessHash": "309f6768c941e49d6bd873adbb734378676147513e83acad9f3362887e026322" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "3282d25f8c692eda0d520714d586580287fdf9d60bce6a95efe8f86598642dbe" } } @@ -29796,15 +29866,15 @@ "89191e0f0f3ac7ad6fcbe90e008723be94527b1dc5730c24b0ef28b7567b621a": { "db61043ee1c3c508cdf7d9dd474714bef6965ab628e609c3b20ddf986ef02cc9": { "zh": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "3a60ec5c6f32e2ed28830463ddf8cb36ca67363c82cbdcf1c20a922abb8a666f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "bd104930afdc23bbdef920b1961eefa1416d8526ddbbed7763859b2e49ca7224" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "1ca59c0d5b9e148aa49b1b71892dd8f7756410aada66cac7c4e4325108c62d79" } } @@ -29812,15 +29882,15 @@ "e9514b207fd2f0999e54604bcc5f81ff6fdaee6511cc23ec24b5e33bcbd7a748": { "9824c5507b882758b8df0cd7ac8ec6f8ec745839288f88d8cad0156e2ed55258": { "zh": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "99e9cd074d76d74d290b9d6d4126a078557e51309a89f6103debf219016fdc92" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "12b5bec61f8b4c4ea8e3add4e50e71502d03e77656bb8692b2611015ffc5728d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "0dbbed0b0696605e7e49845d0710f792f6ab4dd5a146d59be9dde9a2caac8fff" } } @@ -29828,15 +29898,15 @@ "bb75403cac8908b2d1e0f7435d3c432ee901f13dfdca991fb73204120a85338c": { "0a7663696896ca536cf8c5b6b0059cce8944689bcec816f2b5c5b41720cbd804": { "zh": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "bb171f436c182f20fa87920fbd5526429a924f8fb07d16208b586fb167ddf36f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "db1b290173ecf75bb6219030a729ffc935b53aee3ce33ec9ab8cdb7d3642a673" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "9e5201f807825a3dbd9bc4122798d7fce0d6cbe7a829d0f0c5332919796d5c2f" } } @@ -29844,15 +29914,15 @@ "c66448d10c048389547620c0efc34decc72e9f80bc32daa2c49d957e3c02fa1b": { "1f29d5a37e6fed39b5f9602645e28d9fa470dce74a39a6c598dbd0a16867a37c": { "ru": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "fb65084f202689f4ee34716a2315054086519aa0cbfe0c514ca7d1c7017d83a1" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "1af7c5cd828772a70e5756398de03007e47190f46d1528189efceb2618fdec6c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.091Z", "postProcessHash": "550c171f01618c3f88ebee516dd1c84e88a03ab69928b3ce2e5c8ad50661a6ac" } } @@ -29860,15 +29930,15 @@ "7a098dff053dea397b97871863eca7199375f5d95f819134c433310d813f3ae4": { "ea322771a5ea71a865948471da4a31d3c932f43e7f418fbd44d17ba4dd564761": { "zh": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "cf9d893544817147e146efc1771b9a1ca0f0e5eeba0d457eaa5484318fce0877" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.050Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "1fb2f666517a50ad85b57c6756b3c2fbcbe69aab1e666c39312a266b641a761b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.037Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "71f525fa17cfbbf6538717b0e1d2b1e002b8322e2cebf89397fa71892eb86fc6" } } @@ -29876,15 +29946,15 @@ "a36c558e3cc8eb2a3b03c01a4286bfac9d72237977464d90e7395a10cf2209e0": { "94ce7d6626e94f915dc3f8c3c80748074f7c1a750f5800beccd7406817b5d19f": { "zh": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "03874ad730b8ccc983836110b6604480a9737c1837b6bfeb35232bd6b437a31f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "5c669066a06859611730bd1e474aa246bd1ab5c3a3af81808bfb645c65afd830" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "1d1e815a48422873ec06758a996fd1e2361d7667443f494ffbe8db3e0bcffb89" } } @@ -29892,15 +29962,15 @@ "68ae98d78891d0611568e05de511ec72306b7b3511df399280a7ae2c79b3ee06": { "33c7517467d660435f217ea64c4bf7d1325b67636ba929b3ced122cbffac2355": { "zh": { - "updatedAt": "2025-12-04T20:16:57.003Z", + "updatedAt": "2025-12-05T15:21:44.053Z", "postProcessHash": "4594edfe86ecb060298ba8335788c3640098f88f47dc0c9d395ae171a6e962bc" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.004Z", + "updatedAt": "2025-12-05T15:21:44.054Z", "postProcessHash": "ebab7dd27fca2e09d7ac04a138a5490bc5a9f4535402f122012e1ba7d066bd56" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.004Z", + "updatedAt": "2025-12-05T15:21:44.054Z", "postProcessHash": "82cdc6d922cd3ae6acaca325d604fb683f0de235fdf3bdff892a7bbb0b5b4d4b" } } @@ -29908,15 +29978,15 @@ "561284460b1fb2a4c59ce07e83be4fee1a8ff052b66a64ff66141a296715102c": { "30382cd05cdfc447ce68389ab117d0b72fb4faf154b6c67bed6c57d0ed565d98": { "ru": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "c2ec88bbed1ffe486869335e72b7c26cc9a05fffcbb098a5636659b0fbb4cd3d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "78225e046c02cb6715aac32fb41f664e99a36fecbf97f4ddfddc520a8f888b11" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "2c9a0809aab254d80deefe22e1f422c665e84c1b9eaa75cba91d857bd0ea9f7c" } } @@ -29924,15 +29994,15 @@ "8b014d0b3ce023d8c15fd8c5eb2d350cacf9cf3c41dd4b69ff25dd2351d35db0": { "891d96677ae497189e4ef48d65804e3b886d35381aa01b9dd409f5c32ee066aa": { "ru": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "db2275d81a8a3a743c52a25b99297136dd54e81cb112c2ea658fc6e0c235bf02" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "88d16b7eeb4ba7bd09d8419a2806607334aecccb9ff20174da139fb528ed8fd4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "1b90d5674bc43919be31dc5a42d57be339a0e221000bd70017b3245af84d6d20" } } @@ -29940,15 +30010,15 @@ "82fa28546b5677c4d98f580e1e222959c159ae3d9905e0932fbfebe2ebde8218": { "5207e407e3f1eccc511c0aaa51164bd35e4d15543e26e8e004002a81d42f5b90": { "ru": { - "updatedAt": "2025-12-04T20:16:57.033Z", + "updatedAt": "2025-12-05T15:21:44.067Z", "postProcessHash": "0e6d9fafac4b1c04ee98d47978a9852b82f14b5d9e48bebb383a365fbeaa02c3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.037Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "25b9e10658488ec6e14643aeba99834cce0e847f4e40dc8e1b42ce8a48ae56e9" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.044Z", + "updatedAt": "2025-12-05T15:21:44.070Z", "postProcessHash": "66cbadbb1d85cdc4ed7875ed010ca5639fd440cf4fe3522bed349a999756c542" } } @@ -29956,15 +30026,15 @@ "9e8c51287c7f24817ec004d3002c1ce3b305ec30df1100b9d028e5ebc63461bd": { "afbdd8bf1a036d21dd54275c5ec03df46552510b37adf7a05917d6570967651d": { "ru": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "83d19586289b3184132966e6d4f19dcaf3f6aeaa704c626db16cbdf9180edf07" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.045Z", + "updatedAt": "2025-12-05T15:21:44.070Z", "postProcessHash": "0a0cbf386d1f932aaf70ca4512a0316ec965267f6804e06dc00ec997aacfc6b0" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.042Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "7c4abcff6123195246443d21f5e8de84806bb2d8cacf71b69764beddd8d931f7" } } @@ -29972,15 +30042,15 @@ "2e86bca26b2ac693c6c25e4a60919c546b7872ba88d487d37cba83528dd4c1c0": { "82625a723fba7e62c237b3557661bd75bff3e41b4de031a888fc315f70bf8f60": { "ru": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "0c74ef48906eda3d722896d96351cb0202b348bff5692813cfc602f6434924a8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "c94e329d96a4bc5e1fa15e93b3a0908e0f47b06633a44b0c917f3ef8cfdae6ab" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "ff110cd5a0a09f204d9600a9952215dc751b5fa312144864f47bd764d03cce1d" } } @@ -29988,15 +30058,15 @@ "03f4f6675beb54a72bd7e3d62bec8c07f1c24ef51dcd84e88ba10e86e3a5a9b7": { "eb1beb44798239cd7a4b527f6d7acf65bd7638560f8fda08cbea63789789cbab": { "ru": { - "updatedAt": "2025-12-04T20:16:57.034Z", + "updatedAt": "2025-12-05T15:21:44.067Z", "postProcessHash": "d4e1d3f3a88823acc2cbaffc89f728261f36b891ff7328529017d519f4eef950" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.061Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "5047f562d1ddee3f7676e832e3fc524b46e90aa608de48b80f0c6c3fcdf7926a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "c0c69bd145c09734a0bc829c2ee4cf005b3390000d72d973e89699a1b4d43a1d" } } @@ -30004,15 +30074,15 @@ "32ffa87be40ab5f31e20d44d8997706429f8284873cee16bf953aa7c8a533e87": { "987df6e0573b5dadab1d721fb8b42546edd8a72a4c4ef547c90da774cfdc0384": { "zh": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "4706ac0730d08f6f1ab820b3dd23f714ceac70570c4ddbee03d9e03c2454e913" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "c1c4898801d8e733cb618ea11acb6b5304ecd7aebbf2e3ceaed32c48cadcbaec" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.055Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "9c6d049c1e5b458e861d7ea8cbb6cf42e379708db3305aca6458273bc6c6c9cf" } } @@ -30020,15 +30090,15 @@ "a2e55a90379e6ffc005d5cc760c9bf50e3a6631ad77cd354c2d442860ad851ea": { "a0801c6bb244ad72c6b1b26969b590462545f49f3c2c06d4078fe79f62be5841": { "ru": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "a7421101de676d8725f1e9a90719830f048cf7c4f55bba40e976fce06b8a79fc" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.037Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "4f90b32df9ea27d54ae0bfbfbb7d26993d436a1d5d3d5f3eee31df9ce95ceaf6" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.027Z", + "updatedAt": "2025-12-05T15:21:44.065Z", "postProcessHash": "b9baea647e814630f53f82c26636515f4cd26d5922935bb2ef9c526c09add42d" } } @@ -30036,15 +30106,15 @@ "9d795e71c1e5b5159a55b2c1f0aef5b2b5ba275de3636e7962e76d9cac324863": { "e14d02d5377204ff07364b01b4777caa9edee903a191d54d14cd619978c349a5": { "ru": { - "updatedAt": "2025-12-04T20:16:57.036Z", + "updatedAt": "2025-12-05T15:21:44.067Z", "postProcessHash": "2279678f1560b47713bfc1034590c8ee60d992a32bae2cdff103f6d896c36d61" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.038Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "2b1903bd41c7b9784cd52bf624f62a29c5b76b0e21c8fafc9759546102fa7c90" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.048Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "f23ccfee69eaad1203b82c7da68c9b04735c08f67313ff56801750938b33e103" } } @@ -30052,15 +30122,15 @@ "459dcfc8cfcb0c798eda34051037eaf36f0e8bdbf413d5ca0f86faf6d1ae4e24": { "f469d58719f2670441a26ddce21a692caf6821dcb698ad90eba442b062adb5aa": { "ru": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "ff040cd9fe24236f09181c6e594796a5034f5e98af4de461a9878c4ae1381a30" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "da574e6ef07be0f3b7b069fb682901bfc2807ab85e8cb83074e2b232b131c843" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.079Z", "postProcessHash": "6b42ca4edbef3cdb1f388d141f95a14eb620e4391540825aeb078d8904beb08d" } } @@ -30068,15 +30138,15 @@ "6aaffe8268bf79e8f4faf87000cd0de5d6453e5299b00696c4cf31cfb8d96d5b": { "ddba7dec037a2fad87464c00483c81011ad76357b5c4963561b6fb33a626d74e": { "zh": { - "updatedAt": "2025-12-04T20:16:57.011Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "1da093c7a1809b339d48a2c25456bfd63287b0439f38cb355bba81199fb9315b" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.010Z", + "updatedAt": "2025-12-05T15:21:44.059Z", "postProcessHash": "7e5b2190eced9ea67d4376578b68958e7363832170b7ddc87109c4bc739b1a09" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.004Z", + "updatedAt": "2025-12-05T15:21:44.054Z", "postProcessHash": "083a96f41054b505ca0e0b8d8415c28d3907966b1a707aaa4e11f76b11aceaa6" } } @@ -30084,15 +30154,15 @@ "299acd2896dbdcc7fc9ec56b51b4a1990b56dd0fe41acb3e57f9cae1bd915ac7": { "99ca8337276f2850a682286f3aa13f69597377997f305892b1182845150c4e2e": { "zh": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "ef3949259dc24e21fb79e3802c4eea5274192430dfbeb2dfdb7f019999a7cfa5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "cdd3554a34db824fba17a52aaaf6976ad99f2df2f092f67a98a24f68d9efa182" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.064Z", + "updatedAt": "2025-12-05T15:21:44.086Z", "postProcessHash": "0e310b0ef2e824e076993166fa73b95de34030cd34c0eb690fa3ee7bf3f890ea" } } @@ -30100,15 +30170,15 @@ "3246877b14617a738e90832de040052391f7c8fc094ca44b2455eef30fbf314e": { "d6d3906022ccc3319721785ef9aa9f57093fc737336e72eddec0d952f2c844d7": { "zh": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "0eb77c505f7837923faa463f4268dc3c00e3ca7cc1f11780fc2c3fd6713a825d" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.090Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "ef5b34e961c19a6018f60d58cdafb465c5d9c4108984679e3af00c764bbc5642" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.078Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "0c3ad89659eaf31e2f42216e60abe0e45e8a3e180a193469c59f20da91122c51" } } @@ -30116,15 +30186,15 @@ "3635e79a2e76bb297d10c5dd4637f4fd94275c1ba1081c959a4f02a8d8049bf6": { "69cff4cb3337c445b437475f175d0c1ab8c863e57aa050035a2284326ea56533": { "zh": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "f22406ca08031b6a3394f44a875745cd9ec929db1612c0396b877c977f95d487" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "a885628c01b5094ed2e356525b3ea3994fdae390b171b6ab920331cad8ff971f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "e1e174150adfaf8e8721b473f6dad372592fef8313bb8a881ffd04a62701f46c" } } @@ -30132,15 +30202,15 @@ "c3ae4d87db64f55d260d37bff7580e0a1ff638a6c1bebc984889a0f53e882bd1": { "c8ec9fc9c8400c3e7fc2098760f4d554623fe5eaab093ad69821218853b4e3b8": { "ru": { - "updatedAt": "2025-12-04T20:16:57.021Z", + "updatedAt": "2025-12-05T15:21:44.064Z", "postProcessHash": "e274ae697a0536ab47490a0e2a9d6feeb6ee0d10126b80b4b4e57679f84bff97" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "3a7e99e7ece61d7d9df531889a6b6d11f05f85d73edcca2f254ca4e2be75e26a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.061Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "d4a109f15fe81e5bb6cdd804ea6c63f86c09823965630a614d3278e0698b12e5" } } @@ -30148,15 +30218,15 @@ "7974b5d9fc7e953fa4aecd07c2f6f9176f90a9a89310ebe7fcb27dff7fdf734a": { "b66740bd12022ccefeb425eba94ee09c08528b3a5b347793bb597e953e4f21b2": { "ru": { - "updatedAt": "2025-12-04T20:16:57.051Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "4fb540261ff285b927f800bb66e4a283bb2310aa16009e7c772a4fe0f13bbae2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "fa25483e2e6957cb19a580f845a22206763bc0daccca7617ecc4517a8cc7e375" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "ad3f47fa1324975d1fc0061e3b6e88c57ecf19055f9e0f3e1829841545129dbc" } } @@ -30175,15 +30245,15 @@ }, "83c1d1eeea98d87ba3da3231d2806cc372567257839dc62fd43ae5ea90f39c3c": { "zh": { - "updatedAt": "2025-12-04T20:16:57.011Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "4be7b915d531026bac17cc0c58f374b06623b727697945f53b908e6ab6b34918" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.011Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "342fc35f8b80414635b94f25378ec526b7e2779a24172d6c5e83301a76afd6cd" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.012Z", + "updatedAt": "2025-12-05T15:21:44.060Z", "postProcessHash": "4b6981e212a7a3ce487c1b7ba441a5477ac0d0dd3d2a78d2ce6bd992e6585d5c" } } @@ -30191,15 +30261,15 @@ "51f9cca65edfee082630f0b1fb8e3a29f4ab177d7d5452a9abc2e1f9b56e3c53": { "96fa3e43effb19ba6584f2d1ae472b68548bb3a136e72cc23135e36bd3bd7b5a": { "zh": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "8c88ff5a375c1ceeffa3f48165c097d6293b3928a22952eaf81e32b21c7c9dc8" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.082Z", + "updatedAt": "2025-12-05T15:21:44.103Z", "postProcessHash": "e1e4ef61478d32dbc33d8384fe98356d1e9b78dc34b7451bc1ef490a95103b18" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "48f4ac19ee29aef219cd098515d1ad16b0def9da6a95c000f705025a34a8e224" } } @@ -30207,15 +30277,15 @@ "0f09f5442f4b4bac183a39fe7c4ebb5f27e3e93b8fbdd22c1bf04db43e598523": { "8dd4d3197218cd45163cf27ba0c5e57b39a8db91e1ae9ccb34b1ee6871418db0": { "ru": { - "updatedAt": "2025-12-04T20:16:57.035Z", + "updatedAt": "2025-12-05T15:21:44.067Z", "postProcessHash": "3353fd85956bc7ce0c103255a234f7a6dea763aade2040db6e1b6280745d41c6" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.042Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "9a31f945da5957be59092f4b6a3da06aff530461ae6e473a849ae1899830392a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.044Z", + "updatedAt": "2025-12-05T15:21:44.070Z", "postProcessHash": "2855a909b86f3e628bbef82144b20cf1e1330bbf64e71b377402e8a44159458e" } } @@ -30223,15 +30293,15 @@ "04bd894d54eb7791d6c20efe6b82643d60ba5f94079895df60cd832a967a8b72": { "b4b191db3e0a1686174b935b4a408eec87a5d10accead9bfce53f6fdb0c78147": { "ru": { - "updatedAt": "2025-12-04T20:16:57.037Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "ea8955a39b360c5789c530c3b03d98948318d928fbf66f5dee4500c82e04d74c" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.061Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "a9a3abe3c958caaa8bcbf17296846516ff0bddb242f35491e4949add096d9555" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "b88a666d313b0230b7cfba55682a3baf805cfa102aec28c09fe178c1094f4a31" } } @@ -30239,15 +30309,15 @@ "ee7cf7082c51841ba27fc19b990495b38b92128a79d2a323ecbca6bb723f0e8e": { "7deda54447cba9acce76845c952c2c7f4ee86488c276f4a335c96e4c55dc6bcd": { "ru": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "00c3737a47fe87076367c5f47d9902ed50003b8ca68e540b557b4ae3dc6bacbe" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "9be2b5c0b3aa8227805010464eed85f607305f134224b9c9f01260fde9c24152" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.058Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "fda4b48e08eead05bcf991f16a558e29fc34cff1ef0f1f86ba18974e19fb7119" } } @@ -30255,15 +30325,15 @@ "cbfa6856b07360063ce643d5dc0c1d3cc2418e2639de759af00c6f665fc517e4": { "0140ef2e17d32f74a3b543e6327533884c8025b049e9fdc7af2a729378577a5e": { "ru": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "14ca6cdc3fbc019800d1ab2b245d5f75cfa28484e93aeb91e9a82682a7f0f194" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.057Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "6aa71ec4bfb64ac6141da1d33875df04ac54b1fc3ac904c98504f035d296bc4d" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.059Z", + "updatedAt": "2025-12-05T15:21:44.081Z", "postProcessHash": "08b00891741a87bd19db685cd391471622da0a3b2abbe958d09f345186bd2947" } } @@ -30271,15 +30341,15 @@ "c91f782ae583639337bdc49114576cfdd9c9355b699a68919bf1bd023713faef": { "bec2f91a18ab29d790a84a8d99cfc87824936240769c4e0889827b57e2472e09": { "zh": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "96472858f38cb719004a2b08f4486e9d1249be74b467d9efbf04ff6eeac79ca5" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "60e3bb97e6840743363aa52c613a740f152ed9859f31336eec9841ab6a5f350c" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "bce25c2d42faafc7a5ddf46e0bc226db46499d2f2b49ff7faf8865925997ecf1" } } @@ -30287,15 +30357,15 @@ "abdc65a73d328d0f6587eba73db81db937a7f67106eeb840b67ebf52e35e6379": { "3d443c4abc73eddf8e334725cfa0abf5cbeb70f4475566a8d40953e253b629bc": { "zh": { - "updatedAt": "2025-12-04T20:16:57.043Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "6e8c387b0796e22e05587e69f740cff2b1340c55bc22aeab98aea2dfd82f39f9" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "2e7fb04929626238e46e7478f004ee07245271484452287ecc0a24fb33d66526" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.061Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "21ffa1a2a97ca3e11a0eeb8796e4f9af209867a8691e79d4055e79f3fcf17e4e" } } @@ -30303,15 +30373,15 @@ "6f7b91f9de26806b740498adc5e643a9126c17702c3c29691e1666087c366cf0": { "a1903aea52e9e31c6386a9cb6e37a8b774a6be1ff6724d1c7674a90cee7e9059": { "ru": { - "updatedAt": "2025-12-04T20:16:57.044Z", + "updatedAt": "2025-12-05T15:21:44.069Z", "postProcessHash": "63e323b7a9cdc92f8061142ab94aecdf1ce358bc8e4e05e385256a1fda422a35" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "308f6f80a5c3e319de9fcc7671b550441f7ca5755c92e7238cc24bdcbd2c6eeb" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.038Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "1577fddb467308eec116f91adb6256ce793e2ebd7b92dc8129729789c7119677" } } @@ -30319,15 +30389,15 @@ "fae1576558dadb0c932329389ce8fbcbeee0d35379cb6c996673cd93aad35a13": { "3c3975cd182172060059f7637ba3d00c8b28a90dce27de128e912a0c986041da": { "ru": { - "updatedAt": "2025-12-04T20:16:57.072Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "614cb17c66181d2920e36c452dc405016e814644c75aacb604bf1c252b4301f8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "93c9299c18f94784625059e2cb2f1ba46790078c405a3a2a63ab9069a9c9b633" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "08591097cde9ae41f9e8b63b28285e0acc00a05857d8f8aae827612cb334958d" } } @@ -30335,15 +30405,15 @@ "3f14c9de32cc2309c896fed678c5b28a7dbf39af5a00bc45e0fd013b9c4d05d5": { "30c6636556ee6c7c353538457f6b3b57a9f5c21c15e651b2997b487922e38fc3": { "ru": { - "updatedAt": "2025-12-04T20:16:57.090Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "834ec5a0adcb1a1341efe7d9314b190b7a42687672519a15428962cc2960eec8" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.088Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "74c57d7e0b7dd734f111d295a1e656005038dbc7f20581049e3874dcc590218f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "4b2b33173acdf7ee3fed1eac99bba3cd097ed32b6ea6f75f77273ce38c1014a4" } } @@ -30351,15 +30421,15 @@ "6bed7e7a83ecb81ba1dd2bac10ae908f5dca2985a1372a02ea6f37edc19fb8d6": { "d69df1442a7aad94ba9096815aac2b779c3a23eed85dba10c8cf5e643215acf7": { "ru": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.094Z", "postProcessHash": "aab08b4a2418477525a978f4a46238f5406d7e7a0d8e64c1566339d1bf635516" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "c460555dbc9fe001deff35d0e77d1690c8c7bc974d77a2df3febb00afa194997" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.073Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "a22032f600c4ba2e5190be2b59d67387d0600901cdd6b7ac41c8bc301f3c5799" } } @@ -30367,15 +30437,15 @@ "3e0601c102f0cd71b8eb284da75b1cb579b66391d37fa681cf6d4bc5e1cc1d58": { "4eeb3b260eb5599be93bf2151af54a52820bc5b7145e432d1d16218f6b0c376b": { "zh": { - "updatedAt": "2025-12-04T20:16:57.045Z", + "updatedAt": "2025-12-05T15:21:44.070Z", "postProcessHash": "8c9ca6ca37c11b59d146adcadcd4cb1f20ff8d52b39dc6ea83b7a256ea7d8303" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.046Z", + "updatedAt": "2025-12-05T15:21:44.071Z", "postProcessHash": "1d4f02786441290e20258a1dfc1c1ec5510a202d8700ba77ddf00d579bafd78f" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.050Z", + "updatedAt": "2025-12-05T15:21:44.074Z", "postProcessHash": "b30603cd557bf396848e02bf31809a26f493192fca1378ca4d6ae1b999ff6258" } } @@ -30383,15 +30453,15 @@ "8b38fc05c0c3883d9a4ec8bbf5caa1bbc4260e946b23ad31bf5c97563bd88229": { "58e3bcd0e949f466dc2d6e918d912d126143beea61afa2ee594bb6cb9d60e88d": { "zh": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "1731093040ac25cb68ca0a1fdb6a57f29dc4a7911a56a30d7bb24b6b4a9f5c03" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.049Z", + "updatedAt": "2025-12-05T15:21:44.073Z", "postProcessHash": "0b6b2804cca5aa642b3158e4015fb42946fcb775f91b8bb4926ba7dfc2555031" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.037Z", + "updatedAt": "2025-12-05T15:21:44.068Z", "postProcessHash": "47395f8db473d16f7e3b9ec6d5b79df68df9f702f1fe26967b30fa7fd3d1c38f" } } @@ -30399,15 +30469,15 @@ "11f0d2e2fe5381cbdabf5c8d911e42f98d764106a83601de0c96203590ad4cc5": { "125142acfba42f104cc8a667d2cd001ded4684ba6896567aa756cbbcdfe1e975": { "zh": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "2477a8a58578761413878829cc64b27377ca0fdfa28280b3cd6fa3d69e4c1274" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.061Z", + "updatedAt": "2025-12-05T15:21:44.083Z", "postProcessHash": "86d52a4b9b355e03afe56b506a0b8529264225d06081c47a1260235ffef3f7a3" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.047Z", + "updatedAt": "2025-12-05T15:21:44.071Z", "postProcessHash": "e3028efa7992da8a533449c0fdf05f89e0e7a409a1ba4e56b32efb4b0161866a" } } @@ -30415,15 +30485,15 @@ "6152b4089faf21cb920f0b0e0f015947f4aa6a6539cc24579a8054117329f175": { "58de10c3764c8ae20317dce26cff68631d85677a41b3f5dbd50c51245bb6c66d": { "zh": { - "updatedAt": "2025-12-04T20:16:57.004Z", + "updatedAt": "2025-12-05T15:21:44.054Z", "postProcessHash": "c67d5eba05d200c6caa7c5a51bb8eaaecd050dcc26bb5669bb6b97be68e44b7f" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.010Z", + "updatedAt": "2025-12-05T15:21:44.059Z", "postProcessHash": "585139921121661f916a0b00dba292134c5b6b5aff7ebac71bdc45a241972012" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.009Z", + "updatedAt": "2025-12-05T15:21:44.058Z", "postProcessHash": "c8ca33bb49005fa7bedd89c3f3fac3dc8e599f2f4e4125fccfb49b8d392271e6" } } @@ -30431,15 +30501,15 @@ "bca14edd411fa9f3a8a9611aaacff6972d87258f38acd6410fdf5b4d4cdbaa55": { "6bdb09ec322273b515c242a0a196c778ff9876e649fa65392b8031cb787249d3": { "zh": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "6bdb09ec322273b515c242a0a196c778ff9876e649fa65392b8031cb787249d3" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "6bdb09ec322273b515c242a0a196c778ff9876e649fa65392b8031cb787249d3" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "6bdb09ec322273b515c242a0a196c778ff9876e649fa65392b8031cb787249d3" } } @@ -30447,15 +30517,15 @@ "90b37c7973739db627d82b16799b1a59ebcb776db33ad8298491b0bbbed6c3de": { "73ba6fad372ebd5b4ddf82f283b3e7b1f303a8f02d8ddee4e4e8d3c0290b12ee": { "zh": { - "updatedAt": "2025-12-04T20:16:57.000Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "55e7685c978f9f7a6b36fb713a38304e4c08eb71cda0df1ebbfcc979e63fa6bf" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "8100e6f8d0ab8d8023c169f0486dbbd94353250f189a4614e5859b0534e0bcf4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "b77ca66101de198fe0ac93e0ccb2bdc6a3497a2cc4460b833be2c6089bf9925c" } } @@ -30463,15 +30533,15 @@ "5dcc85853637a46f967236f293c74ce6629e743899ffb1d793ba5c7ffae90dbf": { "6777f02cb4aba6cf43d71fcfd0acc7ed50b7a116661de2ebd8193b82df093941": { "zh": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "4f3e071ab43d54334a281547d68d413eb24ea409b21f7f47cc8f36dc277086a3" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "d702f68396baf04208f935336dd190abdea35259a8d6531ff9c6854f7d0cc043" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "9222eb2bf08a08673a1c668fdfe0cfaa7218f760bffe30e99c4918bc60b72cf2" } } @@ -30479,15 +30549,15 @@ "094593271a536e71ddc700495b0cf0f1048d6ab6c2dad60a929934f0798430ea": { "3dd2ef060c7a1cfaa56099a332e54eba203c50d4214e0f5bf98d281ff70e8d9e": { "ru": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "6cc87da9c91a53af1b6b3ed64af0be54966751ffc0e92099d5616c86c01a18b8" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "0ae3d2a2bc5fd527cc13604c36521dd771b97cc73861fb9abbaa076e80c20494" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "8bbb77c630dec564d3eb6b95ee25f257a110ff3dd150e119152ef7144ef6be08" } } @@ -30495,15 +30565,15 @@ "27e2bd6338f55fdbb9b18fcf67e0a0a67489a58d4e1c0e9ebb6902b05fc36aac": { "8929ff1edb2d47de0f53425237359fc7c4a1036ef99e001d0d30c2d13140051c": { "ru": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "279d818ef873112952ca03b8c0de74d25684de610d95feaa94cd7de419dd8e99" }, "zh": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "e7bd8465230bcc3452c8e715fe1035900c7623e68a13c5a066b9ce0ce3d9bf82" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.993Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "a4b7ae7f67d2c3df826d81472ef0867d05fb658bb4a3e2ad5944c88f4aa6e654" } } @@ -30511,15 +30581,15 @@ "19a3aba2f96aa29e64f1d6662e4c6e8d99c98fade3c4d0aa0badaed1632f4c7c": { "dc4c51508caf2bb72e5375d6abe27b369e6eacb14cc00c78c196a37458e79501": { "ru": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.051Z", "postProcessHash": "dc4c51508caf2bb72e5375d6abe27b369e6eacb14cc00c78c196a37458e79501" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "dc4c51508caf2bb72e5375d6abe27b369e6eacb14cc00c78c196a37458e79501" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.003Z", + "updatedAt": "2025-12-05T15:21:44.053Z", "postProcessHash": "dc4c51508caf2bb72e5375d6abe27b369e6eacb14cc00c78c196a37458e79501" } } @@ -30527,15 +30597,15 @@ "dfad0bc3b6417f406a00ff9ef3820a57dfc8f664400a7ce0134d81da437d7e07": { "79123cc58b0a88edb3bafb181767cf704d4908d66876b9628ebccd1e31728887": { "zh": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "0ae3d2a2bc5fd527cc13604c36521dd771b97cc73861fb9abbaa076e80c20494" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "6cc87da9c91a53af1b6b3ed64af0be54966751ffc0e92099d5616c86c01a18b8" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.992Z", + "updatedAt": "2025-12-05T15:21:44.042Z", "postProcessHash": "dccec3e19c928e7694d31705709fa3b1a826da9b8f3d16f56bea9732a9d1d8e2" } } @@ -30543,15 +30613,15 @@ "4b87a5344a9b716648c77706eed8254331cf4a6ce21d8a43d267f67270734d1f": { "fb4dfb8f9e647f53e63097ab00045af768eb9222f514d424b3a57634d8f3681e": { "ru": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "d30022e6dec69de3b3dd2260dc515847f66daef723cbef66d737105a9699b19d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.002Z", + "updatedAt": "2025-12-05T15:21:44.052Z", "postProcessHash": "e095122f42e952d7924c73930f58a3774753f564b3ff4a9c3edf2ade722fe2f4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.001Z", + "updatedAt": "2025-12-05T15:21:44.050Z", "postProcessHash": "7e380bb32746664f5dc46776c078cb16ddd0dfaec7c6ecba65e66c10f3be2e9f" } } @@ -30559,15 +30629,15 @@ "f0a5d6e46b2ddd583ab900563a42b7687a1b4924afd5d0cb5260268c8952f6d0": { "3a8f69d0d17e9065a46d4d7456a503262e2f2a05ac3d4b37f49520b5f716b1c3": { "zh": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "cdd8fea899b5bdef0a7f4127a6d20bb75bdeca9b60bb966cbc36f23c8099a651" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "42b68726239b044c826e76f5b31713e1716ce44b0b6c19fc42f3235beae2d010" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.063Z", + "updatedAt": "2025-12-05T15:21:44.085Z", "postProcessHash": "55e6605f35579b95042119d65466d978fd994860b70f049c16cc8c6d865c60e8" } } @@ -30575,15 +30645,15 @@ "9027438a5e9e30a2c6e8e4d197b479cebf29c05aaa3a716589f591c0ff697c0d": { "d5d6ea5e34429a4a6f22bad136f5d5eb712bbb922cae22a6c870b906c7befadf": { "zh": { - "updatedAt": "2025-12-04T20:16:57.079Z", + "updatedAt": "2025-12-05T15:21:44.101Z", "postProcessHash": "d174d80b968e05d57ef6cb0f23d12dcd93b7cd927ba524a0b92b22ed0ee26840" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.088Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "e5da9ec1e2c5745ee867a1f854f35ca12ff74dab586cf48e577866d4996543cc" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.076Z", + "updatedAt": "2025-12-05T15:21:44.098Z", "postProcessHash": "fe90b32749302d19c1c3f961b9638c72f90b399fe13e780c3233f08804a31105" } } @@ -30591,15 +30661,15 @@ "492b567700669f175480e40ecf1c553c463e77a0bb36e30e76eb3628c35e7db3": { "84c653bd2e6590cbd982437c2304ff4818581c1e60afb256437642c4a3dc66c5": { "ru": { - "updatedAt": "2025-12-04T20:16:57.074Z", + "updatedAt": "2025-12-05T15:21:44.095Z", "postProcessHash": "605260c7c7fad78e50b94866aef89c35f6e2719e3fc655dd39756be33d5069c3" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.067Z", + "updatedAt": "2025-12-05T15:21:44.089Z", "postProcessHash": "80378545aadfe422c53caee6b30dee36dd54199f88913764efd6964fd3143094" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.070Z", + "updatedAt": "2025-12-05T15:21:44.092Z", "postProcessHash": "31aef518ed57ee8ab02fdf4902bd2e827828dacd2482f03a18bbdb29f5ee4a2f" } } @@ -30607,15 +30677,15 @@ "dbc3d877611d9d2c9a27f2ea076decc1afc5907f3c3c02044504a307308653af": { "79b34ec963ce2ab8bc60d33c073caf0fc42c9aed7f3b97c1ed638390938960de": { "zh": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "8b8619fe48a942e76600cc1f22f4064e1c3b8f47823855c1b570c393516f4459" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "fc6661cb434f45d0af02152f3d424c222bfa7962ad80665b75c1533ad63083e3" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.062Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "59c70ca936d3311dfe57de8d905526e54a8302096c5faf9279e5eead416036fa" } } @@ -30623,15 +30693,15 @@ "e5b56f33a8458d42151bcbd638d4692704a7d1f97fb2c4ed94143ff1e460a418": { "7eab19fd44668e93c10760c5fe2d6a1421e507a9cec55dfd91ed0fcab85c27f1": { "ru": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "858b36c1f2dc89f0040b3532f200a90fd64038d18ff1395750b0be71191849d0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "f0154aba4a8879e6389f451b4027fe0f5a1b6d6e648fceadb4ba8171bf5d6081" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.075Z", "postProcessHash": "3aebc8161b6b784a161b6562957dfdda69ada72924dc083b391c262699d68eeb" } } @@ -30639,15 +30709,15 @@ "3f3b14a0c691ae2b5345864fd4ad20a184225db1e35ffcbd455da1aeec5f0d48": { "a9c8fa4f53951ce4026e170171a0517a80777e9037e5bb2f16eab83d3ffaa9cc": { "zh": { - "updatedAt": "2025-12-04T20:16:56.996Z", + "updatedAt": "2025-12-05T15:21:44.045Z", "postProcessHash": "98be0adb514ab99e364abdbbab872ca95c8b60c312d3df36ed607421c9f38c2b" }, "ru": { - "updatedAt": "2025-12-04T20:16:56.995Z", + "updatedAt": "2025-12-05T15:21:44.044Z", "postProcessHash": "c6b1ffeb8a927241e2108dbeb02a8cbb166d5b270f1e7cdf770147d6ef83a7d2" }, "jp": { - "updatedAt": "2025-12-04T20:16:56.994Z", + "updatedAt": "2025-12-05T15:21:44.043Z", "postProcessHash": "484551e9ac0b82f75a73cf226db475edde9fbf9f15c772cb60460ca3bd544e55" } } @@ -30655,15 +30725,15 @@ "5b41c30593068b713e26045c49b89ef31bda4b2d25564fc71eeafadaa3a88b3b": { "ecb137fd1463f816c7efffc5bf4c604e7cfa7735755e22327018e286ec755267": { "zh": { - "updatedAt": "2025-12-04T20:16:57.085Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "71228041f3ec2db0eaea6df41f727fe8d9fb0c2be58156f7e40029f6cbfeaafd" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.080Z", + "updatedAt": "2025-12-05T15:21:44.102Z", "postProcessHash": "935e2df6e42ef5eae97f3b0f34534f4ddba200017d97d3170e7db9c138c0cc8b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "8ee6a597195d2d62144b70385821d6d3faa909ba10aaaba5092fb6cbbe5f9d8e" } } @@ -30671,15 +30741,15 @@ "7c145e871f942571130b488686f2c93299c7784ad34d23a45c99e2947f75208c": { "193be2e12900fc92f5c6cf9d55c9d419bf67397ce7c166154cf4356eaee3bb11": { "zh": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.106Z", "postProcessHash": "84717246d459b05e668b44cda8f6d98373e4ad33dc1b061182c57ee0bd17bf6e" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.084Z", + "updatedAt": "2025-12-05T15:21:44.105Z", "postProcessHash": "e8092285f85de8c0fef7d0d689529703a23d3563750f97888238640fc9e81345" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.077Z", + "updatedAt": "2025-12-05T15:21:44.099Z", "postProcessHash": "c716efae67f791d006333fb0f57dbadc4ece9e0eaa66931176f3fa87c2382a19" } } @@ -30687,15 +30757,15 @@ "f5b83279dab37d495f5c4fd259883e2f59a812c65ccc8ed0c351f21a2028e710": { "caa363689f97df04d5bdb8cc80dfede581f616ede687804ff5915657268592d2": { "ru": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "6a2c0ad1bdac3f2b0003235f737b0f22c9ea609aa45a68ffb137059978476c05" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.110Z", "postProcessHash": "c36543e2adf44d48030e6c03e8f6e8b3839e46aec8b066e1356325acfdd1b129" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.089Z", + "updatedAt": "2025-12-05T15:21:44.111Z", "postProcessHash": "0801238959e627da999d8278755a3887bbcbfc083f7a0870498f6e39dad17d97" } } @@ -30703,15 +30773,15 @@ "bdeb28bdbd403e8a7dbfd53a18daf2d16a5ec80e2b272afff63299b084ee54d4": { "8d2b2934162408394b787a0c9376fd5fc5d3b70e883799983cb40e9cd3caec2b": { "ru": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "eb8a98ada416e3412051b09bd302a439a0f2447cbe3593464e701c38186d586d" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "67c035438edce41a547ba289bea4d3ba574c382a7710ce710b315d1886a6d57b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.071Z", + "updatedAt": "2025-12-05T15:21:44.093Z", "postProcessHash": "61d36899ec8eae83f9ef7362f78061dfcc8ae137ea5210f1806f0b63f5da2b87" } } @@ -30719,15 +30789,15 @@ "6d9be1cdfeaef3b95b6937fe4da26361e0723bbb44069a88774c3f6c426953ff": { "27c7a63e2afca841ae5e7d6fe8b9f6f3c513769116043f854361c07302afa76a": { "ru": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "1006dd599af5606b93631939ee5182204dda210f40eaca9230c1a08979332500" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.060Z", + "updatedAt": "2025-12-05T15:21:44.082Z", "postProcessHash": "66c062ee29acb9e54a87c9e3fc3c673fe6e290e74f2f50ff249f50be3046b6a4" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.061Z", + "updatedAt": "2025-12-05T15:21:44.084Z", "postProcessHash": "1a8c1a420d54a13339e50585372228446f47e39f99df6bdede1a0c1db91df283" } } @@ -30735,15 +30805,15 @@ "08f3b123bce337ae576d91effb4c4e0aa8ce5818f4196baa0ba59915bd0d269e": { "a29ff4b6f7e821d9ae449a998417a11cc1c6705210186befa92aa45136de5da9": { "ru": { - "updatedAt": "2025-12-04T20:16:57.053Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "44d1a2ae998ad3cad0b11c2d2a5116bb4a071a5a82910874917afc080d13c0c0" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "7ddfedd4f1a84318fe59fed15148613e40a0cab80b5f240d51b2dcb0876442a7" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.056Z", + "updatedAt": "2025-12-05T15:21:44.080Z", "postProcessHash": "7c296de0f54e7682022f49c1685b45c553b7b55f0435e812ffff18e2d9236460" } } @@ -30751,15 +30821,15 @@ "0e3c84ac0dcb64d166a9e4cad32d3420219fe50fe305e36aa358456c172e2cf7": { "318568dae18d539030ba9900a07a5c387e0ffd38a7b84468080ad1adcdccfc39": { "ru": { - "updatedAt": "2025-12-04T20:16:57.066Z", + "updatedAt": "2025-12-05T15:21:44.088Z", "postProcessHash": "00c46ce01f15ad9fdeab2f72691d4fab5783030e67224ce2bc3767c72f58a420" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.068Z", + "updatedAt": "2025-12-05T15:21:44.090Z", "postProcessHash": "2b9ed3b6e9abe2f5307e8e4356e714558f9d57c5e41f54eb4943c1e669090501" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "30e8ebe13f8b17e8593ba3dd75e594be4c97930c33a5e77c1286bbfe51aeaa97" } } @@ -30767,15 +30837,15 @@ "808e737b87d86c00037ee9499555e8d37bc7fd2e51f5ef796a4a104d5f453b14": { "4719caa724ba0e2a9f5dae16a0fe1e64ccb82cd37762f0d2649a253c1acc65eb": { "zh": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.077Z", "postProcessHash": "dbd1e9397e889a9c7f66a1d040df799ad545fe0ff2974b8186c5a2a90b1bd100" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.054Z", + "updatedAt": "2025-12-05T15:21:44.078Z", "postProcessHash": "010fabb308c8285f625f3d634f1941a9e92cd0b5a1a170e9886d7c0caddc17c2" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.052Z", + "updatedAt": "2025-12-05T15:21:44.076Z", "postProcessHash": "4d677cfe542defa2ba654cec1ee86d16b46db800cef2f502ee7fbdb7f4dd8cdc" } } @@ -30790,15 +30860,15 @@ "66bbf0d8525a651b70357530fa66ca0f30073bb1460c57979838338b1c0d8749": { "9a8d534c4d4974d982e6c1d6d31787e905d1215b8eade3bf1524a2e15a6fa2c0": { "jp": { - "updatedAt": "2025-12-04T20:16:58.007Z", + "updatedAt": "2025-12-05T15:21:44.741Z", "postProcessHash": "818e4633c64fa1a38d9ff6344004d822542d1c75f9ca903990b2dcf9352de3c1" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.007Z", + "updatedAt": "2025-12-05T15:21:44.741Z", "postProcessHash": "3074f61c403e9ebcde3ca106438c8b0831b3ed985093f361160cce11270f7c5a" }, "zh": { - "updatedAt": "2025-12-04T20:16:58.007Z", + "updatedAt": "2025-12-05T15:21:44.741Z", "postProcessHash": "d198a414e81c93bac339df3d0c993ae01ae0b8e4b92cda3d4cc695d15b0343b6" } } @@ -30806,15 +30876,15 @@ "004214d1284aa8fe518aa336fea065f912357ada315224cb8c2c05631ff36449": { "1f8a48298f98b2b8149a2007bd5ec17c019f567f61d697e95322a03baab80eba": { "ru": { - "updatedAt": "2025-12-04T20:16:57.265Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "8ab59d531a0f8bfeb4e02dae478702f215be910deadfdcf075371cf2a6557076" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.232Z", + "updatedAt": "2025-12-05T15:21:44.231Z", "postProcessHash": "121388e7b53fdf557c939937c2e0567b38ef9a19aef02c417160cdc13ca3e55a" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.265Z", + "updatedAt": "2025-12-05T15:21:44.263Z", "postProcessHash": "c5711362aadc931422448731f50ed222c7123e7cdcae547136368bae2efa9752" } } @@ -30822,15 +30892,15 @@ "0e53576e2d568d32de6d52366ca09d6d3d3b9244b9b950224874f63b7def8e0b": { "4f03aabba29c1d276fbd55f6443c7d1e281d6d6d68ae1d946877245547ca2157": { "zh": { - "updatedAt": "2025-12-04T20:16:57.724Z", + "updatedAt": "2025-12-05T15:21:44.454Z", "postProcessHash": "6a351e20558b6425dae5c0dd4c9dd4d76e78135a678346264493846826c7795a" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.724Z", + "updatedAt": "2025-12-05T15:21:44.454Z", "postProcessHash": "9374f3df5c0b7a3c476f022124892fd637f67d6abece5bef9a553610072963f2" }, "ru": { - "updatedAt": "2025-12-04T20:16:57.724Z", + "updatedAt": "2025-12-05T15:21:44.455Z", "postProcessHash": "da35376e1f288ce3c7c7dc29ccd29ae448afc5e42a2ff36e5d34b2b89f6cffd4" } } @@ -30838,15 +30908,15 @@ "2ed9dd905d29a21da9ab592836fca34a8ed19a4db4490a78058048382b846b88": { "48c110e866cf2a664e3dab6a338d16c6af206ae8ef6c018c3017a83854065ed6": { "zh": { - "updatedAt": "2025-12-04T20:16:58.024Z", + "updatedAt": "2025-12-05T15:21:44.753Z", "postProcessHash": "85bbca18e559edf4f82155f736f8f834e720ba9578601b8ec7b68c8e1499d61a" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.024Z", + "updatedAt": "2025-12-05T15:21:44.753Z", "postProcessHash": "184917ddc8ce0e0945644630ea8c8d0bb18384a8874c3063419f1ac6952a267d" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.025Z", + "updatedAt": "2025-12-05T15:21:44.754Z", "postProcessHash": "85f233e1234be55a3c231a18a5bf5902315fb78d73a68fe43fca7826f3f601a3" } } @@ -30865,15 +30935,15 @@ }, "555a83de7b1fedbbe92860951f89c33d800c65562d765e18c773348463b9d4b1": { "ru": { - "updatedAt": "2025-12-04T20:16:57.347Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "066af3c924b8a1250e88d2a27f16f53b507e0e9617a80a2a2b39f5ae891cb83e" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.347Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "b4cb559387b02cea9e01ec9df786d8fc50eec0d6812133631e63900a442aa537" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.347Z", + "updatedAt": "2025-12-05T15:21:44.337Z", "postProcessHash": "4e83cadff41e2a0c707e45df7b711b0e0e964bf60b1a4b03f5e71b666d40d8b1" } } @@ -30881,15 +30951,15 @@ "4512096e994b4597d26312dcc20aaa261a25d919afc1ca576d81943eb7dba5e8": { "576c6b22e45a20fa5f3f50de6a9f620190ca1b7786a288fd05ea72e443dae788": { "ru": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "029d7772bdb14d0cc2ca4ecd00965c2dd784bf2737c76648f3b83e2759635ab2" }, "zh": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "87b394d8ba23742c70b4892f614c9b2af257a3ed57ec33b408023a5a240c200b" }, "jp": { - "updatedAt": "2025-12-04T20:16:57.192Z", + "updatedAt": "2025-12-05T15:21:44.178Z", "postProcessHash": "89a6704010a470d3ca4894395bb7ba76be226d708320c4469a6d9e73d2719fac" } } @@ -30897,15 +30967,15 @@ "9b80672ce4026210dce9b9fc8dcdd3cc250a0a78eb37e87ce9abe3344154ce7e": { "9f070809829dec1b3881cdd3a76e90a0533684952dfa123150bed063c8156ad3": { "zh": { - "updatedAt": "2025-12-04T20:16:58.129Z", + "updatedAt": "2025-12-05T15:21:44.815Z", "postProcessHash": "0994ddd9d6117cf05d60f206499af364ed1976ebcdf1aa459354f33559442e6a" }, "ru": { - "updatedAt": "2025-12-04T20:16:58.129Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "2c6541332e0756a46b93d6c3f0ad0489bedce7ac204bb4a42658148411433625" }, "jp": { - "updatedAt": "2025-12-04T20:16:58.129Z", + "updatedAt": "2025-12-05T15:21:44.816Z", "postProcessHash": "1b9b45c62e0d849d1af07fdbdaf20aad3a08a4a6a8cd0c474fc00bc1ccf9732b" } } diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md index 3fd28dfe261..5e57fba5b64 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md @@ -41,6 +41,7 @@ ENGINE = AzureQueue('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1; SETTINGS mode = 'unordered' ``` + ## Settings {#settings} サポートされている設定項目は、ほとんどが `S3Queue` テーブルエンジンと同じですが、`s3queue_` プレフィックスは付きません。[設定の全リスト](../../../engines/table-engines/integrations/s3queue.md#settings)を参照してください。 @@ -48,7 +49,7 @@ SETTINGS mode = 'unordered' 以下は、AzureQueue にのみ対応し、S3Queue には適用されない設定です。 -### `after_processing_move_connection_string` {#after_processing_move_connection_string} +### `after_processing_move_connection_string` {#after_processing_move_connection_string} 宛先が別の Azure コンテナーである場合に、正常に処理されたファイルを移動するための Azure Blob Storage 接続文字列。 @@ -58,7 +59,7 @@ SETTINGS mode = 'unordered' デフォルト値: 空文字列。 -### `after_processing_move_container` {#after_processing_move_container} +### `after_processing_move_container` {#after_processing_move_container} 移動先が別の Azure コンテナである場合に、正常に処理されたファイルを移動する移動先コンテナ名。 @@ -84,6 +85,13 @@ SETTINGS after_processing_move_container = 'dst-container'; ``` + +## AzureQueue テーブルエンジンからの SELECT {#select} + +AzureQueue テーブルに対する SELECT クエリは、既定では禁止されています。これは、データを一度読み取ったらキューから削除するという一般的なキューの利用パターンに従うためです。誤ってデータを失わないようにする目的で、SELECT は禁止されています。 +ただし、状況によってはこれが必要になる場合もあります。その場合は、SETTING `stream_like_engine_allow_direct_select` を `True` に設定する必要があります。 +AzureQueue エンジンには、SELECT クエリ用の特別な SETTING `commit_on_select` があります。これを `False` に設定すると、読み取り後もキュー内のデータを保持し、`True` に設定すると削除します。 + ## 説明 {#description} `SELECT` は、各ファイルを 1 回しかインポートできないため(デバッグ用途を除き)ストリーミングインポートにはあまり有用ではありません。代わりに、[マテリアライズドビュー](../../../sql-reference/statements/create/view.md) を使用してリアルタイム処理フローを作成する方が実用的です。これを行うには、次のようにします。 @@ -111,6 +119,7 @@ CREATE MATERIALIZED VIEW consumer TO stats SELECT * FROM stats ORDER BY key; ``` + ## 仮想カラム {#virtual-columns} * `_path` — ファイルパス。 @@ -134,7 +143,7 @@ SELECT * FROM stats ORDER BY key; ``` -この永続テーブルは、`system.s3queue` と同様の情報を保持しますが、対象は処理済みおよび失敗したファイルです。 +この永続テーブルは、`system.s3queue` と同じ情報を保持しますが、処理済みおよび失敗したファイルに関するものです。 このテーブルの構造は次のとおりです。 @@ -142,24 +151,24 @@ SELECT * FROM stats ORDER BY key; CREATE TABLE system.azure_queue_log ( - `hostname` LowCardinality(String) COMMENT 'ホスト名', - `event_date` Date COMMENT 'このログ行の書き込みイベント日付', - `event_time` DateTime COMMENT 'このログ行の書き込みイベント時刻', - `database` String COMMENT '現在のS3Queueテーブルが存在するデータベース名。', - `table` String COMMENT 'S3Queueテーブル名。', - `uuid` String COMMENT 'S3QueueテーブルのUUID', - `file_name` String COMMENT '処理対象ファイルのファイル名', - `rows_processed` UInt64 COMMENT '処理された行数', - `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT 'ファイル処理のステータス', - `processing_start_time` Nullable(DateTime) COMMENT 'ファイル処理の開始時刻', - `processing_end_time` Nullable(DateTime) COMMENT 'ファイル処理の終了時刻', - `exception` String COMMENT '例外が発生した場合の例外メッセージ' + `hostname` LowCardinality(String) COMMENT 'Hostname', + `event_date` Date COMMENT 'Event date of writing this log row', + `event_time` DateTime COMMENT 'Event time of writing this log row', + `database` String COMMENT 'The name of a database where current S3Queue table lives.', + `table` String COMMENT 'The name of S3Queue table.', + `uuid` String COMMENT 'The UUID of S3Queue table', + `file_name` String COMMENT 'File name of the processing file', + `rows_processed` UInt64 COMMENT 'Number of processed rows', + `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT 'Status of the processing file', + `processing_start_time` Nullable(DateTime) COMMENT 'Time of the start of processing the file', + `processing_end_time` Nullable(DateTime) COMMENT 'Time of the end of processing the file', + `exception` String COMMENT 'Exception message if happened' ) ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 8192 -COMMENT 'S3Queueエンジンによって処理されるファイルの情報を含むログエントリを格納する。' +COMMENT 'Contains logging entries with the information files processes by S3Queue engine.' ``` @@ -171,7 +180,7 @@ FROM system.azure_queue_log LIMIT 1 FORMAT Vertical -行 1: +Row 1: ────── hostname: clickhouse event_date: 2024-12-16 @@ -186,6 +195,6 @@ processing_start_time: 2024-12-16 13:42:47 processing_end_time: 2024-12-16 13:42:47 exception: -1行が結果セットに含まれています。経過時間: 0.002秒。 +1 row in set. Elapsed: 0.002 sec. ``` diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md index bf432ea4f33..eaaf2f46a43 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md @@ -3,15 +3,19 @@ description: 'このエンジンは Azure Blob Storage エコシステムとの sidebar_label: 'Azure Blob Storage' sidebar_position: 10 slug: /engines/table-engines/integrations/azureBlobStorage -title: 'AzureBlobStorage テーブルエンジン' +title: 'AzureBlobStorage テーブルエンジン {#azureblobstorage-table-engine}' doc_type: 'reference' --- + + # AzureBlobStorage テーブルエンジン {#azureblobstorage-table-engine} -このエンジンは、[Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) エコシステムとの統合機能を提供します。 +このエンジンは、[Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) エコシステムとの連携機能を提供します。 + -## テーブルを作成する {#create-table} + +## テーブルを作成 {#create-table} ```sql CREATE TABLE azure_blob_storage_table (name String, value UInt32) @@ -22,22 +26,22 @@ CREATE TABLE azure_blob_storage_table (name String, value UInt32) ### エンジンパラメータ {#engine-parameters} -* `endpoint` — コンテナおよびプレフィックスを含む Azure Blob Storage のエンドポイント URL。使用する認証方式で必要な場合は、任意で account_name を含めることもできます(`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`)。あるいは、これらのパラメータを storage_account_url、account_name、container を用いて個別に指定することもできます。プレフィックスを指定する場合は、endpoint を使用する必要があります。 -* `endpoint_contains_account_name` - endpoint に account_name が含まれているかどうかを指定するためのフラグです。これは特定の認証方式でのみ必要となります(デフォルト: true)。 -* `connection_string|storage_account_url` — connection_string にはアカウント名とキーを含めます([Create connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account) を参照)。あるいは、ここにはストレージアカウントの URL を指定し、アカウント名およびアカウントキーを別のパラメータとして指定することもできます(account_name および account_key パラメータを参照)。 +* `endpoint` — コンテナとプレフィックスを含む AzureBlobStorage のエンドポイント URL。使用する認証方法に応じて、必要であれば account_name を含めることもできます(`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`)。あるいは、storage_account_url・account_name・container を用いてこれらのパラメータを個別に指定することもできます。prefix を指定する場合は、endpoint を使用する必要があります。 +* `endpoint_contains_account_name` - endpoint に account_name が含まれているかどうかを指定するためのフラグです。一部の認証方法でのみ必要になります(デフォルト: true)。 +* `connection_string|storage_account_url` — connection_string にはアカウント名とキーが含まれます([接続文字列の作成](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account) を参照)。または、ここでストレージアカウントの URL を指定し、account name と account key を別パラメータとして指定することもできます(パラメータ account_name および account_key を参照)。 * `container_name` - コンテナ名。 -* `blobpath` - ファイルパス。読み取り専用モードで、次のワイルドカードをサポートします: `*`, `**`, `?`, `{abc,def}`, `{N..M}`。ここで `N`, `M` は数値、`'abc'`, `'def'` は文字列です。 +* `blobpath` - ファイルパス。読み取り専用モードで次のワイルドカードをサポートします: `*`, `**`, `?`, `{abc,def}` および `{N..M}`。ここで `N`, `M` は数値、`'abc'`, `'def'` は文字列です。 * `account_name` - storage_account_url を使用する場合、ここでアカウント名を指定できます。 * `account_key` - storage_account_url を使用する場合、ここでアカウントキーを指定できます。 -* `format` — ファイルの[フォーマット](/interfaces/formats.md)。 -* `compression` — サポートされる値: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`。デフォルトでは、ファイル拡張子から圧縮形式を自動検出します(`auto` を設定した場合と同じです)。 -* `partition_strategy` – オプション: `WILDCARD` または `HIVE`。`WILDCARD` はパス内に `{_partition_id}` を必要とし、これはパーティションキーに置き換えられます。`HIVE` はワイルドカードを許可せず、パスをテーブルルートとみなし、Snowflake ID をファイル名、ファイルフォーマットを拡張子とする Hive 形式のパーティションディレクトリを生成します。デフォルトは `WILDCARD` です。 -* `partition_columns_in_data_file` - `HIVE` パーティション戦略でのみ使用されます。ClickHouse がパーティションカラムもデータファイル内に書き込むことを想定すべきかどうかを指定します。デフォルトは `false` です。 -* `extra_credentials` - 認証には `client_id` および `tenant_id` を使用します。extra_credentials が指定されている場合、`account_name` および `account_key` よりも優先されます。 +* `format` — ファイルの[format](/interfaces/formats.md)。 +* `compression` — サポートされる値: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`。デフォルトではファイル拡張子により圧縮方式を自動検出します(`auto` を指定した場合と同様)。 +* `partition_strategy` – オプション: `WILDCARD` または `HIVE`。`WILDCARD` では、パス内に `{_partition_id}` を含める必要があり、これがパーティションキーに置き換えられます。`HIVE` ではワイルドカードを許可せず、パスをテーブルのルートとみなし、ファイル名として Snowflake ID、拡張子としてファイルフォーマットを用いた Hive 形式のパーティションディレクトリを生成します。デフォルトは `WILDCARD` です。 +* `partition_columns_in_data_file` - `HIVE` パーティション戦略でのみ使用されます。データファイル内にパーティションカラムが書き込まれていることを ClickHouse が想定すべきかどうかを指定します。デフォルトは `false` です。 +* `extra_credentials` - 認証に `client_id` および `tenant_id` を使用します。extra_credentials が指定されている場合、それらは `account_name` および `account_key` より優先されます。 -**Example** +**例** -ユーザーはローカルの Azure Storage 開発用に Azurite エミュレーターを使用できます。詳細は[こちら](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)を参照してください。ローカルインスタンスの Azurite を使用する場合、以下のコマンドでは Azurite がホスト `azurite1` で利用可能であると仮定しているため、`http://azurite1:10000` を `http://localhost:10000` に置き換える必要がある場合があります。 +ユーザーはローカルでの Azure Storage 開発用に Azurite エミュレータを使用できます。詳細は[こちら](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)を参照してください。ローカルの Azurite インスタンスを使用する場合、以下のコマンドでは Azurite がホスト `azurite1` で利用可能であると仮定しているため、`http://azurite1:10000` を `http://localhost:10000` に置き換える必要がある場合があります。 ```sql CREATE TABLE test_table (key UInt64, data String) @@ -56,28 +60,31 @@ SELECT * FROM test_table; └──────┴───────┘ ``` + ## 仮想カラム {#virtual-columns} - `_path` — ファイルへのパス。型: `LowCardinality(String)`。 - `_file` — ファイル名。型: `LowCardinality(String)`。 -- `_size` — ファイルサイズ(バイト単位)。型: `Nullable(UInt64)`。サイズが不明な場合、値は `NULL` になります。 -- `_time` — ファイルの最終更新時刻。型: `Nullable(DateTime)`。時刻が不明な場合、値は `NULL` になります。 +- `_size` — ファイルサイズ(バイト単位)。型: `Nullable(UInt64)`。サイズが不明な場合、値は `NULL`。 +- `_time` — ファイルの最終更新時刻。型: `Nullable(DateTime)`。時刻が不明な場合、値は `NULL`。 + + ## 認証 {#authentication} 現在、認証方法は 3 つあります: -* `Managed Identity` — `endpoint`、`connection_string`、または `storage_account_url` を指定することで利用できます。 -* `SAS Token` — `endpoint`、`connection_string`、または `storage_account_url` を指定することで利用できます。URL 内に '?' が含まれていることで識別されます。例については [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens) を参照してください。 -* `Workload Identity` — `endpoint` または `storage_account_url` を指定することで利用できます。設定で `use_workload_identity` パラメータが指定されている場合、認証には [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications) が使用されます。 +* `Managed Identity` - `endpoint`、`connection_string`、`storage_account_url` のいずれかを指定して利用できます。 +* `SAS Token` - `endpoint`、`connection_string`、`storage_account_url` のいずれかを指定して利用できます。URL 内に '?' が含まれていることで識別されます。例については [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens) を参照してください。 +* `Workload Identity` - `endpoint` または `storage_account_url` を指定して利用できます。設定内で `use_workload_identity` パラメータが設定されている場合、認証には [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications) が使用されます。 ### データキャッシュ {#data-cache} `Azure` テーブルエンジンはローカルディスク上でのデータキャッシュをサポートします。 -ファイルシステムキャッシュの設定オプションと利用方法については、この [セクション](/operations/storing-data.md/#using-local-cache) を参照してください。 -キャッシュはストレージオブジェクトのパスと ETag に基づいて行われるため、ClickHouse は古いキャッシュバージョンを読み込みません。 +ファイルシステムキャッシュの設定オプションと使用方法については、この[セクション](/operations/storing-data.md/#using-local-cache)を参照してください。 +キャッシュはストレージオブジェクトのパスと ETag に基づいて行われるため、ClickHouse は古いキャッシュバージョンを読み取りません。 -キャッシュを有効にするには、`filesystem_cache_name = ''` と `enable_filesystem_cache = 1` の設定を使用します。 +キャッシュを有効にするには、`filesystem_cache_name = ''` と `enable_filesystem_cache = 1` を設定します。 ```sql SELECT * @@ -85,34 +92,34 @@ FROM azureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1; ``` -1. ClickHouse の設定ファイルに以下のセクションを追加します: +1. ClickHouse の設定ファイルに次のセクションを追加します: ```xml - キャッシュディレクトリへのパス + path to cache directory 10Gi ``` -2. ClickHouse の `storage_configuration` セクションで定義されたキャッシュ設定(およびキャッシュストレージ)を再利用します。詳細は[こちら](/operations/storing-data.md/#using-local-cache)を参照してください。 +2. ClickHouse の `storage_configuration` セクションで使用されているキャッシュ構成(およびキャッシュストレージ)を再利用します。[こちらで説明しています](/operations/storing-data.md/#using-local-cache) ### PARTITION BY {#partition-by} -`PARTITION BY` — 任意です。ほとんどの場合、パーティションキーは不要であり、必要な場合でも月単位より細かいパーティションキーが必要になることは通常ありません。パーティショニングは(ORDER BY 式とは対照的に)クエリの高速化には寄与しません。パーティションを細かくし過ぎてはいけません。データをクライアント識別子やクライアント名でパーティション分割しないでください(代わりに、クライアント識別子または名前を ORDER BY 式の先頭のカラムにします)。 +`PARTITION BY` — オプションです。ほとんどの場合、パーティションキーは不要です。必要な場合でも、一般的には月単位より細かいパーティションキーは必要ありません。パーティション分割は(ORDER BY 式とは対照的に)クエリを高速化しません。パーティションを細かくしすぎてはいけません。クライアント識別子や名前でデータをパーティションしないでください(代わりに、クライアント識別子または名前を ORDER BY 式の最初のカラムにします)。 -月単位でパーティショニングするには、`toYYYYMM(date_column)` 式を使用します。ここで `date_column` は型が [Date](/sql-reference/data-types/date.md) の日付カラムです。ここでのパーティション名は `"YYYYMM"` 形式になります。 +月ごとにパーティション分割するには、`toYYYYMM(date_column)` 式を使用します。ここで `date_column` は型が [Date](/sql-reference/data-types/date.md) の日付を保持するカラムです。ここでのパーティション名は `"YYYYMM"` 形式になります。 #### パーティション戦略 {#partition-strategy} -`WILDCARD`(デフォルト):ファイルパス内の `{_partition_id}` ワイルドカードを実際のパーティションキーに置き換えます。読み取りはサポートされていません。 +`WILDCARD`(デフォルト): ファイルパス内の `{_partition_id}` ワイルドカードを実際のパーティションキーに置き換えます。読み取りはサポートされていません。 -`HIVE` は読み取りと書き込みのための Hive スタイルのパーティショニングを実装します。読み取りは再帰的なグロブパターンを用いて行われます。書き込みでは、次の形式でファイルを生成します: `//.`。 +`HIVE` は、読み取りおよび書き込みに対して Hive スタイルのパーティション分割を実装します。読み取りは再帰的なグロブパターンを使用して実装されています。書き込みでは、次の形式でファイルを生成します: `//.`。 -注意: `HIVE` パーティション戦略を使用する場合、`use_hive_partitioning` 設定は影響しません。 +注意: `HIVE` パーティション戦略を使用する場合、`use_hive_partitioning` 設定は効果を持ちません。 `HIVE` パーティション戦略の例: @@ -124,15 +131,17 @@ arthur :) insert into azure_table values (2020, 'Russia', 1), (2021, 'Brazil', 2 arthur :) select _path, * from azure_table; ``` -┌─_path──────────────────────────────────────────────────────────────────────┬─年─┬─国─┬─カウンタ─┐ -1. │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet │ 2020 │ Russia │ 1 │ -2. │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet │ 2021 │ Brazil │ 2 │ +┌─_path──────────────────────────────────────────────────────────────────────┬─year─┬─country─┬─counter─┐ + +1. │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet │ 2020 │ ロシア │ 1 │ +2. │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet │ 2021 │ ブラジル │ 2 │ └────────────────────────────────────────────────────────────────────────────┴──────┴─────────┴─────────┘ ``` ``` + ## 関連項目 {#see-also} [Azure Blob Storage テーブル関数](/sql-reference/table-functions/azureBlobStorage) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md index c9d38cbbcd1..de6fae2a89d 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md @@ -1,5 +1,5 @@ --- -description: 'MongoDB エンジンは、リモートのコレクションからデータを読み出すことを可能にする読み取り専用のテーブルエンジンです。' +description: 'MongoDB エンジンは、リモートのコレクションからデータを読み取ることができる読み取り専用のテーブルエンジンです。' sidebar_label: 'MongoDB' sidebar_position: 135 slug: /engines/table-engines/integrations/mongodb @@ -7,14 +7,18 @@ title: 'MongoDB テーブルエンジン' doc_type: 'reference' --- + + # MongoDB テーブルエンジン {#mongodb-table-engine} -MongoDB エンジンは、リモートの [MongoDB](https://www.mongodb.com/) コレクションからデータを読み取るための、読み取り専用のテーブルエンジンです。 +MongoDB エンジンは、リモートの [MongoDB](https://www.mongodb.com/) コレクションからデータを読み取るための読み取り専用のテーブルエンジンです。 + +MongoDB v3.6+ サーバーのみサポートされています。 +[シードリスト(`mongodb+srv`)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list) はまだサポートされていません。 + -MongoDB v3.6 以降のサーバーのみがサポートされています。 -[シードリスト(`mongodb+srv`)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list) は現在サポートされていません。 -## テーブルを作成する {#creating-a-table} +## テーブルの作成 {#creating-a-table} ```sql CREATE TABLE [IF NOT EXISTS] [db.]table_name @@ -27,22 +31,22 @@ CREATE TABLE [IF NOT EXISTS] [db.]table_name **エンジンパラメータ** -| Parameter | Description | -| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `host:port` | MongoDB サーバーのアドレス。 | -| `database` | リモートデータベース名。 | -| `collection` | リモートコレクション名。 | -| `user` | MongoDB ユーザー。 | -| `password` | ユーザーのパスワード。 | -| `options` | オプション。URL 形式の文字列として指定する MongoDB 接続文字列の [options](https://www.mongodb.com/docs/manual/reference/connection-string-options/#connection-options)。例: `'authSource=admin&ssl=true'` | -| `oid_columns` | WHERE 句で `oid` として扱う列のカンマ区切りリスト。デフォルトは `_id`。 | +| Parameter | Description | +| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host:port` | MongoDB サーバーのアドレス。 | +| `database` | リモートデータベース名。 | +| `collection` | リモートコレクション名。 | +| `user` | MongoDB ユーザー。 | +| `password` | ユーザーのパスワード。 | +| `options` | 任意。URL 形式の文字列として指定する MongoDB 接続文字列の [options](https://www.mongodb.com/docs/manual/reference/connection-string-options/#connection-options)。例: `'authSource=admin&ssl=true'` | +| `oid_columns` | WHERE 句で `oid` として扱うカラムのカンマ区切りリスト。デフォルトは `_id`。 | :::tip MongoDB Atlas のクラウドサービスを使用している場合、接続 URL は「Atlas SQL」オプションから取得できます。 -シードリスト(`mongodb+srv`)はまだサポートされていませんが、今後のリリースで追加される予定です。 +シードリスト (`mongodb**+srv**`) にはまだ対応していませんが、今後のリリースで追加される予定です。 ::: -別の方法として、URI を渡すこともできます。 +または、URI を指定することもできます。 ```sql ENGINE = MongoDB(uri, collection[, oid_columns]); @@ -50,34 +54,35 @@ ENGINE = MongoDB(uri, collection[, oid_columns]); **エンジンパラメータ** -| パラメータ | 説明 | -| ------------- | ------------------------------------------------- | -| `uri` | MongoDB サーバーの接続 URI。 | -| `collection` | リモートコレクション名。 | -| `oid_columns` | WHERE 句で `oid` として扱う列をカンマ区切りで指定します。既定では `_id` です。 | +| Parameter | Description | +| ------------- | ----------------------------------------------- | +| `uri` | MongoDB サーバーの接続 URI。 | +| `collection` | リモートコレクション名。 | +| `oid_columns` | WHERE 句で `oid` として扱うカラムのリスト(カンマ区切り)。既定値は `_id`。 | + ## 型マッピング {#types-mappings} | MongoDB | ClickHouse | | ----------------------- | --------------------------------------------------- | -| bool, int32, int64 | *Decimals を除く任意の数値型*、Boolean、String | -| double | Float64、String | -| date | Date、Date32、DateTime、DateTime64、String | -| string | String、*正しくフォーマットされていれば任意の数値型 (Decimals を除く)* | -| document | String(JSON として) | -| array | Array、String(JSON として) | +| bool, int32, int64 | *Decimals を除く任意の数値型*, Boolean, String | +| double | Float64, String | +| date | Date, Date32, DateTime, DateTime64, String | +| string | String, *適切にフォーマットされていれば任意の数値型 (Decimals を除く)* | +| document | String(JSON として) | +| array | Array, String(JSON として) | | oid | String | | binary | カラム内では String、配列または document 内では base64 エンコードされた文字列 | | uuid (binary subtype 4) | UUID | -| *その他すべて* | String | +| *any other* | String | -キーが MongoDB ドキュメント内に存在しない場合 (たとえばカラム名が一致しない場合)、デフォルト値または (カラムが Nullable の場合は) `NULL` が挿入されます。 +MongoDB のドキュメントでキーが見つからない場合(たとえばカラム名が一致しない場合)、デフォルト値または `NULL`(カラムが Nullable の場合)が挿入されます。 ### OID {#oid} WHERE 句で `String` を `oid` として扱いたい場合は、テーブルエンジンの最後の引数にそのカラム名を指定します。 これは、MongoDB でデフォルトで `oid` 型を持つ `_id` カラムでレコードをクエリする際に必要になる場合があります。 -テーブル内の `_id` フィールドが、たとえば `uuid` のような別の型である場合は、空の `oid_columns` を指定しなければなりません。指定しない場合、このパラメータのデフォルト値である `_id` が使用されます。 +テーブル内の `_id` フィールドが `uuid` など別の型である場合は、空の `oid_columns` を指定する必要があります。そうしないと、このパラメータのデフォルト値 `_id` が使用されます。 ```javascript db.sample_oid.insertMany([ @@ -93,7 +98,7 @@ db.sample_oid.find(); ] ``` -既定では、`_id` のみが `oid` 列として扱われます。 +デフォルトでは、`oid` カラムとして扱われるのは `_id` だけです。 ```sql CREATE TABLE sample_oid @@ -102,11 +107,11 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('mongodb://user:pass@host/db', 'sample_oid'); -SELECT count() FROM sample_oid WHERE _id = '67bf6cc44ebc466d33d42fb2'; --1を出力します。 -SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; --0を出力します。 +SELECT count() FROM sample_oid WHERE _id = '67bf6cc44ebc466d33d42fb2'; --will output 1. +SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; --will output 0 ``` -この場合、出力は `0` になります。ClickHouse は `another_oid_column` が `oid` 型であることを認識していないためです。では、次のように修正しましょう: +この場合、出力は `0` になります。ClickHouse が `another_oid_column` を `oid` 型として認識していないためです。では、これを修正しましょう。 ```sql CREATE TABLE sample_oid @@ -115,7 +120,7 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('mongodb://user:pass@host/db', 'sample_oid', '_id,another_oid_column'); --- または +-- or CREATE TABLE sample_oid ( @@ -123,39 +128,41 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('host', 'db', 'sample_oid', 'user', 'pass', '', '_id,another_oid_column'); -SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; -- 1が出力されます +SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; -- will output 1 now ``` -## サポートされている句 {#supported-clauses} -単純な式を含むクエリのみがサポートされます(例: `WHERE field = ORDER BY field2 LIMIT `)。 +## サポートされる句 {#supported-clauses} + +単純な式を含むクエリのみがサポートされます(例:`WHERE field = ORDER BY field2 LIMIT `)。 このような式は MongoDB のクエリ言語に変換され、サーバー側で実行されます。 -[mongodb_throw_on_unsupported_query](../../../operations/settings/settings.md#mongodb_throw_on_unsupported_query) を使用して、これらの制限をすべて無効化できます。 -その場合、ClickHouse は可能な限り最善を尽くしてクエリを変換しようとしますが、テーブル全体のスキャンや ClickHouse 側での処理が発生する可能性があります。 +[mongodb_throw_on_unsupported_query](../../../operations/settings/settings.md#mongodb_throw_on_unsupported_query) を使用して、これらの制限をすべて無効にできます。 +その場合、ClickHouse はベストエフォートでクエリの変換を試みますが、テーブル全体のスキャンや ClickHouse 側での処理が発生する可能性があります。 :::note -MongoDB では厳密な型付きフィルタが必要となるため、リテラルの型を明示的に設定することを常に推奨します。\ -例えば、`Date` 型でフィルタリングしたい場合: +Mongo では厳密に型付けされたフィルターが必要になるため、リテラルの型は常に明示的に設定することを推奨します。 +たとえば、`Date` でフィルタリングしたい場合: ```sql SELECT * FROM mongo_table WHERE date = '2024-01-01' ``` -これは、Mongo が文字列を `Date` にキャストしないため動作しません。そのため、手動でキャストする必要があります。 +これは、Mongo が文字列を `Date` にキャストしないため動作しません。そのため、自分で明示的にキャストする必要があります。 ```sql SELECT * FROM mongo_table WHERE date = '2024-01-01'::Date OR date = toDate('2024-01-01') ``` -これは `Date`、`Date32`、`DateTime`、`Bool`、`UUID` の各型に適用されます。 +これは `Date`、`Date32`、`DateTime`、`Bool`、`UUID` 型に適用されます。 ::: + ## 使用例 {#usage-example} -MongoDB に [sample_mflix](https://www.mongodb.com/docs/atlas/sample-data/sample-mflix) データセットが読み込まれていることを前提とします +MongoDB に [sample_mflix](https://www.mongodb.com/docs/atlas/sample-data/sample-mflix) データセットがロードされているものとします。 -MongoDB コレクション内のデータを読み取るための ClickHouse テーブルを作成します: +MongoDB のコレクションからデータを読み取れる ClickHouse テーブルを作成します: ```sql CREATE TABLE sample_mflix_table @@ -172,7 +179,7 @@ CREATE TABLE sample_mflix_table ) ENGINE = MongoDB('mongodb://:@atlas-sql-6634be87cefd3876070caf96-98lxs.a.query.mongodb.net/sample_mflix?ssl=true&authSource=admin', 'movies'); ``` -クエリ: +クエリ: ```sql SELECT count() FROM sample_mflix_table @@ -185,10 +192,10 @@ SELECT count() FROM sample_mflix_table ``` ```sql --- JSONExtractStringはMongoDBにプッシュダウンできません +-- JSONExtractString cannot be pushed down to MongoDB SET mongodb_throw_on_unsupported_query = 0; --- 評価が7.5より大きい「バック・トゥ・ザ・フューチャー」の続編をすべて検索 +-- Find all 'Back to the Future' sequels with rating > 7.5 SELECT title, plot, genres, directors, released FROM sample_mflix_table WHERE title IN ('Back to the Future', 'Back to the Future Part II', 'Back to the Future Part III') AND toFloat32(JSONExtractString(imdb, 'rating')) > 7.5 @@ -200,7 +207,7 @@ FORMAT Vertical; Row 1: ────── title: Back to the Future -plot: 若い男性が友人のエメット・ブラウン博士が発明したタイムトラベル可能なデロリアンで誤って30年前の過去に送られ、自分の存在を守るために高校生時代の両親を結びつけなければならない。 +plot: A young man is accidentally sent 30 years into the past in a time-traveling DeLorean invented by his friend, Dr. Emmett Brown, and must make sure his high-school-age parents unite in order to save his own existence. genres: ['Adventure','Comedy','Sci-Fi'] directors: ['Robert Zemeckis'] released: 1985-07-03 @@ -208,14 +215,14 @@ released: 1985-07-03 Row 2: ────── title: Back to the Future Part II -plot: 2015年を訪れた後、マーティ・マクフライは1985年への壊滅的な変化を防ぐために、最初の旅行に干渉することなく1955年を再訪しなければならない。 +plot: After visiting 2015, Marty McFly must repeat his visit to 1955 to prevent disastrous changes to 1985... without interfering with his first trip. genres: ['Action','Adventure','Comedy'] directors: ['Robert Zemeckis'] released: 1989-11-22 ``` ```sql --- Cormac McCarthyの著書を原作とする映画の上位3作品を検索 +-- Find top 3 movies based on Cormac McCarthy's books SELECT title, toFloat32(JSONExtractString(imdb, 'rating')) AS rating FROM sample_mflix_table WHERE arrayExists(x -> x LIKE 'Cormac McCarthy%', writers) @@ -224,14 +231,15 @@ LIMIT 3; ``` ```text - ┌─タイトル───────────────┬─評価───┐ -1. │ ノーカントリー │ 8.1 │ -2. │ サンセット・リミテッド │ 7.4 │ -3. │ ザ・ロード │ 7.3 │ + ┌─title──────────────────┬─rating─┐ +1. │ No Country for Old Men │ 8.1 │ +2. │ The Sunset Limited │ 7.4 │ +3. │ The Road │ 7.3 │ └────────────────────────┴────────┘ ``` + ## トラブルシューティング {#troubleshooting} -DEBUG レベルのログで生成された MongoDB クエリを確認できます。 +DEBUG レベルのログで、生成された MongoDB クエリを確認できます。 実装の詳細については、[mongocxx](https://github.com/mongodb/mongo-cxx-driver) および [mongoc](https://github.com/mongodb/mongo-c-driver) のドキュメントを参照してください。 diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md index 35efd595cd3..8978ad6ae89 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md @@ -1,5 +1,5 @@ --- -description: 'このエンジンは Amazon S3 エコシステムとの統合を提供します。HDFS エンジンに類似していますが、S3 固有の機能を備えています。' +description: 'このエンジンは Amazon S3 エコシステムと統合します。HDFS エンジンに似ていますが、S3 固有の機能も備えています。' sidebar_label: 'S3' sidebar_position: 180 slug: /engines/table-engines/integrations/s3 @@ -7,9 +7,13 @@ title: 'S3 テーブルエンジン' doc_type: 'reference' --- -# S3 table engine {#s3-table-engine} -このエンジンは、[Amazon S3](https://aws.amazon.com/s3/) エコシステムと連携します。このエンジンは [HDFS](/engines/table-engines/integrations/hdfs) エンジンと類似していますが、S3 固有の機能を備えています。 + +# S3 テーブルエンジン {#s3-table-engine} + +このエンジンは、[Amazon S3](https://aws.amazon.com/s3/) エコシステムとの連携機能を提供します。このエンジンは [HDFS](/engines/table-engines/integrations/hdfs) エンジンと似ていますが、S3 固有の機能を備えています。 + + ## 例 {#example} @@ -30,6 +34,7 @@ SELECT * FROM s3_engine_table LIMIT 2; └──────┴───────┘ ``` + ## テーブルの作成 {#creating-a-table} ```sql @@ -41,22 +46,22 @@ CREATE TABLE s3_engine_table (name String, value UInt32) ### エンジンパラメータ {#parameters} -* `path` — ファイルへのパスを含むバケット URL。読み取り専用モードでは `*`、`**`、`?`、`{abc,def}`、`{N..M}` というワイルドカードをサポートします。ここで `N`、`M` は数値、`'abc'`、`'def'` は文字列です。詳細は[下記](#wildcards-in-path)を参照してください。 -* `NOSIGN` - 認証情報の代わりにこのキーワードが指定された場合、すべてのリクエストは署名されません。 +* `path` — ファイルへのパスを含むバケットの URL。読み取り専用モードでは、次のワイルドカードをサポートします: `*`, `**`, `?`, `{abc,def}`, `{N..M}`。ここで `N`, `M` は数値、`'abc'`, `'def'` は文字列です。詳細は[下記](#wildcards-in-path)を参照してください。 +* `NOSIGN` — このキーワードが認証情報の代わりに指定された場合、すべてのリクエストは署名されません。 * `format` — ファイルの[フォーマット](/sql-reference/formats#formats-overview)。 -* `aws_access_key_id`, `aws_secret_access_key` - [AWS](https://aws.amazon.com/) アカウントユーザーの長期認証情報。これを使用してリクエストを認証できます。パラメータは省略可能です。認証情報が指定されていない場合、設定ファイルの値が使用されます。詳細は [Using S3 for Data Storage](../mergetree-family/mergetree.md#table_engine-mergetree-s3) を参照してください。 -* `compression` — 圧縮タイプ。サポートされる値: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`。パラメータは省略可能です。デフォルトではファイル拡張子から圧縮方式を自動検出します。 -* `partition_strategy` – オプション: `WILDCARD` または `HIVE`。`WILDCARD` では、パス内に `{_partition_id}` を含める必要があり、これがパーティションキーに置き換えられます。`HIVE` ではワイルドカードは使用できず、パスはテーブルのルートであるとみなし、Snowflake ID をファイル名、ファイルフォーマットを拡張子とする Hive スタイルのパーティションディレクトリを生成します。デフォルトは `WILDCARD` です。 -* `partition_columns_in_data_file` - `HIVE` パーティション戦略でのみ使用されます。データファイル内にパーティション列が書き込まれていることを ClickHouse が想定すべきかどうかを指定します。デフォルトは `false` です。 -* `storage_class_name` - オプション: `STANDARD` または `INTELLIGENT_TIERING`。 [AWS S3 Intelligent Tiering](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/) を指定できます。 +* `aws_access_key_id`, `aws_secret_access_key` — [AWS](https://aws.amazon.com/) アカウントユーザーの長期認証情報。これらを使用してリクエストの認証を行うことができます。パラメータはオプションです。認証情報が指定されていない場合は、設定ファイルの値が使用されます。詳細は [Using S3 for Data Storage](../mergetree-family/mergetree.md#table_engine-mergetree-s3) を参照してください。 +* `compression` — 圧縮タイプ。サポートされる値: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`。パラメータはオプションです。デフォルトでは、ファイル拡張子に基づいて圧縮形式を自動検出します。 +* `partition_strategy` — オプション: `WILDCARD` または `HIVE`。`WILDCARD` では、パスに `{_partition_id}` を含める必要があり、これはパーティションキーに置き換えられます。`HIVE` はワイルドカードを許可せず、パスをテーブルルートとみなし、Snowflake ID をファイル名、ファイルフォーマットを拡張子として Hive スタイルのパーティションディレクトリを生成します。デフォルトは `WILDCARD` です。 +* `partition_columns_in_data_file` — `HIVE` パーティション戦略でのみ使用されます。ClickHouse がデータファイル内にパーティションカラムが書き込まれていることを想定すべきかどうかを指定します。デフォルトは `false` です。 +* `storage_class_name` — オプション: `STANDARD` または `INTELLIGENT_TIERING`。 [AWS S3 Intelligent Tiering](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/) を指定できます。 ### データキャッシュ {#data-cache} `S3` テーブルエンジンはローカルディスク上でのデータキャッシュをサポートします。 -ファイルシステムキャッシュの設定オプションと使用方法については、この[セクション](/operations/storing-data.md/#using-local-cache)を参照してください。 -キャッシュはストレージオブジェクトのパスと ETag に基づいて行われるので、ClickHouse は古いキャッシュバージョンを読み取りません。 +ファイルシステムキャッシュの設定オプションと使用方法は、この[セクション](/operations/storing-data.md/#using-local-cache)を参照してください。 +キャッシュはストレージオブジェクトのパスと ETag に基づいて行われるため、ClickHouse は古いキャッシュバージョンを読み取りません。 -キャッシュを有効にするには、設定 `filesystem_cache_name = ''` と `enable_filesystem_cache = 1` を使用します。 +キャッシュを有効にするには、`filesystem_cache_name = ''` と `enable_filesystem_cache = 1` という設定を使用します。 ```sql SELECT * @@ -66,37 +71,38 @@ SETTINGS filesystem_cache_name = 'cache_for_s3', enable_filesystem_cache = 1; 設定ファイルでキャッシュを定義する方法は 2 つあります。 -1. ClickHouse の設定ファイルに次のセクションを追加します: +1. ClickHouse の設定ファイルに以下のセクションを追加します: ```xml - キャッシュディレクトリへのパス + path to cache directory 10Gi ``` -2. ClickHouse の `storage_configuration` セクションで設定されたキャッシュ構成(およびそれに伴うキャッシュストレージ)を再利用します。詳しくは[こちら](/operations/storing-data.md/#using-local-cache)を参照してください。 +2. ClickHouse の `storage_configuration` セクション([こちら](/operations/storing-data.md/#using-local-cache)で説明)からキャッシュ設定(およびそれに伴うキャッシュストレージ)を再利用します。 ### PARTITION BY {#partition-by} -`PARTITION BY` — 省略可能です。ほとんどの場合、パーティションキーは不要であり、必要な場合でも月単位より細かいパーティションキーが求められることはほぼありません。パーティション分割は(ORDER BY 式とは対照的に)クエリを高速化しません。過度に細かいパーティション分割は避けてください。データをクライアント識別子や名前でパーティション分割しないでください(代わりに、ORDER BY 式の最初の列としてクライアント識別子または名前を指定してください)。 +`PARTITION BY` — オプションです。ほとんどの場合、パーティションキーは不要であり、必要な場合でも月単位より細かいパーティションキーが必要になることは、一般的にはありません。パーティション分割はクエリを高速化しません(ORDER BY 式とは対照的です)。細かすぎるパーティション分割は決して行うべきではありません。クライアント識別子や名前でデータをパーティション分割しないでください(その代わり、クライアント識別子または名前を ORDER BY 式の先頭のカラムにします)。 -月単位でパーティション分割するには、`date_column` が型 [Date](/sql-reference/data-types/date.md) の日付を持つ列であるとき、`toYYYYMM(date_column)` 式を使用します。ここでのパーティション名は `"YYYYMM"` 形式になります。 +月単位でパーティション分割を行うには、`toYYYYMM(date_column)` 式を使用します。ここで、`date_column` は型が [Date](/sql-reference/data-types/date.md) の日付を格納するカラムです。この場合のパーティション名は `"YYYYMM"` 形式になります。 #### パーティション戦略 {#partition-strategy} -`WILDCARD`(デフォルト): ファイルパス内の `{_partition_id}` ワイルドカードを実際のパーティションキーに置き換えます。読み取りはサポートされていません。 +`WILDCARD`(デフォルト):ファイルパス内の `{_partition_id}` ワイルドカードを実際のパーティションキーに置き換えます。読み取りはサポートされていません。 + -`HIVE` は読み書きのために Hive スタイルのパーティショニングを実装しています。読み取りは再帰的なグロブパターンを使って行われ、`SELECT * FROM s3('table_root/**.parquet')` と同等です。 +`HIVE` は読み取りおよび書き込みに対して Hive スタイルのパーティショニングを実装します。読み取りは再帰的な glob パターンを用いて実装されており、`SELECT * FROM s3('table_root/**.parquet')` と同等です。 書き込みでは、次の形式でファイルを生成します: `//.`。 -注意: `HIVE` パーティション方式を使用する場合、`use_hive_partitioning` 設定は効果はありません。 +注意: `HIVE` パーティショニング戦略を使用している場合、`use_hive_partitioning` 設定は効果を持ちません。 -`HIVE` パーティション方式の例: +`HIVE` パーティショニング戦略の例: ```sql arthur :) CREATE TABLE t_03363_parquet (year UInt16, country String, counter UInt8) @@ -135,21 +141,21 @@ arthur :) select _path, * from t_03363_parquet; ### パーティション化されたデータのクエリ実行 {#querying-partitioned-data} -この例では、ClickHouse と MinIO を統合した [docker compose recipe](https://github.com/ClickHouse/examples/tree/5fdc6ff72f4e5137e23ea075c88d3f44b0202490/docker-compose-recipes/recipes/ch-and-minio-S3) を使用します。エンドポイントと認証情報の値を差し替えることで、S3 を使って同じクエリを再現できます。 +この例では、ClickHouse と MinIO を統合した [docker compose レシピ](https://github.com/ClickHouse/examples/tree/5fdc6ff72f4e5137e23ea075c88d3f44b0202490/docker-compose-recipes/recipes/ch-and-minio-S3) を使用します。エンドポイントと認証情報の値を差し替えることで、S3 を使って同じクエリを再現できるはずです。 + +`ENGINE` 設定内の S3 エンドポイントでは、S3 オブジェクト(ファイル名)の一部としてパラメータトークン `{_partition_id}` を使用しており、SELECT クエリはその結果として生成されるオブジェクト名(例: `test_3.csv`)を対象に実行されます。 -`ENGINE` 設定内の S3 エンドポイントでは、S3 オブジェクト(ファイル名)の一部としてパラメータトークン `{_partition_id}` を使用しており、SELECT クエリはそれによって生成されるオブジェクト名(例: `test_3.csv`)を対象に実行されます。 :::note -例で示したように、パーティション分割された S3 テーブルに対するクエリは -現時点では直接はサポートされていませんが、S3 テーブル関数を使って -個々のパーティションにクエリを実行することで実現できます。 - -S3 にパーティション分割されたデータを書き込む主なユースケースは、 -そのデータを別の ClickHouse システムに転送できるようにすることです -(たとえば、オンプレミス環境から ClickHouse Cloud へ移行する場合など)。 -ClickHouse のデータセットは非常に大きくなることが多く、またネットワークの -信頼性が必ずしも完璧ではないため、データセットをサブセットに分割して -転送する、すなわちパーティション分割して書き込むのが理にかなっています。 +この例に示されているように、パーティション化された S3 テーブルに対するクエリは +現時点では直接サポートされていませんが、S3 テーブル関数を使用して個々のパーティションに対してクエリを実行することで +実現できます。 + +S3 にパーティション化されたデータを書き込む主なユースケースは、そのデータを別の +ClickHouse システムに転送できるようにすることです(たとえば、オンプレミスシステムから ClickHouse +Cloud への移行など)。ClickHouse のデータセットは非常に大きいことが多く、ネットワーク +の信頼性も常に完璧とは限らないため、データセットを小さな単位(サブセット)に分割して転送するのが理にかなっており、 +そのためにパーティション化した書き込みを行います。 ::: #### テーブルを作成する {#create-the-table} @@ -176,10 +182,10 @@ PARTITION BY column3 INSERT INTO p VALUES (1, 2, 3), (3, 2, 1), (78, 43, 45) ``` -#### パーティション 3 からの選択 {#select-from-partition-3} +#### パーティション3から選択 {#select-from-partition-3} :::tip -このクエリは S3 テーブル関数を使用します。 +このクエリでは S3 テーブル関数を使用します ::: ```sql @@ -193,7 +199,7 @@ FROM s3('http://minio:10000/clickhouse//test_3.csv', 'minioadmin', 'minioadminpa └────┴────┴────┘ ``` -#### パーティション1からの SELECT {#select-from-partition-1} +#### パーティション1からのSELECT {#select-from-partition-1} ```sql SELECT * @@ -206,7 +212,7 @@ FROM s3('http://minio:10000/clickhouse//test_1.csv', 'minioadmin', 'minioadminpa └────┴────┴────┘ ``` -#### パーティション45からのSELECT {#select-from-partition-45} +#### パーティション45からSELECTする {#select-from-partition-45} ```sql SELECT * @@ -221,61 +227,68 @@ FROM s3('http://minio:10000/clickhouse//test_45.csv', 'minioadmin', 'minioadminp #### 制限事項 {#limitation} -つい `Select * from p` を実行したくなるかもしれませんが、上述のとおりこのクエリは失敗します。前述のクエリを使用してください。 +つい `Select * from p` を試したくなるかもしれませんが、前述のとおりこのクエリは失敗します。直前のクエリを使用してください。 ```sql SELECT * FROM p ``` ```response -サーバーから例外を受信しました (バージョン 23.4.1): -Code: 48. DB::Exception: localhost:9000 から受信しました。DB::Exception: パーティション化されたS3ストレージからの読み取りはまだ実装されていません。(NOT_IMPLEMENTED) +Received exception from server (version 23.4.1): +Code: 48. DB::Exception: Received from localhost:9000. DB::Exception: Reading from a partitioned S3 storage is not implemented yet. (NOT_IMPLEMENTED) ``` + ## データの挿入 {#inserting-data} -行は新しいファイルにのみ挿入できる点に注意してください。マージ処理やファイル分割処理は行われません。いったんファイルが書き込まれると、その後の挿入は失敗します。これを回避するには、`s3_truncate_on_insert` および `s3_create_new_file_on_insert` の設定を使用できます。詳細は[こちら](/integrations/s3#inserting-data)を参照してください。 +行は新しいファイルにしか挿入できないことに注意してください。マージ処理やファイル分割処理はありません。いったんファイルが書き込まれると、その後の挿入は失敗します。これを回避するには、`s3_truncate_on_insert` および `s3_create_new_file_on_insert` の設定を使用します。詳細は[こちら](/integrations/s3#inserting-data)を参照してください。 -## 仮想列 {#virtual-columns} -- `_path` — ファイルのパス。型: `LowCardinality(String)`。 -- `_file` — ファイル名。型: `LowCardinality(String)`。 -- `_size` — ファイルのサイズ(バイト単位)。型: `Nullable(UInt64)`。サイズが不明な場合、値は `NULL` です。 -- `_time` — ファイルの最終更新時刻。型: `Nullable(DateTime)`。時刻が不明な場合、値は `NULL` です。 -- `_etag` — ファイルの ETag。型: `LowCardinality(String)`。ETag が不明な場合、値は `NULL` です。 -- `_tags` — ファイルのタグ。型: `Map(String, String)`。タグが存在しない場合、値は空のマップ `{}'。 -仮想列の詳細については [こちら](../../../engines/table-engines/index.md#table_engines-virtual_columns) を参照してください。 +## 仮想カラム {#virtual-columns} + +- `_path` — ファイルへのパス。型: `LowCardinality(String)`. +- `_file` — ファイル名。型: `LowCardinality(String)`. +- `_size` — ファイルサイズ(バイト単位)。型: `Nullable(UInt64)`. サイズが不明な場合、値は `NULL`。 +- `_time` — ファイルの最終更新時刻。型: `Nullable(DateTime)`. 時刻が不明な場合、値は `NULL`。 +- `_etag` — ファイルの ETag。型: `LowCardinality(String)`. ETag が不明な場合、値は `NULL`。 +- `_tags` — ファイルのタグ。型: `Map(String, String)`. タグが存在しない場合、値は空のマップ `{}'。 + +仮想カラムの詳細については[こちら](../../../engines/table-engines/index.md#table_engines-virtual_columns)を参照してください。 + + ## 実装の詳細 {#implementation-details} -- 読み取りと書き込みは並行して実行できます -- サポートされていない項目: - - `ALTER` と `SELECT...SAMPLE` の操作 - - インデックス - - [Zero-copy](../../../operations/storing-data.md#zero-copy) レプリケーションは実行可能ですが、サポート対象外です。 +- 読み取りと書き込みは並列に実行可能 +- 非サポート項目: + - `ALTER` および `SELECT...SAMPLE` 操作。 + - インデックス。 + - [Zero-copy](../../../operations/storing-data.md#zero-copy) レプリケーションは利用自体は可能だが、サポート対象外。 - :::note Zero-copy レプリケーションは本番利用にはまだ準備ができていません + :::note Zero-copy レプリケーションは本番環境向けに十分に成熟していません Zero-copy レプリケーションは ClickHouse バージョン 22.8 以降ではデフォルトで無効化されています。この機能は本番環境での使用は推奨されません。 ::: -## パスのワイルドカード {#wildcards-in-path} -`path` 引数では、bash 形式のワイルドカードを使用して複数ファイルを指定できます。処理対象となるには、ファイルが存在し、パスパターン全体に一致している必要があります。ファイルの一覧は `SELECT` 実行時に決定されます(`CREATE` 時点ではありません)。 -* `*` — `/` を除く任意の文字列(空文字列も含む)に 0 文字以上マッチします。 -* `**` — `/` を含む任意の文字列(空文字列も含む)に 0 文字以上マッチします。 +## パスでのワイルドカード {#wildcards-in-path} + +`path` 引数では、bash 互換のワイルドカードを使って複数のファイルを指定できます。処理対象となるには、ファイルが存在し、パス全体のパターンに一致している必要があります。ファイルの列挙は `SELECT` の実行時に行われます(`CREATE` の時点ではありません)。 + +* `*` — `/` 以外の任意の文字列(空文字列を含む)に任意の長さでマッチします。 +* `**` — `/` を含む任意の文字列(空文字列を含む)に任意の長さでマッチします。 * `?` — 任意の 1 文字にマッチします。 -* `{some_string,another_string,yet_another_one}` — 文字列 `'some_string', 'another_string', 'yet_another_one'` のいずれか 1 つにマッチします。 -* `{N..M}` — N から M までの範囲(両端を含む)の任意の数値にマッチします。N と M には先頭ゼロを含めることができます(例: `000..078`)。 +* `{some_string,another_string,yet_another_one}` — 文字列 `'some_string', 'another_string', 'yet_another_one'` のいずれかにマッチします。 +* `{N..M}` — N から M までの範囲の数値(両端を含む)にマッチします。N と M には先頭にゼロを付けることができます(例: `000..078`)。 -`{}` を使った構文は、[remote](../../../sql-reference/table-functions/remote.md) テーブル関数と同様です。 +`{}` を使った構文は、[remote](../../../sql-reference/table-functions/remote.md) テーブル関数と似ています。 :::note -ファイル一覧に先頭ゼロ付きの数値範囲が含まれる場合は、各桁ごとに波括弧を用いた構文を使うか、`?` を使用してください。 +ファイル名の一覧に先頭にゼロを含む数値の範囲がある場合は、各桁ごとに波かっこ構文を使うか、`?` を使用してください。 ::: -**ワイルドカードを用いた例 1** +**ワイルドカードを使った例 1** `file-000.csv`, `file-001.csv`, ... , `file-999.csv` という名前のファイルを対象とするテーブルを作成します: @@ -286,7 +299,7 @@ CREATE TABLE big_table (name String, value UInt32) **ワイルドカードを用いた例 2** -S3 上に、次の URI を持つ CSV 形式のファイルが複数あるとします: +S3 上に、次の URI を持つ複数の CSV 形式のファイルがあるとします: * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_1.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_1.csv)' * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_2.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_2.csv)' @@ -295,72 +308,77 @@ S3 上に、次の URI を持つ CSV 形式のファイルが複数あるとし * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_2.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_2.csv)' * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_3.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_3.csv)' -これら 6 つのファイルすべてを含むテーブルを作成する方法はいくつかあります: +これら 6 つすべてのファイルから成るテーブルを作成する方法はいくつかあります: -1. ファイル名の末尾の範囲を指定する: +1. ファイル名のポストフィックスの範囲を指定する: ```sql CREATE TABLE table_with_range (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/some_file_{1..3}', 'CSV'); ``` -2. `some_file_` というプレフィックスが付いたファイルをすべて取り出します(両方のフォルダに、そのようなプレフィックスが付いた余分なファイルが存在しないことを前提とします): +2. `some_file_` というプレフィックスを持つすべてのファイルを取得します(両方のフォルダに、そのプレフィックスを持つ余分なファイルが存在しないことを確認してください): ```sql CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/some_file_?', 'CSV'); ``` -3. 両方のフォルダ内にあるすべてのファイルを取得します(各ファイルは、クエリで説明した形式とスキーマに準拠している必要があります): +3. 両方のフォルダ内にあるすべてのファイルを対象とします(すべてのファイルはクエリで記述されている形式とスキーマを満たしている必要があります): ```sql CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/*', 'CSV'); ``` + ## ストレージ設定 {#storage-settings} -- [s3_truncate_on_insert](/operations/settings/settings.md#s3_truncate_on_insert) - 挿入前にファイルを切り詰められるようにします。デフォルトでは無効です。 -- [s3_create_new_file_on_insert](/operations/settings/settings.md#s3_create_new_file_on_insert) - フォーマットにサフィックスが付いている場合、挿入のたびに新しいファイルを作成できるようにします。デフォルトでは無効です。 +- [s3_truncate_on_insert](/operations/settings/settings.md#s3_truncate_on_insert) - 挿入前にファイルを切り詰め(内容を削除し)できるようにします。デフォルトでは無効です。 +- [s3_create_new_file_on_insert](/operations/settings/settings.md#s3_create_new_file_on_insert) - フォーマットにサフィックスがある場合、挿入ごとに新しいファイルを作成できるようにします。デフォルトでは無効です。 - [s3_skip_empty_files](/operations/settings/settings.md#s3_skip_empty_files) - 読み取り時に空のファイルをスキップできるようにします。デフォルトでは有効です。 + + ## S3 関連の設定 {#settings} -以下の設定は、クエリ実行前に指定するか、設定ファイルに記述できます。 - -- `s3_max_single_part_upload_size` — S3 への単一パートアップロードでアップロードするオブジェクトの最大サイズ。デフォルト値は `32Mb`。 -- `s3_min_upload_part_size` — [S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) によるマルチパートアップロード時にアップロードするパートの最小サイズ。デフォルト値は `16Mb`。 -- `s3_max_redirects` — 許可される S3 リダイレクトのホップ数の上限。デフォルト値は `10`。 -- `s3_single_read_retries` — 単一の読み取り処理における最大再試行回数。デフォルト値は `4`。 -- `s3_max_put_rps` — レート制限(スロットリング)が行われる前の 1 秒あたりの最大 PUT リクエスト数。デフォルト値は `0`(無制限)。 -- `s3_max_put_burst` — 1 秒あたりの上限に達する前に同時に発行できるリクエストの最大数。デフォルト値(`0` の場合)は `s3_max_put_rps` と同じ。 -- `s3_max_get_rps` — レート制限(スロットリング)が行われる前の 1 秒あたりの最大 GET リクエスト数。デフォルト値は `0`(無制限)。 -- `s3_max_get_burst` — 1 秒あたりの上限に達する前に同時に発行できるリクエストの最大数。デフォルト値(`0` の場合)は `s3_max_get_rps` と同じ。 -- `s3_upload_part_size_multiply_factor` - 単一の書き込みから S3 に対して `s3_multiply_parts_count_threshold` 個のパートがアップロードされるたびに、`s3_min_upload_part_size` にこの係数を掛けます。デフォルト値は `2`。 -- `s3_upload_part_size_multiply_parts_count_threshold` - この数のパートが S3 にアップロードされるたびに、`s3_min_upload_part_size` は `s3_upload_part_size_multiply_factor` 倍になります。デフォルト値は `500`。 -- `s3_max_inflight_parts_for_one_file` - 1 つのオブジェクトに対して同時に実行できる PUT リクエスト数を制限します。この数は制限しておく必要があります。値 `0` は無制限を意味します。デフォルト値は `20`。各インフライト中のパートは、最初の `s3_upload_part_size_multiply_factor` 個のパートについては `s3_min_upload_part_size` サイズのバッファを持ち、ファイルが十分に大きい場合にはそれより大きくなります。`upload_part_size_multiply_factor` を参照してください。デフォルト設定では、1 つのアップロード済みファイルは、サイズが `8G` 未満のファイルであれば最大でも `320Mb` しか消費しません。より大きなファイルでは消費量は増加します。 - -セキュリティ上の考慮事項: 悪意あるユーザーが任意の S3 URL を指定できる場合、[SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery) 攻撃を回避するために `s3_max_redirects` を 0 に設定する必要があります。あるいは、サーバー設定で `remote_host_filter` を指定する必要があります。 - -## エンドポイント単位の設定 {#endpoint-settings} - -次の設定は、特定のエンドポイント用に設定ファイル内で指定できます(URL のプレフィックスの完全一致で判定されます)。 - -* `endpoint` — エンドポイントのプレフィックスを指定します。必須です。 -* `access_key_id` と `secret_access_key` — 指定したエンドポイントで使用する認証情報を指定します。任意です。 -* `use_environment_credentials` — `true` に設定すると、S3 クライアントは環境変数および [Amazon EC2](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud) のメタデータから、そのエンドポイント用の認証情報を取得しようとします。任意で、デフォルト値は `false` です。 -* `region` — S3 リージョン名を指定します。任意です。 -* `use_insecure_imds_request` — `true` に設定すると、S3 クライアントは Amazon EC2 メタデータから認証情報を取得する際に、非セキュアな IMDS リクエストを使用します。任意で、デフォルト値は `false` です。 -* `expiration_window_seconds` — 有効期限付き認証情報が失効しているかを確認するための猶予期間(グレースピリオド)です。任意で、デフォルト値は `120` です。 -* `no_sign_request` - すべての認証情報を無視し、リクエストに署名しません。公開バケットにアクセスする場合に便利です。 -* `header` — 指定した HTTP ヘッダーを、そのエンドポイントへのリクエストに追加します。任意で、複数回指定できます。 -* `access_header` - 他のソースからの認証情報が存在しない場合に限り、指定した HTTP ヘッダーをそのエンドポイントへのリクエストに追加します。 -* `server_side_encryption_customer_key_base64` — 指定した場合、SSE-C 暗号化された S3 オブジェクトへアクセスするために必要なヘッダーが設定されます。任意です。 -* `server_side_encryption_kms_key_id` - 指定した場合、[SSE-KMS 暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) された S3 オブジェクトへアクセスするために必要なヘッダーが設定されます。空文字列を指定した場合は、AWS 管理の S3 キーが使用されます。任意です。 -* `server_side_encryption_kms_encryption_context` - `server_side_encryption_kms_key_id` と併せて指定した場合、指定した暗号化コンテキストのヘッダーが SSE-KMS 用に設定されます。任意です。 -* `server_side_encryption_kms_bucket_key_enabled` - `server_side_encryption_kms_key_id` と併せて指定した場合、SSE-KMS 用に S3 バケットキーを有効化するヘッダーが設定されます。任意で、`true` または `false` を指定でき、デフォルトは未設定(バケットレベルの設定に従います)です。 -* `max_single_read_retries` — 単一の読み取り処理中に試行される最大回数です。デフォルト値は `4` です。任意です。 -* `max_put_rps`, `max_put_burst`, `max_get_rps` および `max_get_burst` - 特定のエンドポイントで、クエリ単位ではなく使用するレート制限(スロットリング)設定です(上記の説明を参照)。任意です。 +次の設定は、クエリ実行前に設定するか、設定ファイルに記述できます。 + +- `s3_max_single_part_upload_size` — S3 への単一パートアップロードで使用するオブジェクトの最大サイズ。デフォルト値は `32Mb`。 +- `s3_min_upload_part_size` — [S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) を使用したマルチパートアップロード時にアップロードするパーツの最小サイズ。デフォルト値は `16Mb`。 +- `s3_max_redirects` — 許可される S3 リダイレクトホップの最大数。デフォルト値は `10`。 +- `s3_single_read_retries` — 単一の読み取り時の最大リトライ回数。デフォルト値は `4`。 +- `s3_max_put_rps` — スロットルされる前の 1 秒あたりの最大 PUT リクエスト数。デフォルト値は `0`(無制限)。 +- `s3_max_put_burst` — 1 秒あたりのリクエスト数制限に達する前に同時に発行できるリクエストの最大数。デフォルト値(`0`)では `s3_max_put_rps` と同じです。 +- `s3_max_get_rps` — スロットルされる前の 1 秒あたりの最大 GET リクエスト数。デフォルト値は `0`(無制限)。 +- `s3_max_get_burst` — 1 秒あたりのリクエスト数制限に達する前に同時に発行できるリクエストの最大数。デフォルト値(`0`)では `s3_max_get_rps` と同じです。 +- `s3_upload_part_size_multiply_factor` - 単一の書き込みから S3 に対して `s3_multiply_parts_count_threshold` 個のパーツがアップロードされるたびに、`s3_min_upload_part_size` にこの係数を掛けます。デフォルト値は `2`。 +- `s3_upload_part_size_multiply_parts_count_threshold` - この数のパーツが S3 にアップロードされるたびに、`s3_min_upload_part_size` は `s3_upload_part_size_multiply_factor` 倍になります。デフォルト値は `500`。 +- `s3_max_inflight_parts_for_one_file` - 1 つのオブジェクトに対して同時に実行できる PUT リクエスト数を制限します。この数は制限しておくべきです。値 `0` は無制限を意味します。デフォルト値は `20`。各インフライトパーツは、最初の `s3_upload_part_size_multiply_factor` 個のパーツに対しては `s3_min_upload_part_size` のサイズのバッファを持ち、ファイルが十分に大きい場合はそれ以上になります。`upload_part_size_multiply_factor` を参照してください。デフォルト設定では、アップロードされる 1 つのファイルは、サイズが `8G` 未満の場合、`320Mb` を超えてメモリを消費しません。より大きなファイルの場合は消費量も増加します。 + +セキュリティ上の注意: 悪意のあるユーザーが任意の S3 URL を指定できる場合、[SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery) 攻撃を回避するには `s3_max_redirects` を 0 に設定する必要があります。あるいは、サーバー設定で `remote_host_filter` を指定する必要があります。 + + + +## エンドポイントベースの設定 {#endpoint-settings} + +次の設定は、特定のエンドポイントに対して設定ファイル内で指定できます(URL の先頭プレフィックスで完全一致してマッチします): + +* `endpoint` — エンドポイントのプレフィックスを指定します。必須。 +* `access_key_id` と `secret_access_key` — 指定したエンドポイントで使用する認証情報を指定します。任意。 +* `use_environment_credentials` — `true` に設定すると、指定したエンドポイントについて、S3 クライアントは環境変数および [Amazon EC2](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud) メタデータから認証情報の取得を試みます。任意。デフォルト値は `false`。 +* `region` — S3 リージョン名を指定します。任意。 +* `use_insecure_imds_request` — `true` に設定すると、S3 クライアントは Amazon EC2 メタデータから認証情報を取得する際に、安全でない IMDS リクエストを使用します。任意。デフォルト値は `false`。 +* `expiration_window_seconds` — 有効期限ベースの認証情報が期限切れかどうかを確認するための猶予期間(秒)です。任意。デフォルト値は `120`。 +* `no_sign_request` - すべての認証情報を無視し、リクエストに署名しません。パブリックなバケットへアクセスする場合に有用です。 +* `header` — 指定した HTTP ヘッダーを、指定したエンドポイントへのリクエストに追加します。任意。複数回指定できます。 +* `access_header` - 他のソースからの認証情報が存在しない場合に、指定した HTTP ヘッダーを指定したエンドポイントへのリクエストに追加します。 +* `server_side_encryption_customer_key_base64` — 指定された場合、SSE-C で暗号化された S3 オブジェクトへアクセスするために必要なヘッダーが設定されます。任意。 +* `server_side_encryption_kms_key_id` - 指定された場合、[SSE-KMS で暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)された S3 オブジェクトへアクセスするために必要なヘッダーが設定されます。空文字列が指定された場合、AWS 管理の S3 キーが使用されます。任意。 +* `server_side_encryption_kms_encryption_context` - `server_side_encryption_kms_key_id` と併せて指定された場合、SSE-KMS 用の暗号化コンテキストヘッダーが設定されます。任意。 +* `server_side_encryption_kms_bucket_key_enabled` - `server_side_encryption_kms_key_id` と併せて指定された場合、SSE-KMS の S3 バケットキーを有効にするためのヘッダーが設定されます。任意で、`true` または `false` を指定できます。デフォルトでは何も設定されず(バケットレベルの設定に従います)。 +* `max_single_read_retries` — 単一の読み取り処理における最大試行回数です。デフォルト値は `4`。任意。 +* `max_put_rps`, `max_put_burst`, `max_get_rps` および `max_get_burst` - 特定のエンドポイントに対して、クエリ単位ではなく、そのエンドポイント専用に使用するスロットリング設定です(上記の説明を参照)。任意。 **例:** @@ -385,6 +403,7 @@ CREATE TABLE table_with_asterisk (name String, value UInt32) ``` + ## アーカイブの操作 {#working-with-archives} S3 上に、次の URI を持つ複数のアーカイブファイルがあるとします: @@ -393,7 +412,7 @@ S3 上に、次の URI を持つ複数のアーカイブファイルがあると * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-11.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-11.csv.zip)' * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-12.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-12.csv.zip)' -これらのアーカイブからデータを抽出することは、:: を使用することで可能です。グロブは、URL の部分と、アーカイブ内のファイル名を指定する :: の後ろの部分の両方で使用できます。 +これらのアーカイブからデータを抽出するには :: を使用できます。グロブは、URL 部分と、アーカイブ内のファイル名を指定する :: 以降の部分の両方で使用できます。 ```sql SELECT * @@ -403,29 +422,33 @@ FROM s3( ``` :::note -ClickHouse は次の 3 種類のアーカイブ形式をサポートしています: +ClickHouse は次の 3 種類のアーカイブ形式をサポートしています: ZIP TAR 7Z -ZIP および TAR アーカイブはサポートされている任意のストレージロケーションからアクセスできますが、7Z アーカイブは ClickHouse がインストールされているローカルファイルシステムからのみ読み取り可能です。 +ZIP および TAR アーカイブはサポートされている任意のストレージから利用できますが、7Z アーカイブは ClickHouse がインストールされているローカルのファイルシステムからのみ読み取ることができます。 ::: -## 公開バケットへのアクセス {#accessing-public-buckets} + +## パブリックバケットへのアクセス {#accessing-public-buckets} ClickHouse は、さまざまな種類のソースから認証情報を取得しようとします。 -そのため、公開されている一部のバケットにアクセスする際に問題が発生し、クライアントが `403` エラーコードを返すことがあります。 -この問題は、`NOSIGN` キーワードを使用してクライアントにすべての認証情報を無視させ、リクエストへ署名させないように強制することで回避できます。 +その結果、パブリックな一部のバケットへアクセスする際に問題が発生し、クライアントが `403` エラーコードを返してしまう場合があります。 +この問題は、`NOSIGN` キーワードを使用してクライアントにすべての認証情報を無視させ、リクエストに署名しないよう強制することで回避できます。 ```sql CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/aapl_stock.csv', NOSIGN, 'CSVWithNames'); ``` + ## パフォーマンスの最適化 {#optimizing-performance} -`s3` 関数のパフォーマンス最適化の詳細については、[詳細ガイド](/integrations/s3/performance)を参照してください。 +`s3` 関数のパフォーマンスを最適化する方法の詳細については、[詳細ガイド](/integrations/s3/performance) を参照してください。 + + ## 関連項目 {#see-also} - [S3 テーブル関数](../../../sql-reference/table-functions/s3.md) -- [ClickHouse との S3 連携](/integrations/s3) +- [S3 と ClickHouse の統合](/integrations/s3) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md index 0f056972c0f..4b58f9b5af1 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md @@ -62,7 +62,7 @@ SETTINGS mode = 'unordered'; ``` -名前付きコレクションの使用: +名前付きコレクションの利用: ```xml @@ -83,20 +83,21 @@ SETTINGS mode = 'ordered'; ``` + ## 設定 {#settings} -テーブルに対して構成された設定の一覧を取得するには、`system.s3_queue_settings` テーブルを使用します。`24.10` 以降で利用可能です。 +テーブルに対して構成されている設定の一覧を取得するには、`system.s3_queue_settings` テーブルを使用します。`24.10` 以降で利用可能です。 ### Mode {#mode} 指定可能な値: -* unordered — `unordered` モードでは、すでに処理されたすべてのファイルの集合が ZooKeeper 内の永続ノードとして管理されます。 +* unordered — `unordered` モードでは、すでに処理されたすべてのファイルの集合が ZooKeeper 内の永続ノードとして追跡されます。 * ordered — `ordered` モードでは、ファイルは辞書順で処理されます。つまり、ファイル名 `BBB` のファイルがある時点で処理され、その後にファイル名 `AA` のファイルがバケットに追加された場合、そのファイルは無視されます。ZooKeeper には、正常に取り込まれたファイル名のうち最大のもの(辞書順での最大値)と、読み込みに失敗して再試行対象となるファイル名のみが保存されます。 -デフォルト値: バージョン 24.6 より前は `ordered`。24.6 以降ではデフォルト値は存在せず、この設定は手動で指定する必要があります。以前のバージョンで作成されたテーブルについては、互換性のためデフォルト値は引き続き `Ordered` のままです。 +デフォルト値: バージョン 24.6 より前は `ordered`。24.6 以降ではデフォルト値は存在せず、この設定の指定が必須になります。以前のバージョンで作成されたテーブルについては、互換性のためデフォルト値は引き続き `Ordered` のままです。 -### `after_processing` {#after_processing} +### `after_processing` {#after_processing} ファイルの処理が正常に完了した後の扱い方法。 @@ -132,7 +133,8 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St タグ付けを行うには、タグキーと値をそれぞれ `after_processing_tag_key` および `after_processing_tag_value` として指定します。 -### `after_processing_retries` {#after_processing_retries} + +### `after_processing_retries` {#after_processing_retries} 要求された後処理アクションに対して、処理を中止するまでに行う再試行回数。 @@ -142,7 +144,7 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: `10`。 -### `after_processing_move_access_key_id` {#after_processing_move_access_key_id} +### `after_processing_move_access_key_id` {#after_processing_move_access_key_id} 移動先が別の S3 バケットである場合に、正常に処理されたファイルをそのバケットへ移動するための Access Key ID。 @@ -152,7 +154,7 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: 空文字列。 -### `after_processing_move_prefix` {#after_processing_move_prefix} +### `after_processing_move_prefix` {#after_processing_move_prefix} 正常に処理されたファイルを移動する先のパスプレフィックスです。同一バケット内での移動と、別のバケットへの移動の両方で有効です。 @@ -162,7 +164,7 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: 空文字列。 -### `after_processing_move_secret_access_key` {#after_processing_move_secret_access_key} +### `after_processing_move_secret_access_key` {#after_processing_move_secret_access_key} 移動先が別の S3 バケットである場合に、正常に処理されたファイルをそのバケットへ移動するための Secret Access Key。 @@ -172,7 +174,7 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: 空文字列。 -### `after_processing_move_uri` {#after_processing_move_uri} +### `after_processing_move_uri` {#after_processing_move_uri} 宛先が別の S3 バケットである場合に、正常に処理されたファイルを移動する先となる S3 バケットの URI。 @@ -182,7 +184,7 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: 空文字列。 -### `after_processing_tag_key` {#after_processing_tag_key} +### `after_processing_tag_key` {#after_processing_tag_key} `after_processing='tag'` の場合に、正常に処理されたファイルへタグ付けを行うためのタグキー。 @@ -192,7 +194,7 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: 空文字列。 -### `after_processing_tag_value` {#after_processing_tag_value} +### `after_processing_tag_value` {#after_processing_tag_value} `after_processing` が `tag` の場合に、正常に処理されたファイルに付与するタグ値。 @@ -202,10 +204,10 @@ Azure コンテナから別の Azure コンテナに移動するには、Blob St デフォルト値: 空文字列。 -### `keeper_path` {#keeper_path} +### `keeper_path` {#keeper_path} ZooKeeper 内のパスはテーブルエンジンの設定として指定するか、グローバル設定で指定されたパスとテーブル UUID から既定パスを生成できます。 -取りうる値: +取り得る値: * 文字列。 @@ -220,13 +222,13 @@ ZooKeeper 内のパスはテーブルエンジンの設定として指定する デフォルト値: `0`。 -### `s3queue_processing_threads_num` {#processing_threads_num} +### `s3queue_processing_threads_num` {#processing_threads_num} 処理を実行するスレッド数。`Unordered` モードでのみ適用されます。 デフォルト値: CPU の数または 16。 -### `s3queue_parallel_inserts` {#parallel_inserts} +### `s3queue_parallel_inserts` {#parallel_inserts} デフォルトでは、`processing_threads_num` は 1 つの `INSERT` しか生成されないため、複数スレッドで実行されるのはファイルのダウンロードとパース処理だけです。 しかし、これは並列度を制限するため、スループットを向上させるには `parallel_inserts=true` を使用してください。これによりデータを並列に挿入できるようになります(ただし、その結果として MergeTree ファミリーのテーブルに対して生成されるデータパーツの数が増加する点に注意してください)。 @@ -237,7 +239,7 @@ ZooKeeper 内のパスはテーブルエンジンの設定として指定する デフォルト値: `false`。 -### `s3queue_enable_logging_to_s3queue_log` {#enable_logging_to_s3queue_log} +### `s3queue_enable_logging_to_s3queue_log` {#enable_logging_to_s3queue_log} `system.s3queue_log` へのログ記録を有効にします。 @@ -253,7 +255,7 @@ ClickHouse が次のポーリングを実行する前に待機する最小時間 デフォルト値: `1000`。 -### `s3queue_polling_max_timeout_ms` {#polling_max_timeout_ms} +### `s3queue_polling_max_timeout_ms` {#polling_max_timeout_ms} ClickHouse が次のポーリング試行を開始するまでに待機する最大時間を、ミリ秒単位で定義します。 @@ -261,9 +263,9 @@ ClickHouse が次のポーリング試行を開始するまでに待機する最 * 正の整数。 -デフォルト値: `10000`. +デフォルト値: `10000`。 -### `s3queue_polling_backoff_ms` {#polling_backoff_ms} +### `s3queue_polling_backoff_ms` {#polling_backoff_ms} 新しいファイルが見つからなかった場合に、前回のポーリング間隔に追加される待機時間を決定します。次回のポーリングは、前回の間隔にこのバックオフ値を加えた値と最大間隔のうち、短い方の時間が経過した後に行われます。 @@ -273,12 +275,12 @@ ClickHouse が次のポーリング試行を開始するまでに待機する最 デフォルト値: `0`。 -### `s3queue_tracked_files_limit` {#tracked_files_limit} +### `s3queue_tracked_files_limit` {#tracked_files_limit} `unordered` モードが使用されている場合に、ZooKeeper ノードの数に上限を設けるための設定です。`ordered` モードでは何も行いません。 上限に達した場合、最も古く処理されたファイルが ZooKeeper ノードから削除され、再度処理されます。 -取り得る値: +設定可能な値: * 正の整数。 @@ -297,11 +299,11 @@ ClickHouse が次のポーリング試行を開始するまでに待機する最 ### `s3queue_cleanup_interval_min_ms` {#cleanup_interval_min_ms} -'Ordered' モード用。追跡対象ファイルの TTL および追跡対象ファイル集合の最大数を維持するバックグラウンドタスクについて、その再スケジュールの間隔の下限値を定義します。 +'Ordered' モード用。追跡対象ファイルの TTL および追跡対象ファイル集合の最大数を維持するバックグラウンドタスクについて、その再スケジュールの間隔の下限値を定義します。 デフォルト値: `10000`。 -### `s3queue_cleanup_interval_max_ms` {#cleanup_interval_max_ms} +### `s3queue_cleanup_interval_max_ms` {#cleanup_interval_max_ms} 「Ordered」モード用。追跡対象ファイルの TTL と、追跡対象ファイル集合の最大数を維持するバックグラウンドタスクの再スケジュール間隔に対する上限値を定義します。 @@ -309,13 +311,13 @@ ClickHouse が次のポーリング試行を開始するまでに待機する最 ### `s3queue_buckets` {#buckets} -「Ordered」モードで使用します。`24.6` から利用可能です。S3Queue テーブルのレプリカが複数あり、それぞれが keeper 内の同一のメタデータディレクトリを使用している場合、`s3queue_buckets` の値はレプリカ数以上に設定する必要があります。`s3queue_processing_threads` 設定も併用している場合は、`S3Queue` の処理における実際の並列度を決定するため、`s3queue_buckets` 設定の値をさらに大きくすることが推奨されます。 +「Ordered」モードで使用します。`24.6` から利用可能です。S3Queue テーブルのレプリカが複数あり、それぞれが keeper 内の同一のメタデータディレクトリを使用している場合、`s3queue_buckets` の値はレプリカ数以上に設定する必要があります。`s3queue_processing_threads` 設定も併用している場合は、`S3Queue` の処理における実際の並列度合いをこの設定が決定するため、`s3queue_buckets` 設定の値をさらに大きくすることが推奨されます。 -### `use_persistent_processing_nodes` {#use_persistent_processing_nodes} +### `use_persistent_processing_nodes` {#use_persistent_processing_nodes} -デフォルトでは、S3Queue テーブルは常に一時的な処理ノードを使用しており、ZooKeeper セッションが、S3Queue が処理済みファイルを ZooKeeper にコミットする前に期限切れになり、かつ処理は開始されていた場合、データが重複する可能性がありました。この設定は、keeper セッションの期限切れに起因する重複が発生しないよう、サーバーに強制します。 +デフォルトでは、S3Queue テーブルは常に一時的な処理ノードを使用しており、ZooKeeper セッションが、S3Queue が処理済みファイルを ZooKeeper にコミットする前に期限切れになり、かつ処理は開始されていた場合、データが重複する可能性がありました。この設定により、Keeper セッションの期限切れに起因する重複が発生しないようサーバーを強制的に動作させます。 -### `persistent_processing_nodes_ttl_seconds` {#persistent_processing_nodes_ttl_seconds} +### `persistent_processing_nodes_ttl_seconds` {#persistent_processing_nodes_ttl_seconds} サーバーが正常終了しなかった場合、`use_persistent_processing_nodes` が有効になっていると、処理ノードが削除されずに残る可能性があります。この設定は、それらの処理ノードを安全にクリーンアップできる猶予時間を定義します。 @@ -323,7 +325,7 @@ ClickHouse が次のポーリング試行を開始するまでに待機する最 ## S3 に関連する設定 {#s3-settings} -このエンジンでは、すべての S3 関連設定が利用できます。S3 設定の詳細は[こちら](../../../engines/table-engines/integrations/s3.md)を参照してください。 +このエンジンは、すべての S3 関連の設定をサポートしています。S3 に関する設定の詳細は[こちら](../../../engines/table-engines/integrations/s3.md)を参照してください。 ## S3 ロールベースアクセス {#s3-role-based-access} @@ -348,6 +350,7 @@ SETTINGS ... ``` + ## S3Queue の ordered モード {#ordered-mode} `S3Queue` の処理モードでは、ZooKeeper に保存するメタデータ量を減らせますが、時間的に後から追加されるファイルの名前は、英数字としてそれ以前のファイル名より大きくなる必要があるという制約があります。 @@ -357,6 +360,12 @@ SETTINGS `(s3queue_)processing_threads_num` 設定は、バージョン `24.6` より前での使用は推奨されません。 `(s3queue_)buckets` 設定は、バージョン `24.6` から利用可能です。 +## S3Queue テーブルエンジンからの SELECT {#select} + +S3Queue テーブルに対する SELECT クエリは、デフォルトでは禁止されています。これは、データを 1 回だけ読み取り、その後キューから削除するという一般的なキューのパターンに従うためです。SELECT を禁止することで、誤ってデータを失うことを防ぎます。 +ただし、場合によってはこれが役立つこともあります。そのためには、`stream_like_engine_allow_direct_select` 設定を `True` にする必要があります。 +S3Queue エンジンには、SELECT クエリ用の特別な設定 `commit_on_select` があります。これを `False` に設定すると、読み取り後もデータをキューに保持し、`True` に設定すると削除します。 + ## 説明 {#description} `SELECT` は、各ファイルを 1 回しかインポートできないため(デバッグ用途を除いて)ストリーミングインポートにはあまり有用ではありません。代わりに、[マテリアライズドビュー](../../../sql-reference/statements/create/view.md) を使ってリアルタイムの処理フローを作成する方が実用的です。そのためには次のようにします。 @@ -384,6 +393,7 @@ SETTINGS SELECT * FROM stats ORDER BY name; ``` + ## 仮想カラム {#virtual-columns} * `_path` — ファイルへのパス。 @@ -407,15 +417,15 @@ SETTINGS ## 制限事項 {#limitations} -1. 行の重複は以下の要因により発生する可能性があります: +1. 行の重複は以下の要因により発生する可能性があります: -* ファイル処理の途中でパース中に例外が発生し、`s3queue_loading_retries` によってリトライが有効になっている場合。 +* ファイル処理の途中のパース時に例外が発生し、`s3queue_loading_retries` によってリトライが有効になっている場合。 -* 複数のサーバーで同じ zookeeper のパスを指すように `S3Queue` が構成されており、1つのサーバーが処理済みファイルをコミットする前に keeper セッションが期限切れになった場合。これにより、別のサーバーがそのファイルの処理を引き継ぐ可能性があり、そのファイルは最初のサーバーによって部分的または完全に処理されている場合があります。ただし、バージョン 25.8 以降で `use_persistent_processing_nodes = 1` が設定されている場合、これは発生しません。 +* 複数のサーバーで同じ ZooKeeper のパスを指すように `S3Queue` が構成されており、1つのサーバーが処理済みファイルをコミットする前に Keeper セッションが期限切れになった場合。これにより、別のサーバーがそのファイルの処理を引き継ぐ可能性があり、そのファイルは最初のサーバーによって部分的または完全に処理されている場合があります。ただし、バージョン 25.8 以降で `use_persistent_processing_nodes = 1` が設定されている場合、これは発生しません。 * サーバーの異常終了。 -2. 複数のサーバーで同じ zookeeper のパスを指すように `S3Queue` が構成されており、かつ `Ordered` モードが使用されている場合、`s3queue_loading_retries` は動作しません。これは近いうちに修正される予定です。 +2. 複数のサーバーで同じ ZooKeeper のパスを指すように `S3Queue` が構成されており、かつ `Ordered` モードが使用されている場合、`s3queue_loading_retries` は動作しません。これは近いうちに修正される予定です。 ## 内部状態の確認 {#introspection} @@ -438,7 +448,7 @@ SETTINGS `exception` String ) ENGINE = SystemS3Queue -COMMENT 'S3Queueメタデータのインメモリ状態と、ファイルごとに現在処理されている行を含みます。' │ +COMMENT 'Contains in-memory state of S3Queue metadata and currently processed rows per file.' │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` @@ -468,7 +478,7 @@ exception: ```sql SHOW CREATE TABLE system.s3queue_log -クエリ ID: 0ad619c3-0f2a-4ee4-8b40-c73d86e04314 +Query id: 0ad619c3-0f2a-4ee4-8b40-c73d86e04314 ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ CREATE TABLE system.s3queue_log @@ -491,7 +501,7 @@ SETTINGS index_granularity = 8192 │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` -`system.s3queue_log` を使用するには、サーバーの設定ファイルでその構成を定義してください。 +`system.s3queue_log` を使用するには、サーバーの設定ファイルでその設定を定義する必要があります。 ```xml @@ -500,7 +510,7 @@ SETTINGS index_granularity = 8192 │ ``` -例: +例: ```sql SELECT * diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md index 99078d7bf44..3923e255a11 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md @@ -7,17 +7,23 @@ sidebar_label: 'maxMap' doc_type: 'reference' --- + + # maxMap {#maxmap} + + ## 説明 {#description} -[`Map`](/sql-reference/aggregate-functions/combinators#-map) コンビネータを [`max`](/sql-reference/aggregate-functions/reference/max) 関数に適用すると、`maxMap` 集約コンビネータ関数を使用して、各キーごとに Map 内の最大値を計算できます。 +[`Map`](/sql-reference/aggregate-functions/combinators#-map) コンビネータを [`max`](/sql-reference/aggregate-functions/reference/max) 関数に適用すると、`maxMap` 集約コンビネータ関数を使用して、各キーごとの `Map` 内の最大値を計算できます。 + + ## 使用例 {#example-usage} -この例では、さまざまなタイムスロットごとにステータスコードとそのカウントを保存するテーブルを作成します。 -各行には、ステータスコードと対応するカウントの `Map` が含まれます。各タイムスロット内で各ステータスコードに対する最大カウントを求めるために -`maxMap` を使用します。 +この例では、さまざまなタイムスロットに対するステータスコードとそのカウントを格納するテーブルを作成します。 +各行には、ステータスコードとそれに対応するカウントを保持する `Map` が含まれています。 +`maxMap` を使用して、各タイムスロット内でステータスコードごとの最大カウントを求めます。 ```sql title="Query" CREATE TABLE metrics( @@ -39,7 +45,7 @@ FROM metrics GROUP BY timeslot; ``` -`maxMap` 関数は、各タイムスロット内の各ステータスコードごとに出現回数の最大値を求めます。例えば: +`maxMap` 関数は、各タイムスロットごとに各ステータスコードの件数の最大値を求めます。例えば: * タイムスロット '2000-01-01 00:00:00' の場合: * ステータス 'a': 15 @@ -60,6 +66,7 @@ GROUP BY timeslot; └─────────────────────┴──────────────────────────────────────┘ ``` + ## 関連項目 {#see-also} - [`max`](/sql-reference/aggregate-functions/reference/max) - [`Map combinator`](/sql-reference/aggregate-functions/combinators#-map) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md index 48ff9c340c7..c64c6832416 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md @@ -1,25 +1,29 @@ --- slug: '/examples/aggregate-function-combinators/quantilesTimingArrayIf' title: 'quantilesTimingArrayIf' -description: 'quantilesTimingArrayIf コンビネータを使用する例' +description: 'quantilesTimingArrayIf コンビネータの使用例' keywords: ['quantilesTiming', 'array', 'if', 'combinator', 'examples', 'quantilesTimingArrayIf'] sidebar_label: 'quantilesTimingArrayIf' doc_type: 'reference' --- + + # quantilesTimingArrayIf {#quantilestimingarrayif} + + ## 説明 {#description} -[`Array`](/sql-reference/aggregate-functions/combinators#-array) および [`If`](/sql-reference/aggregate-functions/combinators#-if) -コンビネータは、[`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -関数に適用でき、`quantilesTimingArrayIf` 集約コンビネータ関数を使用して、 -条件が真の行に対して配列内のタイミング値の分位数を計算できます。 +[`Array`](/sql-reference/aggregate-functions/combinators#-array) および [`If`](/sql-reference/aggregate-functions/combinators#-if) コンビネーターは、[`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) +関数に適用して、`quantilesTimingArrayIf` 集約コンビネーター関数を使用し、条件が真である行に対する配列内のタイミング値の分位数を計算できます。 + + ## 使用例 {#example-usage} -この例では、さまざまなエンドポイントごとの API レスポンス時間を保存するテーブルを作成し、 -成功したリクエストに対するレスポンス時間の分位数を計算するために `quantilesTimingArrayIf` を使用します。 +この例では、さまざまなエンドポイントの API 応答時間を格納するテーブルを作成し、 +`quantilesTimingArrayIf` を使用して、成功したリクエストの応答時間の分位数を計算します。 ```sql title="Query" CREATE TABLE api_responses( @@ -43,22 +47,23 @@ GROUP BY endpoint; `quantilesTimingArrayIf` 関数は、成功率が 95% を上回るエンドポイントに対してのみ分位数を計算します。 返される配列には、次の分位数がこの順序で含まれます: -* 0 (最小値) -* 0.25 (第 1 四分位数) -* 0.5 (中央値) -* 0.75 (第 3 四分位数) -* 0.95 (95 パーセンタイル) -* 0.99 (99 パーセンタイル) -* 1.0 (最大値) +* 0(最小値) +* 0.25(第1四分位数) +* 0.5(中央値) +* 0.75(第3四分位数) +* 0.95(95 パーセンタイル) +* 0.99(99 パーセンタイル) +* 1.0(最大値) ```response title="Response" - ┌─エンドポイント─┬─応答時間分位数─────────────────────────────────────────────┐ -1. │ 注文 │ [82, 87, 92, 98, 103, 104, 105] │ -2. │ 製品 │ [45, 47, 49, 51, 52, 52, 53] │ -3. │ ユーザー │ [nan, nan, nan, nan, nan, nan, nan] │ - └────────────┴──────────────────────────────────────────────────────────────────┘ + ┌─endpoint─┬─response_time_quantiles─────────────────────────────────────────────┐ +1. │ orders │ [82, 87, 92, 98, 103, 104, 105] │ +2. │ products │ [45, 47, 49, 51, 52, 52, 53] │ +3. │ users │ [nan, nan, nan, nan, nan, nan, nan] │ + └──────────┴─────────────────────────────────────────────────────────────────────┘ ``` + ## 関連項目 {#see-also} - [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) - [`If combinator`](/sql-reference/aggregate-functions/combinators#-if) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md index 6a9a608fc9b..dd3838e0f8d 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md @@ -7,17 +7,23 @@ sidebar_label: 'quantilesTimingIf' doc_type: 'reference' --- + + # quantilesTimingIf {#quantilestimingif} + + ## 説明 {#description} -[`If`](/sql-reference/aggregate-functions/combinators#-if) コンビネーターを [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -関数に適用することで、`quantilesTimingIf` 集約コンビネーター関数を使い、条件が真である行のタイミング値の分位数を計算できます。 +[`If`](/sql-reference/aggregate-functions/combinators#-if) コンビネーターは、[`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) +関数に適用して、`quantilesTimingIf` 集約コンビネーター関数を使い、条件が真である行のタイミング値の分位数を計算できます。 + + ## 使用例 {#example-usage} -この例では、さまざまなエンドポイントに対する API 応答時間を格納するテーブルを作成し、 -成功したリクエストの応答時間の分位数を計算するために `quantilesTimingIf` を使用します。 +この例では、さまざまなエンドポイントの API 応答時間を格納するテーブルを作成し、 +`quantilesTimingIf` を使用して、成功したリクエストの応答時間の分位数を計算します。 ```sql title="Query" CREATE TABLE api_responses( @@ -59,8 +65,8 @@ FROM api_responses GROUP BY endpoint; ``` -`quantilesTimingIf` 関数は、成功したリクエスト(is_successful = 1)のみを対象に分位数を計算します。 -返される配列には、次の分位数がこの順序で含まれます: +`quantilesTimingIf` 関数は、成功したリクエスト(is_successful = 1)に対してのみ分位数を計算します。 +返される配列には、以下の分位数がこの順序で含まれます。 * 0(最小値) * 0.25(第1四分位数) @@ -71,13 +77,14 @@ GROUP BY endpoint; * 1.0(最大値) ```response title="Response" - ┌─エンドポイント─┬─応答時間分位数─────────────────────────────────────────────┐ -1. │ 注文 │ [82, 87, 92, 98, 103, 104, 105] │ -2. │ 製品 │ [45, 47, 49, 51, 52, 52, 53] │ -3. │ ユーザー │ [nan, nan, nan, nan, nan, nan, nan] │ - └────────────┴──────────────────────────────────────────────────────────────────┘ + ┌─endpoint─┬─response_time_quantiles─────────────────────────────────────────────┐ +1. │ orders │ [82, 87, 92, 98, 103, 104, 105] │ +2. │ products │ [45, 47, 49, 51, 52, 52, 53] │ +3. │ users │ [nan, nan, nan, nan, nan, nan, nan] │ + └──────────┴─────────────────────────────────────────────────────────────────────┘ ``` -## 関連項目 {#see-also} + +## 関連情報 {#see-also} - [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) - [`If combinator`](/sql-reference/aggregate-functions/combinators#-if) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md index df1656fe1ed..bdcee079281 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md @@ -1,25 +1,30 @@ --- slug: '/examples/aggregate-function-combinators/sumMap' title: 'sumMap' -description: 'sumMap コンビネータの使用例' -keywords: ['sum', 'map', 'combinator', 'examples', 'sumMap'] +description: 'sumMap コンビネーターの使用例' +keywords: ['sum', 'map', 'コンビネーター', '例', 'sumMap'] sidebar_label: 'sumMap' doc_type: 'reference' --- + + # sumMap {#summap} + + ## 説明 {#description} -[`Map`](/sql-reference/aggregate-functions/combinators#-map) コンビネータは、`sumMap` -集約コンビネータ関数を使用して、各キーごとに Map 内の値の合計を計算するために、[`sum`](/sql-reference/aggregate-functions/reference/sum) -関数に適用できます。 +[`Map`](/sql-reference/aggregate-functions/combinators#-map) コンビネータは、集約コンビネータ関数 `sumMap` を使用して [`sum`](/sql-reference/aggregate-functions/reference/sum) +関数に適用でき、Map の各キーごとの値の合計を計算します。 + + ## 使用例 {#example-usage} -この例では、さまざまなタイムスロットごとにステータスコードとそのカウントを保持するテーブルを作成します。 -各行には、ステータスコードをキー、そのステータスコードに対応するカウントを値とする `Map` が含まれます。 -各タイムスロット内でステータスコードごとの合計カウントを計算するために `sumMap` を使用します。 +この例では、異なるタイムスロットごとにステータスコードとそのカウントを保存するテーブルを作成します。 +各行には、ステータスコードから対応するカウントへの Map が含まれます。 +`sumMap` を使用して、各タイムスロット内でステータスコードごとの合計カウントを計算します。 ```sql title="Query" CREATE TABLE metrics( @@ -41,7 +46,7 @@ FROM metrics GROUP BY timeslot; ``` -`sumMap` 関数は、各タイムスロットごとにステータスコード別の合計件数を計算します。例えば次のとおりです: +`sumMap` 関数は、各タイムスロット内の各ステータスコードに対する合計カウントを計算します。例えば次のとおりです: * タイムスロット '2000-01-01 00:00:00' の場合: * ステータス 'a': 15 @@ -62,6 +67,7 @@ GROUP BY timeslot; └─────────────────────┴──────────────────────────────────────┘ ``` + ## 関連項目 {#see-also} - [`sum`](/sql-reference/aggregate-functions/reference/sum) -- [`Map コンビネータ`](/sql-reference/aggregate-functions/combinators#-map) +- [`Map combinator`](/sql-reference/aggregate-functions/combinators#-map) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md b/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md index ec3c85699b3..13dd8f75bfb 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md @@ -9,109 +9,116 @@ title: 'ClickHouse Keeper' doc_type: 'guide' --- + + # ClickHouse Keeper (clickhouse-keeper) {#clickhouse-keeper-clickhouse-keeper} import SelfManaged from '@site/i18n/jp/docusaurus-plugin-content-docs/current/_snippets/_self_managed_only_automated.md'; -ClickHouse Keeper は、データの[レプリケーション](/engines/table-engines/mergetree-family/replication.md)と[分散 DDL](/sql-reference/distributed-ddl.md) クエリ実行のためのコーディネーションシステムを提供します。ClickHouse Keeper は ZooKeeper と互換性があります。 +ClickHouse Keeper は、データの[レプリケーション](/engines/table-engines/mergetree-family/replication.md)および[分散 DDL](/sql-reference/distributed-ddl.md) クエリ実行のためのコーディネーションシステムを提供します。ClickHouse Keeper は ZooKeeper と互換性があります。 -### 実装の詳細 {#implementation-details} +### Implementation details {#implementation-details} -ZooKeeper は、最初期によく知られるようになったオープンソースのコーディネーションシステムの 1 つです。Java で実装されており、シンプルかつ強力なデータモデルを備えています。ZooKeeper のコーディネーションアルゴリズムである ZooKeeper Atomic Broadcast (ZAB) は、各 ZooKeeper ノードがローカルで読み取りを処理するため、読み取りに対して線形化可能性を保証しません。ZooKeeper と異なり、ClickHouse Keeper は C++ で実装されており、[RAFT アルゴリズム](https://raft.github.io/)の[実装](https://github.com/eBay/NuRaft)を使用しています。このアルゴリズムは読み取りおよび書き込みの線形化可能性を実現し、複数の言語でオープンソース実装が提供されています。 +ZooKeeper は、よく知られたオープンソースのコーディネーションシステムの草分けの 1 つです。Java で実装されており、シンプルかつ強力なデータモデルを備えています。ZooKeeper のコーディネーションアルゴリズムである ZooKeeper Atomic Broadcast (ZAB) は、各 ZooKeeper ノードがローカルで読み取りを処理するため、読み取りに対する線形化可能性の保証を提供しません。ZooKeeper と異なり、ClickHouse Keeper は C++ で実装され、[RAFT アルゴリズム](https://raft.github.io/)の[実装](https://github.com/eBay/NuRaft)を使用します。このアルゴリズムは読み取りと書き込みの両方に対して線形化可能性を提供し、さまざまな言語で複数のオープンソース実装が存在します。 -デフォルトでは、ClickHouse Keeper は ZooKeeper と同じ保証、すなわち線形化可能な書き込みと線形化が保証されない読み取りを提供します。互換性のあるクライアント・サーバープロトコルを持つため、標準的な ZooKeeper クライアントで ClickHouse Keeper とやり取りできます。スナップショットとログは ZooKeeper と互換性のないフォーマットですが、`clickhouse-keeper-converter` ツールにより ZooKeeper のデータを ClickHouse Keeper のスナップショットに変換できます。ClickHouse Keeper のサーバー間プロトコルも ZooKeeper と互換性がないため、ZooKeeper / ClickHouse Keeper 混在クラスタは構成できません。 +デフォルトでは、ClickHouse Keeper は ZooKeeper と同じ保証、すなわち線形化可能な書き込みと非線形化可能な読み取りを提供します。互換性のあるクライアント・サーバープロトコルを持つため、標準的な ZooKeeper クライアントで ClickHouse Keeper と対話できます。スナップショットとログのフォーマットは ZooKeeper とは互換性がありませんが、`clickhouse-keeper-converter` ツールを使用すると ZooKeeper のデータを ClickHouse Keeper のスナップショットへ変換できます。ClickHouse Keeper のサーバー間プロトコルも ZooKeeper とは互換性がないため、ZooKeeper と ClickHouse Keeper が混在したクラスター構成は不可能です。 -ClickHouse Keeper は、[ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_ZooKeeperAccessControl) と同じ方法で Access Control Lists (ACL) をサポートします。ClickHouse Keeper は同じ権限セットをサポートし、`world`、`auth`、`digest` という同一の組み込みスキームを持ちます。digest 認証スキームは `username:password` のペアを使用し、パスワードは Base64 でエンコードされます。 +ClickHouse Keeper は、[ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_ZooKeeperAccessControl) と同様の方法で Access Control Lists (ACLs) をサポートします。ClickHouse Keeper は同じ権限セットをサポートし、`world`、`auth`、`digest` という同一の組み込みスキームを持ちます。digest 認証スキームは `username:password` のペアを使用し、パスワードは Base64 でエンコードされます。 :::note -外部との連携はサポートされていません。 +外部との統合はサポートされていません。 ::: -### 設定 {#configuration} +### Configuration {#configuration} -ClickHouse Keeper は、ZooKeeper のスタンドアロン代替として、または ClickHouse サーバーの内部コンポーネントとして利用できます。どちらの場合も、設定はほぼ同じ `.xml` ファイルです。 +ClickHouse Keeper は、ZooKeeper のスタンドアロン代替として、または ClickHouse サーバー内部のコンポーネントとして使用できます。いずれの場合も、設定はほぼ同一の `.xml` ファイルで行います。 -#### Keeper の設定項目 {#keeper-configuration-settings} +#### Keeper configuration settings {#keeper-configuration-settings} + +ClickHouse Keeper の主な設定タグは `` であり、次のパラメータを持ちます。 -ClickHouse Keeper の主な設定タグは `` で、次のパラメータがあります。 | Parameter | Description | Default | |--------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | `tcp_port` | クライアントが接続するためのポート。 | `2181` | -| `tcp_port_secure` | クライアントと keeper-server 間の SSL 接続用のセキュアポート。 | - | -| `server_id` | 一意のサーバー ID。ClickHouse Keeper クラスターの各参加ノードは、(1, 2, 3, … のような) 一意の番号を持つ必要があります。 | - | -| `log_storage_path` | 調停ログ (coordination logs) の保存パス。ZooKeeper と同様、ログは負荷の低いノード上に保存するのが望ましいです。 | - | -| `snapshot_storage_path` | 調停スナップショットの保存パス。 | - | -| `enable_reconfiguration` | [`reconfig`](#reconfiguration) による動的なクラスター再構成を有効にします。 | `False` | -| `max_memory_usage_soft_limit` | Keeper の最大メモリ使用量に対するソフトリミット (バイト単位)。 | `max_memory_usage_soft_limit_ratio` * `physical_memory_amount` | -| `max_memory_usage_soft_limit_ratio` | `max_memory_usage_soft_limit` が未設定、または 0 に設定されている場合、この値を使用してデフォルトのソフトリミットを定義します。 | `0.9` | -| `cgroups_memory_observer_wait_time` | `max_memory_usage_soft_limit` が未設定、または `0` に設定されている場合、この間隔で物理メモリ量を監視します。メモリ量が変化した場合、`max_memory_usage_soft_limit_ratio` に基づいて Keeper のメモリのソフトリミットを再計算します。 | `15` | -| `http_control` | [HTTP control](#http-control) インターフェイスの設定。 | - | -| `digest_enabled` | リアルタイムのデータ整合性チェックを有効にします。 | `True` | -| `create_snapshot_on_exit` | シャットダウン時にスナップショットを作成します。 | - | -| `hostname_checks_enabled` | クラスター設定に対するホスト名の妥当性チェックを有効にします (例:localhost がリモートエンドポイントと共に使用されている場合など)。 | `True` | +| `tcp_port_secure` | クライアントと Keeper サーバー間の SSL 接続用のセキュアポート。 | - | +| `server_id` | 一意のサーバー ID。ClickHouse Keeper クラスターの各参加ノードは、一意の番号 (1, 2, 3, …) を持つ必要があります。 | - | +| `log_storage_path` | コーディネーションログのパス。ZooKeeper と同様に、ログは負荷の低いノード上に保存するのが最適です。 | - | +| `snapshot_storage_path` | コーディネーションスナップショットのパス。 | - | +| `enable_reconfiguration` | [`reconfig`](#reconfiguration) を介したクラスターの動的再構成を有効化します。 | `False` | +| `max_memory_usage_soft_limit` | Keeper の最大メモリ使用量に対するソフトリミット (バイト単位)。 | `max_memory_usage_soft_limit_ratio` * `physical_memory_amount` | +| `max_memory_usage_soft_limit_ratio` | `max_memory_usage_soft_limit` が未設定、または 0 に設定されている場合、この値を使用してデフォルトのソフトリミットを定義します。 | `0.9` | +| `cgroups_memory_observer_wait_time` | `max_memory_usage_soft_limit` が未設定、または `0` に設定されている場合、この間隔で物理メモリ量を監視します。メモリ量が変化した場合、`max_memory_usage_soft_limit_ratio` に基づいて Keeper のメモリソフトリミットを再計算します。 | `15` | +| `http_control` | [HTTP control](#http-control) インターフェースの設定。 | - | +| `digest_enabled` | リアルタイムのデータ整合性チェックを有効化します。 | `True` | +| `create_snapshot_on_exit` | シャットダウン時にスナップショットを作成します。 | - | +| `hostname_checks_enabled` | クラスター設定に対するホスト名の健全性チェックを有効化します (例: `localhost` がリモートエンドポイントと一緒に使用されている場合など)。 | `True` | | `four_letter_word_white_list` | 4lw コマンドのホワイトリスト。 | `conf, cons, crst, envi, ruok, srst, srvr, stat, wchs, dirs, mntr, isro, rcvr, apiv, csnp, lgif, rqld, ydld` | -|`enable_ipv6`| IPv6 を有効にします。 | `True`| +|`enable_ipv6`| IPv6 を有効化します。 | `True`| その他の一般的なパラメータは、ClickHouse サーバーの設定 (`listen_host`、`logger` など) から継承されます。 -#### 内部調停設定 {#internal-coordination-settings} +#### 内部コーディネーション設定 {#internal-coordination-settings} + +内部コーディネーション設定は `.` セクションにあり、次のパラメータを持ちます。 + -内部調停設定は `.` セクションに定義されており、次のパラメータを持ちます。 | Parameter | Description | Default | |------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| -| `operation_timeout_ms` | 単一クライアント操作のタイムアウト (ms) | `10000` | -| `min_session_timeout_ms` | クライアントセッションの最小タイムアウト (ms) | `10000` | -| `session_timeout_ms` | クライアントセッションの最大タイムアウト (ms) | `100000` | -| `dead_session_check_period_ms` | ClickHouse Keeper がデッドセッションを検出して削除する頻度 (ms) | `500` | -| `heart_beat_interval_ms` | ClickHouse Keeper のリーダーがフォロワーにハートビートを送信する頻度 (ms) | `500` | -| `election_timeout_lower_bound_ms` | フォロワーがこの間隔内にリーダーからのハートビートを受信しなかった場合、リーダー選出を開始できます。`election_timeout_upper_bound_ms` 以下である必要があります。理想的には両者は同一値にすべきではありません。 | `1000` | -| `election_timeout_upper_bound_ms` | フォロワーがこの間隔内にリーダーからのハートビートを受信しなかった場合、リーダー選出を開始しなければなりません。 | `2000` | -| `rotate_log_storage_interval` | 1 つのファイルに保存するログレコード数。 | `100000` | -| `reserved_log_items` | コンパクション前に保持するコーディネーションログレコード数。 | `100000` | -| `snapshot_distance` | ClickHouse Keeper が新しいスナップショットを作成する頻度 (ログ内のレコード数単位)。 | `100000` | -| `snapshots_to_keep` | 保持するスナップショット数。 | `3` | -| `stale_log_gap` | リーダーがフォロワーをステイルと見なし、ログではなくスナップショットを送信する際のしきい値。 | `10000` | -| `fresh_log_gap` | ノードが最新と見なされるタイミング。 | `200` | -| `max_requests_batch_size` | RAFT に送信される前のリクエストバッチの最大サイズ (リクエスト数)。 | `100` | -| `force_sync` | 各コーディネーションログ書き込みごとに `fsync` を呼び出します。 | `true` | -| `quorum_reads` | 読み取りリクエストを、書き込みと同様に RAFT コンセンサス全体を通して実行します (速度もほぼ同等です)。 | `false` | -| `raft_logs_level` | コーディネーションに関するテキストログレベル (trace、debug など)。 | `system default` | -| `auto_forwarding` | フォロワーからリーダーへの書き込みリクエストのフォワードを許可します。 | `true` | -| `shutdown_timeout` | 内部接続の完了およびシャットダウンまで待機する時間 (ms)。 | `5000` | -| `startup_timeout` | サーバーが指定されたタイムアウト内に他のクォーラム参加者に接続できない場合、終了します (ms)。 | `30000` | -| `async_replication` | 非同期レプリケーションを有効にします。すべての書き込みおよび読み取りの保証を維持しつつ、パフォーマンスを向上させます。後方互換性を損なわないよう、デフォルトでは無効になっています。 | `false` | -| `latest_logs_cache_size_threshold` | 最新ログエントリのインメモリキャッシュの合計最大サイズ | `1GiB` | -| `commit_logs_cache_size_threshold` | コミットに次に必要となるログエントリのインメモリキャッシュの合計最大サイズ | `500MiB` | -| `disk_move_retries_wait_ms` | ディスク間でファイルを移動中に発生した失敗後、再試行の間に待機する時間 | `1000` | -| `disk_move_retries_during_init` | 初期化中にディスク間でファイルを移動している際に発生した失敗に対して行う再試行回数 | `100` | -| `experimental_use_rocksdb` | バックエンドストレージとして RocksDB を使用するかどうか | `0` | - -クォーラム構成は `.` セクションにあり、サーバーの定義が含まれます。 - -クォーラム全体に対する唯一のパラメータは `secure` であり、クォーラム参加者間の通信に対する暗号化接続を有効にします。ノード間の内部通信で SSL 接続が必要な場合はこのパラメータを `true` に設定し、それ以外の場合は未指定のままにできます。 +| `operation_timeout_ms` | 単一のクライアント操作のタイムアウト (ミリ秒) | `10000` | +| `min_session_timeout_ms` | クライアントセッションの最小タイムアウト (ミリ秒) | `10000` | +| `session_timeout_ms` | クライアントセッションの最大タイムアウト (ミリ秒) | `100000` | +| `dead_session_check_period_ms` | ClickHouse Keeper がデッドセッションを検出して削除する頻度 (ミリ秒) | `500` | +| `heart_beat_interval_ms` | ClickHouse Keeper のリーダーがフォロワーにハートビートを送信する頻度 (ミリ秒) | `500` | +| `election_timeout_lower_bound_ms` | フォロワーがこの間隔内にリーダーからハートビートを受信しない場合、リーダー選出を開始できます。`election_timeout_upper_bound_ms` 以下でなければなりません。理想的には両者が同じ値にならないようにします。 | `1000` | +| `election_timeout_upper_bound_ms` | フォロワーがこの間隔内にリーダーからハートビートを受信しない場合、リーダー選出を開始しなければなりません。 | `2000` | +| `rotate_log_storage_interval` | 1 つのファイルに保存するログレコード数。 | `100000` | +| `reserved_log_items` | コンパクションを実行するまでに保持するコーディネーションログレコード数。 | `100000` | +| `snapshot_distance` | ClickHouse Keeper が新しいスナップショットを作成する頻度 (ログ内のレコード数で指定)。 | `100000` | +| `snapshots_to_keep` | 保持するスナップショットの数。 | `3` | +| `stale_log_gap` | リーダーがフォロワーを古いと見なして、ログではなくスナップショットを送信するしきい値。 | `10000` | +| `fresh_log_gap` | ノードが最新と見なされる条件。 | `200` | +| `max_requests_batch_size` | RAFT に送信する前の、バッチ内のリクエスト数の最大値。 | `100` | +| `force_sync` | コーディネーションログへの各書き込み時に `fsync` を呼び出します。 | `true` | +| `quorum_reads` | 読み取りリクエストを、同様の速度で RAFT コンセンサス全体を通した書き込みとして実行します。 | `false` | +| `raft_logs_level` | コーディネーションに関するテキストログのレベル (trace、debug など)。 | `system default` | +| `auto_forwarding` | フォロワーからリーダーへの書き込みリクエストのフォワーディングを許可します。 | `true` | +| `shutdown_timeout` | 内部接続の完了とシャットダウンを待機する時間 (ミリ秒)。 | `5000` | +| `startup_timeout` | 指定されたタイムアウト内にサーバーが他のクォーラム参加者に接続できない場合、サーバーは終了します (ミリ秒)。 | `30000` | +| `async_replication` | 非同期レプリケーションを有効にします。すべての書き込みおよび読み取りの保証を維持しつつ、より高いパフォーマンスを実現します。後方互換性を損なわないよう、この設定はデフォルトで無効になっています。 | `false` | +| `latest_logs_cache_size_threshold` | 直近のログエントリのインメモリキャッシュの合計サイズの上限 | `1GiB` | +| `commit_logs_cache_size_threshold` | コミットに次に必要となるログエントリのインメモリキャッシュの合計サイズの上限 | `500MiB` | +| `disk_move_retries_wait_ms` | ディスク間でファイルを移動中に障害が発生した後、再試行の間で待機する時間 | `1000` | +| `disk_move_retries_during_init` | 初期化中にディスク間でファイルを移動している際に障害が発生した場合の再試行回数 | `100` | +| `experimental_use_rocksdb` | バックエンドストレージとして RocksDB を使用するかどうか | `0` | + +クォーラムの設定は `.` セクションにあり、サーバーの記述が含まれています。 + +クォーラム全体に対する唯一のパラメータは `secure` であり、クォーラム参加者間の通信に対して暗号化された接続を有効にします。ノード間の内部通信に SSL 接続が必要な場合はこのパラメータを `true` に設定し、それ以外の場合は未指定のままにできます。 各 `` に対する主なパラメータは次のとおりです。 + + * `id` — クォーラム内のサーバー識別子。 -* `hostname` — このサーバーが配置されているホスト名。 +* `hostname` — このサーバーが配置されているホストのホスト名。 * `port` — このサーバーが接続を待ち受けるポート。 -* `can_become_leader` — サーバーを `learner` として設定するには `false` を指定します。省略した場合の値は `true` です。 +* `can_become_leader` — サーバーを `learner` として設定するには `false` を設定します。省略した場合、値は `true` です。 :::note -ClickHouse Keeper クラスターのトポロジーが変更される場合(例: サーバーの置き換え)、`server_id` と `hostname` の対応関係を必ず一貫して維持し、既存の `server_id` を別のサーバーで使い回したり順番を入れ替えたりしないようにしてください(特に、ClickHouse Keeper をデプロイするために自動化スクリプトに依存している場合に発生する可能性があります)。 +ClickHouse Keeper クラスターのトポロジーが変更される場合(例: サーバーの交換)、`server_id` と `hostname` の対応関係を常に一貫性を保って維持し、既存の `server_id` を別のサーバーに対して入れ替えたり再利用したりしないようにしてください(たとえば、ClickHouse Keeper をデプロイするために自動化スクリプトに依存している場合に起こりえます)。 -Keeper インスタンスのホストが変更されうる場合は、生の IP アドレスではなくホスト名を定義して使用することを推奨します。ホスト名の変更はサーバーの削除と再追加に相当し、場合によっては実施できないことがあります(例: クォーラムを満たす Keeper インスタンス数が不足している場合)。 +Keeper インスタンスのホストが変更される可能性がある場合は、生の IP アドレスではなくホスト名を定義して使用することを推奨します。ホスト名の変更は、そのサーバーを削除して再追加することと同じであり、場合によってはそれが不可能な場合があります(例: クォーラムを満たす Keeper インスタンスが不足している場合)。 ::: :::note -後方互換性を損なわないように、`async_replication` はデフォルトでは無効になっています。クラスター内のすべての Keeper インスタンスが `async_replication` をサポートするバージョン(v23.9 以降)で動作している場合は、パフォーマンスをデメリットなしに向上させられるため、有効化することを推奨します。 +後方互換性を損なわないように、`async_replication` はデフォルトで無効になっています。クラスター内のすべての Keeper インスタンスが `async_replication` をサポートするバージョン(v23.9 以降)で動作している場合、パフォーマンスをデメリットなしに向上できるため、有効化することを推奨します。 ::: -3 ノードでクォーラムを構成する場合の設定例は、`test_keeper_` プレフィックスが付いた [integration tests](https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration) にあります。サーバー #1 の構成例は次のとおりです。 +3 ノード構成のクォーラム用設定例は、`test_keeper_` プレフィックスが付いた [integration tests](https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration) にあります。サーバー #1 の設定例: ```xml @@ -148,13 +155,13 @@ Keeper インスタンスのホストが変更されうる場合は、生の IP ### 実行方法 {#how-to-run} -ClickHouse Keeper は ClickHouse サーバーパッケージに同梱されています。`` の設定を `/etc/your_path_to_config/clickhouse-server/config.xml` に追加し、通常どおり ClickHouse サーバーを起動してください。ClickHouse Keeper をスタンドアロンで実行したい場合は、同様の方法で次のように起動できます。 +ClickHouse Keeper は ClickHouse サーバーのパッケージに同梱されています。`/etc/your_path_to_config/clickhouse-server/config.xml` に `` の設定を追加し、通常どおり ClickHouse サーバーを起動してください。ClickHouse Keeper をスタンドアロンとして実行したい場合は、同様に次のように起動できます。 ```bash clickhouse-keeper --config /etc/your_path_to_config/config.xml ``` -`clickhouse-keeper` というシンボリックリンクがない場合は、それを作成するか、`clickhouse` の引数として `keeper` を指定できます。 +シンボリックリンク `clickhouse-keeper` がない場合は、それを作成するか、`clickhouse` コマンドの引数として `keeper` を指定してください。 ```bash clickhouse keeper --config /etc/your_path_to_config/config.xml @@ -162,25 +169,26 @@ clickhouse keeper --config /etc/your_path_to_config/config.xml ### 4 文字コマンド {#four-letter-word-commands} -ClickHouse Keeper は、ZooKeeper のものとほぼ同じ 4 文字コマンド (4lw) も提供します。各コマンドは `mntr` や `stat` などの 4 文字で構成されています。代表的なコマンドとして、`stat` はサーバーおよび接続クライアントに関する一般的な情報を返し、`srvr` と `cons` はそれぞれサーバーおよび接続に関する詳細情報を返します。 +ClickHouse Keeper は、Zookeeper とほぼ同じ 4lw コマンドも提供します。各コマンドは `mntr` や `stat` などの 4 文字で構成されています。たとえば、`stat` はサーバーと接続クライアントに関する一般的な情報を返し、`srvr` と `cons` はそれぞれサーバーおよび接続に関する詳細情報を返します。 -4lw コマンドには、`four_letter_word_white_list` というホワイトリスト設定があり、デフォルト値は `conf,cons,crst,envi,ruok,srst,srvr,stat,wchs,dirs,mntr,isro,rcvr,apiv,csnp,lgif,rqld,ydld` です。 +4lw コマンドには `four_letter_word_white_list` というホワイトリスト設定があり、デフォルト値は `conf,cons,crst,envi,ruok,srst,srvr,stat,wchs,dirs,mntr,isro,rcvr,apiv,csnp,lgif,rqld,ydld` です。 -クライアントポートに対して、telnet または nc 経由で ClickHouse Keeper にこれらのコマンドを送信できます。 +ClickHouse Keeper のクライアントポートに対して、telnet または nc を使用してこれらのコマンドを送信できます。 ```bash echo mntr | nc localhost 9181 ``` -以下に 4lw コマンドの詳細を示します: +以下は、4lw コマンドの詳細です: -* `ruok`: サーバーがエラーのない状態で動作しているかをテストします。サーバーが動作している場合は `imok` と応答します。そうでない場合は一切応答しません。`imok` という応答は、サーバーがクォーラムに参加していることを必ずしも意味せず、サーバープロセスが稼働しており、指定されたクライアントポートにバインドされていることだけを示します。クォーラムに関する状態やクライアント接続情報の詳細については「stat」を使用してください。 +* `ruok`: サーバーがエラーが発生していない状態で動作しているかをテストします。サーバーが動作している場合は `imok` と応答します。そうでない場合はまったく応答しません。`imok` という応答は、必ずしもサーバーがクォーラムに参加していることを示すものではなく、サーバープロセスがアクティブであり、指定されたクライアントポートにバインドされていることだけを示します。クォーラムおよびクライアント接続情報に関する状態の詳細を確認するには、`stat` を使用してください。 ```response imok ``` -* `mntr`: クラスターの健全性を監視するために使用できる変数のリストを出力します。 + +* `mntr`: クラスターの健全性を監視するために使用できる変数の一覧を出力します。 ```response zk_version v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 @@ -202,44 +210,44 @@ zk_followers 0 zk_synced_followers 0 ``` -* `srvr`: サーバーに関するすべての詳細を表示します。 +* `srvr`: サーバーのすべての詳細情報を表示します。 ```response -ClickHouse Keeperバージョン: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 -レイテンシ 最小/平均/最大: 0/0/0 -受信: 2 -送信: 2 -接続数: 1 -未処理: 0 +ClickHouse Keeper version: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 +Latency min/avg/max: 0/0/0 +Received: 2 +Sent : 2 +Connections: 1 +Outstanding: 0 Zxid: 34 -モード: leader -ノード数: 4 +Mode: leader +Node count: 4 ``` * `stat`: サーバーおよび接続中のクライアントに関する概要情報を一覧表示します。 ```response -ClickHouse Keeperバージョン: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 -クライアント: +ClickHouse Keeper version: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 +Clients: 192.168.1.1:52852(recved=0,sent=0) 192.168.1.1:52042(recved=24,sent=48) -レイテンシ min/avg/max: 0/0/0 -受信数: 4 -送信数: 4 -接続数: 1 -未処理: 0 +Latency min/avg/max: 0/0/0 +Received: 4 +Sent : 4 +Connections: 1 +Outstanding: 0 Zxid: 36 -モード: leader -ノード数: 4 +Mode: leader +Node count: 4 ``` * `srst`: サーバーの統計情報をリセットします。このコマンドは `srvr`、`mntr`、`stat` の結果に影響を与えます。 ```response -サーバー統計をリセットしました。 +Server stats reset. ``` -* `conf`: サービング設定の詳細を表示します。 +* `conf`: サービス構成の詳細を表示します。 ```response server_id=1 @@ -272,20 +280,21 @@ compress_snapshots_with_zstd_format=true configuration_change_tries_count=20 ``` -* `cons`: このサーバーに接続しているすべてのクライアントの接続およびセッションに関する詳細情報を一覧表示します。受信/送信パケット数、セッション ID、操作レイテンシー、最後に実行された操作などの情報が含まれます。 +* `cons`: このサーバーに接続されているすべてのクライアントの接続およびセッションの詳細を一覧表示します。受信/送信パケット数、セッション ID、操作レイテンシー、最後に実行された操作などの情報を含みます。 ```response 192.168.1.1:52163(recved=0,sent=0,sid=0xffffffffffffffff,lop=NA,est=1636454787393,to=30000,lzxid=0xffffffffffffffff,lresp=0,llat=0,minlat=0,avglat=0,maxlat=0) 192.168.1.1:52042(recved=9,sent=18,sid=0x0000000000000001,lop=List,est=1636454739887,to=30000,lcxid=0x0000000000000005,lzxid=0x0000000000000005,lresp=1636454739892,llat=0,minlat=0,avglat=0,maxlat=0) ``` -* `crst`: すべての接続について、接続/セッションの統計情報をリセットします。 +* `crst`: すべての接続/セッションの統計情報をリセットします。 ```response -接続統計をリセットしました。 +Connection stats reset. ``` -* `envi`: 実行環境の詳細を表示 +* `envi`: 稼働環境の詳細を表示します + ```response Environment: @@ -301,14 +310,14 @@ user.dir=/Users/JackyWoo/project/jd/clickhouse/cmake-build-debug/programs/ user.tmp=/var/folders/b4/smbq5mfj7578f2jzwn602tt40000gn/T/ ``` -* `dirs`: スナップショットファイルおよびログファイルの総サイズをバイト単位で表示します +* `dirs`: スナップショットおよびログファイルの合計サイズをバイト単位で表示します ```response snapshot_dir_size: 0 log_dir_size: 3875 ``` -* `isro`: サーバーが読み取り専用モードで動作しているかを確認します。サーバーは、読み取り専用モードの場合は `ro`、そうでない場合は `rw` を返します。 +* `isro`: サーバーが読み取り専用モードで動作しているかを確認します。サーバーは読み取り専用モードの場合は `ro` を、そうでない場合は `rw` を返します。 ```response rw @@ -317,42 +326,42 @@ rw * `wchs`: サーバー上のウォッチの概要情報を一覧表示します。 ```response -1接続が1パスを監視中 -合計監視数:1 +1 connections watching 1 paths +Total watches:1 ``` -* `wchc`: サーバー上のウォッチ情報をセッションごとに詳細表示します。これにより、各セッション(接続)と、それに紐づくウォッチ対象(パス)の一覧が出力されます。ウォッチの数によっては、この操作は高コストになり(サーバーのパフォーマンスに影響を与える可能性がある)ため、慎重に使用してください。 +* `wchc`: サーバーに対するウォッチに関する詳細情報をセッション単位で一覧表示します。関連付けられたウォッチ(パス)を含むセッション(接続)のリストを出力します。ウォッチの数によっては、この操作は高コストとなりサーバーのパフォーマンスに影響する可能性があるため、慎重に使用してください。 ```response 0x0000000000000001 /clickhouse/task_queue/ddl ``` -* `wchp`: サーバー上のウォッチについて、パスごとの詳細情報を一覧表示します。セッション情報と関連付けられたパス(znode)のリストを出力します。ウォッチの数によっては、この操作は負荷の高い処理となりうる(サーバーのパフォーマンスに影響を与える可能性がある)ため、注意して使用してください。 +* `wchp`: サーバー上のウォッチについて、パスごとの詳細情報を一覧表示します。ウォッチ対象のパス(znode)と、それに関連付けられたセッションのリストを出力します。ウォッチの数によっては、この操作は高コスト(サーバーのパフォーマンスに影響)になる可能性があるため、注意して使用してください。 ```response /clickhouse/task_queue/ddl 0x0000000000000001 ``` -* `dump`: 未処理のセッションおよびエフェメラルノードを一覧表示します。これはリーダーノードでのみ有効です。 +* `dump`: アクティブなセッションとエフェメラルノードを一覧表示します。このコマンドはリーダーでのみ使用できます。 ```response -セッションのダンプ (2): +Sessions dump (2): 0x0000000000000001 0x0000000000000002 -エフェメラル付きのセッション (1): +Sessions with Ephemerals (1): 0x0000000000000001 /clickhouse/task_queue/ddl ``` -* `csnp`: スナップショット作成タスクをスケジュールします。成功した場合は、スケジュールされたスナップショットの最新のコミット済みログインデックスを返し、失敗した場合は `Failed to schedule snapshot creation task.` を返します。`lgif` コマンドを使用すると、スナップショットが完了したかどうかを確認できます。 +* `csnp`: スナップショット作成タスクをスケジュールします。成功した場合は、スケジュールされたスナップショットの最新のコミット済みログ索引を返し、失敗した場合は `Failed to schedule snapshot creation task.` を返します。スナップショットが完了しているかどうかを判断するには、`lgif` コマンドが役立ちます。 ```response 100 ``` -* `lgif`: Keeper ログ情報。`first_log_idx` : ログストア内における自ノードの最初のログインデックス; `first_log_term` : 自ノードの最初のログターム; `last_log_idx` : ログストア内における自ノードの最後のログインデックス; `last_log_term` : 自ノードの最後のログターム; `last_committed_log_idx` : ステートマシンにおける自ノードの最後にコミットされたログインデックス; `leader_committed_log_idx` : 自ノードから見たリーダーのコミット済みログインデックス; `target_committed_log_idx` : コミットされるべき対象のログインデックス; `last_snapshot_idx` : 直近のスナップショットに含まれる最大のコミット済みログインデックス。 +* `lgif`: Keeper のログ情報。`first_log_idx` : ログストア内における自身の最初のログの索引;`first_log_term` : 自身の最初のログ term;`last_log_idx` : ログストア内における自身の最後のログの索引;`last_log_term` : 自身の最後のログ term;`last_committed_log_idx` : ステートマシンにおける自身の最新のコミット済みログの索引;`leader_committed_log_idx` : 自身の視点から見たリーダーのコミット済みログの索引;`target_committed_log_idx` : コミットされるべき対象ログの索引;`last_snapshot_idx` : 直近のスナップショット内での最大のコミット済みログの索引。 ```response first_log_idx 1 @@ -365,13 +374,13 @@ target_committed_log_idx 101 last_snapshot_idx 50 ``` -* `rqld`: 自ノードを新しいリーダーにするよう要求します。要求が送信された場合は `Sent leadership request to leader.` を返し、要求が送信されなかった場合は `Failed to send leadership request to leader.` を返します。ノードがすでにリーダーである場合でも、結果は要求が送信された場合と同じになります。 +* `rqld`: 新しいリーダーになるようリクエストします。リクエストが送信された場合は `Sent leadership request to leader.`、送信されなかった場合は `Failed to send leadership request to leader.` を返します。ノードがすでにリーダーである場合でも、リクエストが送信された場合と同じ結果になる点に注意してください。 ```response -リーダーにリーダー権限のリクエストを送信しました。 +Sent leadership request to leader. ``` -* `ftfl`: すべてのフィーチャーフラグと、それぞれが Keeper インスタンスで有効かどうかを一覧表示します。 +* `ftfl`: Keeper インスタンスでの有効/無効状態とともに、すべての feature flag を一覧表示します。 ```response filtered_list 1 @@ -379,40 +388,41 @@ multi_read 1 check_not_exists 0 ``` -* `ydld`: リーダー権限を放棄してフォロワーになるよう要求します。リクエストを受け取ったサーバーがリーダーの場合、まず書き込み操作を一時停止し、後継ノード(現在のリーダーが後継になることはありません)が最新ログのキャッチアップを完了するまで待機してから辞任します。後継ノードは自動的に選出されます。リクエストの送信に成功した場合は `Sent yield leadership request to leader.` を返し、送信に失敗した場合は `Failed to send yield leadership request to leader.` を返します。ノードがすでにフォロワーである場合も、リクエストが送信された場合と同じ結果になります。 +* `ydld`: リーダー権限の返上を要求し、フォロワーへ移行させるリクエスト。リクエストを受け取ったサーバーがリーダーである場合、まず書き込み処理を一時停止し、後継リーダー(現在のリーダーが後継になることはない)が最新のログに追いつくまで待機してから、リーダーを辞任する。後継リーダーは自動的に選出される。リクエストが送信された場合は `Sent yield leadership request to leader.` を返し、リクエストが送信されなかった場合は `Failed to send yield leadership request to leader.` を返す。ノードがすでにフォロワーである場合、結果はリクエストが送信された場合と同じになる点に注意。 ```response -リーダーへリーダーシップ譲渡リクエストを送信しました。 +Sent yield leadership request to leader. ``` * `pfev`: 収集されたすべてのイベントの値を返します。各イベントごとに、イベント名、イベント値、およびイベントの説明を返します。 + ```response -FileOpen 62 オープンされたファイルの数。 -Seek 4 'lseek'関数が呼び出された回数。 -ReadBufferFromFileDescriptorRead 126 ファイルディスクリプタからの読み取り(read/pread)回数。ソケットは含まれません。 -ReadBufferFromFileDescriptorReadFailed 0 ファイルディスクリプタからの読み取り(read/pread)が失敗した回数。 -ReadBufferFromFileDescriptorReadBytes 178846 ファイルディスクリプタから読み取られたバイト数。ファイルが圧縮されている場合は、圧縮データサイズが表示されます。 -WriteBufferFromFileDescriptorWrite 7 ファイルディスクリプタへの書き込み(write/pwrite)回数。ソケットは含まれません。 -WriteBufferFromFileDescriptorWriteFailed 0 ファイルディスクリプタへの書き込み(write/pwrite)が失敗した回数。 -WriteBufferFromFileDescriptorWriteBytes 153 ファイルディスクリプタに書き込まれたバイト数。ファイルが圧縮されている場合は、圧縮データサイズが表示されます。 -FileSync 2 ファイルに対してF_FULLFSYNC/fsync/fdatasync関数が呼び出された回数。 -DirectorySync 0 ディレクトリに対してF_FULLFSYNC/fsync/fdatasync関数が呼び出された回数。 -FileSyncElapsedMicroseconds 12756 ファイルに対するF_FULLFSYNC/fsync/fdatasyncシステムコールの待機に費やされた合計時間。 -DirectorySyncElapsedMicroseconds 0 ディレクトリに対するF_FULLFSYNC/fsync/fdatasyncシステムコールの待機に費やされた合計時間。 -ReadCompressedBytes 0 圧縮ソース(ファイル、ネットワーク)から読み取られたバイト数(展開前のバイト数)。 -CompressedReadBufferBlocks 0 圧縮ソース(ファイル、ネットワーク)から読み取られた圧縮ブロック数(互いに独立して圧縮されたデータブロック)。 -CompressedReadBufferBytes 0 圧縮ソース(ファイル、ネットワーク)から読み取られた非圧縮バイト数(展開後のバイト数)。 -AIOWrite 0 LinuxまたはFreeBSD AIOインターフェースによる書き込み回数 -AIOWriteBytes 0 LinuxまたはFreeBSD AIOインターフェースで書き込まれたバイト数 +FileOpen 62 Number of files opened. +Seek 4 Number of times the 'lseek' function was called. +ReadBufferFromFileDescriptorRead 126 Number of reads (read/pread) from a file descriptor. Does not include sockets. +ReadBufferFromFileDescriptorReadFailed 0 Number of times the read (read/pread) from a file descriptor have failed. +ReadBufferFromFileDescriptorReadBytes 178846 Number of bytes read from file descriptors. If the file is compressed, this will show the compressed data size. +WriteBufferFromFileDescriptorWrite 7 Number of writes (write/pwrite) to a file descriptor. Does not include sockets. +WriteBufferFromFileDescriptorWriteFailed 0 Number of times the write (write/pwrite) to a file descriptor have failed. +WriteBufferFromFileDescriptorWriteBytes 153 Number of bytes written to file descriptors. If the file is compressed, this will show compressed data size. +FileSync 2 Number of times the F_FULLFSYNC/fsync/fdatasync function was called for files. +DirectorySync 0 Number of times the F_FULLFSYNC/fsync/fdatasync function was called for directories. +FileSyncElapsedMicroseconds 12756 Total time spent waiting for F_FULLFSYNC/fsync/fdatasync syscall for files. +DirectorySyncElapsedMicroseconds 0 Total time spent waiting for F_FULLFSYNC/fsync/fdatasync syscall for directories. +ReadCompressedBytes 0 Number of bytes (the number of bytes before decompression) read from compressed sources (files, network). +CompressedReadBufferBlocks 0 Number of compressed blocks (the blocks of data that are compressed independent of each other) read from compressed sources (files, network). +CompressedReadBufferBytes 0 Number of uncompressed bytes (the number of bytes after decompression) read from compressed sources (files, network). +AIOWrite 0 Number of writes with Linux or FreeBSD AIO interface +AIOWriteBytes 0 Number of bytes written with Linux or FreeBSD AIO interface ... ``` ### HTTP 制御 {#http-control} -ClickHouse Keeper は、レプリカがトラフィックを受信できる状態かどうかを確認するための HTTP インターフェイスを提供します。これは、[Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) のようなクラウド環境で使用できます。 +ClickHouse Keeper は、レプリカがトラフィックを受け付ける準備ができているかどうかを確認するための HTTP インターフェイスを提供します。これは、[Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) などのクラウド環境で利用できます。 -`/ready` エンドポイントを有効化するための設定例: +`/ready` エンドポイントを有効にするための設定例: ```xml @@ -429,12 +439,12 @@ ClickHouse Keeper は、レプリカがトラフィックを受信できる状 ### フィーチャーフラグ {#feature-flags} -Keeper は ZooKeeper およびそのクライアントと完全互換ですが、ClickHouse クライアントから利用できる独自の機能やリクエスト種別も追加しています。 -これらの機能は後方互換性のない変更を引き起こす可能性があるため、その多くはデフォルトで無効化されており、`keeper_server.feature_flags` 設定を使用して有効化できます。 -すべての機能は個別に無効化することもできます。 -Keeper クラスターで新しい機能を有効にしたい場合は、まずクラスター内のすべての Keeper インスタンスをその機能をサポートするバージョンに更新してから、その機能自体を有効にすることを推奨します。 +Keeper は ZooKeeper およびそのクライアントと完全な互換性がありますが、ClickHouse クライアントから利用できる独自の機能やリクエストタイプも導入しています。 +これらの機能は後方互換性のない変更をもたらす可能性があるため、多くはデフォルトで無効になっており、`keeper_server.feature_flags` 設定で有効化できます。 +各機能は明示的に無効にすることもできます。 +Keeper クラスターで新しい機能を有効にしたい場合は、まずクラスター内のすべての Keeper インスタンスを、その機能をサポートするバージョンに更新してから、その機能自体を有効化することを推奨します。 -`multi_read` を無効化し、`check_not_exists` を有効化するフィーチャーフラグ設定の例: +`multi_read` を無効にし、`check_not_exists` を有効にするフィーチャーフラグ設定の例: ```xml @@ -447,28 +457,29 @@ Keeper クラスターで新しい機能を有効にしたい場合は、まず ``` -次の機能を利用できます: +以下の機能が利用可能です: | Feature | Description | Default | | ---------------------- | -------------------------------------------------------------------------------- | ------- | -| `multi_read` | 複数読み取りリクエストのサポート | `1` | -| `filtered_list` | ノードの種類(一時的か永続的か)で結果をフィルタリングする list リクエストのサポート | `1` | -| `check_not_exists` | ノードが存在しないことを検証する `CheckNotExists` リクエストのサポート | `1` | -| `create_if_not_exists` | ノードが存在しない場合に作成を試みる `CreateIfNotExists` リクエストのサポート。すでに存在する場合は変更は行われず、`ZOK` が返されます | `1` | -| `remove_recursive` | 対象ノードとそのサブツリーを削除する `RemoveRecursive` リクエストのサポート | `1` | +| `multi_read` | 複数読み取りリクエストをサポート | `1` | +| `filtered_list` | ノードタイプ(ephemeral または persistent)で結果をフィルタリングする list リクエストをサポート | `1` | +| `check_not_exists` | ノードが存在しないことを検証する `CheckNotExists` リクエストをサポート | `1` | +| `create_if_not_exists` | ノードが存在しない場合に作成を試みる `CreateIfNotExists` リクエストをサポート。すでに存在する場合は何も変更されず、`ZOK` が返されます | `1` | +| `remove_recursive` | ノードとそのサブツリーをまとめて削除する `RemoveRecursive` リクエストをサポート | `1` | :::note -一部の機能フラグはバージョン 25.7 からデフォルトで有効になっています。\ -Keeper を 25.7 以降にアップグレードする場合は、まずバージョン 24.9 以降にアップグレードしてから 25.7 以降に上げることを推奨します。 +バージョン 25.7 以降では、一部の機能フラグがデフォルトで有効になっています。 +Keeper を 25.7 以降にアップグレードする際の推奨手順は、まずバージョン 24.9 以降にアップグレードしてから行うことです。 ::: + ### ZooKeeper からの移行 {#migration-from-zookeeper} -ZooKeeper から ClickHouse Keeper へのシームレスな移行はできません。ZooKeeper クラスターを停止し、データを変換してから ClickHouse Keeper を起動する必要があります。`clickhouse-keeper-converter` ツールを使用すると、ZooKeeper のログおよびスナップショットを ClickHouse Keeper のスナップショットに変換できます。このツールは ZooKeeper 3.4 より新しいバージョンでのみ動作します。移行の手順は次のとおりです。 +ZooKeeper から ClickHouse Keeper へのシームレスな移行はできません。ZooKeeper クラスターを停止し、データを変換し、ClickHouse Keeper を起動する必要があります。`clickhouse-keeper-converter` ツールを使用すると、ZooKeeper のログとスナップショットを ClickHouse Keeper のスナップショットに変換できます。このツールは ZooKeeper 3.4 より新しいバージョンでのみ動作します。移行の手順は以下のとおりです。 1. すべての ZooKeeper ノードを停止します。 -2. オプションですが推奨です。ZooKeeper のリーダーノードを特定し、それを起動してから再度停止します。これにより、ZooKeeper に整合性の取れたスナップショットを作成させることができます。 +2. 任意ですが、推奨されます: ZooKeeper のリーダーノードを特定し、そのノードを起動してから再度停止します。これにより、ZooKeeper に一貫したスナップショットを作成させることができます。 3. リーダー上で `clickhouse-keeper-converter` を実行します。例: @@ -476,58 +487,58 @@ ZooKeeper から ClickHouse Keeper へのシームレスな移行はできませ clickhouse-keeper-converter --zookeeper-logs-dir /var/lib/zookeeper/version-2 --zookeeper-snapshots-dir /var/lib/zookeeper/version-2 --output-dir /path/to/clickhouse/keeper/snapshots ``` -4. `keeper` が設定されている ClickHouse サーバーノードにスナップショットをコピーするか、ZooKeeper の代わりに ClickHouse Keeper を起動します。スナップショットはすべてのノードに永続化されている必要があります。そうでないと、空のノードのほうが起動が速く、そのうちの 1 つがリーダーになってしまう可能性があります。 +4. スナップショットを、`keeper` が設定された ClickHouse サーバーノードにコピーするか、ZooKeeper の代わりに ClickHouse Keeper を起動します。スナップショットはすべてのノード上に存在している必要があります。そうでない場合、空のノードのほうが起動が速く、そのうちの 1 つがリーダーになってしまう可能性があります。 :::note -`keeper-converter` ツールは Keeper のスタンドアロンバイナリでは利用できません。 -ClickHouse がインストールされている場合は、ClickHouse のバイナリを直接使用できます。 +`keeper-converter` ツールは Keeper のスタンドアロンバイナリには含まれていません。 +ClickHouse がインストールされている場合は、そのバイナリを直接使用できます。 ```bash clickhouse keeper-converter ... ``` -Otherwise, you can [download the binary](/getting-started/quick-start/oss#download-the-binary) and run the tool as described above without installing ClickHouse. +そうでない場合は、[バイナリをダウンロード](/getting-started/quick-start/oss#download-the-binary)して、ClickHouse をインストールせずに上記の手順どおりにツールを実行できます。 ::: ### クォーラム喪失後の復旧 {#recovering-after-losing-quorum} -ClickHouse Keeper は Raft を使用しているため、クラスタサイズに応じて一定数のノード障害を許容できます。\ -例えば、3 ノードクラスタの場合、1 ノードだけがクラッシュした状態であれば、正しく動作し続けます。 +ClickHouse Keeper は Raft を使用しているため、クラスタサイズに応じて一定数のノード障害を許容できます。 +例えば 3 ノードクラスタの場合、1 ノードだけがクラッシュした状態であれば、正しく動作し続けます。 -クラスタ構成は動的に変更できますが、いくつか制約があります。再構成も Raft に依存しているため、 -クラスタにノードを追加 / 削除するにはクォーラムが必要です。クラスタ内で多数のノードを同時に失い、 -再起動する見込みがまったくない場合、Raft は動作を停止し、通常の方法ではクラスタを再構成できなくなります。 +クラスタ設定は動的に再設定できますが、いくつか制限があります。再設定も Raft に依存するため、 +クラスタからノードを追加・削除するにはクォーラムが必要です。もしクラスタ内のノードを同時に多数失い、 +それらを再起動する見込みがない場合、Raft は動作を停止し、通常の方法でクラスタを再設定することはできません。 -ただし、ClickHouse Keeper にはリカバリーモードがあり、1 ノードだけでクラスタを強制的に再構成できます。 -これは、ノードを再起動できない場合、あるいは同じエンドポイントで新しいインスタンスを起動できない場合の -最後の手段としてのみ実施してください。 +しかしながら、ClickHouse Keeper にはリカバリモードがあり、1 ノードだけでクラスタを強制的に再設定することができます。 +これは、ノードを再起動できない、あるいは同じエンドポイントで新しいインスタンスを起動できない場合の最後の手段としてのみ実施してください。 -続行する前に注意すべき重要な点: +続行前に注意すべき重要な点: -* 障害が発生したノードが、再びクラスタに接続できないことを確認してください。 -* 手順で明示されるまで、新しいノードはいずれも起動しないでください。 +* 障害が発生したノードがクラスタに再接続できないことを確認してください。 +* 手順で指示されるまでは、新しいノードを一切起動しないでください。 上記を確認したら、次の作業を行います: -1. 新しいリーダーとする Keeper ノードを 1 つ選択します。そのノードのデータがクラスタ全体に使用されるため、状態が最も最新であるノードを選ぶことを推奨します。 -2. まず最初に、選択したノードの `log_storage_path` と `snapshot_storage_path` ディレクトリをバックアップします。 -3. 使用するすべてのノード上でクラスタ構成を再設定します。 -4. 選択したノードに 4 文字コマンド `rcvr` を送信して、そのノードをリカバリーモードに移行させるか、あるいはそのノード上の Keeper インスタンスを停止し、`--force-recovery` 引数を付けて再起動します。 -5. 新しいノード上の Keeper インスタンスを 1 台ずつ起動し、次のノードを起動する前に、`mntr` が `zk_server_state` に対して `follower` を返すことを確認します。 -6. リカバリーモード中、リーダーノードは新しいノードとクォーラムを達成するまで `mntr` コマンドに対してエラーメッセージを返し、クライアントおよびフォロワーからのすべてのリクエストを拒否します。 -7. クォーラム達成後、リーダーノードは通常の動作モードに戻り、すべてのリクエストを受け付けるようになります。`mntr` を使用して Raft を検証すると、`zk_server_state` に対して `leader` が返されるはずです。 +1. 新しいリーダーとする Keeper ノードを 1 つ選択します。そのノードのデータがクラスタ全体で使用されることに注意してください。そのため、可能な限り最新の状態を持つノードを使用することを推奨します。 +2. 他の作業を行う前に、選択したノードの `log_storage_path` および `snapshot_storage_path` ディレクトリのバックアップを作成します。 +3. 使用したいすべてのノードでクラスタ設定を再構成します。 +4. 選択したノードに 4 文字コマンド `rcvr` を送信して、そのノードをリカバリモードにするか、あるいは選択したノード上の Keeper インスタンスを停止し、`--force-recovery` 引数を付けて再起動します。 +5. 新しいノード上の Keeper インスタンスを 1 台ずつ起動し、次のノードを起動する前に `mntr` が `zk_server_state` として `follower` を返すことを確認します。 +6. リカバリモード中、リーダーノードは新しいノードとのクォーラムを達成するまで `mntr` コマンドに対してエラーメッセージを返し、クライアントおよびフォロワーからのあらゆるリクエストを拒否します。 +7. クォーラムが達成されると、リーダーノードは通常の動作モードに戻り、Raft によってすべてのリクエストを受け付けるようになります。`mntr` を使用して検証すると、`zk_server_state` に対して `leader` が返されるはずです。 + -## Keeper でのディスクの使用 {#using-disks-with-keeper} +## Keeper でディスクを使用する {#using-disks-with-keeper} -Keeper は、スナップショット、ログファイル、および状態ファイルを保存するために、[外部ディスク](/operations/storing-data.md) の一部をサポートしています。 +Keeper は、スナップショット、ログファイル、および状態ファイルを保存するために、[external disks](/operations/storing-data.md) の一部をサポートします。 -サポートされているディスクの種類は次のとおりです。 +サポートされているディスクの種類は次のとおりです: * s3_plain * s3 * local -以下は、設定ファイル内に含まれるディスク定義の例です。 +以下は、設定内に含まれるディスク定義の例です。 ```xml @@ -564,22 +575,22 @@ Keeper は、スナップショット、ログファイル、および状態フ ``` -ログ用にディスクを使用するには、`keeper_server.log_storage_disk` 設定にディスク名を指定します。 -スナップショット用にディスクを使用するには、`keeper_server.snapshot_storage_disk` 設定にディスク名を指定します。 -さらに、`keeper_server.latest_log_storage_disk` および `keeper_server.latest_snapshot_storage_disk` をそれぞれ使用することで、最新のログやスナップショットには別のディスクを使用できます。 -その場合、新しいログやスナップショットが作成されると、Keeper はファイルを正しいディスクに自動的に移動します。 -状態ファイル用にディスクを使用するには、`keeper_server.state_storage_disk` 設定にディスク名を指定します。 +ログ用にディスクを使用するには、`keeper_server.log_storage_disk` 設定をディスク名に設定します。 +スナップショット用にディスクを使用するには、`keeper_server.snapshot_storage_disk` 設定をディスク名に設定します。 +さらに、`keeper_server.latest_log_storage_disk` と `keeper_server.latest_snapshot_storage_disk` をそれぞれ使用することで、最新のログやスナップショットに別々のディスクを使用できます。 +その場合、新しいログやスナップショットが作成されると、Keeper はファイルを正しいディスクへ自動的に移動します。 +状態ファイル用にディスクを使用するには、`keeper_server.state_storage_disk` 設定をディスク名に設定します。 -ディスク間でのファイル移動は安全であり、転送の途中で Keeper が停止してもデータを失うリスクはありません。 -ファイルが新しいディスクに完全に移動されるまでは、古いディスクから削除されることはありません。 +ディスク間でファイルを移動しても安全であり、Keeper が転送の途中で停止してもデータを失うリスクはありません。 +ファイルが完全に新しいディスクへ移動し終わるまでは、古いディスクから削除されることはありません。 -`keeper_server.coordination_settings.force_sync` を `true`(デフォルト値は `true`)に設定した Keeper は、すべての種類のディスクに対して一律の保証を満たすことはできません。 +`keeper_server.coordination_settings.force_sync` が `true`(デフォルトで `true`)に設定された Keeper は、すべての種類のディスクに対して同じ保証を提供することはできません。 現時点では、`local` タイプのディスクのみが永続的な同期をサポートします。 -`force_sync` を使用する場合、`latest_log_storage_disk` を使用していないなら、`log_storage_disk` は `local` ディスクでなければなりません。 -`latest_log_storage_disk` を使用する場合、それは常に `local` ディスクである必要があります。 -`force_sync` が無効な場合は、あらゆるタイプのディスクを任意の構成で使用できます。 +`force_sync` が有効な場合、`latest_log_storage_disk` を使用していないなら、`log_storage_disk` は `local` ディスクである必要があります。 +`latest_log_storage_disk` を使用する場合は、常に `local` ディスクでなければなりません。 +`force_sync` が無効な場合は、あらゆる種類のディスクを、どのような構成でも使用できます。 -Keeper インスタンスのストレージ構成の一例は、次のようになります。 +Keeper インスタンスのストレージ構成例は、次のようになります。 ```xml @@ -593,21 +604,22 @@ Keeper インスタンスのストレージ構成の一例は、次のように ``` -このインスタンスは、最新のログ以外のすべてのログをディスク `log_s3_plain` に保存し、最新のログのみをディスク `log_local` に保存します。 -同じロジックがスナップショットにも適用され、最新のスナップショット以外はすべて `snapshot_s3_plain` に保存され、最新のスナップショットのみがディスク `snapshot_local` に保存されます。 +このインスタンスでは、最新のログ以外はすべてディスク `log_s3_plain` に保存し、最新のログのみをディスク `log_local` に保存します。 +スナップショットについても同様で、最新のスナップショット以外はすべて `snapshot_s3_plain` に保存され、最新のスナップショットのみがディスク `snapshot_local` に保存されます。 ### ディスク構成の変更 {#changing-disk-setup} :::important -新しいディスク構成を適用する前に、すべての Keeper のログとスナップショットを手動でバックアップしてください。 +新しいディスク構成を適用する前に、すべての Keeper のログおよびスナップショットを手動でバックアップしてください。 ::: -階層化ディスク構成(最新ファイル用に個別のディスクを使用する構成)が定義されている場合、Keeper は起動時にファイルを正しいディスクへ自動的に移動しようとします。 -以前と同じ保証が適用され、ファイルが新しいディスクへ完全に移動されるまでは古いディスクから削除されないため、複数回の再起動を安全に行うことができます。 +階層化ディスク構成(最新ファイル用に専用ディスクを使用する構成)が定義されている場合、Keeper は起動時にファイルを自動的に正しいディスクへ移動しようとします。 +以前と同じ保証が適用されます。ファイルが新しいディスクへ完全に移動されるまでは古いディスクから削除されないため、複数回の再起動を安全に行うことができます。 -ファイルをまったく新しいディスクへ移動する必要がある場合(または 2 ディスク構成から単一ディスク構成へ移行する場合)、`keeper_server.old_snapshot_storage_disk` と `keeper_server.old_log_storage_disk` を複数定義して使用することができます。 +ファイルを完全に新しいディスクへ移動する必要がある場合(あるいは 2 ディスク構成から単一ディスク構成へ移行する場合)、`keeper_server.old_snapshot_storage_disk` および `keeper_server.old_log_storage_disk` を複数定義することが可能です。 + +次の設定は、前述の 2 ディスク構成から、まったく新しい単一ディスク構成へ移行する方法を示しています。 -次の設定は、以前の 2 ディスク構成から、まったく新しい単一ディスク構成へ移行する方法を示しています。 ```xml @@ -623,13 +635,14 @@ Keeper インスタンスのストレージ構成の一例は、次のように ``` -起動時には、`log_local` および `log_s3_plain` 上のすべてのログファイルが `log_local2` ディスクに移動されます。 -また、`snapshot_local` および `snapshot_s3_plain` 上のすべてのスナップショットファイルが `snapshot_local2` ディスクに移動されます。 +起動時には、すべてのログファイルが `log_local` および `log_s3_plain` から `log_local2` ディスクに移動されます。 +また、すべてのスナップショットファイルが `snapshot_local` および `snapshot_s3_plain` から `snapshot_local2` ディスクに移動されます。 + ## ログキャッシュの設定 {#configuring-logs-cache} -ディスクから読み取るデータ量を最小限に抑えるために、Keeper はログエントリをメモリにキャッシュします。 -リクエストが大きい場合、ログエントリが多くのメモリを消費するため、キャッシュされるログの量には上限があります。 +ディスクから読み取るデータ量を最小限に抑えるために、Keeper はログエントリーをメモリ上にキャッシュします。 +リクエストが大きい場合、ログエントリーが大量のメモリを消費するため、キャッシュされるログの量には上限があります。 この上限は次の 2 つの設定で制御されます: - `latest_logs_cache_size_threshold` - キャッシュに保存される最新ログの合計サイズ - `commit_logs_cache_size_threshold` - 次にコミットする必要がある後続ログの合計サイズ @@ -637,21 +650,23 @@ Keeper インスタンスのストレージ構成の一例は、次のように デフォルト値が大きすぎる場合は、これら 2 つの設定値を小さくすることでメモリ使用量を削減できます。 :::note -`pfev` コマンドを使用して、それぞれのキャッシュおよびファイルから読み取られたログの量を確認できます。 -Prometheus エンドポイントのメトリクスを使用して、両方のキャッシュの現在のサイズを追跡することもできます。 +各キャッシュおよびファイルから読み取られたログの量を確認するには、`pfev` コマンドを使用できます。 +また、Prometheus エンドポイントのメトリクスを使用して、両方のキャッシュの現在のサイズを追跡することもできます。 ::: + + ## Prometheus {#prometheus} -Keeper は [Prometheus](https://prometheus.io) によるスクレイプ用のメトリクスデータを公開できます。 +Keeper は、[Prometheus](https://prometheus.io) によるスクレイピング用のメトリクスデータを公開できます。 -設定: +Settings: -* `endpoint` – Prometheus サーバーがメトリクスをスクレイプするための HTTP エンドポイント。先頭は '/' とします。 +* `endpoint` – Prometheus サーバーがメトリクスをスクレイプするための HTTP エンドポイント。'/' で始めます。 * `port` – `endpoint` 用のポート。 -* `metrics` – [system.metrics](/operations/system-tables/metrics) テーブルからメトリクスを公開するかを制御するフラグ。 -* `events` – [system.events](/operations/system-tables/events) テーブルからメトリクスを公開するかを制御するフラグ。 -* `asynchronous_metrics` – [system.asynchronous_metrics](/operations/system-tables/asynchronous_metrics) テーブルから現在のメトリクス値を公開するかを制御するフラグ。 +* `metrics` – [system.metrics](/operations/system-tables/metrics) テーブルからメトリクスを公開するかどうかを指定するフラグ。 +* `events` – [system.events](/operations/system-tables/events) テーブルからメトリクスを公開するかどうかを指定するフラグ。 +* `asynchronous_metrics` – [system.asynchronous_metrics](/operations/system-tables/asynchronous_metrics) テーブルから現在のメトリクス値を公開するかどうかを指定するフラグ。 **例** @@ -672,28 +687,29 @@ Keeper は [Prometheus](https://prometheus.io) によるスクレイプ用のメ ``` -確認します(`127.0.0.1` を ClickHouse サーバーの IP アドレスまたはホスト名に置き換えてください): +確認します(`127.0.0.1` を利用中の ClickHouse サーバーの IP アドレスまたはホスト名に置き換えてください): ```bash curl 127.0.0.1:9363/metrics ``` -ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も参照してください。 +ClickHouse Cloud 向けの [Prometheus 連携](/integrations/prometheus) も参照してください。 + ## ClickHouse Keeper ユーザーガイド {#clickhouse-keeper-user-guide} -このガイドでは、ClickHouse Keeper を構成するためのシンプルで最小限の設定と、分散処理(分散操作)をテストする方法の例を示します。この例では、Linux 上の 3 ノードを使用します。 +このガイドでは、ClickHouse Keeper を構成するためのシンプルかつ最小限の設定と、分散操作をテストする方法の例を示します。この例では、Linux 上の 3 ノードを使用します。 -### 1. Keeper 設定でノードを構成する {#1-configure-nodes-with-keeper-settings} +### 1. Keeper 設定を使用してノードを構成する {#1-configure-nodes-with-keeper-settings} -1. 3 つのホスト(`chnode1`、`chnode2`、`chnode3`)に 3 つの ClickHouse インスタンスをインストールします。(ClickHouse のインストール方法の詳細は、[クイックスタート](/getting-started/install/install.mdx) を参照してください。) +1. 3 台のホスト(`chnode1`、`chnode2`、`chnode3`)に 3 つの ClickHouse インスタンスをインストールします。(ClickHouse のインストールの詳細は [Quick Start](/getting-started/install/install.mdx) を参照してください。) -2. 各ノードで、ネットワークインターフェイス経由の外部通信を許可するために、次のエントリを追加します。 +2. 各ノードで、ネットワークインターフェイスを介した外部通信を許可するために、次のエントリを追加します。 ```xml 0.0.0.0 ``` -3. 次の ClickHouse Keeper 設定を 3 台すべてのサーバーに追加し、各サーバーに対して `` 設定を更新します。`chnode1` は `1`、`chnode2` は `2`、というように設定します。 +3. すべてのサーバーに次の ClickHouse Keeper 構成を追加し、各サーバーに対して `` 設定を更新します。`chnode1` には `1`、`chnode2` には `2`、というように設定します。 ```xml 9181 @@ -727,20 +743,20 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も ``` - 上で使用した基本的な設定は次のとおりです。 + 上記で使用している基本的な設定は次のとおりです。 |Parameter |Description |Example | |----------|------------------------------|---------------------| - |tcp_port |Keeper のクライアントが使用するポート|9181(ZooKeeper の 2181 と同等のデフォルト)| + |tcp_port |Keeper のクライアントが使用するポート|9181(ZooKeeper の 2181 に相当するデフォルト)| |server_id| Raft 構成で使用される各 ClickHouse Keeper サーバーの識別子| 1| - |coordination_settings| タイムアウトなどのパラメータ用のセクション| タイムアウト: 10000、ログレベル: trace| - |server |参加するサーバーの定義|各サーバー定義の一覧| + |coordination_settings| タイムアウトなどのパラメータを指定するセクション| タイムアウト: 10000、ログレベル: trace| + |server |クラスタに参加するサーバーの定義|各サーバー定義の一覧| |raft_configuration| Keeper クラスター内の各サーバーの設定| 各サーバーとその設定| |id |Keeper サービス用のサーバーの数値 ID|1| - |hostname |Keeper クラスター内の各サーバーのホスト名、IP または FQDN|`chnode1.domain.com`| - |port|サーバー間 Keeper 接続用のリッスンポート|9234| + |hostname |Keeper クラスター内の各サーバーのホスト名、IP、または FQDN|`chnode1.domain.com`| + |port|サーバー間の Keeper 接続を待ち受けるポート|9234| -4. Zookeeper コンポーネントを有効化します。これは ClickHouse Keeper エンジンを使用します。 +4. ZooKeeper コンポーネントを有効化します。これは ClickHouse Keeper エンジンをバックエンドとして使用します。 ```xml @@ -758,28 +774,30 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も ``` - 上で使用した基本的な設定は次のとおりです。 + 上記で使用している基本的な設定は次のとおりです。 |Parameter |Description |Example | |----------|------------------------------|---------------------| - |node |ClickHouse Keeper への接続用ノードの一覧|各サーバーごとの設定エントリ| - |host|各 ClickHouse Keeper ノードのホスト名、IP または FQDN| `chnode1.domain.com`| - |port|ClickHouse Keeper のクライアント用ポート| 9181| + |node |ClickHouse Keeper への接続のためのノード一覧|各サーバーごとの設定エントリ| + |host|各 ClickHouse Keeper ノードのホスト名、IP、または FQDN| `chnode1.domain.com`| + |port|ClickHouse Keeper のクライアントポート| 9181| -5. ClickHouse を再起動し、各 Keeper インスタンスが稼働していることを確認します。各サーバー上で次のコマンドを実行します。`ruok` コマンドは、Keeper が稼働して健全な状態であれば `imok` を返します。 +5. ClickHouse を再起動し、各 Keeper インスタンスが稼働していることを確認します。各サーバーで次のコマンドを実行します。Keeper が稼働していて正常な場合、`ruok` コマンドは `imok` を返します。 ```bash # echo ruok | nc localhost 9181; echo imok ``` -6. `system` データベースには、ClickHouse Keeper インスタンスの詳細が含まれる `zookeeper` という名前のテーブルがあります。次のようにテーブルを参照します。 +6. `system` データベースには、ClickHouse Keeper インスタンスの詳細を含む `zookeeper` という名前のテーブルがあります。このテーブルを参照してみます。 ```sql SELECT * FROM system.zookeeper WHERE path IN ('/', '/clickhouse') ``` -テーブルは次のとおりです。 + + +テーブルは次のとおりです: ```response ┌─name───────┬─value─┬─czxid─┬─mzxid─┬───────────────ctime─┬───────────────mtime─┬─version─┬─cversion─┬─aversion─┬─ephemeralOwner─┬─dataLength─┬─numChildren─┬─pzxid─┬─path────────┐ @@ -791,7 +809,7 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も ### 2. ClickHouse でクラスタを構成する {#2--configure-a-cluster-in-clickhouse} -1. 2 つのノード上に、2 シャード・各 1 レプリカというシンプルなクラスタを構成します。3 台目のノードは、ClickHouse Keeper の要件であるクォーラムを満たすために使用します。`chnode1` と `chnode2` の設定を更新します。次のクラスタ定義では、各ノードに 1 つずつシャードを配置し、合計 2 シャードとし、レプリケーションは行いません。この例では、データの一部は一方のノードに、残りはもう一方のノードに配置されます。 +1. 2 つのノード上に 2 つの分片と、それぞれ 1 つずつのレプリカを持つシンプルなクラスタを構成します。3 台目のノードは、ClickHouse Keeper の要件であるクォーラムを満たすために使用します。`chnode1` と `chnode2` の設定を更新します。次のクラスタ定義では、各ノードに 1 つずつ分片を持ち、合計 2 分片でレプリケーションはありません。この例では、一部のデータは片方のノードに、残りはもう一方のノードに配置されます。 ```xml @@ -818,12 +836,12 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も | Parameter | Description | Example | | --------- | ------------------------------------- | -------------------- | - | shard | クラスタ定義内のシャード(レプリカの集合) | 各シャードごとのレプリカのリスト | - | replica | 各レプリカの設定 | 各レプリカの設定エントリ | - | host | レプリカシャードを配置するサーバのホスト名、IP、または FQDN | `chnode1.domain.com` | - | port | ネイティブ TCP プロトコルで通信するために使用されるポート | 9000 | - | user | クラスタインスタンスへの認証に使用されるユーザー名 | default | - | password | クラスタインスタンスへの接続を許可するために定義されたユーザーのパスワード | `ClickHouse123!` | + | shard | クラスタ定義内での各分片に属するレプリカの一覧 | 各分片ごとのレプリカの一覧 | + | replica | 各レプリカに対する設定の一覧 | 各レプリカ用の設定エントリ | + | host | レプリカの分片を配置するサーバーのホスト名、IP、または FQDN | `chnode1.domain.com` | + | port | ネイティブ TCP プロトコルによる通信に使用されるポート | 9000 | + | user | クラスタのインスタンスへの認証に使用されるユーザー名 | default | + | password | クラスタのインスタンスへの接続を許可するために定義したユーザーのパスワード | `ClickHouse123!` | 2. ClickHouse を再起動し、クラスタが作成されたことを確認します。 @@ -831,7 +849,7 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も SHOW clusters; ``` - 次のようにクラスタが表示されます。 + クラスタが次のように表示されます。 ```response ┌─cluster───────┐ @@ -841,12 +859,13 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も ### 3. 分散テーブルを作成してテストする {#3-create-and-test-distributed-table} -1. `chnode1` 上の ClickHouse クライアントを使用して、新しいクラスタ上に新しいデータベースを作成します。`ON CLUSTER` 句により、データベースは自動的に両方のノード上に作成されます。 +1. `chnode1` 上で ClickHouse クライアントを使用し、このクラスタ上に新しいデータベースを作成します。`ON CLUSTER` 句により、データベースは両方のノードに自動的に作成されます。 ```sql CREATE DATABASE db1 ON CLUSTER 'cluster_2S_1R'; ``` -2. `db1` データベース上に新しいテーブルを作成します。ここでも、`ON CLUSTER` 句によって両方のノード上にテーブルが作成されます。 + +2. `db1` データベースに新しいテーブルを作成します。ここでも、`ON CLUSTER` により両方のノードにテーブルが作成されます。 ```sql CREATE TABLE db1.table1 on cluster 'cluster_2S_1R' ( @@ -875,7 +894,7 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も (4, 'jkl') ``` -5. 各ノードで `SELECT` 文を実行しても、そのノード上のデータしか表示されないことが分かります。たとえば、`chnode1` では: +5. 各ノードで `SELECT` 文を実行すると、そのノード上のデータのみが表示されることに注意してください。たとえば、`chnode1` では: ```sql SELECT * FROM db1.table1 @@ -908,7 +927,7 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も └────┴─────────┘ ``` -6. 2 つのシャード上のデータを表現するために `Distributed` テーブルを作成できます。`Distributed` テーブルエンジンを使用するテーブル自体はデータを保持しませんが、複数サーバーにまたがる分散クエリ処理を可能にします。読み取りはすべてのシャードに対して行われ、書き込みはシャード間に分散できます。`chnode1` で次のクエリを実行します: +6. 2 つの分片上のデータを扱うために、`Distributed` テーブルを作成できます。`Distributed` テーブルエンジンを持つテーブルは自身にはデータを保持しませんが、複数サーバーにまたがる分散クエリ処理を可能にします。読み取り時にはすべての分片にアクセスし、書き込みは分片間に分散できます。以下のクエリを `chnode1` で実行します: ```sql CREATE TABLE db1.dist_table ( id UInt64, @@ -917,7 +936,7 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も ENGINE = Distributed(cluster_2S_1R,db1,table1) ``` -7. `dist_table` に対してクエリを実行すると、2 つのシャードから 4 行すべてのデータが返されることが分かります: +7. `dist_table` に対してクエリを実行すると、2 つの分片から 4 行すべてのデータが返されることが分かります: ```sql SELECT * FROM db1.dist_table @@ -940,34 +959,31 @@ ClickHouse Cloud における [Prometheus 連携](/integrations/prometheus) も ### まとめ {#summary} -このガイドでは、ClickHouse Keeper を使用してクラスタをセットアップする方法を説明しました。ClickHouse Keeper を使用すると、クラスタを構成し、シャード間でレプリケート可能な分散テーブルを定義できます。 +このガイドでは、ClickHouse Keeper を使用してクラスタをセットアップする方法を説明しました。ClickHouse Keeper を使用すると、クラスタを構成し、分片間でレプリケートされる分散テーブルを定義できます。 -## 一意のパスを使った ClickHouse Keeper の構成 {#configuring-clickhouse-keeper-with-unique-paths} + + +## 一意なパスを使用した ClickHouse Keeper の設定 {#configuring-clickhouse-keeper-with-unique-paths} ### 説明 {#description} -この記事では、組み込みの `{uuid}` マクロ設定を使用して、 -ClickHouse Keeper または ZooKeeper に一意のエントリを作成する方法を説明します。 -テーブルを頻繁に作成・削除する場合、一意のパスを使用すると便利です。各パスを作成するたびに -そのパス内で新しい `uuid` が使用され、パスは再利用されないため、 -Keeper のガベージコレクションがパスエントリを削除するまで数分待つ必要がなくなります。 +この記事では、組み込みの `{uuid}` マクロ設定を使用して +ClickHouse Keeper または ZooKeeper に一意なエントリを +作成する方法を説明します。一意なパスは、テーブルの作成と削除を頻繁に行う場合に有用です。パスが作成されるたびにそのパス内で新しい `uuid` が使用され、パスが再利用されないため、Keeper のガベージコレクションがパスエントリを削除するのを数分間待つ必要がなくなります。 -### サンプル環境 {#example-environment} +### 例となる環境 {#example-environment} -3 ノードのクラスタを使用し、3 つすべてのノードに ClickHouse Keeper を構成し、 -そのうち 2 つのノードに ClickHouse を構成します。これにより、 -ClickHouse Keeper 用に 3 ノード (タイブレーカーノードを含む) が用意され、 -2 つのレプリカで構成された 1 つの ClickHouse シャードが構成されます。 +3 ノードのクラスタで、3 つすべてのノードに ClickHouse Keeper を構成し、そのうち 2 つのノードに ClickHouse を構成します。これにより、ClickHouse Keeper 用に 3 ノード(タイブレーカーノードを含む)が用意され、2 つのレプリカで構成される単一の ClickHouse 分片が提供されます。 -| node | description | -| ----------------------- | ----------------------------- | -| `chnode1.marsnet.local` | データノード - クラスタ `cluster_1S_2R` | -| `chnode2.marsnet.local` | データノード - クラスタ `cluster_1S_2R` | -| `chnode3.marsnet.local` | ClickHouse Keeper タイブレーカーノード | +| node | description | +| ----------------------- | ----------------------------------- | +| `chnode1.marsnet.local` | data node - cluster `cluster_1S_2R` | +| `chnode2.marsnet.local` | data node - cluster `cluster_1S_2R` | +| `chnode3.marsnet.local` | ClickHouse Keeper tie breaker node | -クラスタの設定例: +クラスタの設定例: ```xml @@ -992,10 +1008,10 @@ ClickHouse Keeper 用に 3 ノード (タイブレーカーノードを含む) ``` -### `{uuid}` を使用するためのテーブル設定手順 {#procedures-to-set-up-tables-to-use-uuid} +### テーブルで `{uuid}` を使用するための設定手順 {#procedures-to-set-up-tables-to-use-uuid} 1. 各サーバーでマクロを設定します - サーバー 1 の例: + サーバー1の例: ```xml @@ -1005,7 +1021,7 @@ ClickHouse Keeper 用に 3 ノード (タイブレーカーノードを含む) ``` :::note -`shard` と `replica` についてはマクロを定義していますが、`{uuid}` はここでは定義されていない点に注意してください。これは組み込みのものなので、あらためて定義する必要はありません。 +ここでは `shard` と `replica` のマクロを定義していますが、`{uuid}` は定義されていません。これは組み込みのものであり、別途定義する必要はありません。 ::: 2. データベースを作成する @@ -1028,7 +1044,7 @@ Query id: 07fb7e65-beb4-4c30-b3ef-bd303e5c42b5 └───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ ``` -3. マクロと`{uuid}`を使用してクラスター上にテーブルを作成する +3. マクロと `{uuid}` を用いてクラスタにテーブルを作成します ```sql CREATE TABLE db_uuid.uuid_table1 ON CLUSTER 'cluster_1S_2R' @@ -1052,6 +1068,7 @@ ORDER BY id Query id: 8f542664-4548-4a02-bd2a-6f2c973d0dc4 ``` + ┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ chnode1.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ │ chnode2.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ @@ -1059,7 +1076,7 @@ Query id: 8f542664-4548-4a02-bd2a-6f2c973d0dc4 ```` -4. 分散テーブルを作成する +4. Create a distributed table ```sql CREATE TABLE db_uuid.dist_uuid_table1 ON CLUSTER 'cluster_1S_2R' @@ -1145,14 +1162,14 @@ Query id: 6cbab449-9e7f-40fe-b8c2-62d46ba9f5c8 │ 2 │ def │ └────┴─────────┘ -2行が設定されました。経過時間: 0.007秒。 +2 rows in set. Elapsed: 0.007 sec. ``` -### 代替案 {#alternatives} +### 他の方法 {#alternatives} デフォルトのレプリケーションパスは、マクロおよび `{uuid}` を使用して事前に定義できます。 -1. 各ノードでテーブル用のデフォルトを設定する +1. 各ノードでテーブルのデフォルトを設定する ```xml /clickhouse/tables/{shard}/db_uuid/{uuid} @@ -1160,7 +1177,7 @@ Query id: 6cbab449-9e7f-40fe-b8c2-62d46ba9f5c8 ``` :::tip -各ノードが特定のデータベース向けに使用される場合は、ノードごとにマクロ `{database}` を定義することもできます。 +ノードが特定のデータベース専用として使用されている場合は、各ノードごとにマクロ `{database}` を定義することもできます。 ::: 2. 明示的なパラメーターを指定せずにテーブルを作成します: @@ -1185,7 +1202,8 @@ ENGINE = ReplicatedMergeTree ORDER BY id ``` -クエリ ID: ab68cda9-ae41-4d6d-8d3b-20d8255774ee + +Query id: ab68cda9-ae41-4d6d-8d3b-20d8255774ee ┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ chnode2.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ @@ -1196,7 +1214,7 @@ ORDER BY id ```` -3. デフォルト設定が使用されていることを確認します +3. Verify it used the settings used in default config ```sql SHOW CREATE TABLE db_uuid.uuid_table1; ```` @@ -1212,19 +1230,19 @@ CREATE TABLE db_uuid.uuid_table1 ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/db_uuid/{uuid}', '{replica}') ORDER BY id -1 行のセット。経過時間: 0.003 秒。 +1 row in set. Elapsed: 0.003 sec. ``` ### トラブルシューティング {#troubleshooting} -テーブル情報とUUIDを取得するためのコマンド例: +テーブル情報および UUID を取得するためのコマンド例: ```sql SELECT * FROM system.tables WHERE database = 'db_uuid' AND name = 'uuid_table1'; ``` -上記のテーブルに対応する UUID テーブルの情報を ZooKeeper から取得するためのコマンド例 +上記のテーブルのUUIDを使って、ZooKeeper上のテーブル情報を取得するためのコマンド例 ```sql SELECT * FROM system.zookeeper @@ -1232,13 +1250,13 @@ WHERE path = '/clickhouse/tables/1/db_uuid/9e8a3cc2-0dec-4438-81a7-c3e63ce2a1cf/ ``` :::note -データベースは `Atomic` である必要があります。以前のバージョンからアップグレードした場合、 -`default` データベースはおそらく `Ordinary` タイプになっています。 +データベースのエンジンは `Atomic` である必要があります。以前のバージョンからアップグレードする場合、 +`default` データベースは `Ordinary` タイプである可能性が高いです。 ::: 確認するには: -例えば、 +たとえば、 ```sql SELECT name, engine FROM system.databases WHERE name = 'db_uuid'; @@ -1260,22 +1278,23 @@ Query id: b047d459-a1d2-4016-bcf9-3e97e30e49c2 1 row in set. Elapsed: 0.004 sec. ``` + ## ClickHouse Keeper の動的再構成 {#reconfiguration} ### 説明 {#description-1} -ClickHouse Keeper は、`keeper_server.enable_reconfiguration` が有効になっている場合に、ZooKeeper の [`reconfig`](https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_modifying) -コマンドによるクラスタの動的な再構成を部分的にサポートします。 +ClickHouse Keeper は、`keeper_server.enable_reconfiguration` が有効になっている場合に、動的なクラスタ再構成のために ZooKeeper の [`reconfig`](https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_modifying) +コマンドの一部機能をサポートします。 :::note この設定が無効になっている場合は、レプリカの `raft_configuration` -セクションを手動で変更することでクラスタを再構成できます。変更はリーダーのみが適用するため、必ずすべてのレプリカ上のファイルを編集してください。 -あるいは、任意の ZooKeeper 互換クライアントを介して `reconfig` クエリを送信することもできます。 +セクションを手動で変更することでクラスタを再構成できます。変更を適用するのはリーダーのみであるため、必ずすべてのレプリカ上のファイルを編集してください。 +あるいは、ZooKeeper 互換クライアントを通じて `reconfig` クエリを送信することもできます。 ::: -仮想ノード `/keeper/config` には、次の形式で直近にコミットされたクラスタ構成が格納されています。 +仮想ノード `/keeper/config` には、以下の形式で最新のコミット済みクラスタ構成が格納されます。 ```text server.id = server_host:server_port[;server_type][;server_priority] @@ -1283,12 +1302,12 @@ server.id2 = ... ... ``` -* 各サーバーエントリは改行で区切られます。 -* `server_type` は `participant` か `learner` のいずれかです([`learner`](https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md) はリーダー選出に参加しません)。 -* `server_priority` は、[リーダー選出時にどのノードを優先すべきか](https://github.com/eBay/NuRaft/blob/master/docs/leader_election_priority.md) を指定する 0 以上の整数です。 - プライオリティが 0 の場合、そのサーバーがリーダーになることはありません。 +* 各サーバーのエントリは改行で区切られます。 +* `server_type` は `participant` か `learner` のいずれかです([learner](https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md) はリーダー選出に参加しません)。 +* `server_priority` は、[リーダー選出時にどのノードを優先すべきか](https://github.com/eBay/NuRaft/blob/master/docs/leader_election_priority.md) を示す 0 以上の整数です。 + 優先度が 0 の場合、そのサーバーがリーダーになることはありません。 -例: +例: ```sql :) get /keeper/config @@ -1297,78 +1316,91 @@ server.2=zoo2:9234;participant;1 server.3=zoo3:9234;participant;1 ``` -`reconfig` コマンドを使用すると、新しいサーバーの追加、既存サーバーの削除、および既存サーバーの優先順位の変更が行えます。次に、`clickhouse-keeper-client` を使用した例を示します: +`reconfig` コマンドを使用すると、新しいサーバーの追加、既存サーバーの削除、既存サーバーの優先度の変更などの操作を行うことができます。以下に例を示します(`clickhouse-keeper-client` を使用): + ```bash -# 新しいサーバーを2台追加 {#add-two-new-servers} +# Add two new servers reconfig add "server.5=localhost:123,server.6=localhost:234;learner" -# 他のサーバーを2台削除 {#remove-two-other-servers} +# Remove two other servers reconfig remove "3,4" -# 既存サーバーの優先度を8に変更 {#change-existing-server-priority-to-8} +# Change existing server priority to 8 reconfig add "server.5=localhost:5123;participant;8" ``` -また、`kazoo` の例は次のとおりです。 +`kazoo` の例は次のとおりです。 + ```python -# 2つの新しいサーバーを追加し、2つの他のサーバーを削除 {#add-two-new-servers-remove-two-other-servers} +# Add two new servers, remove two other servers reconfig(joining="server.5=localhost:123,server.6=localhost:234;learner", leaving="3,4") ``` -# 既存サーバーの優先度を 8 に変更 {#change-existing-server-priority-to-8} + +# 既存のサーバーの優先度を8に変更 reconfig(joining="server.5=localhost:5123;participant;8", leaving=None) ``` -`joining`内のサーバーは、上記で説明したサーバー形式に従う必要があります。サーバーエントリはカンマで区切ります。 -新しいサーバーを追加する際、`server_priority`(デフォルト値は1)と`server_type`(デフォルト値は`participant`)は省略できます。 +Servers in `joining` should be in server format described above. Server entries should be delimited by commas. +While adding new servers, you can omit `server_priority` (default value is 1) and `server_type` (default value +is `participant`). -既存のサーバーの優先度を変更する場合は、目標の優先度を指定して`joining`に追加します。 -サーバーのホスト、ポート、およびタイプは既存のサーバー構成と一致する必要があります。 +If you want to change existing server priority, add it to `joining` with target priority. +Server host, port, and type must be equal to existing server configuration. -サーバーは`joining`と`leaving`に記述された順序で追加および削除されます。 -`joining`からのすべての更新は、`leaving`からの更新よりも先に処理されます。 +Servers are added and removed in order of appearance in `joining` and `leaving`. +All updates from `joining` are processed before updates from `leaving`. -Keeperの再構成実装には以下の注意事項があります: +There are some caveats in Keeper reconfiguration implementation: -- 増分再構成のみがサポートされています。空でない`new_members`を含むリクエストは拒否されます。 +- Only incremental reconfiguration is supported. Requests with non-empty `new_members` are declined. - ClickHouse Keeperの実装は、メンバーシップを動的に変更するためにNuRaft APIに依存しています。NuRaftは一度に1つのサーバーを追加または削除する方式を採用しています。これは、構成への各変更(`joining`の各部分、`leaving`の各部分)が個別に決定される必要があることを意味します。したがって、エンドユーザーに誤解を与える可能性があるため、一括再構成は利用できません。 + ClickHouse Keeper implementation relies on NuRaft API to change membership dynamically. NuRaft has a way to + add a single server or remove a single server, one at a time. This means each change to configuration + (each part of `joining`, each part of `leaving`) must be decided on separately. Thus there is no bulk + reconfiguration available as it would be misleading for end users. - サーバータイプ(participant/learner)の変更もNuRaftでサポートされていないため不可能です。唯一の方法はサーバーを削除して追加することですが、これも誤解を招く可能性があります。 + Changing server type (participant/learner) isn't possible either as it's not supported by NuRaft, and + the only way would be to remove and add server, which again would be misleading. -- 返される`znodestat`値は使用できません。 -- `from_version`フィールドは使用されません。`from_version`が設定されたすべてのリクエストは拒否されます。 - これは、`/keeper/config`が仮想ノードであり、永続ストレージに保存されるのではなく、リクエストごとに指定されたノード構成で動的に生成されるためです。 - この設計は、NuRaftがすでにこの構成を保存しているため、データの重複を避けるために採用されました。 -- ZooKeeperとは異なり、`sync`コマンドを送信してクラスターの再構成を待機する方法はありません。 - 新しい構成は_最終的に_適用されますが、時間の保証はありません。 -- `reconfig`コマンドはさまざまな理由で失敗する可能性があります。クラスターの状態を確認して、更新が適用されたかどうかを確認できます。 +- You cannot use the returned `znodestat` value. +- The `from_version` field is not used. All requests with set `from_version` are declined. + This is due to the fact `/keeper/config` is a virtual node, which means it is not stored in + persistent storage, but rather generated on-the-fly with the specified node config for every request. + This decision was made as to not duplicate data as NuRaft already stores this config. +- Unlike ZooKeeper, there is no way to wait on cluster reconfiguration by submitting a `sync` command. + New config will be _eventually_ applied but with no time guarantees. +- `reconfig` command may fail for various reasons. You can check cluster's state and see whether the update + was applied. ``` -## 単一ノードの keeper をクラスタに変換する {#converting-a-single-node-keeper-into-a-cluster} -実験用の単一ノード keeper をクラスタに拡張したい場合があります。3 ノードのクラスタの場合の手順を次に示します。 +## シングルノード keeper をクラスタに変換する {#converting-a-single-node-keeper-into-a-cluster} + +実験用の keeper ノードをクラスタ構成に拡張する必要が生じる場合があります。ここでは、3 ノード構成のクラスタに段階的に変換する手順を示します。 + +- **重要**: 新しいノードは、現在のクォーラム未満の台数ずつ追加する必要があります。そうしないと、新しいノード同士でリーダー選出が行われてしまいます。この例では 1 台ずつ追加します。 +- 既存の keeper ノードでは、`keeper_server.enable_reconfiguration` 構成パラメータを有効にしておく必要があります。 +- 新しい keeper クラスタ用の完全な設定を使用して、2 台目のノードを起動します。 +- 起動後、[`reconfig`](#reconfiguration) を使用してノード 1 に追加します。 +- 次に、3 台目のノードを起動し、[`reconfig`](#reconfiguration) を使用して追加します。 +- `clickhouse-server` の構成に新しい keeper ノードを追加し、変更を反映するために再起動します。 +- ノード 1 の Raft 構成を更新し、必要に応じて再起動します。 + +手順に慣れるために、[sandbox リポジトリ](https://github.com/ClickHouse/keeper-extend-cluster)も利用できます。 -- **重要**: 新しいノードは、現在のクォーラムより少ない台数のグループで追加する必要があります。そうしないと、新ノード同士でリーダーが選出されてしまいます。この例では 1 台ずつ追加します。 -- 既存の keeper ノードでは、設定パラメータ `keeper_server.enable_reconfiguration` を有効にしておく必要があります。 -- keeper クラスタの新しい完全な設定を用いて 2 台目のノードを起動します。 -- 起動後、[`reconfig`](#reconfiguration) を使ってノード 1 にこのノードを追加します。 -- 続いて 3 台目のノードを起動し、[`reconfig`](#reconfiguration) を使って追加します。 -- `clickhouse-server` の設定を更新し、新しい keeper ノードを追加してから、変更を反映するために再起動します。 -- ノード 1 の Raft の設定を更新し、必要に応じて再起動します。 -この手順に慣れるための [sandbox リポジトリ](https://github.com/ClickHouse/keeper-extend-cluster) を用意しています。 -## 未サポートの機能 {#unsupported-features} +## 非対応の機能 {#unsupported-features} -ClickHouse Keeper は ZooKeeper との完全な互換性を目指していますが、現時点では一部の機能が未実装となっています(開発は進行中です): +ClickHouse Keeper は ZooKeeper との完全な互換性を目指していますが、現時点では一部の機能が未実装です(現在開発中): -- [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) は `Stat` オブジェクトを返すことをサポートしていません -- [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) は [TTL](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/CreateMode.html#PERSISTENT_WITH_TTL) をサポートしていません +- [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) は `Stat` オブジェクトの返却をサポートしていません +- [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) は [有効期限 (TTL)](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/CreateMode.html#PERSISTENT_WITH_TTL) をサポートしていません - [`addWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#addWatch(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.AddWatchMode)) は [`PERSISTENT`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/AddWatchMode.html#PERSISTENT) ウォッチでは動作しません - [`removeWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeWatches(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.Watcher.WatcherType,boolean)) および [`removeAllWatches`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeAllWatches(java.lang.String,org.apache.zookeeper.Watcher.WatcherType,boolean)) はサポートされていません - `setWatches` はサポートされていません -- [`CONTAINER`](https://zookeeper.apache.org/doc/r3.5.1-alpha/api/org/apache/zookeeper/CreateMode.html) 型の znode の作成はサポートされていません +- [`CONTAINER`](https://zookeeper.apache.org/doc/r3.5.1-alpha/api/org/apache/zookeeper/CreateMode.html) 型の znode を作成することはサポートされていません - [`SASL authentication`](https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zookeeper+and+SASL) はサポートされていません diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md b/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md index bb0e43a7468..a6f0ced8115 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md @@ -8,67 +8,71 @@ description: 'ClickHouse Cloud におけるアクセス制御とアカウント doc_type: 'guide' --- + + # ClickHouse でのユーザーとロールの作成 {#creating-users-and-roles-in-clickhouse} -ClickHouse は、[RBAC](https://en.wikipedia.org/wiki/Role-based_access_control) に基づくアクセス制御をサポートしています。 +ClickHouse は、[RBAC](https://en.wikipedia.org/wiki/Role-based_access_control) アプローチに基づいたアクセス制御管理をサポートしています。 -ClickHouse のアクセスエンティティ: -- [User account](#user-account-management) -- [Role](#role-management) +ClickHouse のアクセスエンティティ: +- [ユーザーアカウント](#user-account-management) +- [ロール](#role-management) - [Row Policy](#row-policy-management) - [Settings Profile](#settings-profiles-management) - [Quota](#quotas-management) -アクセスエンティティは次の方法で設定できます: +次の方法でアクセスエンティティを設定できます。 -- SQL 駆動のワークフロー。 +- SQL 駆動のワークフロー - この機能を利用するには、事前に[有効化](#enabling-access-control)する必要があります。 + この機能を使用するには、[有効化](#enabling-access-control) する必要があります。 -- サーバーの[設定ファイル](/operations/configuration-files.md) `users.xml` および `config.xml`。 +- サーバーの[設定ファイル](/operations/configuration-files.md) `users.xml` および `config.xml` -SQL 駆動のワークフローを使用することを推奨します。どちらの設定方法も同時に動作するため、アカウントやアクセス権限の管理にサーバー設定ファイルを使用している場合でも、SQL 駆動のワークフローへスムーズに移行できます。 +SQL 駆動のワークフローの使用を推奨します。どちらの設定方法も同時に動作するため、アカウントやアクセス権の管理にサーバー設定ファイルを使用している場合でも、SQL 駆動のワークフローにスムーズに切り替えることができます。 :::note 同じアクセスエンティティを 2 つの設定方法で同時に管理することはできません。 ::: :::note -ClickHouse Cloud コンソールユーザーの管理方法を探している場合は、この[ページ](/cloud/security/manage-cloud-users)を参照してください。 +ClickHouse Cloud コンソールユーザーを管理したい場合は、この[ページ](/cloud/security/manage-cloud-users)を参照してください。 ::: -すべてのユーザー、ロール、プロファイルなどと、それらに対するすべての権限付与を確認するには、[`SHOW ACCESS`](/sql-reference/statements/show#show-access) ステートメントを使用します。 +すべてのユーザー、ロール、プロファイルなどと、それらに対するすべての権限付与を確認するには、[`SHOW ACCESS`](/sql-reference/statements/show#show-access) 文を使用します。 + + ## 概要 {#access-control-usage} -デフォルトでは、ClickHouse サーバーは `default` ユーザーアカウントを提供します。このアカウントは SQL ベースのアクセス制御およびアカウント管理には利用できませんが、すべての権限を持っています。`default` ユーザーアカウントは、たとえばクライアントからのログイン時や分散クエリ内など、ユーザー名が定義されていないすべての場合に使用されます。分散クエリ処理においては、サーバーまたはクラスタの設定で [user と password](/engines/table-engines/special/distributed.md) プロパティが指定されていない場合、`default` ユーザーアカウントが使用されます。 +デフォルトでは、ClickHouse サーバーは `default` ユーザーアカウントを提供します。このアカウントは SQL ベースのアクセス制御およびアカウント管理を利用できませんが、すべての権限を持ちます。`default` ユーザーアカウントは、たとえばクライアントからのログイン時や分散クエリでユーザー名が定義されていない場合に使用されます。分散クエリ処理において、サーバーまたはクラスターの設定で [user と password](/engines/table-engines/special/distributed.md) プロパティが指定されていない場合は、`default` ユーザーアカウントが使用されます。 ClickHouse の利用を開始したばかりの場合は、次のシナリオを検討してください。 -1. `default` ユーザーに対して、[SQL ベースのアクセス制御とアカウント管理を有効化](#enabling-access-control) します。 -2. `default` ユーザーアカウントにログインし、必要なすべてのユーザーを作成します。管理者アカウント(`GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION`)の作成を忘れないでください。 -3. `default` ユーザーの[権限を制限](/operations/settings/permissions-for-queries)し、そのユーザーに対する SQL ベースのアクセス制御とアカウント管理を無効化します。 +1. `default` ユーザーに対して、[有効化](#enabling-access-control) により SQL ベースのアクセス制御およびアカウント管理を有効にします。 +2. `default` ユーザーアカウントでログインし、必要なユーザーをすべて作成します。管理者アカウント(`GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION`)を作成することを忘れないでください。 +3. `default` ユーザーの[権限を制限](/operations/settings/permissions-for-queries)し、そのユーザーに対する SQL ベースのアクセス制御およびアカウント管理を無効化します。 -### 現在の仕組みの特性 {#access-control-properties} +### 現行ソリューションの特性 {#access-control-properties} - 存在しないデータベースやテーブルに対しても権限を付与できます。 - テーブルが削除されても、そのテーブルに対応するすべての権限は取り消されません。つまり、後で同じ名前の新しいテーブルを作成した場合でも、すべての権限は有効なままです。削除されたテーブルに対応する権限を取り消すには、`REVOKE ALL PRIVILEGES ON db.table FROM ALL` クエリなどを実行する必要があります。 -- 権限に対する有効期間の設定はありません。 +- 権限に対する有効期限設定はありません。 ### ユーザーアカウント {#user-account-management} -ユーザーアカウントは、ClickHouse で誰かを認可するためのアクセスエンティティです。ユーザーアカウントには次の情報が含まれます。 +ユーザーアカウントは、ClickHouse での認証・認可に使用されるアクセスエンティティです。ユーザーアカウントには次の情報が含まれます。 -- 識別情報 -- ユーザーが実行できるクエリの範囲を定義する[権限](/sql-reference/statements/grant.md#privileges) -- ClickHouse サーバーへの接続を許可されているホスト -- 割り当てられたロールおよびデフォルトロール -- ユーザーログイン時にデフォルトで適用される制約付き設定 -- 割り当てられた設定プロファイル +- 識別情報。 +- ユーザーが実行可能なクエリの範囲を定義する[権限](/sql-reference/statements/grant.md#privileges)。 +- ClickHouse サーバーへの接続を許可されるホスト。 +- 割り当て済みおよびデフォルトのロール。 +- ユーザーのログイン時にデフォルトで適用される制約付きの設定。 +- 割り当てられた設定プロファイル (settings profile)。 -権限は、[GRANT](/sql-reference/statements/grant.md) クエリ、または[ロール](#role-management)を割り当てることによってユーザーアカウントに付与できます。ユーザーから権限を取り消すには、ClickHouse は [REVOKE](/sql-reference/statements/revoke.md) クエリを提供します。ユーザーに対する権限の一覧を取得するには、[SHOW GRANTS](/sql-reference/statements/show#show-grants) ステートメントを使用します。 +権限は、[GRANT](/sql-reference/statements/grant.md) クエリ、または[ロール](#role-management)の割り当てによってユーザーアカウントに付与できます。ユーザーから権限を取り消すために、ClickHouse は [REVOKE](/sql-reference/statements/revoke.md) クエリを提供します。ユーザーの権限を一覧表示するには、[SHOW GRANTS](/sql-reference/statements/show#show-grants) 文を使用します。 -管理クエリ: +管理用クエリ: - [CREATE USER](/sql-reference/statements/create/user.md) - [ALTER USER](/sql-reference/statements/alter/user) @@ -76,26 +80,26 @@ ClickHouse の利用を開始したばかりの場合は、次のシナリオを - [SHOW CREATE USER](/sql-reference/statements/show#show-create-user) - [SHOW USERS](/sql-reference/statements/show#show-users) -### 設定の適用 {#access-control-settings-applying} +### 設定の適用方法 {#access-control-settings-applying} -設定は、ユーザーアカウント、そのユーザーに付与されたロール、および設定プロファイルでそれぞれ異なる値を構成できます。ユーザーログイン時に、ある設定が複数のアクセスエンティティで構成されている場合、その値と制約は次のように適用されます(優先度の高い順)。 +設定は、ユーザーアカウント自身、付与されたロール、および設定プロファイル (settings profile) で別々に構成できます。ユーザーのログイン時に、ある設定が異なるアクセスエンティティで構成されている場合、その値と制約は次のように(優先度の高い順に)適用されます。 -1. ユーザーアカウントの設定。 -2. ユーザーアカウントのデフォルトロールに対する設定。ある設定が複数のロールで構成されている場合、その設定の適用順序は未定義です。 -3. ユーザーまたはそのデフォルトロールに割り当てられた設定プロファイルからの設定。ある設定が複数のプロファイルで構成されている場合、その設定の適用順序は未定義です。 -4. サーバー全体にデフォルトで適用される設定、または [default profile](/operations/server-configuration-parameters/settings#default_profile) からの設定。 +1. ユーザーアカウントの設定。 +2. ユーザーアカウントのデフォルトロールに対する設定。ある設定が複数のロールで構成されている場合、その適用順序は未定義です。 +3. ユーザーまたはそのデフォルトロールに割り当てられた設定プロファイルによる設定。ある設定が複数のプロファイルで構成されている場合、その適用順序は未定義です。 +4. サーバー全体にデフォルトで適用される設定、または [default profile](/operations/server-configuration-parameters/settings#default_profile) からの設定。 ### ロール {#role-management} -ロールは、ユーザーアカウントに付与できるアクセスエンティティのコンテナです。 +ロールは、アクセスエンティティをまとめるコンテナであり、ユーザーアカウントに付与できます。 -ロールには次の内容が含まれます。 +ロールには次の情報が含まれます。 - [権限](/sql-reference/statements/grant#privileges) -- 設定と制約 -- 割り当てられたロールのリスト +- 設定および制約 +- 割り当てられたロールの一覧 -管理クエリ: +管理用クエリ: - [CREATE ROLE](/sql-reference/statements/create/role) - [ALTER ROLE](/sql-reference/statements/alter/role) @@ -105,17 +109,19 @@ ClickHouse の利用を開始したばかりの場合は、次のシナリオを - [SHOW CREATE ROLE](/sql-reference/statements/show#show-create-role) - [SHOW ROLES](/sql-reference/statements/show#show-roles) -権限は、[GRANT](/sql-reference/statements/grant.md) クエリによってロールに付与できます。ロールから権限を取り消すには、ClickHouse は [REVOKE](/sql-reference/statements/revoke.md) クエリを提供します。 +権限は、[GRANT](/sql-reference/statements/grant.md) クエリによってロールに付与できます。ロールから権限を取り消すために、ClickHouse は [REVOKE](/sql-reference/statements/revoke.md) クエリを提供します。 #### 行ポリシー {#row-policy-management} -Row policy は、どの行がユーザーまたはロールから利用可能かを定義するフィルターです。Row policy には、特定の 1 つのテーブルに対するフィルターと、この row policy を適用すべきロールやユーザーの一覧が含まれます。 + + +Row policy は、どの行がユーザーまたはロールに対して利用可能かを定義するフィルターです。Row policy には、特定の 1 つのテーブルに対するフィルターと、この row policy を使用するロールおよび/またはユーザーのリストが含まれます。 :::note -Row policy は、readonly アクセスしか持たないユーザーの場合にのみ意味があります。ユーザーがテーブルを変更したり、テーブル間でパーティションをコピーできる場合、row policy による制限は迂回されてしまいます。 +Row policy は、読み取り専用アクセス権を持つユーザーに対してのみ有効です。ユーザーがテーブルを変更したり、テーブル間でパーティションをコピーできる場合、row policy による制限は回避できてしまいます。 ::: -管理クエリ: +管理用クエリ: - [CREATE ROW POLICY](/sql-reference/statements/create/row-policy) - [ALTER ROW POLICY](/sql-reference/statements/alter/row-policy) @@ -125,9 +131,9 @@ Row policy は、readonly アクセスしか持たないユーザーの場合に ### Settings profile {#settings-profiles-management} -Settings profile は、[settings](/operations/settings/index.md) の集合です。Settings profile には、設定と制約、およびこのプロファイルが適用されるロールやユーザーの一覧が含まれます。 +Settings profile は、[settings](/operations/settings/index.md) のコレクションです。Settings profile には、settings と制約に加えて、このプロファイルが適用されるロールおよび/またはユーザーのリストが含まれます。 -管理クエリ: +管理用クエリ: - [CREATE SETTINGS PROFILE](/sql-reference/statements/create/settings-profile) - [ALTER SETTINGS PROFILE](/sql-reference/statements/alter/settings-profile) @@ -139,9 +145,9 @@ Settings profile は、[settings](/operations/settings/index.md) の集合です Quota はリソース使用量を制限します。[Quotas](/operations/quotas.md) を参照してください。 -Quota には、特定の期間に対する一連の制限と、この quota を使用すべきロールやユーザーの一覧が含まれます。 +Quota には、複数の期間に対する制限セットと、この quota を使用するロールおよび/またはユーザーのリストが含まれます。 -管理クエリ: +管理用クエリ: - [CREATE QUOTA](/sql-reference/statements/create/quota) - [ALTER QUOTA](/sql-reference/statements/alter/quota) @@ -152,25 +158,27 @@ Quota には、特定の期間に対する一連の制限と、この quota を ### SQL ベースのアクセス制御とアカウント管理の有効化 {#enabling-access-control} -- 設定ストレージ用のディレクトリをセットアップします。 +- 設定ストレージ用のディレクトリを準備します。 + + ClickHouse は、[access_control_path](/operations/server-configuration-parameters/settings.md#access_control_path) サーバー設定パラメーターで指定されたフォルダにアクセスエンティティ設定を保存します。 - ClickHouse は、[access_control_path](/operations/server-configuration-parameters/settings.md#access_control_path) サーバー設定パラメータで指定されたフォルダにアクセスエンティティの設定を保存します。 +- 少なくとも 1 つのユーザーアカウントに対して、SQL ベースのアクセス制御とアカウント管理を有効にします。 + + 既定では、SQL ベースのアクセス制御とアカウント管理はすべてのユーザーに対して無効になっています。少なくとも 1 つのユーザーを `users.xml` 設定ファイルで構成し、[`access_management`](/operations/settings/settings-users.md#access_management-user-setting)、`named_collection_control`、`show_named_collections`、`show_named_collections_secrets` の各設定値を 1 に設定する必要があります。 -- 少なくとも 1 つのユーザーアカウントに対して、SQL ベースのアクセス制御とアカウント管理を有効化します。 - 既定では、SQL ベースのアクセス制御とアカウント管理はすべてのユーザーで無効になっています。`users.xml` 設定ファイルで少なくとも 1 つのユーザーを設定し、[`access_management`](/operations/settings/settings-users.md#access_management-user-setting)、`named_collection_control`、`show_named_collections`、`show_named_collections_secrets` 設定の値を 1 に設定する必要があります。 ## SQL ユーザーとロールの定義 {#defining-sql-users-and-roles} :::tip -ClickHouse Cloud を使用している場合は、[Cloud access management](/cloud/security/console-roles) を参照してください。 +ClickHouse Cloud を利用している場合は、[Cloud access management](/cloud/security/console-roles) を参照してください。 ::: -この記事では、SQL ユーザーおよびロールの基本的な定義方法と、それらに付与した権限をデータベース、テーブル、行、列に適用する方法について説明します。 +この記事では、SQL ユーザーおよびロールの基本的な定義方法と、それらの権限をデータベース、テーブル、行、カラムに適用する方法を説明します。 ### SQL ユーザーモードの有効化 {#enabling-sql-user-mode} -1. `users.xml` ファイル内の `` ユーザーの下で SQL ユーザーモードを有効化します: +1. `users.xml` ファイル内の `` ユーザーのセクションで SQL ユーザーモードを有効化します: ```xml 1 1 @@ -179,43 +187,45 @@ ClickHouse Cloud を使用している場合は、[Cloud access management](/clo ``` :::note - `default` ユーザーは新規インストール時に作成される唯一のユーザーであり、デフォルトではノード間通信にも使用されます。 + `default` ユーザーは、新規インストール時に作成される唯一のユーザーであり、デフォルトではノード間通信にも使用されるアカウントです。 - 本番環境では、SQL 管理者ユーザーでノード間通信を構成し、``、クラスタ認証情報、および/またはノード間 HTTP・トランスポートプロトコルの認証情報を設定した後は、この `default` ユーザーを無効化することが推奨されます。`default` アカウントはノード間通信に使用されるためです。 + 本番環境では、SQL 管理ユーザーでノード間通信を構成し、``、クラスタの認証情報、および/またはノード間 HTTP およびトランスポートプロトコルの認証情報を設定した後に、このユーザーを無効化することを推奨します。これは、`default` アカウントがノード間通信に使用されるためです。 ::: -2. 変更を反映するためにノードを再起動します。 +2. ノードを再起動して変更を適用します。 -3. ClickHouse クライアントを起動します: +3. ClickHouse クライアントを起動します: ```sql clickhouse-client --user default --password ``` ### ユーザーの定義 {#defining-users} -1. SQL 管理者アカウントを作成します: +1. SQL 管理者アカウントを作成します: ```sql CREATE USER clickhouse_admin IDENTIFIED BY 'password'; ``` -2. 新しいユーザーに完全な管理権限を付与します: +2. 新しいユーザーに完全な管理権限を付与します: ```sql GRANT ALL ON *.* TO clickhouse_admin WITH GRANT OPTION; ``` -## ALTER 権限 {#alter-permissions} -この記事は、権限の定義方法と、特権ユーザーが `ALTER` ステートメントを使用する際に権限がどのように機能するかについて、よりよく理解できるようにすることを目的としています。 -`ALTER` ステートメントはいくつかのカテゴリーに分かれており、その一部は階層構造を持ちますが、そうでないものは明示的に定義する必要があります。 +## 権限の変更 {#alter-permissions} + +この記事では、権限の定義方法と、特権ユーザーが `ALTER` 文を使用する際に権限がどのように機能するかについての理解を深めることを目的としています。 + +`ALTER` 文はいくつかのカテゴリに分類されており、一部は階層構造になっていますが、そうでないものは明示的に定義する必要があります。 -**DB・テーブル・ユーザー設定の例** +**DB、テーブル、およびユーザー構成の例** -1. 管理者ユーザーとしてサンプルユーザーを作成します +1. 管理者ユーザーでサンプルユーザーを作成します ```sql CREATE USER my_user IDENTIFIED BY 'password'; ``` -2. サンプルデータベースを作成 +2. サンプルデータベースの作成 ```sql CREATE DATABASE my_db; @@ -227,21 +237,21 @@ CREATE DATABASE my_db; CREATE TABLE my_db.my_table (id UInt64, column1 String) ENGINE = MergeTree() ORDER BY id; ``` -4. 権限の付与/取り消しを行うためのサンプル管理ユーザーを作成する +4. 権限を付与・取り消しするためのサンプル管理者ユーザーを作成する ```sql CREATE USER my_alter_admin IDENTIFIED BY 'password'; ``` :::note -権限を付与または取り消すには、管理ユーザーが `WITH GRANT OPTION` 権限を持っている必要があります。 -例えば、次のようになります。 +権限を付与または取り消すには、管理者ユーザーが `WITH GRANT OPTION` 権限を持っている必要があります。 +例: ```sql GRANT ALTER ON my_db.* WITH GRANT OPTION ``` -`GRANT` または `REVOKE` で権限を付与・取り消しするには、そのユーザー自身が事前にその権限を保持している必要があります。 +`GRANT` または `REVOKE` で権限を付与または取り消しするには、そのユーザー自身がまず対象の権限を保有している必要があります。 ::: **権限の付与と取り消し** @@ -249,7 +259,7 @@ GRANT ALTER ON my_db.* WITH GRANT OPTION `ALTER` の階層: ```response -├── ALTER (テーブルおよびビューのみ)/ +├── ALTER (only for table and view)/ │ ├── ALTER TABLE/ │ │ ├── ALTER UPDATE │ │ ├── ALTER DELETE @@ -287,17 +297,17 @@ GRANT ALTER ON my_db.* WITH GRANT OPTION └── ALTER [SETTINGS] PROFILE ``` -1. ユーザーまたはロールへの `ALTER` 権限の付与 +1. `ALTER` 権限をユーザーまたはロールに付与する -`GRANT ALTER ON *.* TO my_user` を実行しても、トップレベルの `ALTER TABLE` と `ALTER VIEW` にのみ影響し、その他の `ALTER` 文には影響しません。その他の `ALTER` 文については、それぞれ個別に権限を付与または取り消す必要があります。 +`GRANT ALTER ON *.* TO my_user` を使用しても、影響を受けるのはトップレベルの `ALTER TABLE` および `ALTER VIEW` のみであり、その他の `ALTER` 文は個別に付与または取り消す必要があります。 -たとえば、基本的な `ALTER` 権限を付与する場合: +例えば、基本的な `ALTER` 権限を付与する場合: ```sql GRANT ALTER ON my_db.my_table TO my_user; ``` -最終的に付与される権限の一覧: +結果として得られる権限セット: ```sql SHOW GRANTS FOR my_user; @@ -306,29 +316,30 @@ SHOW GRANTS FOR my_user; ```response SHOW GRANTS FOR my_user -クエリID: 706befbc-525e-4ec1-a1a2-ba2508cc09e3 +Query id: 706befbc-525e-4ec1-a1a2-ba2508cc09e3 -┌─my_userへの権限──────────────────────────────────────────────┐ +┌─GRANTS FOR my_user───────────────────────────────────────────┐ │ GRANT ALTER TABLE, ALTER VIEW ON my_db.my_table TO my_user │ └──────────────────────────────────────────────────────────────┘ ``` -これは、上記の例において `ALTER TABLE` および `ALTER VIEW` 配下のすべての権限を付与しますが、`ALTER ROW POLICY` のようないくつかの他の `ALTER` 権限は付与しません(権限の階層を参照すると、`ALTER ROW POLICY` は `ALTER TABLE` や `ALTER VIEW` の子ではないことが分かります)。それらは明示的に付与または取り消す必要があります。 +これは、上記の例における `ALTER TABLE` および `ALTER VIEW` 配下のすべての権限を付与しますが、`ALTER ROW POLICY` のような他の特定の `ALTER` 権限は付与しません(権限階層を参照すると、`ALTER ROW POLICY` は `ALTER TABLE` や `ALTER VIEW` の子ではないことが分かります)。それらの権限は明示的に付与または取り消す必要があります。 -`ALTER` 権限の一部だけが必要な場合は、それぞれを個別に付与できます。その権限にサブ権限がある場合は、それらも自動的に付与されます。 +`ALTER` 権限の一部だけが必要な場合は、それぞれを個別に付与できます。その権限にサブ権限が存在する場合は、それらも自動的に付与されます。 -例えば次のようにします。 +例えば、次のとおりです。 ```sql GRANT ALTER COLUMN ON my_db.my_table TO my_user; ``` -権限は次のように付与します: +権限は次のように付与します: ```sql SHOW GRANTS FOR my_user; ``` + ```response SHOW GRANTS FOR my_user @@ -341,7 +352,7 @@ Query id: 47b3d03f-46ac-4385-91ec-41119010e4e2 1 row in set. Elapsed: 0.004 sec. ``` -これにより、以下のサブ権限も与えられます。 +これにより、以下のサブ権限も付与されます。 ```sql ALTER ADD COLUMN @@ -354,9 +365,9 @@ ALTER RENAME COLUMN 2. ユーザーおよびロールからの `ALTER` 権限の取り消し -`REVOKE` 文は、`GRANT` 文と同様に動作します。 +`REVOKE` ステートメントは `GRANT` ステートメントと同様に動作します。 -ユーザーまたはロールにサブ権限が付与されている場合、そのサブ権限を直接取り消すことも、そのサブ権限が継承しているより上位の権限を取り消すこともできます。 +ユーザーまたはロールにサブ権限が付与されている場合は、そのサブ権限を直接取り消すことも、そのサブ権限が継承している上位レベルの権限を取り消すこともできます。 たとえば、ユーザーに `ALTER ADD COLUMN` が付与されている場合 @@ -388,13 +399,13 @@ Query id: 27791226-a18f-46c8-b2b4-a9e64baeb683 └─────────────────────────────────────────────────────┘ ``` -権限は個別に取り消すことができます。 +権限は個別に取り消すこともできます。 ```sql REVOKE ALTER ADD COLUMN ON my_db.my_table FROM my_user; ``` -または、いずれかの上位レベルから取り消すこともできます(COLUMN のサブ権限をすべて取り消す): +または、いずれの上位レベルからでも取り消すことができます(COLUMN のサブ権限をすべて取り消します): ```response REVOKE ALTER COLUMN ON my_db.my_table FROM my_user; @@ -424,28 +435,28 @@ Ok. 0 rows in set. Elapsed: 0.003 sec. ``` -**追加事項** +**補足** -権限を付与するユーザーは、`WITH GRANT OPTION` を持っているだけでなく、その権限自体も保持している必要があります。 +権限を付与するユーザーは、`WITH GRANT OPTION` を持っているだけでなく、付与しようとしている権限自体も持っている必要があります。 -1. 管理者ユーザーに権限を付与し、さらに一連の権限を管理できるようにするには - 以下はその例です。 +1. 管理者ユーザーに権限を付与し、さらにその管理者ユーザーが一連の権限を管理できるようにするには + 以下に例を示します。 ```sql GRANT SELECT, ALTER COLUMN ON my_db.my_table TO my_alter_admin WITH GRANT OPTION; ``` -これでユーザーは `ALTER COLUMN` 権限とそのすべてのサブ権限を付与または取り消すことができます。 +これでユーザーは `ALTER COLUMN` と、そのすべてのサブ権限を付与または取り消しできるようになりました。 **テスト** -1. `SELECT` 権限を追加する +1. `SELECT` 権限を追加します ```sql GRANT SELECT ON my_db.my_table TO my_user; ``` -2. ユーザーに ADD COLUMN 権限を付与する +2. ユーザーにカラム追加の権限を付与する ```sql GRANT ADD COLUMN ON my_db.my_table TO my_user; @@ -457,7 +468,7 @@ GRANT ADD COLUMN ON my_db.my_table TO my_user; clickhouse-client --user my_user --password password --port 9000 --host ``` -4. 列追加をテストする +4. カラム追加をテストする ```sql ALTER TABLE my_db.my_table ADD COLUMN column2 String; @@ -484,6 +495,7 @@ DESCRIBE TABLE my_db.my_table Query id: ab9cb2d0-5b1a-42e1-bc9c-c7ff351cb272 ``` + ┌─name────┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt64 │ │ │ │ │ │ │ column1 │ String │ │ │ │ │ │ @@ -492,7 +504,7 @@ Query id: ab9cb2d0-5b1a-42e1-bc9c-c7ff351cb272 ```` -4. カラムの削除をテストする +4. Test deleting a column ```sql ALTER TABLE my_db.my_table DROP COLUMN column2; ```` @@ -505,23 +517,23 @@ Query id: 50ad5f6b-f64b-4c96-8f5f-ace87cea6c47 0 rows in set. Elapsed: 0.004 sec. -サーバーから例外を受信しました (version 22.5.1): -Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_user: 権限が不足しています。このクエリを実行するには、my_db.my_table に対する ALTER DROP COLUMN(column2) 権限の付与が必要です。(ACCESS_DENIED) +Received exception from server (version 22.5.1): +Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_user: Not enough privileges. To execute this query it's necessary to have grant ALTER DROP COLUMN(column2) ON my_db.my_table. (ACCESS_DENIED) ``` -5. 権限を付与し、ALTER ADMIN ロールをテストする +5. 権限を付与して alter_admin をテストする ```sql GRANT SELECT, ALTER COLUMN ON my_db.my_table TO my_alter_admin WITH GRANT OPTION; ``` -6. alter admin ユーザーとしてログインします +6. alter admin ユーザーとしてログインする ```bash clickhouse-client --user my_alter_admin --password password --port 9000 --host ``` -7. 下位権限を付与する +7. サブ権限を付与する ```sql GRANT ALTER ADD COLUMN ON my_db.my_table TO my_user; @@ -535,7 +547,7 @@ Query id: 1c7622fa-9df1-4c54-9fc3-f984c716aeba Ok. ``` -8. alter 管理ユーザーが保持していない権限を付与しようとした場合、それが admin ユーザーに付与されている権限のサブ権限ではないため付与できないことをテストします。 +8. ALTER 管理ユーザーが持っていない権限を付与しようとしても、その権限が admin ユーザーに付与された権限のサブ権限とはみなされないことをテストします。 ```sql GRANT ALTER UPDATE ON my_db.my_table TO my_user; @@ -544,13 +556,13 @@ GRANT ALTER UPDATE ON my_db.my_table TO my_user; ```response GRANT ALTER UPDATE ON my_db.my_table TO my_user -クエリID: 191690dc-55a6-4625-8fee-abc3d14a5545 +Query id: 191690dc-55a6-4625-8fee-abc3d14a5545 -0行のセット。経過時間: 0.004秒 +0 rows in set. Elapsed: 0.004 sec. -サーバーから例外を受信しました(バージョン22.5.1): -コード: 497. DB::Exception: chnode1.marsnet.local:9440から受信。DB::Exception: my_alter_admin: 権限が不足しています。このクエリを実行するには、ALTER UPDATE ON my_db.my_table WITH GRANT OPTIONの付与が必要です。(ACCESS_DENIED) +Received exception from server (version 22.5.1): +Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_alter_admin: Not enough privileges. To execute this query it's necessary to have grant ALTER UPDATE ON my_db.my_table WITH GRANT OPTION. (ACCESS_DENIED) ``` **概要** -`ALTER` の権限は、テーブルおよびビューを対象とする `ALTER` については階層構造になっていますが、その他の `ALTER` ステートメントについてはそうではありません。権限は細かな粒度で設定することも、複数の権限をまとめて設定することもでき、取り消しも同様に行えます。権限を付与または取り消すユーザーは、対象ユーザー(自分自身を含む)の権限を設定するために `WITH GRANT OPTION` を保持している必要があり、かつその権限自体も既に所有していなければなりません。`WITH GRANT OPTION` を持たないユーザーは、自分自身の権限を取り消すことはできません。 +`ALTER` 権限は、テーブルおよびビューに対する `ALTER` では階層的ですが、他の `ALTER` 文に対しては階層的ではありません。権限は細かなレベルで、または権限をグループ化して設定でき、同様の方法で取り消すこともできます。権限を付与または取り消すユーザーは、対象ユーザー(自分自身を含む)に対して権限を設定するために `WITH GRANT OPTION` を持っている必要があり、かつその権限自体もすでに持っていなければなりません。実行ユーザーは、自分自身がその GRANT オプション権限を持っていない場合、自分の権限を取り消すことはできません。 diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/interfaces/formats.md b/i18n/jp/docusaurus-plugin-content-docs/current/interfaces/formats.md index 6cd9bbf893d..8d9bcab6226 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/interfaces/formats.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/interfaces/formats.md @@ -9,13 +9,10 @@ doc_type: 'reference' import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; - # 入力および出力データのフォーマット {#formats-for-input-and-output-data} ClickHouse は、一般的なテキスト形式およびバイナリ形式のほとんどをサポートしています。これにより、運用中のほぼあらゆるデータパイプラインに容易に統合し、ClickHouse の利点を活用できます。 - - ## 入力フォーマット {#input-formats} 入力フォーマットは次の用途に使用されます: @@ -34,22 +31,16 @@ ClickHouse にデータを効率的にインジェストするには、適切な 完全版の [ベンチマーク分析](https://www.clickhouse.com/blog/clickhouse-input-format-matchup-which-is-fastest-most-efficient) を参照してください。 テスト結果の全体像は、[FastFormats](https://fastformats.clickhouse.com/) のオンラインダッシュボードで確認できます。 - - ## 出力形式 {#output-formats} 出力としてサポートされている形式は、次の用途に使用されます: - `SELECT` クエリ結果の整形 - ファイルベースのテーブルへの `INSERT` 操作の実行 - - ## フォーマットの概要 {#formats-overview} サポートされているフォーマットは以下のとおりです。 - - | フォーマット | 入力 | 出力 | | ---------------------------------------------------------------------------------------------------------- | -- | -- | | [TabSeparated](./formats/TabSeparated/TabSeparated.md) | ✔ | ✔ | @@ -139,12 +130,8 @@ ClickHouse にデータを効率的にインジェストするには、適切な | [Markdown](./formats/Markdown.md) | ✗ | ✔ | | [フォーム](./formats/Form.md) | ✔ | ✗ | - - ClickHouse の設定を使用して、一部のフォーマット処理パラメータを制御できます。詳細については、[Settings](/operations/settings/settings-formats.md) セクションを参照してください。 - - ## フォーマットスキーマ {#formatschema} フォーマットスキーマを格納したファイル名は、設定 `format_schema` で指定します。 @@ -160,8 +147,6 @@ ClickHouse の設定を使用して、一部のフォーマット処理パラメ [HTTP インターフェイス](/interfaces/http.md)経由でデータを入力または出力する場合、フォーマットスキーマで指定するファイル名は、 サーバー設定の [format_schema_path](/operations/server-configuration-parameters/settings.md/#format_schema_path) で指定されたディレクトリ内に存在している必要があります。 - - ## エラーのスキップ {#skippingerrors} `CSV`、`TabSeparated`、`TSKV`、`JSONEachRow`、`Template`、`CustomSeparated`、`Protobuf` などの一部の形式では、パースエラーが発生した場合に不正な行をスキップし、次の行の先頭からパースを継続できます。詳細は [input_format_allow_errors_num](/operations/settings/settings-formats.md/#input_format_allow_errors_num) および diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/operations/settings/settings.md b/i18n/jp/docusaurus-plugin-content-docs/current/operations/settings/settings.md index 0a39ba7b03d..b96e0236faf 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/operations/settings/settings.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/operations/settings/settings.md @@ -10090,6 +10090,15 @@ S3 へのマルチパートアップロードでアップロードする各パ S3 へのマルチパートアップロードでアップロードするパートの最小サイズ。 +## s3_path_filter_limit {#s3_path_filter_limit} + + + + + +ファイルを走査する際に glob リストの代わりに利用するため、クエリフィルタから抽出できる `_path` 値の最大数です。 +0 を指定すると無効になります。 + ## s3_request_timeout_ms {#s3_request_timeout_ms} @@ -10652,7 +10661,8 @@ FINAL 最適化中にパーツ範囲を交差するものと交差しないも -Kafka、RabbitMQ、FileLog、Redis Streams、NATS エンジンに対して、直接の SELECT クエリの実行を許可します。materialized view がアタッチされている場合は、この設定が有効でも SELECT クエリは許可されません。 +Kafka、RabbitMQ、FileLog、Redis Streams、S3Queue、AzureQueue、NATS エンジンに対して、直接の SELECT クエリの実行を許可します。materialized view がアタッチされている場合は、この設定が有効でも SELECT クエリは許可されません。 +materialized view がアタッチされていない場合、この設定を有効にするとデータを読み取れるようになります。通常は、読み取ったデータはキューから削除される点に注意してください。読み取ったデータを削除しないようにするには、関連するエンジンの設定を適切に構成する必要があります。 ## stream_like_engine_insert_queue {#stream_like_engine_insert_queue} diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md index f65bd120aa1..8a2bb175463 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md @@ -86,7 +86,6 @@ SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, en 3. 入力テーブル: - ```text ┌─id─┬──────start─┬────────end─┐ │ a │ 2020-01-01 │ 2020-01-04 │ diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/data-types/time.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/data-types/time.md index 79a9b3ae483..fb55e539bea 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/data-types/time.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/data-types/time.md @@ -1,5 +1,5 @@ --- -description: '秒精度で時刻範囲を保存する ClickHouse の Time データ型に関するドキュメント' +description: '秒単位の精度で時間の範囲を保存する ClickHouse の Time データ型に関するドキュメント' slug: /sql-reference/data-types/time sidebar_position: 15 sidebar_label: 'Time' @@ -7,49 +7,54 @@ title: 'Time' doc_type: 'reference' --- + + # Time {#time} -データ型 `Time` は、時・分・秒の要素から成る時刻を表します。 -これはカレンダーの日付とは独立しており、日・月・年の要素を必要としない値に適しています。 +データ型 `Time` は、時・分・秒からなる時刻を表します。 +カレンダーの日付情報とは独立しており、日・月・年といった日付コンポーネントを必要としない値に適しています。 構文: ```sql -時間 +Time ``` -テキスト表現可能な範囲: [-999:59:59, 999:59:59]。 +テキストでの表現範囲: [-999:59:59, 999:59:59]。 + +解像度: 1秒。 -精度: 1秒。 ## 実装の詳細 {#implementation-details} **表現とパフォーマンス** -データ型 `Time` は内部的に、秒数を符号付き 32 ビット整数として保持します。 -`Time` 型と `DateTime` 型の値は同じバイトサイズであり、そのためパフォーマンスも同程度です。 +`Time` データ型は内部的に、秒数をエンコードした符号付き 32 ビット整数として格納します。 +`Time` 型と `DateTime` 型は同じバイトサイズであり、そのためパフォーマンスも同程度です。 **正規化** -文字列を `Time` に解析する際、時刻成分は正規化されますが、妥当性検証は行われません。 +文字列を `Time` にパースする際、時刻コンポーネントは正規化されますが、妥当性検証は行われません。 たとえば、`25:70:70` は `26:11:10` として解釈されます。 **負の値** -先頭のマイナス記号はサポートされ、そのまま保持されます。 +先頭のマイナス記号はサポートされ、保持されます。 負の値は通常、`Time` 値に対する算術演算から生じます。 -`Time` 型では、負の入力はテキスト入力(例: `'-01:02:03'`)および数値入力(例: `-3723`)の両方で保持されます。 +`Time` 型では、テキスト入力(例: `'-01:02:03'`)および数値入力(例: `-3723`)の両方について、負の入力がそのまま保持されます。 -**サチュレーション(飽和)** -時刻の成分は [-999:59:59, 999:59:59] の範囲に制限されます。 -時間が 999 を超える(または -999 未満の)値は、テキストでの表現および往復変換の際には `999:59:59`(または `-999:59:59`)として扱われます。 +**飽和** +一日の時刻コンポーネントは [-999:59:59, 999:59:59] の範囲に制限されます。 +時間が 999 を超える(または -999 未満の)値は、テキストによる表現および往復変換の際に `999:59:59`(または `-999:59:59`)として表現されます。 **タイムゾーン** -`Time` はタイムゾーンをサポートしません。すなわち、`Time` 値は地域的な文脈なしに解釈されます。 -型パラメータとして、または値の作成時に `Time` に対してタイムゾーンを指定するとエラーが発生します。 -同様に、`Time` 列に対してタイムゾーンを適用したり変更しようとする操作はサポートされず、エラーとなります。 +`Time` はタイムゾーンをサポートしません。つまり、`Time` 値は地域的なコンテキストなしに解釈されます。 +`Time` に対して、型パラメータとして、または値の生成時にタイムゾーンを指定するとエラーになります。 +同様に、`Time` カラムにタイムゾーンを適用または変更しようとする操作もサポートされず、エラーになります。 `Time` 値が異なるタイムゾーンの下で暗黙的に再解釈されることはありません。 + + ## 例 {#examples} -**1.** `Time` 型の列を持つテーブルを作成し、そのテーブルにデータを挿入する: +**1.** `Time` 型カラムを持つテーブルを作成し、データを挿入する: ```sql CREATE TABLE tab @@ -61,9 +66,9 @@ ENGINE = TinyLog; ``` ```sql --- 時刻を解析 --- - 文字列から --- - 00:00:00 からの経過秒数と解釈される整数から +-- Parse Time +-- - from string, +-- - from integer interpreted as number of seconds since 00:00:00. INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225); SELECT * FROM tab ORDER BY event_id; @@ -76,7 +81,7 @@ SELECT * FROM tab ORDER BY event_id; └──────────┴───────────┘ ``` -**2.** `Time` 値によるフィルタリング +**2.** `Time` 値でのフィルタリング ```sql SELECT * FROM tab WHERE time = toTime('14:30:25') @@ -89,7 +94,7 @@ SELECT * FROM tab WHERE time = toTime('14:30:25') └──────────┴───────────┘ ``` -`Time` 列の値は、`WHERE` 述語で文字列値を使ってフィルタできます。文字列値は自動的に `Time` 型に変換されます。 +`Time` カラムの値は、`WHERE` 述語で文字列値を使ってフィルタリングできます。文字列は自動的に `Time` に変換されます。 ```sql SELECT * FROM tab WHERE time = '14:30:25' @@ -109,11 +114,12 @@ SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type ``` ```text - ┌────列────┬─型──┐ + ┌────column─┬─type─┐ 1. │ 14:30:25 │ Time │ └───────────┴──────┘ ``` + ## 関連項目 {#see-also} - [型変換関数](../functions/type-conversion-functions.md) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md index 72d77c728f8..3c8c14b10df 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md @@ -10,6 +10,8 @@ doc_type: 'reference' import SelfManaged from '@site/i18n/jp/docusaurus-plugin-content-docs/current/_snippets/_self_managed_only_no_roadmap.md'; import CloudDetails from '@site/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/_snippet_dictionary_in_cloud.md'; import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; +import ExperimentalBadge from '@theme/badges/ExperimentalBadge'; + # Dictionaries {#dictionaries} @@ -1053,7 +1055,7 @@ Dictionary を XML ファイルで構成する場合、設定は次のように ... - + ... @@ -1067,7 +1069,7 @@ Dictionary を XML ファイルで構成する場合、設定は次のように ```sql CREATE DICTIONARY dict_name (...) ... -SOURCE(SOURCE_TYPE(param1 val1 ... paramN valN)) -- ソースの設定 +SOURCE(SOURCE_TYPE(param1 val1 ... paramN valN)) -- Source configuration ... ``` @@ -1109,6 +1111,8 @@ SETTINGS(format_csv_allow_single_quotes = 0) * [Redis](#redis) * [Cassandra](#cassandra) * [PostgreSQL](#postgresql) + * [YTsaurus](#ytsaurus) + ### ローカル ファイル {#local-file} @@ -1893,6 +1897,47 @@ SOURCE(POSTGRESQL( `table` フィールドまたは `where` フィールドは、`query` フィールドと同時に使用することはできません。また、`table` フィールドまたは `query` フィールドのいずれか一方は必ず宣言する必要があります。 ::: +### YTsaurus {#ytsaurus} + + + + + +:::info +これは実験的な機能であり、今後のリリースで後方互換性のない変更が行われる可能性があります。 +YTsaurus を Dictionary ソースとして利用するには、設定 [`allow_experimental_ytsaurus_dictionary_source`](/operations/settings/settings#allow_experimental_ytsaurus_dictionary_source) を有効にします。 +::: + +設定例: + +```xml + + + http://localhost:8000 + //tmp/test + password + 1 + + +``` + +または + +```sql +SOURCE(YTSAURUS( + http_proxy_urls 'http://localhost:8000' + cypress_path '//tmp/test' + oauth_token 'password' +)) +``` + +設定フィールド: + +* `http_proxy_urls` – YTsaurus HTTP プロキシへの URL。 +* `cypress_path` – テーブルのソースとなる Cypress パス。 +* `oauth_token` – OAuth トークン。 + + ### Null {#null} ダミー(空)のディクショナリを作成するために使用できる特別なソースです。このようなディクショナリは、テスト用途や、データノードとクエリノードを分離し、ノード上に Distributed テーブルを持つ構成で役立ちます。 diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md index a61286bf06d..c85f9a33a8e 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md @@ -1,19 +1,22 @@ --- -description: '配列関数のドキュメント' +description: '配列関連関数のドキュメント' sidebar_label: '配列' slug: /sql-reference/functions/array-functions -title: '配列関数' +title: '配列関連関数' doc_type: 'reference' --- + + # 配列関連関数 {#array-functions} {/* 以下のタグ内の内容は、ドキュメントフレームワークのビルド時に system.functions から自動生成されるドキュメントに置き換えられます。タグ自体は変更したり削除したりしないでください。 - 詳細は https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md を参照してください。 + 参照: https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } + {/*AUTOGENERATED_START*/ } ## array {#array} @@ -22,11 +25,11 @@ doc_type: 'reference' 関数の引数から配列を作成します。 -引数は定数であり、共通の上位型を持つ型でなければなりません。 -どの型の配列を作成するかが不明確になるため、少なくとも 1 つの引数を渡す必要があります。 -つまり、この関数を使用して空の配列を作成することはできません。空の配列を作成するには、`emptyArray*` 関数を使用してください。 +引数は定数であり、共通の上位型を持つ型である必要があります。 +少なくとも 1 つの引数を指定する必要があります。そうでないと、どの型の配列を作成するかが不明確になるためです。 +つまり、この関数を使って空の配列を作成することはできません。空の配列を作成するには、`emptyArray*` 関数を使用してください。 -同等の機能には `[ ]` 演算子を使用します。 +同等の機能には `[ ]` 演算子も使用できます。 **構文** @@ -36,13 +39,13 @@ array(x1 [, x2, ..., xN]) **引数** -* `x1` — 任意の型 T の定数値。この引数だけが指定された場合、配列の型は T になります。 - `[, x2, ..., xN]` — `x1` と共通のスーパータイプを持つ追加の N 個の定数値 +* `x1` — 任意の型 T の定数値。この引数だけが指定された場合、配列の型は T になります。- `[, x2, ..., xN]` — `x1` と共通のスーパータイプを持つ追加の N 個の定数値 -**戻り値** +**返り値** -渡された引数から求められる最小の共通型 T を要素型とする配列を返します。[`Array(T)`](/sql-reference/data-types/array) +渡された引数から求められた最小の共通型 'T' の配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **有効な使用例** @@ -56,26 +59,27 @@ SELECT array(toInt32(1), toUInt16(2), toInt8(3)) AS a, toTypeName(a) └─────────┴───────────────┘ ``` -**不正な使い方** +**無効な使用方法** ```sql title=Query SELECT array(toInt32(5), toDateTime('1998-06-16'), toInt8(5)) AS a, toTypeName(a) ``` ```response title=Response -サーバーから例外を受信しました (バージョン 25.4.3): +Received exception from server (version 25.4.3): Code: 386. DB::Exception: Received from localhost:9000. DB::Exception: -型 Int32、DateTime、Int8 の共通スーパータイプが存在しません ... +There is no supertype for types Int32, DateTime, Int8 ... ``` + ## arrayAUCPR {#arrayAUCPR} 導入バージョン: v20.4 -適合率‐再現率(PR)曲線における曲線下面積を計算します。 -適合率‐再現率曲線は、すべてのしきい値に対して、y軸に適合率、x軸に再現率をプロットすることで作成されます。 -得られる値は 0 から 1 の範囲であり、値が大きいほどモデルの性能が高いことを示します。 -PR AUC は不均衡データセットに対して特に有用であり、そのようなケースでは ROC AUC と比較して性能をより明確に比較できます。 +適合率-再現率(PR)曲線の下側の面積を計算します。 +適合率-再現率(PR)曲線は、すべてのしきい値に対して、y軸に適合率、x軸に再現率をプロットすることで作成されます。 +結果の値は 0 から 1 の範囲を取り、値が大きいほどモデル性能が高いことを示します。 +PR AUC は不均衡データセットに対して特に有用で、そのようなケースでは ROC AUC と比べて、性能をより明確に比較できます。 詳細については [こちら](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[こちら](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)、および [こちら](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve) を参照してください。 **構文** @@ -91,25 +95,25 @@ arrayAUCPR(scores, labels[, partial_offsets]) * `cores` — 予測モデルが出力するスコア。[`Array((U)Int*)`](/sql-reference/data-types/array) または [`Array(Float*)`](/sql-reference/data-types/array) * `labels` — サンプルのラベル。通常、正例には 1、負例には 0 を使用します。[`Array((U)Int*)`](/sql-reference/data-types/array) または [`Array(Enum)`](/sql-reference/data-types/array) * `partial_offsets` — -* オプション。PR 曲線全体の AUC ではなく、PR 曲線下の部分領域(PR 空間の縦方向のバンドに相当)を計算するための、非負整数 3 要素からなる [`Array(T)`](/sql-reference/data-types/array)。このオプションは、PR AUC の分散計算に有用です。配列には次の要素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`] を含める必要があります。 - * `higher_partitions_tp`: より高いスコアのパーティション内にある正例ラベルの数。 - * `higher_partitions_fp`: より高いスコアのパーティション内にある負例ラベルの数。 +* オプション。PR 曲線全体の AUC ではなく、部分領域(PR 空間の縦方向のバンドに相当)の面積を計算するための、非負整数 3 要素からなる [`Array(T)`](/sql-reference/data-types/array)。このオプションは PR AUC の分散計算に有用です。配列には次の要素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`] を含める必要があります。 + * `higher_partitions_tp`: スコアが高いパーティションに含まれる正例ラベルの数。 + * `higher_partitions_fp`: スコアが高いパーティションに含まれる負例ラベルの数。 * `total_positives`: データセット全体に含まれる正例サンプルの総数。 :::note `arr_partial_offsets` を使用する場合、`arr_scores` と `arr_labels` は、スコアのある区間に対応する、データセット全体の 1 つのパーティションだけを表す必要があります。 -データセットは連続したパーティションに分割され、それぞれのパーティションには、スコアが特定の範囲に属するデータのサブセットが含まれている必要があります。 -例えば次のようになります: +データセットは隣接するパーティションに分割し、それぞれのパーティションには、スコアが特定の範囲に属するデータの部分集合を含めます。 +たとえば: * あるパーティションには、[0, 0.5) の範囲にあるすべてのスコアを含めることができます。 -* 別のパーティションには、[0.5, 1.0] の範囲にあるスコアを含めることができます。 +* 別のパーティションには、範囲 [0.5, 1.0] のスコアを含めることができます。 ::: **返り値** -適合率-再現率 (PR) 曲線下の面積を返します。[`Float64`](/sql-reference/data-types/float) +適合率-再現率 (PR) 曲線下の面積を返す。[`Float64`](/sql-reference/data-types/float) -**例** +**使用例** **使用例** @@ -123,11 +127,12 @@ SELECT arrayAUCPR([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); └─────────────────────────────────────────────────┘ ``` + ## arrayAll {#arrayAll} -導入バージョン: v1.1 +導入: v1.1 -ラムダ式 `func(x [, y1, y2, ... yN])` がすべての要素に対して true を返す場合は `1` を返します。そうでない場合は `0` を返します。 +ラムダ関数 `func(x [, y1, y2, ... yN])` がすべての要素に対して true を返す場合は `1` を返す。それ以外の場合は `0` を返す。 **構文** @@ -137,15 +142,15 @@ arrayAll(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — ソース配列(`x`)と条件配列(`y1, ..., yN`)の各要素を処理する Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `cond1_arr, ...` — 省略可能。ラムダ関数に追加の引数を渡すための N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `cond1_arr, ...` — 省略可。Lambda 関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -ラムダ関数がすべての要素に対して `true` を返す場合は `1`、それ以外の場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) +Lambda 関数がすべての要素に対して `true` を返す場合は `1` を返し、それ以外の場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) -**例** +**使用例** **すべての要素が条件を満たす場合** @@ -157,7 +162,7 @@ SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 2, 3]) 1 ``` -**すべての要素が一致しているとは限りません** +**すべての要素が条件を満たすとは限らない** ```sql title=Query SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 1, 1]) @@ -167,13 +172,14 @@ SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 1, 1]) 0 ``` + ## arrayAvg {#arrayAvg} 導入バージョン: v21.1 -入力配列の要素の平均値を返します。 +元の配列内の要素の平均値を返す。 -ラムダ関数 `func` が指定された場合は、そのラムダの結果の平均値を返します。 +ラムダ関数 `func` が指定されている場合は、そのラムダの結果要素の平均値を返す。 **構文** @@ -183,13 +189,13 @@ arrayAvg([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — 省略可能。ソース配列 (`x`) および条件配列 (`y`) の要素に対して処理を行うラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 省略可能。ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を与える N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -ソース配列内の要素の平均値、またはラムダ関数が指定されている場合は、その結果要素の平均値を返します。[`Float64`](/sql-reference/data-types/float) +ソース配列内の要素の平均、またはラムダ関数が指定されている場合は、その結果要素の平均を返す。[`Float64`](/sql-reference/data-types/float) **使用例** @@ -213,11 +219,12 @@ SELECT arrayAvg(x, y -> x*y, [2, 3], [2, 3]) AS res; 6.5 ``` + ## arrayCompact {#arrayCompact} 導入: v20.1 -配列から連続する重複要素(`null` 値を含む)を削除します。結果の配列における値の順序は、元の配列内の順序によって決まります。 +配列から、`null` 値を含む連続した重複要素を削除します。結果の配列内の値の順序は、元の配列内の順序に従います。 **構文** @@ -227,13 +234,13 @@ arrayCompact(arr) **引数** -* `arr` — 重複要素を削除する対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 重複を削除する対象の配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -重複値を含まない配列を返します。[`Array(T)`](/sql-reference/data-types/array) +重複した値を含まない配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -245,11 +252,12 @@ SELECT arrayCompact([1, 1, nan, nan, 2, 3, 3, 3]); [1,nan,2,3] ``` + ## arrayConcat {#arrayConcat} -導入バージョン: v1.1 +導入: v1.1 -引数として渡された配列を連結します。 +引数として渡された配列を結合します。 **構文** @@ -263,9 +271,9 @@ arrayConcat(arr1 [, arr2, ... , arrN]) **戻り値** -引数として指定された配列を結合した 1 つの配列を返します。[`Array(T)`](/sql-reference/data-types/array) +引数として指定された配列を結合した 1 つの配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -277,12 +285,13 @@ SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res [1, 2, 3, 4, 5, 6] ``` + ## arrayCount {#arrayCount} 導入バージョン: v1.1 -`func(arr1[i], ..., arrN[i])` が true を返す要素の数を返します。 -`func` が指定されていない場合は、配列内の非ゼロ要素の数を返します。 +`func(arr1[i], ..., arrN[i])` が true となる要素の数を返す。 +`func` が指定されていない場合は、配列内の非ゼロ要素の数を返す。 `arrayCount` は[高階関数](/sql-reference/functions/overview#higher-order-functions)です。 @@ -294,14 +303,14 @@ arrayCount([func, ] arr1, ...) **引数** -* `func` — 省略可能。配列の各要素に適用する関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — オプション。配列(複数配列の場合は各配列の対応する要素)の各要素に適用する関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1, ..., arrN` — N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -`func` が true を返す要素の数を返します。`func` が指定されていない場合は、配列内の非ゼロ要素の数を返します。[`UInt32`](/sql-reference/data-types/int-uint) +`func` が true を返す要素の数を返す。`func` が指定されていない場合は、配列内の 0 以外の要素の数を返す。[`UInt32`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -313,11 +322,12 @@ SELECT arrayCount(x -> (x % 2), groupArray(number)) FROM numbers(10) 5 ``` + ## arrayCumSum {#arrayCumSum} 導入バージョン: v1.1 -元の配列の要素に対する部分和(累積和)からなる配列を返します。ラムダ関数が指定されている場合、各位置の要素にラムダを適用した結果に基づいて和を計算します。 +元の配列内の要素について、累積和の配列を返す。ラムダ関数が指定されている場合は、配列の各要素にラムダを適用した結果について累積和が計算される。 **構文** @@ -327,17 +337,17 @@ arrayCumSum([func,] arr1[, arr2, ... , arrN]) **引数** -* `func` — 省略可。各位置の配列要素に適用するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — 省略可能。各位置の配列要素に適用する Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1` — 数値を含む元の配列。[`Array(T)`](/sql-reference/data-types/array) -* `[arr2, ..., arrN]` — 省略可。同じサイズの追加の配列。指定されている場合、ラムダ関数への引数として渡されます。[`Array(T)`](/sql-reference/data-types/array) +* `[arr2, ..., arrN]` — 省略可能。同じサイズの追加配列。指定されている場合、Lambda 関数への引数として渡す。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -元の配列の要素について、各位置までの部分和(累積和)の配列を返します。結果の型は入力配列の数値型と一致します。[`Array(T)`](/sql-reference/data-types/array) +元の配列内の要素の部分和からなる配列を返す。結果の型は入力配列の数値型と一致する。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** -**基本的な使い方** +**基本的な使用方法** ```sql title=Query SELECT arrayCumSum([1, 1, 1, 1]) AS res @@ -347,7 +357,7 @@ SELECT arrayCumSum([1, 1, 1, 1]) AS res [1, 2, 3, 4] ``` -**Lambda を使用する場合** +**ラムダを使用する場合** ```sql title=Query SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res @@ -357,11 +367,12 @@ SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res [2, 6, 12] ``` + ## arrayCumSumNonNegative {#arrayCumSumNonNegative} 導入バージョン: v18.12 -元の配列の要素について、部分和(累積和)の配列を返し、負の累積和はゼロに置き換えます。ラムダ関数が指定されている場合は、各位置の配列要素にラムダを適用した結果に対する累積和を計算します。 +元の配列要素の部分和(累積和)の配列を返し、負の累積和はゼロに置き換えます。ラムダ関数が指定されている場合は、その位置の配列要素にラムダを適用した結果に対して和が計算されます。 **構文** @@ -371,13 +382,13 @@ arrayCumSumNonNegative([func,] arr1[, arr2, ... , arrN]) **引数** -* `func` — 省略可能。各位置の配列要素に適用するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr1` — 数値を含む元の配列。[`Array(T)`](/sql-reference/data-types/array) -* `[arr2, ..., arrN]` — 省略可能。同じサイズの追加配列。指定された場合、ラムダ関数への引数として渡されます。[`Array(T)`](/sql-reference/data-types/array) +* `func` — 省略可能。各位置の配列要素に適用する Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr1` — 数値型の値を要素とする元の配列。[`Array(T)`](/sql-reference/data-types/array) +* `[arr2, ..., arrN]` — 省略可能。指定された場合、Lambda 関数への引数として渡される、同じサイズの追加配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -元の配列内の要素の部分和からなる配列を返しますが、負の累積和はゼロに置き換えられます。結果の型は入力配列の数値型と一致します。[`Array(T)`](/sql-reference/data-types/array) +元の配列内の要素の部分和からなる配列を返し、途中の累積和が負になる場合はゼロに置き換えます。結果の型は入力配列の数値型と一致します。[`Array(T)`](/sql-reference/data-types/array) **使用例** @@ -401,13 +412,14 @@ SELECT arrayCumSumNonNegative(x -> x * 2, [1, -2, 3]) AS res [2, 0, 6] ``` + ## arrayDifference {#arrayDifference} 導入バージョン: v1.1 -隣接する配列要素同士の差からなる配列を計算します。 -結果配列の最初の要素は 0 となり、2 番目は `arr[1] - arr[0]`、3 番目は `arr[2] - arr[1]` というように続きます。 -結果配列中の要素の型は、減算における型推論ルールによって決定されます(例: `UInt8` - `UInt8` = `Int16`)。 +配列内の隣接する要素間の差分からなる配列を計算します。 +結果配列の最初の要素は 0、2 番目は `arr[1] - arr[0]`、3 番目は `arr[2] - arr[1]` というように続きます。 +結果配列の要素の型は、減算における型推論ルールによって決定されます(例: `UInt8` - `UInt8` = `Int16`)。 **構文** @@ -417,13 +429,13 @@ arrayDifference(arr) **引数** -* `arr` — 隣接する要素間の差分を計算する対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 隣接する要素間の差を計算する対象となる配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -隣接する配列要素間の差分を要素とする配列を返します。[`UInt*`](/sql-reference/data-types/int-uint) +隣接する配列要素間の差の配列を返す。[`UInt*`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -435,7 +447,7 @@ SELECT arrayDifference([1, 2, 3, 4]); [0,1,1,1] ``` -**結果型が Int64 の場合のオーバーフロー例** +**結果型が Int64 の場合に発生するオーバーフローの例** ```sql title=Query SELECT arrayDifference([0, 10000000000000000000]); @@ -447,11 +459,12 @@ SELECT arrayDifference([0, 10000000000000000000]); └────────────────────────────────────────────┘ ``` + ## arrayDistinct {#arrayDistinct} 導入: v1.1 -配列から重複を取り除き、一意な要素だけを含む配列を返します。 +配列の要素から重複を除いた要素だけを含む配列を返す。 **構文** @@ -461,13 +474,13 @@ arrayDistinct(arr) **引数** -* `arr` — 重複のない要素を抽出する対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 重複を排除する要素を抽出する対象の配列。[`Array(T)`](/sql-reference/data-types/array) **返り値** -重複のない要素を含む配列を返します。[`Array(T)`](/sql-reference/data-types/array) +重複のない要素を含む配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -479,14 +492,15 @@ SELECT arrayDistinct([1, 2, 2, 3, 1]); [1,2,3] ``` + ## arrayDotProduct {#arrayDotProduct} -v23.5 で導入 +導入: v23.5 -2 つの配列のドット積を返します。 +2 つの配列のドット積を返す。 :::note -2 つのベクトルの長さは同じである必要があります。Array および Tuple には、異なる型の要素が混在していてもかまいません。 +2 つのベクトルのサイズは同じである必要があります。Arrays と Tuples には、異なる型の要素を混在させることもできます。 ::: **構文** @@ -497,22 +511,22 @@ arrayDotProduct(v1, v2) **引数** -* `v1` — 1番目のベクトル。[`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) または [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) -* `v2` — 2番目のベクトル。[`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) または [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) +* `v1` — 1 つ目のベクトル。[`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) または [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) +* `v2` — 2 つ目のベクトル。[`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) または [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) **戻り値** -2つのベクトルのドット積。 +2 つのベクトルのドット積。 :::note -戻り値の型は引数の型によって決まります。Array または Tuple に複数の異なる要素型が含まれている場合、結果の型はそれらのスーパータイプになります。 +返り値の型は引数の型によって決まります。Array または Tuple の要素型が混在している場合、結果の型はそれらのスーパータイプになります。 ::: [`(U)Int*`](/sql-reference/data-types/int-uint) または [`Float*`](/sql-reference/data-types/float) または [`Decimal`](/sql-reference/data-types/decimal) -**例** +**使用例** -**Array の例** +**Array の使用例** ```sql title=Query SELECT arrayDotProduct([1, 2, 3], [4, 5, 6]) AS res, toTypeName(res); @@ -522,7 +536,7 @@ SELECT arrayDotProduct([1, 2, 3], [4, 5, 6]) AS res, toTypeName(res); 32 UInt16 ``` -**タプルの例** +**タプルの使用例** ```sql title=Query SELECT dotProduct((1::UInt16, 2::UInt8, 3::Float32),(4::Int16, 5::Float32, 6::UInt8)) AS res, toTypeName(res); @@ -532,21 +546,22 @@ SELECT dotProduct((1::UInt16, 2::UInt8, 3::Float32),(4::Int16, 5::Float32, 6::UI 32 Float64 ``` + ## arrayElement {#arrayElement} 導入バージョン: v1.1 -指定された配列の要素をインデックス `n` で取得します。ここで `n` は任意の整数型です。 -インデックスが配列の範囲外の場合、デフォルト値(数値なら 0、文字列なら空文字列など)を返します。 -ただし、引数が非定数配列で、インデックスに定数の 0 を指定した場合は例外で、この場合は `Array indices are 1-based` というエラーになります。 +与えられた配列のうち、インデックス `n`(`n` は整数型のいずれか)で指定される要素を取得します。 +インデックスが配列の範囲外の場合、デフォルト値(数値なら 0、文字列なら空文字列など)を返しますが、 +定数ではない配列と、定数インデックス 0 の組み合わせの引数は例外です。この場合は `Array indices are 1-based` というエラーになります。 :::note -ClickHouse の配列のインデックスは 1 始まりです。 +ClickHouse の配列のインデックスは 1 から始まります。 ::: -負のインデックスもサポートされています。この場合、末尾から数えて番号付けされた対応する要素が選択されます。例えば、`arr[-1]` は配列の最後の要素です。 +負のインデックスもサポートされています。この場合、末尾から数えた要素が選択されます。たとえば `arr[-1]` は配列の最後の要素です。 -演算子 `[n]` は同じ機能を提供します。 +演算子 `[n]` も同じ機能を持ちます。 **構文** @@ -556,13 +571,14 @@ arrayElement(arr, n) **引数** -* `arr` — 検索する配列。[`Array(T)`](/sql-reference/data-types/array)。 - `n` — 取得する要素の位置。[`(U)Int*`](/sql-reference/data-types/int-uint)。 +* `arr` — 検索対象の配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `n` — 取得する要素の位置。[`(U)Int*`](/sql-reference/data-types/int-uint)。 -**戻り値** +**返り値** -指定した配列引数を結合した 1 つの配列を返します。[`Array(T)`](/sql-reference/data-types/array) +引数として指定された配列を結合した 1 つの配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -584,7 +600,7 @@ SELECT arrayElement(arr, -1) FROM (SELECT [1, 2, 3] AS arr) 3 ``` -**[n] 表記の使用** +**[n] 記法の使い方** ```sql title=Query SELECT arr[2] FROM (SELECT [1, 2, 3] AS arr) @@ -594,7 +610,7 @@ SELECT arr[2] FROM (SELECT [1, 2, 3] AS arr) 2 ``` -**配列範囲外のインデックス** +**配列の範囲外のインデックス** ```sql title=Query SELECT arrayElement(arr, 4) FROM (SELECT [1, 2, 3] AS arr) @@ -604,34 +620,35 @@ SELECT arrayElement(arr, 4) FROM (SELECT [1, 2, 3] AS arr) 0 ``` + ## arrayElementOrNull {#arrayElementOrNull} -導入バージョン: v1.1 +導入: v1.1 -任意の整数型である `n` をインデックスとして、指定された配列の要素を取得します。 -インデックスが配列の範囲外の場合、デフォルト値ではなく `NULL` が返されます。 +`n` は任意の整数型で指定でき、指定された配列のインデックス `n` にある要素を取得します。 +インデックスが配列の範囲外の場合は、デフォルト値ではなく `NULL` が返されます。 :::note ClickHouse の配列はインデックスが 1 から始まります。 ::: -負のインデックスもサポートされています。この場合、末尾から数えた位置に対応する要素を選択します。たとえば、`arr[-1]` は配列の最後の要素です。 +負のインデックスもサポートされています。この場合、末尾から数えた位置に対応する要素が選択されます。たとえば、`arr[-1]` は配列の最後の要素です。 **構文** ```sql -arrayElementOrNull(配列) +arrayElementOrNull(arrays) ``` **引数** -* `arrays` — 任意数の配列引数。[`Array`](/sql-reference/data-types/array) +* `arrays` — 任意個数の配列引数。[`Array`](/sql-reference/data-types/array) -**戻り値** +**返り値** -与えられた配列引数を結合した単一の配列を返します。[`Array(T)`](/sql-reference/data-types/array) +引数として指定された配列を結合した 1 つの配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -643,7 +660,7 @@ SELECT arrayElementOrNull(arr, 2) FROM (SELECT [1, 2, 3] AS arr) 2 ``` -**負のインデックス** +**負のインデックス指定** ```sql title=Query SELECT arrayElementOrNull(arr, -1) FROM (SELECT [1, 2, 3] AS arr) @@ -653,7 +670,7 @@ SELECT arrayElementOrNull(arr, -1) FROM (SELECT [1, 2, 3] AS arr) 3 ``` -**配列の範囲外のインデックス** +**配列範囲外のインデックス** ```sql title=Query SELECT arrayElementOrNull(arr, 4) FROM (SELECT [1, 2, 3] AS arr) @@ -663,14 +680,15 @@ SELECT arrayElementOrNull(arr, 4) FROM (SELECT [1, 2, 3] AS arr) NULL ``` + ## arrayEnumerate {#arrayEnumerate} 導入バージョン: v1.1 -配列 `[1, 2, 3, ..., length (arr)]` を返します。 +配列 `[1, 2, 3, ..., length (arr)]` を返す。 -この関数は通常、[`ARRAY JOIN`](/sql-reference/statements/select/array-join) 句と一緒に使用されます。`ARRAY JOIN` を適用した後、各配列ごとに一度だけカウントできるようにします。 -この関数は高階関数内でも使用できます。たとえば、条件に一致する要素の配列インデックスを取得するために使用できます。 +この関数は通常、[`ARRAY JOIN`](/sql-reference/statements/select/array-join) 句と併用される。`ARRAY JOIN` を適用した後、各配列について 1 回だけ値をカウントできるようにする。 +この関数は高階関数の中でも使用できる。例えば、条件に一致する要素の配列インデックスを取得するために利用できる。 **構文** @@ -680,15 +698,15 @@ arrayEnumerate(arr) **引数** -* `arr` — 列挙対象の配列。[`Array`](/sql-reference/data-types/array) +* `arr` — 列挙する配列。[`Array`](/sql-reference/data-types/array) -**戻り値** +**返り値** -配列 `[1, 2, 3, ..., length(arr)]` を返します。[`Array(UInt32)`](/sql-reference/data-types/array) +配列 `[1, 2, 3, ..., length (arr)]` を返す。[`Array(UInt32)`](/sql-reference/data-types/array) -**例** +**使用例** -**ARRAY JOIN を使用した基本的な例** +**ARRAY JOIN を使用した基本的な使用例** ```sql title=Query CREATE TABLE test @@ -722,11 +740,12 @@ ARRAY JOIN └────┴────────────────┴─────────────┴─────┘ ``` + ## arrayEnumerateDense {#arrayEnumerateDense} 導入バージョン: v18.12 -元の配列と同じサイズの配列を返し、各要素が元の配列内で最初に出現するインデックスを示します。 +元の配列と同じサイズの配列を返し、各要素が元の配列内で最初に出現する位置を示します。 **構文** @@ -736,13 +755,13 @@ arrayEnumerateDense(arr) **引数** -* `arr` — 列挙する配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 列挙対象の配列。[`Array(T)`](/sql-reference/data-types/array) **戻り値** -`arr` と同じサイズの配列を返します。各要素が元の配列 [`Array(T)`](/sql-reference/data-types/array) 内で最初に出現する位置(インデックス)を示します。 +元の配列 [`Array(T)`](/sql-reference/data-types/array) において、各要素が最初に出現する位置を示す、`arr` と同じサイズの配列を返す。 -**例** +**使用例** **使用例** @@ -754,11 +773,12 @@ SELECT arrayEnumerateDense([10, 20, 10, 30]) [1,2,1,3] ``` + ## arrayEnumerateDenseRanked {#arrayEnumerateDenseRanked} 導入バージョン: v20.1 -元の配列と同じサイズの配列を返し、元の配列内で各要素が最初に出現する位置を示します。多次元配列を列挙する際に、配列のどの深さまで探索するかを指定できます。 +元の配列と同じ要素数の配列を返します。この配列の各要素は、元の配列内でその値が最初に出現する位置を示します。多次元配列を列挙する際に、配列のどの深さまで走査するかを指定できます。 **構文** @@ -768,20 +788,20 @@ arrayEnumerateDenseRanked(clear_depth, arr, max_array_depth) **引数** -* `clear_depth` — 指定した階層レベルの要素を個別に列挙します。`max_arr_depth` 以下である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) +* `clear_depth` — 指定したレベルで要素を個別に列挙する深さ。`max_arr_depth` 以下である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) * `arr` — 列挙対象の N 次元配列。[`Array(T)`](/sql-reference/data-types/array) -* `max_array_depth` — 有効な最大深さ。`arr` の深さ以下である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_array_depth` — 有効な最大の深さ。`arr` の深さ以下である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) **戻り値** -各要素が元の配列内で最初に出現した位置を示す配列を返します。[`Array`](/sql-reference/data-types/array) +元の配列内で各要素が最初に出現する位置を示す配列を返す。[`Array`](/sql-reference/data-types/array) -**例** +**使用例** -**基本的な使い方** +**基本的な使用方法** ```sql title=Query --- clear_depth=1 かつ max_array_depth=1 の場合、結果は arrayEnumerateDense が返す値と同一です。 +-- With clear_depth=1 and max_array_depth=1, the result is identical to what arrayEnumerateDense would give. SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1); ``` @@ -793,14 +813,14 @@ SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1); **多次元配列での利用方法** ```sql title=Query --- この例では、arrayEnumerateDenseRankedを使用して、多次元配列の各要素が --- 同じ値を持つ要素の中で何番目に位置するかを示す配列を取得します。 --- 渡された配列の1行目[10, 10, 30, 20]に対して、結果の対応する1行目は[1, 1, 2, 3]となり、 --- これは10が位置1と2で1番目に出現する数値、30が位置3で2番目に出現する数値、 --- 20が位置4で3番目に出現する数値であることを示しています。 --- 2行目[40, 50, 10, 30]に対して、結果の対応する2行目は[4,5,1,2]となり、これは40と50が --- その行の位置1と2で4番目と5番目に出現する数値であり、もう一つの10 --- (1番目に出現する数値)が位置3にあり、30(2番目に出現する数値)が最後の位置にあることを示しています。 +-- In this example, arrayEnumerateDenseRanked is used to obtain an array indicating, for each element of the +-- multidimensional array, what its position is among elements of the same value. +-- For the first row of the passed array, [10, 10, 30, 20], the corresponding first row of the result is [1, 1, 2, 3], +-- indicating that 10 is the first number encountered in position 1 and 2, 30 the second number encountered in position 3 +-- and 20 is the third number encountered in position 4. +-- For the second row, [40, 50, 10, 30], the corresponding second row of the result is [4,5,1,2], indicating that 40 +-- and 50 are the fourth and fifth numbers encountered in position 1 and 2 of that row, that another 10 +-- (the first encountered number) is in position 3 and 30 (the second number encountered) is in the last position. SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2); ``` @@ -812,7 +832,7 @@ SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2); **`clear_depth` を大きく設定した例** ```sql title=Query --- clear_depth=2 に変更すると、行ごとに列挙が個別に実行されます。 +-- Changing clear_depth=2 results in the enumeration occurring separately for each row anew. SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2); ``` @@ -821,15 +841,16 @@ SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2); [[1, 1, 2, 3], [1, 2, 3, 4]] ``` + ## arrayEnumerateUniq {#arrayEnumerateUniq} -導入されたバージョン: v1.1 +導入バージョン: v1.1 -元の配列と同じサイズの配列を返し、各要素について、その値が同じである要素の中で何番目の出現であるかを示します。 +元の配列と同じサイズの配列を返し、各要素について、その値が同じ要素の中で何番目かを示します。 -この関数は、`ARRAY JOIN` と配列要素の集約を使用する場合に便利です。 +この関数は、`ARRAY JOIN` と配列要素の集約を併用する場合に便利です。 -この関数は、同じサイズの複数の配列を引数として受け取ることができます。この場合、一意性は、すべての配列において同じ位置にある要素のタプルに基づいて判定されます。 +この関数は、同じサイズの複数の配列を引数として受け取ることができます。この場合の一意性は、すべての配列で同じ位置にある要素を組み合わせたタプルごとに判定されます。 **構文** @@ -839,14 +860,14 @@ arrayEnumerateUniq(arr1[, arr2, ... , arrN]) **引数** -* `arr1` — 処理対象となる最初の配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr2, ...` — 省略可能。タプルの一意性を判定するための、同じサイズの追加配列。[`Array(UInt32)`](/sql-reference/data-types/array) +* `arr1` — 処理対象の最初の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr2, ...` — オプション。同じサイズの追加配列で、タプルの一意性に使用します。[`Array(UInt32)`](/sql-reference/data-types/array) -**返される値** +**返り値** -各要素が、同じ値またはタプルを持つ要素群の中での位置を表す配列を返します。[`Array(T)`](/sql-reference/data-types/array) +各要素が、同じ値またはタプルを持つ要素群の中での位置を表す配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **基本的な使い方** @@ -871,10 +892,10 @@ SELECT arrayEnumerateUniq([1, 1, 1, 2, 2, 2], [1, 1, 2, 1, 1, 2]); **ARRAY JOIN による集約** ```sql title=Query --- 各ゴールIDには、コンバージョン数(Goalsネスト構造の各要素は達成されたゴールであり、これをコンバージョンと呼びます) --- およびセッション数の計算が含まれます。ARRAY JOINを使用しない場合、セッション数はsum(Sign)としてカウントされます。しかし、このケースでは、 --- ネストされたGoals構造により行が複製されるため、各セッションを1回だけカウントするために、 --- arrayEnumerateUniq(Goals.ID)関数の値に条件を適用します。 +-- Each goal ID has a calculation of the number of conversions (each element in the Goals nested data structure is a goal that was reached, which we refer to as a conversion) +-- and the number of sessions. Without ARRAY JOIN, we would have counted the number of sessions as sum(Sign). But in this particular case, +-- the rows were multiplied by the nested Goals structure, so in order to count each session one time after this, we apply a condition to the +-- value of the arrayEnumerateUniq(Goals.ID) function. SELECT Goals.ID AS GoalID, @@ -905,13 +926,14 @@ LIMIT 10 └─────────┴─────────┴────────┘ ``` + ## arrayEnumerateUniqRanked {#arrayEnumerateUniqRanked} -導入: v20.1 +導入バージョン: v20.1 -元の配列と同じ次元を持つ配列(または多次元配列)を返し、 -各要素について、同じ値を持つ要素の中でその要素が何番目に位置するかを示します。 -多次元配列について、配列のどの深さまでを探索するかを指定して列挙できます。 +元の配列と同じ次元数を持つ配列(または多次元配列)を返し、 +各要素について、同じ値を持つ要素の中での順位を示します。 +多次元配列を列挙する際に、配列の内部をどの深さまでたどるかを指定できます。 **構文** @@ -921,21 +943,21 @@ arrayEnumerateUniqRanked(clear_depth, arr, max_array_depth) **引数** -* `clear_depth` — 指定したレベルの要素をそれぞれ別個に列挙します。`max_arr_depth` 以下の正の整数。[`UInt*`](/sql-reference/data-types/int-uint) +* `clear_depth` — 指定されたレベルごとに要素を個別に列挙します。`max_arr_depth` 以下の正の整数。[`UInt*`](/sql-reference/data-types/int-uint) * `arr` — 列挙対象の N 次元配列。[`Array(T)`](/sql-reference/data-types/array) -* `max_array_depth` — 有効な最大の深さ。`arr` の深さ以下の正の整数。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_array_depth` — 有効な最大深さ。`arr` の深さ以下の正の整数。[`UInt*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -`arr` と同じサイズの N 次元配列を返します。各要素には、同じ値を持つ他の要素の中での位置が示されます。[`Array(T)`](/sql-reference/data-types/array) +`arr` と同じサイズの N 次元配列を返す。各要素には、同じ値を持つ他の要素との関係における、その要素の位置が示されます。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** -**例 1** +**使用例 1** ```sql title=Query --- clear_depth=1 かつ max_array_depth=1 の場合、arrayEnumerateUniqRanked の結果は --- 同じ配列に対して arrayEnumerateUniq が返す結果と同一です。 +-- With clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked +-- is identical to that which arrayEnumerateUniq would give for the same array. SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1); ``` @@ -947,8 +969,8 @@ SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1); **例 2** ```sql title=Query --- clear_depth=1 および max_array_depth=1 の場合、arrayEnumerateUniqRanked の結果は --- 同じ配列に対して arrayEnumerateUniq が返す結果と同一になります。 +-- with clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked +-- is identical to that which arrayEnumerateUniqwould give for the same array. SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1], [2, 3, 2], [2]] ``` @@ -960,13 +982,14 @@ SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1 **例 3** ```sql title=Query --- この例では、arrayEnumerateUniqRankedを使用して、多次元配列の各要素が --- 同じ値を持つ要素の中で何番目に出現するかを示す配列を取得します。渡された配列の1行目[1, 2, 3]に対しては、 --- 対応する結果は[1, 1, 1]となり、1、2、3がそれぞれ初めて出現することを示しています。 --- 2行目の配列[2, 2, 1]に対しては、対応する結果は[2, 3, 3]となり、 --- 2が2回目と3回目に出現し、1が2回目に出現することを示しています。同様に、 --- 3行目の配列[3]に対しては、対応する結果は[2]となり、 --- 3が2回目に出現することを示しています。 +-- In this example, arrayEnumerateUniqRanked is used to obtain an array indicating, +-- for each element of the multidimensional array, what its position is among elements +-- of the same value. For the first row of the passed array, [1, 2, 3], the corresponding +-- result is [1, 1, 1], indicating that this is the first time 1, 2 and 3 are encountered. +-- For the second row of the provided array, [2, 2, 1], the corresponding result is [2, 3, 3], +-- indicating that 2 is encountered for a second and third time, and 1 is encountered +-- for the second time. Likewise, for the third row of the provided array [3] the +-- corresponding result is [2] indicating that 3 is encountered for the second time. SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2); ``` @@ -975,10 +998,10 @@ SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2); [[1, 1, 1], [2, 3, 2], [2]] ``` -**例4** +**例 4** ```sql title=Query --- clear_depth=2に変更すると、各行ごとに要素が個別に列挙されます。 +-- Changing clear_depth=2, results in elements being enumerated separately for each row. SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2); ``` @@ -986,19 +1009,20 @@ SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2); [[1, 1, 1], [1, 2, 1], [1]] ``` + ## arrayExcept {#arrayExcept} -導入バージョン: v25.9 +導入: v25.9 -`source` に含まれる要素のうち、`except` には存在しない要素だけを、元の順序を維持したまま返します。 +`source` に含まれる要素のうち、`except` には存在しない要素だけを元の順序を保ったまま含む配列を返します。 -この関数は、2 つの配列間で集合の差分操作を行います。`source` の各要素について、厳密な比較により同一の要素が `except` に存在するかを確認します。存在しない場合、その要素は結果に含まれます。 +この関数は、2 つの配列間で差集合 (set difference) の演算を行います。`source` の各要素について、その要素が `except` に存在するかどうか(厳密な比較で)を確認します。存在しない場合、その要素は結果に含まれます。 -この操作には次の特性があります: +この演算では、次の性質が保たれます: -1. `source` の要素の順序は保持される -2. `source` 内の重複要素は、`except` に存在しない限り保持される -3. NULL は独立した値として扱われる +1. `source` の要素の順序は維持される +2. `source` 内の重複は、それらが `except` に存在しない限り維持される +3. NULL は別個の値として扱われる **構文** @@ -1008,16 +1032,16 @@ arrayExcept(source, except) **引数** -* `source` — フィルタ対象の要素を含む配列。[`Array(T)`](/sql-reference/data-types/array) -* `except` — 結果から除外する要素を含む配列。[`Array(T)`](/sql-reference/data-types/array) +* `source` — フィルタの対象となる要素を含む元の配列。 [`Array(T)`](/sql-reference/data-types/array) +* `except` — 結果から除外する要素を含む配列。 [`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -`source` に含まれる要素のうち、`except` に存在しない要素だけを保持した、入力配列と同じ型の配列を返します。[`Array(T)`](/sql-reference/data-types/array) +`source` のうち `except` に含まれない要素のみを含む、入力配列と同じ型の配列を返す。 [`Array(T)`](/sql-reference/data-types/array) **使用例** -**基本** +**基本的な使用例** ```sql title=Query SELECT arrayExcept([1, 2, 3, 2, 4], [3, 5]) @@ -1057,11 +1081,12 @@ SELECT arrayExcept(['apple', 'banana', 'cherry'], ['banana', 'date']) ['apple', 'cherry'] ``` + ## arrayExists {#arrayExists} -導入バージョン: v1.1 +導入: v1.1 -ソース配列内に、`func(x[, y1, y2, ... yN])` が true を返す要素が 1 つ以上存在する場合は `1` を返します。そうでない場合は `0` を返します。 +`func(x[, y1, y2, ... yN])` が真を返す要素が対象の配列の中に少なくとも 1 つ存在する場合は `1` を返す。それ以外の場合は `0` を返す。 **構文** @@ -1071,15 +1096,15 @@ arrayExists(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) と条件配列 (`y`) の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — 処理対象のソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を渡すための N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の各要素に対して動作するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -少なくとも 1 つの要素に対してラムダ関数が `true` を返した場合は `1` を、それ以外の場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) +少なくとも 1 つの要素に対してラムダ関数が true を返した場合は `1`、それ以外の場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -1091,14 +1116,15 @@ SELECT arrayExists(x, y -> x=y, [1, 2, 3], [0, 0, 0]) 0 ``` + ## arrayFill {#arrayFill} 導入バージョン: v20.1 -`arrayFill` 関数は、ソース配列を先頭の要素から最後の要素まで順に処理し、 -ソース配列および条件配列の要素を用いて、各位置でラムダ式の条件を評価します。 -位置 i においてラムダ関数の評価結果が false の場合、その要素は、 -配列の現在の状態における位置 i-1 の要素で置き換えられます。 +`arrayFill` 関数は、ソース配列を先頭要素から末尾要素まで順番に処理し、 +ソース配列および条件配列の要素を用いて、各位置でラムダ条件を評価します。 +位置 i でラムダ関数の評価結果が false だった場合、 +その要素は、配列の現在の状態における位置 i-1 の要素で置き換えられます。 先頭要素は、どのような条件であっても常に保持されます。 **構文** @@ -1109,17 +1135,17 @@ arrayFill(func(x [, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x [, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y`)の要素に適用されるラムダ関数 `func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])`。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x [, y1, ..., yN])` — ラムダ関数 `func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])`。ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素に対して処理を行います。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -配列 [`Array(T)`](/sql-reference/data-types/array) を返します。 +配列 [`Array(T)`](/sql-reference/data-types/array) を返す。 **使用例** -**単一配列の例** +**単一配列での使用例** ```sql title=Query SELECT arrayFill(x -> not isNull(x), [1, null, 2, null]) AS res @@ -1129,7 +1155,7 @@ SELECT arrayFill(x -> not isNull(x), [1, null, 2, null]) AS res [1, 1, 2, 2] ``` -**2 つの配列の例** +**2つの配列の使用例** ```sql title=Query SELECT arrayFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res @@ -1139,11 +1165,12 @@ SELECT arrayFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, [5, 5, 6, 6] ``` + ## arrayFilter {#arrayFilter} 導入バージョン: v1.1 -ソース配列の要素のうち、ラムダ関数を適用した結果が true になるものだけを含む配列を返します。 +指定された Lambda 関数が true を返す要素のみを含む配列を返す。 **構文** @@ -1153,17 +1180,17 @@ arrayFilter(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])] **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に適用される Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。Lambda 関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**返される値** +**戻り値** -ソース配列の部分集合を返します。[`Array(T)`](/sql-reference/data-types/array) +ソース配列の部分集合を返す。[`Array(T)`](/sql-reference/data-types/array) **使用例** -**例 1** +**使用例 1** ```sql title=Query SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res @@ -1188,11 +1215,12 @@ SELECT [2] ``` + ## arrayFirst {#arrayFirst} 導入: v1.1 -`func(x[, y1, y2, ... yN])` が true を返す、元の配列内の最初の要素を返します。該当する要素がない場合はデフォルト値を返します。 +`func(x[, y1, y2, ... yN])` が true となる元の配列内の最初の要素を返す。それ以外の場合はデフォルト値を返す。 **構文** @@ -1202,13 +1230,13 @@ arrayFirst(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に適用されるラムダ関数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理する Lambda 関数。 [ラムダ関数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source_arr` — 処理対象のソース配列。 [`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1_arr, ... , condN_arr]` — 省略可。Lambda 関数に追加の引数を渡す N 個の条件配列。 [`Array(T)`](/sql-reference/data-types/array)。 -**返される値** +**返り値** -`λ` が true を返す最初のソース配列の要素を返し、それ以外の場合は型 `T` のデフォルト値を返します。 +`λ` が真となるソース配列の最初の要素を返し、それ以外の場合は `T` のデフォルト値を返す。 -**例** +**使用例** **使用例** @@ -1230,11 +1258,12 @@ SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) 0 UInt8 ``` + ## arrayFirstIndex {#arrayFirstIndex} -導入バージョン: v1.1 +導入: v1.1 -`func(x[, y1, y2, ... yN])` が true を返す最初の要素のインデックスをソース配列から返します。該当する要素がない場合は '0' を返します。 +`func(x[, y1, y2, ... yN])` が true を返す元の配列内の最初の要素のインデックスを返す。一致する要素がない場合は'0'を返す。 **構文** @@ -1244,15 +1273,13 @@ arrayFirstIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr] **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に適用されるラムダ関数。[ラムダ関数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 -* `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array)。 -* `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理する Lambda 関数。 [Lambda 関数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source_arr` — 処理対象のソース配列。 [`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1_arr, ... , condN_arr]` — 省略可能。Lambda 関数に追加の引数を与える N 個の条件配列。 [`Array(T)`](/sql-reference/data-types/array)。 -**戻り値** +**返り値** -`func` が true となるソース配列の最初の要素のインデックスを返し、それ以外の場合は `0` を返します。戻り値の型は [`UInt32`](/sql-reference/data-types/int-uint) です。 +`func` が真となるソース配列の最初の要素の索引を返し、それ以外の場合は `0` を返す。 [`UInt32`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -1264,7 +1291,7 @@ SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['c', 'b', 'a']) 2 ``` -**該当なし** +**一致なし** ```sql title=Query SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']) @@ -1274,11 +1301,12 @@ SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']) 0 ``` + ## arrayFirstOrNull {#arrayFirstOrNull} -導入バージョン: v1.1 +導入: v1.1 -`func(x[, y1, y2, ... yN])` が true を返す最初の要素をソース配列から返します。該当する要素がない場合は `NULL` を返します。 +`func(x[, y1, y2, ... yN])` が true を返す元の配列の最初の要素を返す。該当する要素がない場合は `NULL` を返す。 **構文** @@ -1288,15 +1316,15 @@ arrayFirstOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr **引数** -* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y`)の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理する Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — オプション。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -`func` が真となるソース配列の最初の要素を返し、それ以外の場合は `NULL` を返します。 +`func` が true を返すソース配列の最初の要素を返し、それ以外の場合は `NULL` を返す。 -**例** +**使用例** **使用例** @@ -1318,6 +1346,7 @@ SELECT arrayFirstOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(re NULL Nullable(UInt8) ``` + ## arrayFlatten {#arrayFlatten} 導入バージョン: v20.1 @@ -1326,10 +1355,10 @@ NULL Nullable(UInt8) この関数には次の特徴があります。 -* 任意の深さにネストされた配列に適用できます。 +* 任意の深さでネストされた配列に適用できます。 * すでにフラットな配列は変更しません。 -フラット化された配列には、すべての元の配列に含まれる要素が格納されます。 +フラット化された配列には、元のすべての配列に含まれるすべての要素が含まれます。 **構文** @@ -1341,13 +1370,13 @@ arrayFlatten(arr) **引数** -* `arr` — 多次元配列。型は [`Array(Array(T))`](/sql-reference/data-types/array) +* `arr` — 多次元配列。[`Array(Array(T))`](/sql-reference/data-types/array) -**返される値** +**返り値** -多次元配列をフラット化した配列 [`Array(T)`](/sql-reference/data-types/array) を返します。 +多次元配列からフラット化された配列 [`Array(T)`](/sql-reference/data-types/array) を返す。 -**例** +**使用例** **使用例** @@ -1359,11 +1388,12 @@ SELECT arrayFlatten([[[1]], [[2], [3]]]); [1, 2, 3] ``` + ## arrayFold {#arrayFold} 導入バージョン: v23.10 -サイズが等しい 1 つ以上の配列に対してラムダ関数を適用し、その結果をアキュムレータに蓄積します。 +1 つ以上の同じ長さの配列に対してラムダ関数を適用し、その結果をアキュムレータに累積します。 **構文** @@ -1373,13 +1403,13 @@ arrayFold(λ(acc, x1 [, x2, x3, ... xN]), arr1 [, arr2, arr3, ... arrN], acc) **引数** -* `λ(x, x1 [, x2, x3, ... xN])` — ラムダ関数 `λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])`。ここで `F` は `acc` と `x` からの配列値に適用される演算であり、その結果である `acc` が再利用されます。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr1 [, arr2, arr3, ... arrN]` — 演算を行う N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -* `acc` — ラムダ関数の戻り値と同じ型を持つアキュムレータ(累積)値。 +* `λ(x, x1 [, x2, x3, ... xN])` — Lambda 関数 `λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])`。ここで `F` は、`acc` と `x` の配列要素に適用され、その結果として得られた `acc` を再利用する演算です。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr1 [, arr2, arr3, ... arrN]` — 演算対象となる N 個の配列。[`Array(T)`](/sql-reference/data-types/array) +* `acc` — Lambda 関数の返り値と同じ型の累積値。 -**返される値** +**戻り値** -最終的な `acc` の値を返します。 +最終的な `acc` の値を返す。 **例** @@ -1414,7 +1444,7 @@ SELECT arrayFold(acc, x -> (acc.2, acc.2 + acc.1),range(number),(1::Int64, 0::In └───────────┘ ``` -**複数の配列を使う例** +**複数の配列を使った例** ```sql title=Query SELECT arrayFold( @@ -1429,11 +1459,12 @@ SELECT arrayFold( 300 ``` + ## arrayIntersect {#arrayIntersect} -導入: v1.1 +導入バージョン: v1.1 -複数の配列を受け取り、すべての入力配列に存在する要素だけを含む配列を返します。結果には一意の値のみが含まれます。 +複数の配列を受け取り、すべての入力配列に存在する要素だけを含む配列を返す。結果には一意な値だけが含まれる。 **構文** @@ -1447,9 +1478,9 @@ arrayIntersect(arr, arr1, ..., arrN) **戻り値** -すべての N 個の配列に共通して存在する一意な要素のみを含む配列を返します。[`Array(T)`](/sql-reference/data-types/array)。 +すべての N 個の配列に共通する要素のみを含む、重複値を含まない配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -1465,11 +1496,12 @@ arrayIntersect([1, 2], [1, 3], [1, 4]) AS non_empty_intersection └────────────────────────┴────────────────────┘ ``` + ## arrayJaccardIndex {#arrayJaccardIndex} 導入バージョン: v23.7 -2 つの配列の [Jaccard index](https://en.wikipedia.org/wiki/Jaccard_index) を返します。 +2 つの配列の [Jaccard index](https://en.wikipedia.org/wiki/Jaccard_index) を返す。 **構文** @@ -1479,14 +1511,14 @@ arrayJaccardIndex(arr_x, arr_y) **引数** -* `arr_x` — 1 つ目の配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr_y` — 2 つ目の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr_x` — 最初の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr_y` — 2 番目の配列。[`Array(T)`](/sql-reference/data-types/array) **返り値** -`arr_x` と `arr_y` の Jaccard 指数を返します。[`Float64`](/sql-reference/data-types/float) +`arr_x` と `arr_y` の Jaccard 指数を返す。[`Float64`](/sql-reference/data-types/float) -**例** +**使用例** **使用例** @@ -1498,17 +1530,18 @@ SELECT arrayJaccardIndex([1, 2], [2, 3]) AS res 0.3333333333333333 ``` + ## arrayJoin {#arrayJoin} -導入バージョン: v1.1 +導入: v1.1 -`arrayJoin` 関数は、配列を含む 1 行を受け取り、それを展開して、配列の各要素ごとに 1 行ずつ複数行を生成します。 -これは、同じ行の中で入力値を出力値に対応づける ClickHouse の通常の関数とは対照的であり、 -また、複数行を受け取ってそれらを 1 つのサマリー行に「圧縮」または「集約」する集約関数とも異なります -(`GROUP BY` と併用する場合は、サマリー行内の 1 つの値になります)。 +`arrayJoin` 関数は、配列を含む行を受け取り、それを展開して、配列内の各要素ごとに 1 行となるよう複数の行を生成します。 +これは、同じ行の中で入力値を出力値に写像する ClickHouse の通常の関数(Regular Functions)や、 +複数の行を受け取りそれらを 1 つの要約行に「圧縮」または「縮約」する集約関数(Aggregate Functions) +(`GROUP BY` と併用される場合は要約行内の 1 つの値)とは対照的です。 -この関数が適用される列を除き、列内のすべての値は単純にコピーされます。 -適用された列の値は、対応する配列要素の値に置き換えられます。 +この関数が適用されるカラム以外のすべてのカラムの値は単にコピーされます。 +この関数が適用されるカラムの値は、対応する配列要素の値に置き換えられます。 **構文** @@ -1518,15 +1551,15 @@ arrayJoin(arr) **引数** -* `arr` — 展開する対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 展開する配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -`arr` を展開して得られる行の集合を返します。 +`arr` を展開して得られる複数の行を返す。 -**例** +**使用例** -**基本的な使い方** +**基本的な使用方法** ```sql title=Query SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src @@ -1540,10 +1573,10 @@ SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src └─────┴───────────┴─────────┘ ``` -**arrayJoin はクエリのすべての部分に影響します** +**arrayJoin はクエリのすべてのセクションに影響を与えます** ```sql title=Query --- arrayJoin関数は、WHERE句を含むクエリのすべてのセクションに影響を与えます。サブクエリが1行を返しているにもかかわらず、結果が2になることに注意してください。 +-- The arrayJoin function affects all sections of the query, including the WHERE section. Notice the result 2, even though the subquery returned 1 row. SELECT sum(1) AS impressions FROM @@ -1559,10 +1592,10 @@ WHERE arrayJoin(cities) IN ['Istanbul', 'Berlin']; └─────────────┘ ``` -**複数の arrayJoin 関数を使用する** +**複数の arrayJoin 関数の利用** ```sql title=Query -- クエリでは複数のarrayJoin関数を使用できます。この場合、変換が複数回実行され、行が増幅されます。 +- A query can use multiple arrayJoin functions. In this case, the transformation is performed multiple times and the rows are multiplied. SELECT sum(1) AS impressions, @@ -1593,21 +1626,22 @@ GROUP BY **最適化によって生じる予期しない結果** ```sql title=Query --- 同じ式で複数のarrayJoinを使用すると、最適化により期待した結果が得られない場合があります。 --- このような場合は、結合結果に影響しない追加の操作を加えて、繰り返される配列式を変更することを検討してください。 -- 例: arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, [])) +-- Using multiple arrayJoin with the same expression may not produce the expected result due to optimizations. +-- For these cases, consider modifying the repeated array expression with extra operations that do not affect join result. +- e.g. arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, [])) SELECT arrayJoin(dice) as first_throw, - /* arrayJoin(dice) as second_throw */ -- 技術的には正しいが、結果セットが消失します - arrayJoin(arrayConcat(dice, [])) as second_throw -- 再評価を強制するために意図的に式を変更しています + /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set + arrayJoin(arrayConcat(dice, [])) as second_throw -- intentionally changed expression to force re-evaluation FROM ( SELECT [1, 2, 3, 4, 5, 6] as dice ); ``` + ```response title=Response -┌─最初の投げ─┬─2回目の投げ─┐ +┌─first_throw─┬─second_throw─┐ │ 1 │ 1 │ │ 1 │ 2 │ │ 1 │ 3 │ @@ -1650,8 +1684,8 @@ FROM ( **ARRAY JOIN 構文の使用** ```sql title=Query --- 以下の`SELECT`クエリにおけるARRAY JOIN構文に注目してください。これにより、より幅広い処理が可能になります。 --- ARRAY JOINを使用すると、同じ要素数を持つ複数の配列を同時に展開できます。 +-- Note the ARRAY JOIN syntax in the `SELECT` query below, which provides broader possibilities. +-- ARRAY JOIN allows you to convert multiple arrays with the same number of elements at a time. SELECT sum(1) AS impressions, @@ -1679,10 +1713,10 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -**Tuple の使用** +**Tuple を使用する** ```sql title=Query --- Tupleを使用することもできます +-- You can also use Tuple SELECT sum(1) AS impressions, @@ -1707,11 +1741,12 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` + ## arrayLast {#arrayLast} 導入バージョン: v1.1 -ラムダ `func(x [, y1, y2, ... yN])` が true を返すソース配列内の最後の要素を返します。該当する要素がない場合は、デフォルト値を返します。 +Lambda 関数 `func(x [, y1, y2, ... yN])` が true を返す元の配列内の最後の要素を返す。該当する要素が存在しない場合は、デフォルト値を返す。 **構文** @@ -1721,13 +1756,13 @@ arrayLast(func(x[, y1, ..., yN]), source[, cond1, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素を処理するラムダ関数。[ラムダ関数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source` — 処理対象のソース配列。[`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1, ... , condN]` — 任意。ラムダ関数への追加引数として渡される N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に対して処理を行う Lambda 関数。[Lambda 関数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source` — 処理するソース配列。[`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1, ... , condN]` — 省略可能。Lambda 関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 -**戻り値** +**返される値** -`func` が真となるソース配列の最後の要素を返し、それ以外の場合には `T` のデフォルト値を返します。 +`func` が真となるソース配列の最後の要素を返し、それ以外の場合は `T` のデフォルト値を返す。 -**例** +**使用例** **使用例** @@ -1749,11 +1784,12 @@ SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) 0 UInt8 ``` + ## arrayLastIndex {#arrayLastIndex} -導入バージョン: v1.1 +導入: v1.1 -`func(x[, y1, y2, ... yN])` が true を返すソース配列内の最後の要素のインデックスを返します。該当する要素がない場合は '0' を返します。 +`func(x[, y1, y2, ... yN])` が true を返す対象配列内の最後の要素のインデックスを返す。該当要素が存在しない場合は '0' を返す。 **構文** @@ -1763,15 +1799,15 @@ arrayLastIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に適用されるラムダ関数。 [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — 処理対象のソース配列。 [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を与える N 個の条件配列。 [`Array(T)`](/sql-reference/data-types/array) +* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) **返り値** -`func` が真となるソース配列の最後の要素のインデックスを返し、それ以外の場合は `0` を返す。 [`UInt32`](/sql-reference/data-types/int-uint) +`func` が真となるソース配列の最後の要素のインデックスを返し、それ以外の場合は `0` を返す。[`UInt32`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -1783,7 +1819,7 @@ SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c']); 3 ``` -**該当なし** +**一致なし** ```sql title=Query SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']); @@ -1793,11 +1829,12 @@ SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']); 0 ``` + ## arrayLastOrNull {#arrayLastOrNull} -導入: v1.1 +導入バージョン: v1.1 -ラムダ式 `func(x [, y1, y2, ... yN])` が true を返す、入力配列内の最後の要素を返します。該当する要素がない場合は `NULL` を返します。 +ラムダ関数 `func(x [, y1, y2, ... yN])` が true を返す元の配列の最後の要素を返す。該当する要素がない場合は `NULL` を返す。 **構文** @@ -1807,13 +1844,13 @@ arrayLastOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr] **引数** -* `func(x [, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に適用されるラムダ関数。[ラムダ関数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1_arr, ... , condN_arr]` — 任意。ラムダ関数に追加の引数を渡すための N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x [, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理する Lambda 関数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 省略可能。Lambda 関数に追加の引数を与える N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 -**戻り値** +**返り値** -`λ` が true にならないソース配列要素のうち最後のものを返し、それ以外の場合は `NULL` を返します。 +`λ` が真ではないソース配列の最後の要素を返し、それ以外の場合は `NULL` を返す。 -**例** +**使用例** **使用例** @@ -1835,11 +1872,12 @@ SELECT arrayLastOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res NULL Nullable(UInt8) ``` + ## arrayLevenshteinDistance {#arrayLevenshteinDistance} 導入バージョン: v25.4 -2つの配列間の Levenshtein 距離を計算します。 +2 つの配列間のレーベンシュタイン距離を計算します。 **構文** @@ -1849,13 +1887,13 @@ arrayLevenshteinDistance(from, to) **引数** -* `from` — 1番目の配列。[`Array(T)`](/sql-reference/data-types/array)。- `to` — 2番目の配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `from` — 1 番目の配列。[`Array(T)`](/sql-reference/data-types/array)。 - `to` — 2 番目の配列。[`Array(T)`](/sql-reference/data-types/array)。 -**戻り値** +**返り値** -1番目の配列と2番目の配列のレーベンシュタイン距離。[`Float64`](/sql-reference/data-types/float) +1 番目と 2 番目の配列間の Levenshtein 距離。[`Float64`](/sql-reference/data-types/float) -**例** +**使用例** **使用例** @@ -1867,12 +1905,13 @@ SELECT arrayLevenshteinDistance([1, 2, 4], [1, 2, 3]) 1 ``` + ## arrayLevenshteinDistanceWeighted {#arrayLevenshteinDistanceWeighted} -導入バージョン: v25.4 +導入: v25.4 -2 つの配列に対して、各要素に対するカスタム重みを用いてレーベンシュタイン距離を計算します。 -配列とその重みの要素数は一致している必要があります。 +2 つの配列に対して、各要素に対するカスタム重みを用いて Levenshtein 距離を計算します。 +配列の要素数と重みの数は一致している必要があります。 **構文** @@ -1882,14 +1921,14 @@ arrayLevenshteinDistanceWeighted(from, to, from_weights, to_weights) **引数** -* `from` — 最初の配列。[`Array(T)`](/sql-reference/data-types/array). - `to` — 2 番目の配列。[`Array(T)`](/sql-reference/data-types/array). - `from_weights` — 最初の配列に対する重み。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `from` — 最初の配列。[`Array(T)`](/sql-reference/data-types/array)。 - `to` — 2 番目の配列。[`Array(T)`](/sql-reference/data-types/array)。 - `from_weights` — 最初の配列に対する重み。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) * `to_weights` — 2 番目の配列に対する重み。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -各要素に対してカスタム重みを用いた、最初の配列と 2 番目の配列間の Levenshtein 距離。[`Float64`](/sql-reference/data-types/float) +各要素に対してカスタムの重みを用いた、最初の配列と 2 番目の配列の Levenshtein 距離。[`Float64`](/sql-reference/data-types/float) -**例** +**使用例** **使用例** @@ -1901,11 +1940,12 @@ SELECT arrayLevenshteinDistanceWeighted(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 14 ``` + ## arrayMap {#arrayMap} 導入バージョン: v1.1 -各要素にラムダ関数を適用して、元の配列から生成した配列を返します。 +元の配列の各要素にラムダ関数を適用して得られる配列を返す。 **構文** @@ -1915,14 +1955,14 @@ arrayMap(func, arr) **引数** -* `func` — ソース配列 (`x`) と条件配列 (`y`) の要素に対して処理を行うラムダ関数。[`ラムダ関数`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr` — 処理対象となる N 個の配列。[`Array(T)`](/sql-reference/data-types/array) +* `func` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素に適用される Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr` — 処理する N 個の配列。[`Array(T)`](/sql-reference/data-types/array) **戻り値** -ラムダ関数の結果から生成された配列を返します。[`Array(T)`](/sql-reference/data-types/array) +Lambda の結果から生成された配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -1934,7 +1974,7 @@ SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res; [3, 4, 5] ``` -**異なる配列の要素からタプルを作成する** +**異なる配列から要素のTupleを作成する** ```sql title=Query SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res @@ -1944,13 +1984,14 @@ SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res [(1, 4),(2, 5),(3, 6)] ``` + ## arrayMax {#arrayMax} 導入バージョン: v21.1 -入力配列内の最大要素を返します。 +元の配列内の要素のうち、最大の要素を返す。 -ラムダ関数 `func` が指定された場合、ラムダ適用後の結果の最大要素を返します。 +Lambda 関数 `func` が指定されている場合、その関数の結果のうち最大の要素を返す。 **構文** @@ -1960,17 +2001,17 @@ arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — オプション。ソース配列 (`x`) および条件配列 (`y`) の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 省略可能。ソース配列 (`x`) および条件配列 (`y`) の要素に適用される Lambda 関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — オプション。ラムダ関数への追加引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。Lambda 関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -ソース配列内の最大要素を返します。ラムダ関数が指定されている場合は、その結果の最大要素を返します。 +ソース配列内の最大要素、または Lambda 関数が指定されている場合は、その結果の最大要素を返す。 -**例** +**使用例** -**基本的な例** +**基本的な使用例** ```sql title=Query SELECT arrayMax([5, 3, 2, 7]); @@ -1980,7 +2021,7 @@ SELECT arrayMax([5, 3, 2, 7]); 7 ``` -**Lambda 関数での利用方法** +**Lambda 関数での使用方法** ```sql title=Query SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); @@ -1990,13 +2031,14 @@ SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); 12 ``` + ## arrayMin {#arrayMin} -導入されたバージョン: v21.1 +導入バージョン: v21.1 -ソース配列内の最小要素を返します。 +配列に含まれる要素のうち、最小の要素を返す。 -ラムダ関数 `func` が指定された場合は、ラムダの評価結果の最小要素を返します。 +ラムダ関数 `func` が指定された場合は、その結果のうち最小の要素を返す。 **構文** @@ -2006,17 +2048,17 @@ arrayMin([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — 省略可能。ソース配列 (`x`) と条件配列 (`y`) の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 省略可。ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `cond1_arr, ...` — 省略可能。ラムダ関数に渡される追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `cond1_arr, ...` — 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -ソース配列内の最小要素、またはラムダ関数が指定されている場合は、その結果の最小要素を返します。 +ソース配列内の最小要素、またはラムダ関数が指定されている場合は、その結果要素の最小要素を返す。 -**例** +**使用例** -**基本的な例** +**基本的な使用例** ```sql title=Query SELECT arrayMin([5, 3, 2, 7]); @@ -2026,7 +2068,7 @@ SELECT arrayMin([5, 3, 2, 7]); 2 ``` -**Lambda 関数での使用** +**Lambda 関数での使用方法** ```sql title=Query SELECT arrayMin(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); @@ -2036,11 +2078,12 @@ SELECT arrayMin(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); 4 ``` + ## arrayNormalizedGini {#arrayNormalizedGini} 導入バージョン: v25.1 -正規化されたジニ係数を計算します。 +正規化された Gini 係数を計算します。 **構文** @@ -2053,11 +2096,11 @@ arrayNormalizedGini(predicted, label) * `predicted` — 予測値。[`Array(T)`](/sql-reference/data-types/array) * `label` — 実際の値。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -予測値の Gini 係数、正規化された値の Gini 係数、および正規化 Gini 係数(= 前者2つの Gini 係数の比)を含むタプル [`Tuple(Float64, Float64, Float64)`](/sql-reference/data-types/tuple) +予測値の Gini 係数、正規化された値の Gini 係数、および正規化 Gini 係数(= 前者 2 つの Gini 係数の比)を含むタプル。[`Tuple(Float64, Float64, Float64)`](/sql-reference/data-types/tuple) -**例** +**使用例** **使用例** @@ -2069,14 +2112,15 @@ SELECT arrayNormalizedGini([0.9, 0.3, 0.8, 0.7],[6, 1, 0, 2]); (0.18055555555555558, 0.2638888888888889, 0.6842105263157896) ``` + ## arrayPartialReverseSort {#arrayPartialReverseSort} 導入バージョン: v23.2 -この関数は `arrayReverseSort` と同じですが、追加の引数 `limit` によって配列の一部のみをソートできます。 +この関数は `arrayReverseSort` と同じですが、追加の引数 `limit` により部分的なソートが可能です。 :::tip -ソートされた要素だけを保持するには `arrayResize` を使用してください。 +ソート済みの要素だけを残したい場合は `arrayResize` を使用します。 ::: **構文** @@ -2087,17 +2131,17 @@ arrayPartialReverseSort([f,] arr [, arr1, ... ,arrN], limit) **引数** -* `f(arr[, arr1, ... ,arrN])` — 配列 `x` の要素に適用するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `f(arr[, arr1, ... ,arrN])` — 配列 `arr` の要素に適用するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr` — ソート対象の配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr1, ... ,arrN` — `f` が複数の引数を受け取る場合に指定する、追加の N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -* `limit` — どのインデックスまでソートを行うかを示す上限値。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr1, ... ,arrN` — `f` が複数の引数を受け取る場合の追加の N 個の配列。[`Array(T)`](/sql-reference/data-types/array) +* `limit` — そのインデックス値までソートを行う上限値。[`(U)Int*`](/sql-reference/data-types/int-uint) -**返される値** +**返り値** -元の配列と同じサイズの配列を返します。範囲 `[1..limit]` 内の要素は降順にソートされます。 +元の配列と同じサイズの配列を返し、そのうち範囲 `[1..limit]` の要素は降順にソートされます。 残りの要素 `(limit..N]` の順序は未定義です。 -**例** +**使用例** **simple_int** @@ -2149,17 +2193,19 @@ SELECT arrayPartialReverseSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res [0, 1, 2] ``` + ## arrayPartialShuffle {#arrayPartialShuffle} -導入バージョン: v23.2 +導入: v23.2 -元の配列と同じ長さの配列を返します。範囲 `[1..limit]` の要素は、元の配列からランダムに選ばれた部分集合となります。残りの範囲 `(limit..n]` には、範囲 `[1..limit]` に含まれない要素が未定義の順序で格納されます。 -`limit` の値は `[1..n]` の範囲でなければなりません。この範囲外の値を指定した場合は、完全な `arrayShuffle` を実行するのと同等の動作になります。 +元の配列と同じサイズの配列を返す。範囲 `[1..limit]` 内の要素は元の配列からランダムに選ばれた +部分集合になり、残りの `(limit..n]` には `[1..limit]` の範囲に含まれない要素が未定義の順序で格納される。 +limit の値は範囲 `[1..n]` 内でなければならない。この範囲外の値は、完全な `arrayShuffle` を実行することと同等である。 :::note この関数は定数をマテリアライズしません。 -`limit` の値は `[1..N]` の範囲である必要があります。この範囲外の値を指定した場合は、完全な [`arrayShuffle`](#arrayShuffle) を実行するのと同等の動作になります。 +`limit` の値は範囲 `[1..N]` 内でなければなりません。この範囲外の値は、完全な [`arrayShuffle`](#arrayShuffle) を実行することと同等です。 ::: **構文** @@ -2171,14 +2217,14 @@ arrayPartialShuffle(arr [, limit[, seed]]) **引数** * `arr` — シャッフルする配列。[`Array(T)`](/sql-reference/data-types/array) -* `seed` — 任意。乱数生成に使用するシード。指定しない場合はランダムな値が使用されます。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `limit` — 任意。要素の入れ替え回数の上限を `[1..N]` の範囲で指定します。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `seed` — 省略可能。乱数生成に使用されるシード。指定しない場合はランダムな値が使用されます。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `limit` — 省略可能。要素の入れ替え回数を `[1..N]` の範囲で制限する数値。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -要素が一部シャッフルされた配列。[`Array(T)`](/sql-reference/data-types/array) +要素が部分的にシャッフルされた配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **no_limit1** @@ -2220,7 +2266,7 @@ SELECT arrayPartialShuffle([1, 2, 3, 4], 2, 41) [3, 2, 1, 4] ``` -**materialize(マテリアライズ)** +**materialize** ```sql title=Query SELECT arrayPartialShuffle(materialize([1, 2, 3, 4]), 2, 42), arrayPartialShuffle([1, 2, 3], 2, 42) FROM numbers(10) @@ -2241,14 +2287,15 @@ SELECT arrayPartialShuffle(materialize([1, 2, 3, 4]), 2, 42), arrayPartialShuffl └──────────────────────────┴──────────────────────────┘ ``` + ## arrayPartialSort {#arrayPartialSort} 導入バージョン: v23.2 -この関数は `arraySort` と同じですが、部分的なソートを可能にする追加の引数 `limit` を受け取ります。 +この関数は `arraySort` と同じですが、部分的なソートを可能にする追加の引数 `limit` を取ります。 :::tip -ソートされた要素のみを保持するには `arrayResize` を使用してください。 +ソートされた要素だけを保持するには `arrayResize` を使用します。 ::: **構文** @@ -2261,12 +2308,13 @@ arrayPartialSort([f,] arr [, arr1, ... ,arrN], limit) * `f(arr[, arr1, ... ,arrN])` — 配列 `x` の要素に適用するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr` — ソート対象の配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr1, ... ,arrN` — `f` が複数の引数を受け取る場合の追加の N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -* `limit` — ソートを行う上限となるインデックス値。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr1, ... ,arrN` — `f` が複数の引数を受け取る場合の、追加の N 個の配列。[`Array(T)`](/sql-reference/data-types/array) +* `limit` — ソートを実行する上限となるインデックス値。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -元の配列と同じサイズの配列を返します。範囲 `[1..limit]` 内の要素は昇順にソートされ、残りの要素 `(limit..N]` の順序は未定義です。 +元の配列と同じサイズの配列を返し、範囲 `[1..limit]` 内の要素は昇順にソートされます。 +残りの要素 `(limit..N]` の順序は未定義です。 **使用例** @@ -2320,11 +2368,12 @@ SELECT arrayPartialSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res [2, 1, 0] ``` + ## arrayPopBack {#arrayPopBack} 導入バージョン: v1.1 -配列の末尾の要素を削除します。 +配列の末尾要素を削除します。 **構文** @@ -2334,13 +2383,13 @@ arrayPopBack(arr) **引数** -* `arr` — 最後の要素を削除する配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 最後の要素を削除する対象の配列。[`Array(T)`](/sql-reference/data-types/array) **返り値** -`arr` と同一だが、`arr` の最後の要素を含まない配列を返します。[`Array(T)`](/sql-reference/data-types/array) +`arr` と同一だが、最後の要素を除いた配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2352,11 +2401,12 @@ SELECT arrayPopBack([1, 2, 3]) AS res; [1, 2] ``` + ## arrayPopFront {#arrayPopFront} 導入バージョン: v1.1 -配列の先頭要素を削除します。 +配列から最初の要素を削除します。 **構文** @@ -2366,13 +2416,13 @@ arrayPopFront(arr) **引数** -* `arr` — 先頭要素を削除する対象となる配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 先頭の要素を削除する対象の配列。[`Array(T)`](/sql-reference/data-types/array) -**返される値** +**返り値** -`arr` と同一だが、`arr` の先頭要素を含まない配列を返します。[`Array(T)`](/sql-reference/data-types/array) +`arr` と同一だが、`arr` の先頭要素を含まない配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2384,13 +2434,14 @@ SELECT arrayPopFront([1, 2, 3]) AS res; [2, 3] ``` + ## arrayProduct {#arrayProduct} 導入: v21.1 -入力配列の要素の積を返します。 +入力配列内の要素の積を返す。 -ラムダ関数 `func` が指定されている場合は、そのラムダを適用した結果の要素の積を返します。 +ラムダ関数 `func` が指定された場合、ラムダの適用結果の要素の積を返す。 **構文** @@ -2400,17 +2451,17 @@ arrayProduct([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — 省略可能。ソース配列(`x`)および条件配列(`y`)の要素を処理するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) +* `func(x[, y1, ..., yN])` — 省略可能。ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — 処理するソース配列。[`Array(T)`](/sql-reference/data-types/array) * `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡すための N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -ソース配列の要素の積、またはラムダ関数が指定されている場合はその結果要素の積を返します。[`Float64`](/sql-reference/data-types/float) +ソース配列の要素の積、またはラムダ関数が指定された場合はラムダの結果要素の積を返す。[`Float64`](/sql-reference/data-types/float) **使用例** -**基本的な例** +**基本的な使用例** ```sql title=Query SELECT arrayProduct([1, 2, 3, 4]); @@ -2420,7 +2471,7 @@ SELECT arrayProduct([1, 2, 3, 4]); 24 ``` -**Lambda 関数での利用** +**Lambda 関数での使用方法** ```sql title=Query SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res; @@ -2430,6 +2481,7 @@ SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res; 16 ``` + ## arrayPushBack {#arrayPushBack} 導入バージョン: v1.1 @@ -2444,24 +2496,24 @@ arrayPushBack(arr, x) **引数** -* `arr` — 値 `x` を末尾に追加する配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 値 `x` を末尾に追加する対象の配列。[`Array(T)`](/sql-reference/data-types/array) * `x` — * 配列の末尾に追加する単一の値。[`Array(T)`](/sql-reference/data-types/array)。 :::note -* 数値の配列には数値のみ、文字列の配列には文字列のみを追加できます。 -* 数値を追加する場合、ClickHouse は配列のデータ型に合わせて `x` の型を自動的に設定します。 -* `NULL` を指定できます。この関数は配列に `NULL` 要素を追加し、配列要素の型を `Nullable` に変換します。 +* 数値の配列には数値のみ、文字列の配列には文字列のみ追加できます。 +* 数値を追加する場合、ClickHouse は配列のデータ型に合わせて自動的に `x` の型を設定します。 +* `NULL` を指定できます。関数は配列に `NULL` 要素を追加し、配列要素の型は `Nullable` に変換されます。 ClickHouse におけるデータ型の詳細は、[Data types](/sql-reference/data-types) を参照してください。 ::: **戻り値** -`arr` と同一で、配列の末尾に値 `x` が 1 つ追加された配列を返します。[`Array(T)`](/sql-reference/data-types/array) +`arr` と同じだが、配列の末尾に追加の値 `x` が 1 つ加わった配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2473,6 +2525,7 @@ SELECT arrayPushBack(['a'], 'b') AS res; ['a','b'] ``` + ## arrayPushFront {#arrayPushFront} 導入バージョン: v1.1 @@ -2487,23 +2540,23 @@ arrayPushFront(arr, x) **引数** -* `arr` — 値 `x` を末尾に追加する対象の配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `arr` — 値 `x` を先頭に追加する対象の配列。[`Array(T)`](/sql-reference/data-types/array)。 * `x` — 配列の先頭に追加する単一の値。[`Array(T)`](/sql-reference/data-types/array)。 :::note -* 数値配列には数値のみ、文字列配列には文字列のみ追加できます。 -* 数値を追加する場合、ClickHouse は配列のデータ型に合わせて `x` の型を自動的に設定します。 -* `NULL` を指定できます。この関数は配列に `NULL` 要素を追加し、配列要素の型を `Nullable` に変換します。 +* 数値配列には数値のみ、文字列配列には文字列のみを追加できます。 +* 数値を追加する場合、ClickHouse は自動的に `x` の型を配列のデータ型に合わせます。 +* `NULL` を指定できます。この関数は配列に `NULL` 要素を追加し、配列要素の型は `Nullable` に変換されます。 -ClickHouse のデータ型の詳細については、[Data types](/sql-reference/data-types) を参照してください。 +ClickHouse におけるデータ型の詳細については、[Data types](/sql-reference/data-types) を参照してください。 ::: -**戻り値** +**返り値** -`arr` と同一ですが、配列の先頭に値 `x` が 1 つ追加された配列 [`Array(T)`](/sql-reference/data-types/array) を返します。 +`arr` と同一だが、配列の先頭に追加の値 `x` を持つ配列 [`Array(T)`](/sql-reference/data-types/array) を返す。 -**例** +**使用例** **使用例** @@ -2515,16 +2568,17 @@ SELECT arrayPushFront(['b'], 'a') AS res; ['a','b'] ``` + ## arrayROCAUC {#arrayROCAUC} 導入バージョン: v20.4 -受信者操作特性(ROC)曲線の下の面積を計算します。 -ROC 曲線は、すべての閾値において真陽性率 (TPR) を y 軸に、偽陽性率 (FPR) を x 軸にプロットすることで作成されます。 -得られる値は 0 から 1 の範囲をとり、値が大きいほどモデルの性能が高いことを示します。 +受信者操作特性 (ROC) 曲線下面積を計算します。 +ROC 曲線は、すべてのしきい値に対して、縦軸に True Positive Rate (TPR)、横軸に False Positive Rate (FPR) をプロットすることで作成されます。 +結果の値は 0 から 1 の範囲となり、値が大きいほどモデルの性能が高いことを示します。 -ROC AUC(単に AUC とも呼ばれます)は、機械学習における評価指標の一つです。 -詳細は [こちら](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[こちら](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)、および [こちら](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve) を参照してください。 +ROC AUC(単に AUC と呼ばれることもあります)は、機械学習における指標の一つです。 +詳細については [こちら](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[こちら](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)、および [こちら](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve) を参照してください。 **構文** @@ -2532,34 +2586,34 @@ ROC AUC(単に AUC とも呼ばれます)は、機械学習における評 arrayROCAUC(scores, labels[, scale[, partial_offsets]]) ``` -**別名**: `arrayAUC` +**エイリアス**: `arrayAUC` **引数** * `scores` — 予測モデルが出力するスコア。[`Array((U)Int*)`](/sql-reference/data-types/array) または [`Array(Float*)`](/sql-reference/data-types/array) -* `labels` — サンプルのラベル。通常、正例サンプルには 1、負例サンプルには 0 を使用します。[`Array((U)Int*)`](/sql-reference/data-types/array) または [`Enum`](/sql-reference/data-types/enum) -* `scale` — 省略可能。正規化された面積を返すかどうかを決定します。false の場合は、代わりに TP(true positives)× FP(false positives)曲線の下の面積を返します。デフォルト値: true。[`Bool`](/sql-reference/data-types/boolean) +* `labels` — サンプルのラベル。通常、正例には 1、負例には 0 を使用します。[`Array((U)Int*)`](/sql-reference/data-types/array) または [`Enum`](/sql-reference/data-types/enum) +* `scale` — 省略可。正規化された面積を返すかどうかを決定します。false の場合、TP(true positives)× FP(false positives)曲線下の面積を返す。デフォルト値: true。[`Bool`](/sql-reference/data-types/boolean) * `partial_offsets` — -* 全体の AUC ではなく、ROC 曲線の一部の面積(ROC 空間における縦方向の帯に相当)を計算するための、4 つの非負整数からなる配列。このオプションは、ROC AUC の分散計算に有用です。配列には次の要素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`, `total_negatives`] を含める必要があります。非負の [整数](../data-types/int-uint.md) の [Array](/sql-reference/data-types/array)。省略可能。 - * `higher_partitions_tp`: より高いスコアのパーティションに含まれる正例ラベルの数。 - * `higher_partitions_fp`: より高いスコアのパーティションに含まれる負例ラベルの数。 - * `total_positives`: データセット全体に含まれる正例サンプルの総数。 - * `total_negatives`: データセット全体に含まれる負例サンプルの総数。 +* ROC 曲線全体の AUC ではなく、ROC 曲線下の部分的な面積(ROC 空間の垂直バンドに相当)を計算するための、非負整数 4 要素からなる配列。このオプションは ROC AUC の分散計算に有用です。配列には次の要素を含める必要があります [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`, `total_negatives`]。非負の [整数](../data-types/int-uint.md)の [Array](/sql-reference/data-types/array)。省略可。 + * `higher_partitions_tp`: スコアがより高いパーティションに含まれる正例ラベルの数。 + * `higher_partitions_fp`: スコアがより高いパーティションに含まれる負例ラベルの数。 + * `total_positives`: データセット全体における正例サンプルの総数。 + * `total_negatives`: データセット全体における負例サンプルの総数。 :::note -`arr_partial_offsets` が使用される場合、`arr_scores` と `arr_labels` はデータセット全体の一部のみを含み、スコアのある区間に対応している必要があります。 -データセットは連続したパーティションに分割され、それぞれのパーティションはスコアが特定の範囲に入るデータの部分集合を含むようにします。 -例: +`arr_partial_offsets` を使用する場合、`arr_scores` と `arr_labels` は、スコアのある区間に対応する、データセット全体の 1 つのパーティションだけを表す必要があります。 +データセットは連続したパーティションに分割され、それぞれのパーティションには、スコアが特定の範囲に入るデータの部分集合を含める必要があります。 +例えば: -* あるパーティションには [0, 0.5) の範囲のすべてのスコアを含めることができます。 -* 別のパーティションには [0.5, 1.0] の範囲のスコアを含めることができます。 +* あるパーティションには、[0, 0.5) の範囲にあるすべてのスコアを含めることができます。 +* 別のパーティションには [0.5, 1.0] のスコアを含めることができます。 ::: -**戻り値** +**返り値** -受信者動作特性 (ROC) 曲線の下の面積を返します。[`Float64`](/sql-reference/data-types/float) +受信者動作特性(ROC)曲線下の面積を返す。[`Float64`](/sql-reference/data-types/float) -**例** +**使用例** **使用例** @@ -2571,11 +2625,12 @@ SELECT arrayROCAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); 0.75 ``` + ## arrayRandomSample {#arrayRandomSample} -導入バージョン: v23.10 +導入: v23.10 -入力配列からランダムに選んだ `samples` 個の要素からなる部分集合を返します。`samples` が入力配列のサイズを超える場合、サンプル数は配列サイズに制限されます。つまり、すべての配列要素が返されますが、その順序は保証されません。この関数はフラットな配列とネストされた配列の両方を処理できます。 +入力配列から、`samples` で指定した数だけランダムに抽出した要素からなる部分集合を返します。`samples` が入力配列のサイズを超える場合、サンプルサイズは配列のサイズに制限されます。つまり、すべての配列要素を返すものの、その順序は保証されません。この関数は、フラットな配列とネストされた配列の両方を処理できます。 **構文** @@ -2585,14 +2640,14 @@ arrayRandomSample(arr, samples) **引数** -* `arr` — 要素をサンプリングするための入力配列または多次元配列。[`Array(T)`](/sql-reference/data-types/array) -* `samples` — ランダムサンプルに含める要素数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — 要素をサンプリングする対象の入力配列または多次元配列。[`Array(T)`](/sql-reference/data-types/array) +* `samples` — ランダムサンプリングで取得する要素数。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** 入力配列からランダムにサンプリングされた要素を含む配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2604,7 +2659,7 @@ SELECT arrayRandomSample(['apple', 'banana', 'cherry', 'date'], 2) as res; ['cherry','apple'] ``` -**多次元配列の使用** +**多次元配列を使用する** ```sql title=Query SELECT arrayRandomSample([[1, 2], [3, 4], [5, 6]], 2) as res; @@ -2614,13 +2669,14 @@ SELECT arrayRandomSample([[1, 2], [3, 4], [5, 6]], 2) as res; [[3,4],[5,6]] ``` + ## arrayReduce {#arrayReduce} 導入バージョン: v1.1 -配列要素に集約関数を適用し、その結果を返します。 -集約関数の名前は、シングルクォートで囲んだ文字列として渡します(例: `'max'`, `'sum'`)。 -パラメトリックな集約関数を使用する場合は、関数名の後ろに括弧でパラメータを指定します(例: `'uniqUpTo(6)'`)。 +配列要素に対して集約関数を適用し、その結果を返す。 +集約関数の名前は、シングルクォートで囲んだ文字列として渡す。例: `'max'`、`'sum'`。 +パラメータ付き集約関数を使用する場合、パラメータは関数名の後ろのかっこ内に指定する。例: `'uniqUpTo(6)'`。 **構文** @@ -2630,12 +2686,12 @@ arrayReduce(agg_f, arr1 [, arr2, ... , arrN)]) **引数** -* `agg_f` — 定数である必要がある集計関数の名前。[`String`](/sql-reference/data-types/string) +* `agg_f` — 定数である必要がある集約関数の名前。[`String`](/sql-reference/data-types/string) * `arr1 [, arr2, ... , arrN)]` — `agg_f` の引数に対応する N 個の配列。[`Array(T)`](/sql-reference/data-types/array) **返り値** -集計関数の結果を返します。 +集約関数の結果を返す **例** @@ -2651,10 +2707,10 @@ SELECT arrayReduce('max', [1, 2, 3]); └───────────────────────────────┘ ``` -**複数引数を取る集約関数の例** +**複数引数の集約関数の例** ```sql title=Query ---集約関数が複数の引数を取る場合、この関数は同じサイズの複数の配列に適用する必要があります。 +--If an aggregate function takes multiple arguments, then this function must be applied to multiple arrays of the same size. SELECT arrayReduce('maxIf', [3, 5], [1, 0]); ``` @@ -2677,12 +2733,13 @@ SELECT arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); └─────────────────────────────────────────────────────────────┘ ``` + ## arrayReduceInRanges {#arrayReduceInRanges} 導入バージョン: v20.4 -指定された各範囲の配列要素に集約関数を適用し、その範囲ごとの結果を要素とする配列を返します。 -この関数は、`arrayReduce(agg_func, arraySlice(arr1, index, length), ...)` を複数回個別に実行した場合と同じ結果を返します。 +指定された範囲の配列要素に集約関数を適用し、各範囲に対応する結果を含む配列を返す。 +この関数は、`arrayReduce(agg_func, arraySlice(arr1, index, length), ...)` を複数回実行した場合と同じ結果を返す。 **構文** @@ -2692,15 +2749,15 @@ arrayReduceInRanges(agg_f, ranges, arr1 [, arr2, ... ,arrN)]) **引数** -* `agg_f` — 使用する集約関数の名前。[`String`](/sql-reference/data-types/string) -* `ranges` — 集約を行う範囲。`(i, r)` 形式のタプルからなる配列で、`i` は集約を開始するインデックス、`r` は集約を行う範囲を表す。[`Array(T)`](/sql-reference/data-types/array) または [`Tuple(T)`](/sql-reference/data-types/tuple) -* `arr1 [, arr2, ... ,arrN)]` — 集約関数の引数として渡す N 個の配列。[`Array(T)`](/sql-reference/data-types/array) +* `agg_f` — 使用する集約関数の名前。 [`String`](/sql-reference/data-types/string) +* `ranges` — 集約を行う範囲。タプル `(i, r)` の配列で、開始位置となるインデックス `i` と、集約を行う範囲 `r` を含みます。 [`Array(T)`](/sql-reference/data-types/array) または [`Tuple(T)`](/sql-reference/data-types/tuple) +* `arr1 [, arr2, ... ,arrN)]` — 集約関数への引数となる N 個の配列。 [`Array(T)`](/sql-reference/data-types/array) **戻り値** -指定された各範囲に対して集約関数を適用した結果を含む配列を返す。[`Array(T)`](/sql-reference/data-types/array) +指定された範囲に対して集約関数を適用した結果を含む配列を返す。 [`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2718,12 +2775,13 @@ SELECT arrayReduceInRanges( └─────────────────────────────┘ ``` + ## arrayRemove {#arrayRemove} -導入バージョン: v25.11 +導入: v25.11 配列から、指定した値と等しいすべての要素を削除します。 -NULL 同士は等しいものとして扱われます。 +NULL も等しいものとして扱われます。 **構文** @@ -2737,13 +2795,13 @@ arrayRemove(arr, elem) * `arr` — Array(T) - `elem` — T -**戻り値** +**返り値** -元の配列 [`Array(T)`](/sql-reference/data-types/array) の部分集合を返します。 +元の配列 [`Array(T)`](/sql-reference/data-types/array) の部分集合を返す。 -**例** +**使用例** -**例 1** +**使用例 1** ```sql title=Query SELECT arrayRemove([1, 2, 2, 3], 2) @@ -2763,6 +2821,7 @@ SELECT arrayRemove(['a', NULL, 'b', NULL], NULL) ['a', 'b'] ``` + ## arrayResize {#arrayResize} 導入バージョン: v1.1 @@ -2777,20 +2836,20 @@ arrayResize(arr, size[, extender]) **引数** -* `arr` — サイズ変更する配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — リサイズ対象の配列。[`Array(T)`](/sql-reference/data-types/array) * `size` — * 配列の新しい長さ。 - `size` が元の配列の長さより小さい場合、配列は末尾から切り詰められます。 - `size` が元の配列の長さより大きい場合、配列は末尾に `extender` の値、または配列要素のデータ型のデフォルト値を追加して拡張されます。 + `size` が配列の元のサイズより小さい場合、配列は右側から切り詰められます。 + `size` が配列の初期サイズより大きい場合、配列は右側に `extender` の値または配列要素のデータ型のデフォルト値で拡張されます。 * `extender` — 配列を拡張する際に使用する値。`NULL` を指定できます。 -**返される値** +**戻り値** 長さが `size` の配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** -**例 1** +**使用例 1** ```sql title=Query SELECT arrayResize([1], 3); @@ -2810,14 +2869,15 @@ SELECT arrayResize([1], 3, NULL); [1,NULL,NULL] ``` + ## arrayReverse {#arrayReverse} -導入: v1.1 +導入バージョン: v1.1 -指定された配列の要素の順序を反転します。 +指定された配列の要素の並び順を逆転します。 :::note -関数 `reverse(arr)` も同じ機能を持ちますが、配列だけでなく他のデータ型にも利用できます。 +関数 `reverse(arr)` も同じ機能を提供しますが、配列だけでなく他のデータ型にも使用できます。 ::: **構文** @@ -2828,13 +2888,13 @@ arrayReverse(arr) **引数** -* `arr` — 逆順に並べ替える配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 逆順にする配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -元の配列と同じサイズで、要素を逆順に並べた配列を返します。[`Array(T)`](/sql-reference/data-types/array) +元の配列と同じサイズで、要素を逆順に並べた配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2846,11 +2906,12 @@ SELECT arrayReverse([1, 2, 3]) [3,2,1] ``` + ## arrayReverseFill {#arrayReverseFill} 導入バージョン: v20.1 -`arrayReverseFill` 関数は、ソース配列を最後の要素から最初の要素に向かって順に処理し、ソース配列と条件配列の要素を用いて各位置でラムダ式による条件を評価します。位置 i において条件が false と評価された場合、その要素は、配列の現在の状態における位置 i+1 の要素で置き換えられます。最後の要素は、どのような条件であっても常に保持されます。 +`arrayReverseFill` 関数は、ソース配列を最後の要素から先頭に向かって順に処理し、ソース配列および条件配列の要素を用いて各位置でラムダ条件を評価します。位置 i で条件が false と評価された場合、その要素は、配列の現在の状態における位置 i+1 の要素で置き換えられます。最後の要素は、条件に関わらず常に保持されます。 **構文** @@ -2860,17 +2921,17 @@ arrayReverseFill(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素に対して処理を行うラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 処理対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -ラムダ関数の結果でソース配列の要素を置き換えた配列を返します。[`Array(T)`](/sql-reference/data-types/array) +ソース配列の要素をラムダの結果に置き換えた配列を返す。[`Array(T)`](/sql-reference/data-types/array) **使用例** -**単一配列の例** +**単一の配列を用いた使用例** ```sql title=Query SELECT arrayReverseFill(x -> not isNull(x), [1, null, 2, null]) AS res @@ -2880,7 +2941,7 @@ SELECT arrayReverseFill(x -> not isNull(x), [1, null, 2, null]) AS res [1, 2, 2, NULL] ``` -**2つの配列の例** +**2つの配列を使用した例** ```sql title=Query SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res; @@ -2890,15 +2951,16 @@ SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [5, 6, 6, 2] ``` + ## arrayReverseSort {#arrayReverseSort} 導入バージョン: v1.1 配列の要素を降順にソートします。 -関数 `f` が指定された場合、指定された配列は、その要素に関数を適用した結果に従ってソートされ、その後、ソート済み配列が反転されます。 -`f` が複数の引数を受け取る場合、`arrayReverseSort` 関数には複数の配列が渡され、`f` の各引数がそれぞれの配列に対応します。 +関数 `f` が指定された場合、指定された配列は、各要素に関数を適用した結果に従ってソートされ、その後、ソートされた配列が逆順にされます。 +`f` が複数の引数を受け取る場合、`arrayReverseSort` 関数には複数の配列が渡され、それぞれが `func` の各引数に対応します。 -ソート対象の配列に `-Inf`、`NULL`、`NaN`、`Inf` が含まれている場合、次の順序でソートされます。 +ソート対象の配列に `-Inf`、`NULL`、`NaN`、`Inf` が含まれている場合、それらは次の順序でソートされます: 1. `-Inf` 2. `Inf` @@ -2915,17 +2977,18 @@ arrayReverseSort([f,] arr [, arr1, ... ,arrN) **引数** -* `f(y1[, y2 ... yN])` — 配列 `x` の要素に適用するラムダ関数。 -* `arr` — ソート対象の配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr1, ..., yN` — 任意。`f` が複数の引数を受け取る場合に指定する、追加の N 個の配列。 +* `f(y1[, y2 ... yN])` — 配列 `x` の各要素に適用するラムダ関数。 -**返される値** +- `arr` — ソート対象の配列。[`Array(T)`](/sql-reference/data-types/array) +- `arr1, ..., yN` — 省略可能。`f` が複数の引数を受け取る場合の、追加の N 個の配列。 -ラムダ関数が指定されていない場合は、配列 `x` を降順にソートしたものを返します。ラムダ関数が指定されている場合は、そのラムダ関数のロジックに従って配列をソートし、その結果を反転した配列を返します。[`Array(T)`](/sql-reference/data-types/array)。 +**返り値** -**例** +ラムダ関数が指定されていない場合は配列 `x` を降順にソートして返し、指定されている場合は、与えられたラムダ関数のロジックに従ってソートした配列を逆順にして返します。[`Array(T)`](/sql-reference/data-types/array)。 -**例 1** +**使用例** + +**使用例 1** ```sql title=Query SELECT arrayReverseSort((x, y) -> y, [4, 3, 5], ['a', 'b', 'c']) AS res; @@ -2945,11 +3008,12 @@ SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res; [4,3,5] ``` + ## arrayReverseSplit {#arrayReverseSplit} -導入バージョン: v20.1 +導入: v20.1 -元の配列を複数の配列に分割します。`func(x[, y1, ..., yN])` が 0 以外の値を返したとき、その要素の右側で配列を分割します。最後の要素の後では配列は分割されません。 +元の配列を複数の配列に分割します。`func(x[, y1, ..., yN])` がゼロ以外の値を返すとき、その要素の右側で配列が分割されます。最後の要素の後では配列は分割されません。 **構文** @@ -2959,15 +3023,15 @@ arrayReverseSplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_ar **引数** -* `func(x[, y1, ..., yN])` — 入力配列 (`x`) および条件配列 (`y`) の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — 処理対象となる入力配列。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `func(x[, y1, ..., yN])` — ソース配列 (`x`) と条件配列 (`y`) の要素に対して動作するラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — 処理対象となるソース配列。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `[, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) **返り値** -配列の配列を返します。[`Array(Array(T))`](/sql-reference/data-types/array) +配列の配列を返す。[`Array(Array(T))`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -2979,11 +3043,12 @@ SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res [[1], [2, 3, 4], [5]] ``` + ## arrayRotateLeft {#arrayRotateLeft} 導入バージョン: v23.8 -指定された要素数だけ配列を左方向に回転させます。`n` が負の値の場合は、その絶対値だけ右方向に回転させるものとして解釈されます。 +指定した要素数だけ配列を左方向に回転させます。`n` が負の値の場合は、その絶対値だけ右方向に回転させたものとして扱われます。 **構文** @@ -2993,13 +3058,14 @@ arrayRotateLeft(arr, n) **引数** -* `arr` — 要素を回転させる配列。[`Array(T)`](/sql-reference/data-types/array)。 - `n` — 回転させる要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。 +* `arr` — 要素を回転させる対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `n` — 回転させる要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -指定された要素数だけ左に回転した配列。[`Array(T)`](/sql-reference/data-types/array) +指定した要素数だけ左に回転された配列。[`Array(T)`](/sql-reference/data-types/array)。 -**例** +**使用例** **使用例** @@ -3011,7 +3077,7 @@ SELECT arrayRotateLeft([1,2,3,4,5,6], 2) as res; [3,4,5,6,1,2] ``` -**n が負の値** +**n が負の場合** ```sql title=Query SELECT arrayRotateLeft([1,2,3,4,5,6], -2) as res; @@ -3021,11 +3087,12 @@ SELECT arrayRotateLeft([1,2,3,4,5,6], -2) as res; [5,6,1,2,3,4] ``` + ## arrayRotateRight {#arrayRotateRight} 導入バージョン: v23.8 -指定された要素数だけ配列を右方向に回転します。`n` が負の値の場合は、その絶対値だけ左方向に回転したものとして扱われます。 +指定した要素数分だけ配列を右方向へ回転させます。`n` が負の値の場合は、その絶対値分だけ左方向へ回転させたものとして扱われます。 **構文** @@ -3035,13 +3102,14 @@ arrayRotateRight(arr, n) **引数** -* `arr` — 要素を回転させる対象となる配列。[`Array(T)`](/sql-reference/data-types/array)。 - `n` — 回転させる要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。 +* `arr` — 要素を回転させる対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `n` — 回転させる要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -指定された要素数だけ右に回転した配列。[`Array(T)`](/sql-reference/data-types/array) +指定された要素数だけ右方向に回転された配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3053,7 +3121,7 @@ SELECT arrayRotateRight([1,2,3,4,5,6], 2) as res; [5,6,1,2,3,4] ``` -**n が負の場合** +**n が負の値の場合** ```sql title=Query SELECT arrayRotateRight([1,2,3,4,5,6], -2) as res; @@ -3063,13 +3131,14 @@ SELECT arrayRotateRight([1,2,3,4,5,6], -2) as res; [3,4,5,6,1,2] ``` + ## arrayShiftLeft {#arrayShiftLeft} 導入バージョン: v23.8 配列を、指定した要素数だけ左方向にシフトします。 新しい要素には、指定された引数、または配列要素型のデフォルト値が設定されます。 -要素数が負の値の場合は、配列は右方向にシフトされます。 +要素数が負の場合は、配列は右方向にシフトされます。 **構文** @@ -3079,16 +3148,13 @@ arrayShiftLeft(arr, n[, default]) **引数** -* `arr` — 要素をシフトする対象の配列。[`Array(T)`](/sql-reference/data-types/array) - -- `n` — シフトする要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) -- `default` — 省略可能。新しい要素に使用するデフォルト値。 +* `arr` — 要素をシフトする対象の配列。[`Array(T)`](/sql-reference/data-types/array) - `n` — シフトする要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) - `default` — 省略可能。新しい要素のデフォルト値。 **戻り値** -指定された要素数だけ左方向にシフトされた配列 [`Array(T)`](/sql-reference/data-types/array) +指定された要素数だけ左にシフトされた配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3100,7 +3166,7 @@ SELECT arrayShiftLeft([1,2,3,4,5,6], 2) as res; [3,4,5,6,0,0] ``` -**n が負の値の場合** +**n が負の場合** ```sql title=Query SELECT arrayShiftLeft([1,2,3,4,5,6], -2) as res; @@ -3110,7 +3176,7 @@ SELECT arrayShiftLeft([1,2,3,4,5,6], -2) as res; [0,0,1,2,3,4] ``` -**デフォルト値を使用する** +**デフォルト値の使用** ```sql title=Query SELECT arrayShiftLeft([1,2,3,4,5,6], 2, 42) as res; @@ -3120,13 +3186,14 @@ SELECT arrayShiftLeft([1,2,3,4,5,6], 2, 42) as res; [3,4,5,6,42,42] ``` + ## arrayShiftRight {#arrayShiftRight} -導入バージョン: v23.8 +導入: v23.8 -配列を、指定した要素数だけ右にシフトします。 -新しい要素は、指定した引数または配列要素型のデフォルト値で埋められます。 -要素数が負の値の場合、配列は左にシフトされます。 +配列を指定された要素数だけ右方向にシフトします。 +新たに生じた要素には、指定された引数、または配列要素型のデフォルト値が設定されます。 +要素数が負の場合は、配列は左方向にシフトされます。 **構文** @@ -3138,13 +3205,13 @@ arrayShiftRight(arr, n[, default]) * `arr` — 要素をシフトする配列。[`Array(T)`](/sql-reference/data-types/array) * `n` — シフトする要素数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) -* `default` — 任意。新しく追加される要素のデフォルト値。 +* `default` — 省略可能。新しい要素のデフォルト値。 **戻り値** 指定した要素数だけ右にシフトされた配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3156,7 +3223,7 @@ SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2) as res; [0, 0, 1, 2, 3, 4] ``` -**n の負の値** +**n が負の値の場合** ```sql title=Query SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], -2) as res; @@ -3166,7 +3233,7 @@ SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], -2) as res; [3, 4, 5, 6, 0, 0] ``` -**デフォルト値を使用する** +**デフォルト値の使用** ```sql title=Query SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2, 42) as res; @@ -3176,11 +3243,12 @@ SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2, 42) as res; [42, 42, 1, 2, 3, 4] ``` + ## arrayShingles {#arrayShingles} 導入バージョン: v24.1 -入力配列から、指定された長さの連続した部分配列(文字列に対する n-gram に相当)である shingle の配列を生成します。 +シングル(文字列における n-gram に類似したもの)からなる配列を生成します。つまり、入力配列から指定した長さの連続した部分配列を生成します。 **構文** @@ -3190,14 +3258,14 @@ arrayShingles(arr, l) **引数** -* `arr` — シングル (shingle) 配列を生成する対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — シングルの配列を生成する対象となる配列。[`Array(T)`](/sql-reference/data-types/array) * `l` — 各シングルの長さ。[`(U)Int*`](/sql-reference/data-types/int-uint) **返り値** -生成されたシングル (shingle) の配列。[`Array(T)`](/sql-reference/data-types/array) +生成されたシングルの配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3209,12 +3277,13 @@ SELECT arrayShingles([1, 2, 3, 4], 3) as res; [[1, 2, 3], [2, 3, 4]] ``` + ## arrayShuffle {#arrayShuffle} 導入バージョン: v23.2 -元の配列と同じサイズで、要素をシャッフルした順序で含む配列を返します。 -要素は、その要素のあらゆる順列が等しい確率で現れるように並べ替えられます。 +元の配列と同じサイズで、要素がシャッフルされた順序で含まれる配列を返す。 +要素は、それらの要素の取り得るすべての順列が同じ確率で現れるように並べ替えられる。 :::note この関数は定数をマテリアライズしません。 @@ -3231,13 +3300,13 @@ arrayShuffle(arr [, seed]) * `arr` — シャッフルする配列。[`Array(T)`](/sql-reference/data-types/array) * `seed (optional)` — 省略可。乱数生成に使用するシード値。指定しない場合はランダムなシード値が使用されます。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -要素がシャッフルされた配列 [`Array(T)`](/sql-reference/data-types/array) +要素がシャッフルされた配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** -**シードなしの例(結果は非決定的)** +**シードなしの使用例(結果は安定しない)** ```sql title=Query SELECT arrayShuffle([1, 2, 3, 4]); @@ -3247,7 +3316,7 @@ SELECT arrayShuffle([1, 2, 3, 4]); [1,4,2,3] ``` -**シード未指定時の例(安定した結果)** +**シードなしの例(安定した結果)** ```sql title=Query SELECT arrayShuffle([1, 2, 3, 4], 41); @@ -3257,11 +3326,12 @@ SELECT arrayShuffle([1, 2, 3, 4], 41); [3,2,1,4] ``` + ## arraySimilarity {#arraySimilarity} 導入バージョン: v25.4 -重み付きレーベンシュタイン距離に基づいて、2つの配列の類似度を `0` から `1` の範囲で計算します。 +重み付きレーベンシュタイン距離に基づき、2 つの配列間の類似度を `0` から `1` の範囲で計算します。 **構文** @@ -3271,16 +3341,16 @@ arraySimilarity(from, to, from_weights, to_weights) **引数** -* `from` — 1 つ目の配列 [`Array(T)`](/sql-reference/data-types/array) -* `to` — 2 つ目の配列 [`Array(T)`](/sql-reference/data-types/array) -* `from_weights` — 1 つ目の配列に対する重み [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) -* `to_weights` — 2 つ目の配列に対する重み [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `from` — 1 番目の配列 [`Array(T)`](/sql-reference/data-types/array) +* `to` — 2 番目の配列 [`Array(T)`](/sql-reference/data-types/array) +* `from_weights` — 1 番目の配列の重み。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `to_weights` — 2 番目の配列の重み。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -加重レーベンシュタイン距離に基づいて、2 つの配列間の類似度(`0` から `1` の範囲)を返します。[`Float64`](/sql-reference/data-types/float) +重み付きレーベンシュタイン距離に基づき、2 つの配列間の類似度を `0` から `1` の間の値として返します。[`Float64`](/sql-reference/data-types/float) -**例** +**使用例** **使用例** @@ -3292,11 +3362,12 @@ SELECT arraySimilarity(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 2, 3], [3.0, 4, 5 0.2222222222222222 ``` + ## arraySlice {#arraySlice} -導入バージョン: v1.1 +導入: v1.1 -`NULL` 要素を含む配列のスライスを返します。 +`NULL` 要素も含めて、配列の一部(スライス)を返す。 **構文** @@ -3306,15 +3377,15 @@ arraySlice(arr, offset [, length]) **引数** -* `arr` — スライス対象の配列。[`Array(T)`](/sql-reference/data-types/array) -* `offset` — 配列の端からのオフセット。正の値は左側からのオフセット、負の値は右側からのオフセットを表します。配列要素の番号付けは `1` から始まります。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `length` — 取得するスライスの長さ。負の値を指定した場合、関数は `[offset, array_length - length]` の範囲のスライス(末尾側を `length` 分だけ除いたスライス)を返します。値を省略した場合、関数は `[offset, 配列の終端]` のスライスを返します。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — スライスする配列。[`Array(T)`](/sql-reference/data-types/array) +* `offset` — 配列の端からのオフセット。正の値は左側からのオフセット、負の値は右側からのオフセットを示します。配列要素の番号付けは `1` から始まります。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `length` — 必要なスライスの長さ。負の値を指定した場合、関数は開区間のスライス `[offset, array_length - length]` を返します。値を省略した場合、関数はスライス `[offset, the_end_of_array]` を返します。[`(U)Int*`](/sql-reference/data-types/int-uint) **返り値** -指定された `offset` から `length` 要素分の配列スライスを返します。[`Array(T)`](/sql-reference/data-types/array) +指定された `offset` から `length` 要素を含む配列のスライスを返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3326,15 +3397,16 @@ SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res; [2, NULL, 4] ``` + ## arraySort {#arraySort} 導入バージョン: v1.1 -指定された配列の要素を昇順でソートします。 -ラムダ関数 `f` が指定されている場合、ソート順は配列の各要素にラムダを適用した結果によって決定されます。 -ラムダが複数の引数を受け取る場合、`arraySort` 関数には複数の配列が渡され、`f` の各引数はそれぞれの配列に対応します。 +指定された配列の要素を昇順に並べ替えます。 +ラムダ関数 `f` が指定されている場合、ソート順は、配列の各要素にそのラムダを適用した結果によって決まります。 +ラムダが複数の引数を受け取る場合、`arraySort` 関数には複数の配列が渡され、それぞれが `f` の引数に対応します。 -ソート対象の配列に `-Inf`、`NULL`、`NaN`、`Inf` が含まれる場合、それらは次の順序でソートされます: +ソート対象の配列に `-Inf`、`NULL`、`NaN`、`Inf` が含まれる場合、それらは次の順序で並べ替えられます。 1. `-Inf` 2. `Inf` @@ -3351,15 +3423,15 @@ arraySort([f,] arr [, arr1, ... ,arrN]) **引数** -* `f(y1[, y2 ... yN])` — 配列 `x` の要素に適用するラムダ関数。 - `arr` — ソート対象の配列。[`Array(T)`](/sql-reference/data-types/array) - `arr1, ..., yN` — 省略可能。`f` が複数の引数を受け取る場合に指定する、追加の N 個の配列。 +* `f(y1[, y2 ... yN])` — 配列 `x` の要素に適用する Lambda 関数。 - `arr` — ソート対象の配列。[`Array(T)`](/sql-reference/data-types/array) - `arr1, ..., yN` — 省略可能。`f` が複数の引数を受け取る場合の追加の N 個の配列。 **返り値** -ラムダ関数が指定されていない場合は、配列 `arr` を昇順にソートして返します。指定されている場合は、そのラムダ関数のロジックに従ってソートされた配列を返します。[`Array(T)`](/sql-reference/data-types/array)。 +Lambda 関数が指定されていない場合は、配列 `arr` を昇順にソートした配列を返し、指定されている場合は、指定された Lambda 関数のロジックに従ってソートされた配列を返す。[`Array(T)`](/sql-reference/data-types/array)。 -**例** +**使用例** -**例 1** +**使用例 1** ```sql title=Query SELECT arraySort([1, 3, 3, 0]); @@ -3389,11 +3461,12 @@ SELECT arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]); [-inf,-4,1,2,3,inf,nan,nan,NULL,NULL] ``` + ## arraySplit {#arraySplit} 導入バージョン: v20.1 -入力配列を複数の配列に分割します。`func(x [, y1, ..., yN])` がゼロ以外を返した場合、その要素の左側で配列が分割されます。最初の要素の前では配列は分割されません。 +元の配列を複数の配列に分割します。`func(x [, y1, ..., yN])` がゼロ以外の値を返す場合、その要素の左側で配列が分割されます。最初の要素の前では配列は分割されません。 **構文** @@ -3403,13 +3476,13 @@ arraySplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — ソース配列 (`x`) および条件配列 (`y`) の要素を処理するラムダ関数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 分割対象のソース配列。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を渡すための N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — ソース配列 `x` と条件配列 `y` の要素に対して処理を行う Lambda 関数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source_arr` — 分割対象となるソース配列。[`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1_arr, ... , condN_arr]` — 省略可能。Lambda 関数に追加の引数を提供する N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array)。 -**返される値** +**返り値** -配列の配列を返します。[`Array(Array(T))`](/sql-reference/data-types/array) +配列の配列 [`Array(Array(T))`](/sql-reference/data-types/array) を返す。 -**例** +**使用例** **使用例** @@ -3421,13 +3494,14 @@ SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res [[1, 2, 3], [4, 5]] ``` + ## arraySum {#arraySum} 導入バージョン: v21.1 -入力配列内の要素の合計を返します。 +ソース配列内の要素の合計を返す。 -ラムダ関数 `func` が指定された場合は、そのラムダを各要素に適用した結果の合計を返します。 +ラムダ関数 `func` が指定された場合は、そのラムダの結果の要素の合計を返す。 **構文** @@ -3437,17 +3511,17 @@ arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **引数** -* `func(x[, y1, ..., yN])` — 省略可。ソース配列 (`x`) および条件配列 (`y`) の要素に適用されるラムダ関数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — 処理対象のソース配列。[`Array(T)`](/sql-reference/data-types/array) -* `, cond1_arr, ... , condN_arr]` — 省略可。ラムダ関数に追加の引数を渡すための N 個の条件配列。[`Array(T)`](/sql-reference/data-types/array) +* `func(x[, y1, ..., yN])` — 省略可能。ソース配列(`x`)および条件配列(`y1, ..., yN`)の要素に対して処理を行うラムダ関数。 [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — 処理対象となるソース配列。 [`Array(T)`](/sql-reference/data-types/array) +* `, cond1_arr, ... , condN_arr]` — 省略可能。ラムダ関数に追加の引数を渡す N 個の条件配列。 [`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返される値** -ソース配列内の要素の合計、またはラムダ関数が指定されている場合は、その結果要素の合計値を返します。 +ソース配列内の要素の合計、またはラムダ関数が指定されている場合は、その結果要素の合計を返す。 -**使用例** +**例** -**基本的な例** +**基本的な使用例** ```sql title=Query SELECT arraySum([1, 2, 3, 4]); @@ -3457,7 +3531,7 @@ SELECT arraySum([1, 2, 3, 4]); 10 ``` -**Lambda 関数での使用方法** +**ラムダ関数での使用方法** ```sql title=Query SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]); @@ -3467,15 +3541,17 @@ SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]); 8 ``` + ## arraySymmetricDifference {#arraySymmetricDifference} 導入バージョン: v25.4 -複数の配列を受け取り、すべての入力配列に共通して存在しない要素からなる配列を返します。結果には一意な値のみが含まれます。 +複数の配列を受け取り、すべての元の配列に共通して存在しない要素だけからなる配列を返す。結果には一意な値だけが含まれます。 :::note -*2つを超える集合*の対称差は、入力集合のうち奇数個の集合に含まれるすべての入力要素の集合として[数学的に定義されています](https://en.wikipedia.org/wiki/Symmetric_difference#n-ary_symmetric_difference)。 -これに対して、関数 `arraySymmetricDifference` は、すべての入力集合に含まれない入力要素の集合のみを返します。 +*2 個を超える集合*の対称差は、[数学的には](https://en.wikipedia.org/wiki/Symmetric_difference#n-ary_symmetric_difference) +「入力された各要素のうち、奇数個の入力集合に含まれるもの全体からなる集合」として定義されます。 +これに対して、関数 `arraySymmetricDifference` は、すべての入力集合に出現しない入力要素からなる集合を返す。 ::: **構文** @@ -3488,11 +3564,11 @@ arraySymmetricDifference(arr1, arr2, ... , arrN) * `arrN` — 新しい配列を作成するための N 個の配列。[`Array(T)`](/sql-reference/data-types/array)。 -**返される値** +**戻り値** -すべての元の配列に共通して存在しない要素のみから成る、重複のない配列を返します。[`Array(T)`](/sql-reference/data-types/array) +すべての元の配列に共通して存在しない要素だけから成る配列を返す。[`Array(T)`](/sql-reference/data-types/array)。 -**例** +**使用例** **使用例** @@ -3508,11 +3584,12 @@ arraySymmetricDifference([1, 2], [1, 2], [1, 3]) AS non_empty_symmetric_differen └────────────────────────────┴────────────────────────────────┘ ``` + ## arrayUnion {#arrayUnion} -導入バージョン: v24.10 +導入: v24.10 -複数の配列を受け取り、入力配列のいずれかに存在するすべての要素を含む配列を返します。結果には一意の値のみが含まれます。 +複数の配列を受け取り、元の配列のいずれかに含まれるすべての要素を含む配列を返す。結果には一意な値だけが含まれます。 **構文** @@ -3524,11 +3601,11 @@ arrayUnion(arr1, arr2, ..., arrN) * `arrN` — 新しい配列を作成するための N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -元の配列群に含まれる要素のうち重複を取り除いた配列を返します。[`Array(T)`](/sql-reference/data-types/array) +入力配列の要素を重複なく含む配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3545,24 +3622,25 @@ arrayUnion([1, 3, NULL], [2, 3, NULL]) as null_example └─────────────┴────────────────┴──────────────┘ ``` + ## arrayUniq {#arrayUniq} -導入バージョン: v1.1 +導入: v1.1 -引数が 1 つだけ渡された場合、配列内の異なる要素の個数を数えます。 -複数の引数が渡された場合、複数の配列において同じ位置にある要素からなる **タプル** を構成し、そのタプルのうち異なるものの個数を数えます。 +引数が 1 つだけ渡された場合、配列内の異なる要素の数を数えます。 +複数の引数が渡された場合、複数の配列において同じ位置にある要素から構成される **タプル** の異なる組み合わせの数を数えます。 -たとえば `SELECT arrayUniq([1,2], [3,4], [5,6])` は次のタプルを生成します。 +例えば `SELECT arrayUniq([1,2], [3,4], [5,6])` は次のタプルを生成します: * 位置 1: (1,3,5) * 位置 2: (2,4,6) -その後、一意なタプルの個数を数えます。この場合は `2` になります。 +その後、一意なタプルの数を数えます。この場合は `2` です。 -渡されるすべての配列は同じ長さである必要があります。 +渡されるすべての配列は同じ長さでなければなりません。 :::tip -配列内の一意な要素のリストを取得したい場合は、`arrayReduce('groupUniqArray', arr)` を使用できます。 +配列内の一意な要素の一覧を取得したい場合は、`arrayReduce('groupUniqArray', arr)` を使用できます。 ::: **構文** @@ -3573,13 +3651,13 @@ arrayUniq(arr1[, arr2, ..., arrN]) **引数** -* `arr1` — 一意な要素の数をカウントする対象の配列。[`Array(T)`](/sql-reference/data-types/array) -* `[, arr2, ..., arrN]` — 省略可。複数の配列において同じ位置にある要素から成る一意なタプルの数をカウントするために使用される追加の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr1` — 一意な要素数をカウントする対象の配列。[`Array(T)`](/sql-reference/data-types/array) +* `[, arr2, ..., arrN]` — 省略可能。複数の配列における同じ位置の要素からなる一意なタプル数をカウントするために使用する追加の配列。[`Array(T)`](/sql-reference/data-types/array) -**返される値** +**戻り値** -単一引数の場合は、一意な要素の数を返します。複数引数の場合は、 -配列間で同じ位置にある要素から構成される一意なタプルの数を返します。 +単一の引数の場合は、一意な要素の数を返す。複数の引数の場合は、 +配列全体で同じ位置の要素から構成される一意なタプルの数を返す。 [`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -3604,11 +3682,12 @@ SELECT arrayUniq([1, 2, 3, 1], [4, 5, 6, 4]) 3 ``` + ## arrayWithConstant {#arrayWithConstant} -導入バージョン: v20.1 +導入: v20.1 -長さ `length` の配列を作成し、そのすべての要素を定数 `x` で埋めます。 +要素がすべて定数 `x` である、長さ `length` の配列を作成します。 **構文** @@ -3619,13 +3698,13 @@ arrayWithConstant(N, x) **引数** * `length` — 配列内の要素数。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `x` — 配列内の `N` 個の要素の値。任意の型の値を取ることができます。 +* `x` — 配列内の `N` 個の要素に設定される値。型は任意。 **戻り値** -値が `x` の `N` 個の要素を持つ Array を返します。[`Array(T)`](/sql-reference/data-types/array) +値 `x` を持つ `N` 個の要素からなる配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3637,11 +3716,12 @@ SELECT arrayWithConstant(3, 1) [1, 1, 1] ``` + ## arrayZip {#arrayZip} 導入バージョン: v20.1 -複数の配列を1つの配列に結合します。結果の配列には、引数で指定された順序で、元の配列の対応する要素がタプルにまとめられて含まれます。 +複数の配列を 1 つの配列にまとめます。結果の配列には、元の配列の対応する要素が、引数で指定された順序でタプルとしてまとめられて格納されます。 **構文** @@ -3651,11 +3731,11 @@ arrayZip(arr1, arr2, ... , arrN) **引数** -* `arr1, arr2, ... , arrN` — 結合して 1 つの配列にする N 個の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr1, arr2, ... , arrN` — 1 つの配列に結合する N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -元の配列の要素をタプルごとにまとめた配列を返します。タプル内のデータ型は入力配列の型と同一であり、配列が渡された順序と同じ順序になります。[`Array(T)`](/sql-reference/data-types/array) +ソース配列の要素をタプルにまとめた配列を返す。タプル内のデータ型は入力配列の型と同一であり、配列が渡される順序と同じ順序になる。[`Array(T)`](/sql-reference/data-types/array) **例** @@ -3669,11 +3749,12 @@ SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1]); [('a', 5), ('b', 2), ('c', 1)] ``` + ## arrayZipUnaligned {#arrayZipUnaligned} 導入バージョン: v20.1 -複数の配列を 1 つの配列に結合し、長さが揃っていない配列(長さの異なる配列)も扱います。結果の配列には、引数で指定した順序に従い、元の各配列の対応する要素をまとめたタプルが含まれます。 +複数の配列を 1 つの配列に結合します。長さが揃っていない配列(長さが異なる配列)も使用できます。結果の配列には、元の配列の対応する要素が、引数で指定された順序どおりにタプルにまとめられて格納されます。 **構文** @@ -3685,11 +3766,11 @@ arrayZipUnaligned(arr1, arr2, ..., arrN) * `arr1, arr2, ..., arrN` — 1 つの配列に結合する N 個の配列。[`Array(T)`](/sql-reference/data-types/array) -**返される値** +**返り値** -ソース配列の要素をタプルごとにまとめた配列を返します。タプル内のデータ型は入力配列の型と同一であり、配列が渡された順序どおりに並びます。[`Array(T)`](/sql-reference/data-types/array) または [`Tuple(T1, T2, ...)`](/sql-reference/data-types/tuple) +ソース配列の要素をタプル単位にまとめた配列を返す。タプル内のデータ型は入力配列の型と同じで、配列が渡された順序と同じ順序になる。[`Array(T)`](/sql-reference/data-types/array) または [`Tuple(T1, T2, ...)`](/sql-reference/data-types/tuple) -**例** +**使用例** **使用例** @@ -3701,11 +3782,12 @@ SELECT arrayZipUnaligned(['a'], [1, 2, 3]); [('a', 1),(NULL, 2),(NULL, 3)] ``` + ## countEqual {#countEqual} 導入: v1.1 -配列内で `x` に等しい要素の個数を返します。`arrayCount(elem -> elem = x, arr)` と同等です。 +配列内で `x` と等しい要素の数を返す。`arrayCount(elem -> elem = x, arr)` と同等です。 `NULL` 要素は個別の値として扱われます。 @@ -3722,9 +3804,9 @@ countEqual(arr, x) **戻り値** -`x` と等しい配列要素の数を返します。[`UInt64`](/sql-reference/data-types/int-uint) +`x` と等しい配列要素の数を返す。[`UInt64`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -3736,19 +3818,20 @@ SELECT countEqual([1, 2, NULL, NULL], NULL) 2 ``` + ## empty {#empty} 導入バージョン: v1.1 -入力配列が空かどうかを確認します。 +入力配列が空かどうかを判定します。 -配列に要素が 1 つも含まれていない場合、その配列は空とみなされます。 +配列に要素が 1 つも含まれていない場合、その配列は空と見なされます。 :::note -[`optimize_functions_to_subcolumns` 設定](/operations/settings/settings#optimize_functions_to_subcolumns)を有効にすることで最適化できます。`optimize_functions_to_subcolumns = 1` の場合、この関数は配列列全体を読み取って処理する代わりに、[size0](/sql-reference/data-types/array#array-size) サブカラムのみを読み取ります。クエリ `SELECT empty(arr) FROM TABLE;` は `SELECT arr.size0 = 0 FROM TABLE;` に変換されます。 +[`optimize_functions_to_subcolumns` setting](/operations/settings/settings#optimize_functions_to_subcolumns) を有効にすることで最適化できます。`optimize_functions_to_subcolumns = 1` の場合、この関数は配列カラム全体を読み取って処理する代わりに、[size0](/sql-reference/data-types/array#array-size) サブカラムのみを読み取ります。クエリ `SELECT empty(arr) FROM TABLE;` は `SELECT arr.size0 = 0 FROM TABLE;` に変換されます。 ::: -この関数は String 型や UUID 型にも使用できます。 +この関数は String 型および UUID 型に対しても動作します。 **構文** @@ -3762,9 +3845,9 @@ empty(arr) **戻り値** -空配列の場合は `1`、空でない配列の場合は `0` を返します。戻り値の型は [`UInt8`](/sql-reference/data-types/int-uint) です。 +空の配列の場合は `1`、空でない配列の場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) -**例** +**使用例** **使用例** @@ -3776,11 +3859,12 @@ SELECT empty([]); 1 ``` + ## emptyArrayDate {#emptyArrayDate} -導入バージョン: v1.1 +導入: v1.1 -空の Date 型配列を返します。 +空の Date 配列を返す **構文** @@ -3794,9 +3878,9 @@ emptyArrayDate() **戻り値** -空の Date 型配列。[`Array(T)`](/sql-reference/data-types/array) +空の Date 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3808,11 +3892,12 @@ SELECT emptyArrayDate [] ``` + ## emptyArrayDateTime {#emptyArrayDateTime} -導入されたバージョン: v1.1 +導入: v1.1 -空の DateTime 配列を返します。 +空の DateTime 配列を返す **構文** @@ -3822,13 +3907,13 @@ emptyArrayDateTime() **引数** -* なし +* なし。 -**戻り値** +**返り値** -空の DateTime 型の配列。[`Array(T)`](/sql-reference/data-types/array) +空の DateTime 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3840,11 +3925,12 @@ SELECT emptyArrayDateTime [] ``` + ## emptyArrayFloat32 {#emptyArrayFloat32} -導入バージョン: v1.1 +導入: v1.1 -空の Float32 配列を返します。 +空の Float32 配列を返す **構文** @@ -3858,9 +3944,9 @@ emptyArrayFloat32() **戻り値** -空の Float32 配列。 [`Array(T)`](/sql-reference/data-types/array) +空の Float32 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3872,11 +3958,12 @@ SELECT emptyArrayFloat32 [] ``` + ## emptyArrayFloat64 {#emptyArrayFloat64} -導入バージョン: v1.1 +導入: v1.1 -空の Float64 型配列を返します +空の Float64 配列を返す **構文** @@ -3886,13 +3973,13 @@ emptyArrayFloat64() **引数** -* なし +* なし。 **戻り値** 空の Float64 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3904,11 +3991,12 @@ SELECT emptyArrayFloat64 [] ``` + ## emptyArrayInt16 {#emptyArrayInt16} 導入バージョン: v1.1 -空の Int16 配列を返します +空の Int16 配列を返す **構文** @@ -3920,14 +4008,14 @@ emptyArrayInt16() * なし。 -**戻り値** +**返り値** 空の Int16 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** - **使用例** +**使用方法の一例** + ```sql title=Query SELECT emptyArrayInt16 ``` @@ -3936,11 +4024,12 @@ SELECT emptyArrayInt16 [] ``` + ## emptyArrayInt32 {#emptyArrayInt32} 導入: v1.1 -空の Int32 配列を返します。 +空の Int32 配列を返す **構文** @@ -3952,11 +4041,11 @@ emptyArrayInt32() * なし。 -**戻り値** +**返り値** 空の Int32 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -3968,11 +4057,12 @@ SELECT emptyArrayInt32 [] ``` + ## emptyArrayInt64 {#emptyArrayInt64} -導入バージョン: v1.1 +導入: v1.1 -空の Int64 配列を返します +空の Int64 型配列を返す **構文** @@ -3988,7 +4078,7 @@ emptyArrayInt64() 空の Int64 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4000,11 +4090,12 @@ SELECT emptyArrayInt64 [] ``` + ## emptyArrayInt8 {#emptyArrayInt8} 導入バージョン: v1.1 -空の Int8 型の配列を返します。 +空の Int8 配列を返す **構文** @@ -4020,7 +4111,7 @@ emptyArrayInt8() 空の Int8 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4032,11 +4123,12 @@ SELECT emptyArrayInt8 [] ``` + ## emptyArrayString {#emptyArrayString} -導入バージョン: v1.1 +導入: v1.1 -空の String 型配列を返します。 +空の String 配列を返す **構文** @@ -4050,9 +4142,9 @@ emptyArrayString() **戻り値** -空の String 型配列。[`Array(T)`](/sql-reference/data-types/array) +空の String 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4064,11 +4156,12 @@ SELECT emptyArrayString [] ``` + ## emptyArrayToSingle {#emptyArrayToSingle} -導入されたバージョン: v1.1 +導入: v1.1 -空の配列を受け取り、デフォルト値と同じ値を持つ 1 要素の配列を返します。 +空の配列を受け取り、デフォルト値と等しい 1 要素の配列を返す。 **構文** @@ -4080,13 +4173,13 @@ emptyArrayToSingle(arr) * `arr` — 空の配列。[`Array(T)`](/sql-reference/data-types/array) -**返される値** +**返り値** -配列要素型 `T` のデフォルト値 1 つを含む配列。[`Array(T)`](/sql-reference/data-types/array) +配列のデフォルト型の値を 1 つだけ含む配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** -**基本例** +**基本的な使用例** ```sql title=Query CREATE TABLE test ( @@ -4108,11 +4201,12 @@ SELECT emptyArrayToSingle(a), emptyArrayToSingle(b), emptyArrayToSingle(c) FROM └───────────────────────┴───────────────────────┴─────────────────────────┘ ``` + ## emptyArrayUInt16 {#emptyArrayUInt16} 導入: v1.1 -空の UInt16 配列を返します。 +空の UInt16 配列を返す **構文** @@ -4124,11 +4218,11 @@ emptyArrayUInt16() * なし。 -**戻り値** +**返り値** 空の UInt16 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4140,11 +4234,12 @@ SELECT emptyArrayUInt16 [] ``` + ## emptyArrayUInt32 {#emptyArrayUInt32} -導入バージョン: v1.1 +導入: v1.1 -空の UInt32 型の配列を返します。 +空の UInt32 配列を返す **構文** @@ -4156,11 +4251,11 @@ emptyArrayUInt32() * なし。 -**戻り値** +**返り値** 空の UInt32 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4172,11 +4267,12 @@ SELECT emptyArrayUInt32 [] ``` + ## emptyArrayUInt64 {#emptyArrayUInt64} -導入バージョン: v1.1 +導入: v1.1 -空の UInt64 型の配列を返します。 +空の UInt64 配列を返す **構文** @@ -4188,11 +4284,11 @@ emptyArrayUInt64() * なし。 -**返り値** +**戻り値** 空の UInt64 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4204,11 +4300,12 @@ SELECT emptyArrayUInt64 [] ``` + ## emptyArrayUInt8 {#emptyArrayUInt8} -導入バージョン: v1.1 +導入: v1.1 -空の UInt8 配列を返します。 +空の UInt8 配列を返す **構文** @@ -4222,9 +4319,9 @@ emptyArrayUInt8() **戻り値** -空のUInt8配列。[`Array(T)`](/sql-reference/data-types/array) +空の UInt8 配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4236,11 +4333,12 @@ SELECT emptyArrayUInt8 [] ``` + ## has {#has} -導入バージョン: v1.1 +導入: v1.1 -指定した要素が配列に含まれているかどうかを返します。 +配列に指定した要素が含まれているかどうかを返す。 **構文** @@ -4250,16 +4348,16 @@ has(arr, x) **引数** -* `arr` — 元の配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 元となる配列。[`Array(T)`](/sql-reference/data-types/array) * `x` — 配列内で検索する値。 -**戻り値** +**返り値** -配列が指定した要素を含む場合は `1` を、含まない場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +配列に指定した要素が含まれている場合は `1`、それ以外の場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) -**例** +**使用例** -**基本的な使用例** +**基本的な使用方法** ```sql title=Query SELECT has([1, 2, 3], 2) @@ -4269,7 +4367,7 @@ SELECT has([1, 2, 3], 2) 1 ``` -**見つかりませんでした** +**見つからない** ```sql title=Query SELECT has([1, 2, 3], 4) @@ -4279,15 +4377,16 @@ SELECT has([1, 2, 3], 4) 0 ``` + ## hasAll {#hasAll} 導入バージョン: v1.1 -ある配列が別の配列の部分集合であるかどうかを確認します。 +ある配列が別の配列の部分集合であるかどうかを判定します。 -* 空の配列は任意の配列の部分集合です。 -* `Null` は値として処理されます。 -* どちらの配列においても、値の順序は問題になりません。 +* 空の配列は、任意の配列の部分集合です。 +* `Null` は値として扱われます。 +* 両方の配列における値の順序は問いません。 **構文** @@ -4297,15 +4396,15 @@ hasAll(set, subset) **引数** -* `set` — 要素の集合を持つ任意の型の配列。[`Array(T)`](/sql-reference/data-types/array) -* `subset` — `set` と共通のスーパータイプを持ち、`set` の部分集合かどうかをテストする対象の要素を含む任意の型の配列。[`Array(T)`](/sql-reference/data-types/array) +* `set` — 要素の集合を表す、任意の型の配列。[`Array(T)`](/sql-reference/data-types/array) +* `subset` — `set` と共通のスーパータイプを持ち、`set` の部分集合であるかを検証する対象の要素を含む任意の型の配列。[`Array(T)`](/sql-reference/data-types/array) -**返り値** +**戻り値** -* `set` に `subset` のすべての要素が含まれている場合は `1`。 +* `set` が `subset` のすべての要素を含む場合は `1`。 * それ以外の場合は `0`。 -`set` と `subset` の要素が共通のスーパータイプを持たない場合は、`NO_COMMON_TYPE` 例外をスローします。 +set と subset の要素が共通のスーパータイプを共有していない場合、`NO_COMMON_TYPE` 例外を送出します。 **使用例** @@ -4339,7 +4438,7 @@ SELECT hasAll([1.0, 2, 3, 4], [1, 3]) 1 ``` -**文字列値を含む配列** +**String 型の値を含む配列** ```sql title=Query SELECT hasAll(['a', 'b'], ['a']) @@ -4356,7 +4455,7 @@ SELECT hasAll([1], ['a']) ``` ```response title=Response -NO_COMMON_TYPE例外を発生させます +Raises a NO_COMMON_TYPE exception ``` **配列の配列** @@ -4369,14 +4468,15 @@ SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]]) 0 ``` + ## hasAny {#hasAny} 導入バージョン: v1.1 -2 つの配列に、少なくとも 1 つ共通する要素(交差)があるかどうかを判定します。 +2つの配列に、1つ以上の共通する要素が存在するかどうかを判定します。 -* `Null` は値として扱われます。 -* 両方の配列内の値の順序は関係ありません。 +* `Null` は値として処理されます。 +* 両方の配列における値の順序は関係ありません。 **構文** @@ -4386,17 +4486,17 @@ hasAny(arr_x, arr_y) **引数** -* `arr_x` — 任意の型の要素を含む配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr_y` — 配列 `arr_x` と共通のスーパータイプを持つ任意の型の要素からなる配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr_x` — 任意の型の要素を持つ配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr_y` — 配列 `arr_x` と共通のスーパータイプを持つ任意の型の配列。[`Array(T)`](/sql-reference/data-types/array) **戻り値** -* `arr_x` と `arr_y` に少なくとも 1 つ同じ要素がある場合は `1`。 +* `arr_x` と `arr_y` に少なくとも 1 つ同じ要素が含まれている場合は `1`。 * それ以外の場合は `0`。 -2 つの配列の要素のいずれかが共通のスーパータイプを持たない場合、`NO_COMMON_TYPE` 例外を送出します。 +2 つの配列のいずれかの要素が共通のスーパータイプを持たない場合、`NO_COMMON_TYPE` 例外をスローします。 -**例** +**使用例** **一方の配列が空の場合** @@ -4428,14 +4528,14 @@ SELECT hasAny([-128, 1., 512], [1]) 1 ``` -**共通の型を持たない配列** +**共通型を持たない配列** ```sql title=Query SELECT hasAny([[1, 2], [3, 4]], ['a', 'c']) ``` ```response title=Response -`NO_COMMON_TYPE` 例外を発生させます +Raises a `NO_COMMON_TYPE` exception ``` **配列の配列** @@ -4448,21 +4548,22 @@ SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]]) 1 ``` + ## hasSubstr {#hasSubstr} 導入バージョン: v20.6 -array2 のすべての要素が、同一の順序で array1 内に出現するかどうかを判定します。 -したがって、この関数は array1 = prefix + array2 + suffix の場合に限り `1` を返します。 +array2 のすべての要素が、まったく同じ順序で array1 内に現れるかどうかを判定します。 +したがって、この関数は array1 = prefix + array2 + suffix の場合に限って `1` を返す。 -言い換えると、この関数は `hasAll` 関数と同様に、array2 のすべての要素が array1 に含まれているかどうかを確認します。 -さらに、それらの要素が array1 と array2 の両方で同じ順序で現れることも確認します。 +言い換えると、この関数は `hasAll` 関数のように、array2 のすべての要素が array1 に含まれているかどうかをチェックします。 +加えて、array1 と array2 の両方で要素が同じ順序で現れることも確認します。 -* array2 が空の場合、関数は `1` を返します。 -* `Null` は値として扱われます。つまり、`hasSubstr([1, 2, NULL, 3, 4], [2,3])` は `0` を返します。一方、`hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])` は `1` を返します。 -* 両方の配列における要素の順序は重要です。 +* array2 が空の場合、この関数は `1` を返す。 +* `Null` は値として扱われます。つまり、`hasSubstr([1, 2, NULL, 3, 4], [2,3])` は `0` を返すが、`hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])` は `1` を返す。 +* 両方の配列における値の順序は重要です。 -2 つの配列のいずれかの要素が共通のスーパータイプを持たない場合、`NO_COMMON_TYPE` 例外をスローします。 +2 つの配列のいずれかの要素が共通のスーパータイプを持たない場合、`NO_COMMON_TYPE` 例外を送出します。 **構文** @@ -4472,14 +4573,14 @@ hasSubstr(arr1, arr2) **引数** -* `arr1` — 任意の型の要素からなる配列。[`Array(T)`](/sql-reference/data-types/array) -* `arr2` — 任意の型の要素からなる配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr1` — 任意の型の要素を含む配列。[`Array(T)`](/sql-reference/data-types/array) +* `arr2` — 任意の型の要素を含む配列。[`Array(T)`](/sql-reference/data-types/array) **戻り値** -配列 `arr1` が配列 `arr2` を含む場合は `1` を返します。そうでない場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +配列 `arr1` に配列 `arr2` が含まれている場合は `1` を返す。そうでない場合は `0` を返す。[`UInt8`](/sql-reference/data-types/int-uint) -**例** +**使用例** **両方の配列が空の場合** @@ -4521,7 +4622,7 @@ SELECT hasSubstr(['a', 'b'], ['a']) 1 ``` -**有効な順序付けのある配列** +**有効な順序を持つ配列** ```sql title=Query SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'b']) @@ -4558,15 +4659,16 @@ SELECT hasSubstr([1, 2, NULL, 3, 4], ['a']) ``` ```response title=Response -`NO_COMMON_TYPE` 例外を発生させます +Raises a `NO_COMMON_TYPE` exception ``` + ## indexOf {#indexOf} 導入バージョン: v1.1 -配列内に値 'x' を持つ要素が存在する場合、その最初の要素のインデックス(1 から始まる)を返します。 -配列に検索対象の値が含まれていない場合、関数は `0` を返します。 +配列内に値 'x' が存在する場合、その最初の要素のインデックス(1 から始まる)を返す。 +配列に検索対象の値が含まれていない場合、関数は `0` を返す。 `NULL` に設定された要素は通常の値として扱われます。 @@ -4578,16 +4680,16 @@ indexOf(arr, x) **引数** -* `arr` — `x` を検索する対象の配列。[`Array(T)`](/sql-reference/data-types/array) -* `x` — `arr` 内で最初に一致し、そのインデックスを返す要素の値。[`UInt64`](/sql-reference/data-types/int-uint) +* `arr` — `x` を検索する配列。[`Array(T)`](/sql-reference/data-types/array) +* `x` — インデックスを返す対象となる、`arr` 内で最初に一致する要素の値。[`UInt64`](/sql-reference/data-types/int-uint) **返り値** -`arr` 内に `x` が存在する場合、最初の `x` のインデックス(1 始まり)を返します。存在しない場合は `0` を返します。[`UInt64`](/sql-reference/data-types/int-uint) +`arr` 内に `x` が存在する場合、最初の `x` のインデックス(1 から始まる番号)を返す。存在しない場合は `0` を返す。[`UInt64`](/sql-reference/data-types/int-uint) -**例** +**使用例** -**基本的な例** +**基本的な使用例** ```sql title=Query SELECT indexOf([5, 4, 1, 3], 3) @@ -4597,7 +4699,7 @@ SELECT indexOf([5, 4, 1, 3], 3) 4 ``` -**NULL 値を含む配列** +**NULL を含む配列** ```sql title=Query SELECT indexOf([1, 3, NULL, NULL], NULL) @@ -4607,15 +4709,16 @@ SELECT indexOf([1, 3, NULL, NULL], NULL) 3 ``` + ## indexOfAssumeSorted {#indexOfAssumeSorted} -導入バージョン: v24.12 +導入: v24.12 -配列内に値 'x' がある場合、最初に現れる要素のインデックス(`1` から開始)を返します。 -配列に検索対象の値が含まれていない場合、関数は `0` を返します。 +配列内に値 'x' が存在する場合、その最初の要素のインデックス(`1` から開始)を返す。 +配列に検索対象の値が含まれていない場合、この関数は `0` を返す。 :::note -`indexOf` 関数とは異なり、この関数は配列が昇順にソートされていることを前提とします。 +`indexOf` 関数と異なり、この関数は配列が昇順にソートされていることを前提とする。 配列がソートされていない場合、結果は未定義です。 ::: @@ -4627,16 +4730,16 @@ indexOfAssumeSorted(arr, x) **引数** -* `arr` — 検索対象となるソート済み配列。[`Array(T)`](/sql-reference/data-types/array) -* `x` — ソート済み `arr` 内で、インデックスを取得する対象となる最初に一致する要素の値。[`UInt64`](/sql-reference/data-types/int-uint) +* `arr` — 検索対象のソート済み配列。[`Array(T)`](/sql-reference/data-types/array) +* `x` — ソート済みの `arr` 内で、インデックスを取得する最初に一致した要素の値。[`UInt64`](/sql-reference/data-types/int-uint) **返り値** -`x` が存在する場合は、`arr` 内で最初に現れる `x` のインデックス(1 から始まる番号)を返します。存在しない場合は `0` を返します。[`UInt64`](/sql-reference/data-types/int-uint) +`arr` に `x` が存在する場合、その最初の `x` のインデックス(1 起算)を返す。存在しない場合は `0` を返す。[`UInt64`](/sql-reference/data-types/int-uint) -**例** +**使用例** -**基本的な例** +**基本的な使用例** ```sql title=Query SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) @@ -4646,21 +4749,22 @@ SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) 5 ``` + ## length {#length} 導入バージョン: v1.1 文字列または配列の長さを計算します。 -* String または FixedString 引数の場合: 文字列内のバイト数を計算します。 -* Array 引数の場合: 配列内の要素数を計算します。 -* FixedString 引数に適用された場合、この関数は定数式になります。 +* String または FixedString の引数に対しては、文字列内のバイト数を計算します。 +* Array の引数に対しては、配列内の要素数を計算します。 +* FixedString の引数に適用された場合、この関数は定数式になります。 -文字列のバイト数は、Unicode の「コードポイント」の数とも、 -Unicode の「書記素クラスター」(一般的に「文字」と呼ぶもの)の数とも、 -見た目上の文字列幅とも一致しないことに注意してください。 +文字列内のバイト数は、Unicode の「コードポイント」の数とも、 +Unicode の「書記素クラスタ」(一般的に「文字」と呼ぶもの)の数とも、 +表示上の文字列幅とも一致しない点に注意してください。 -文字列に ASCII の NULL バイトを含めても問題はなく、それらも長さとしてカウントされます。 +文字列内に ASCII の NULL バイトを含めても問題はなく、それらもカウントされます。 **構文** @@ -4668,19 +4772,19 @@ Unicode の「書記素クラスター」(一般的に「文字」と呼ぶも length(x) ``` -**エイリアス**: `OCTET_LENGTH` +**別名**: `OCTET_LENGTH` **引数** -* `x` — バイト数(String/FixedString の場合)または要素数(Array の場合)を計算する対象の値。[`String`](/sql-reference/data-types/string)、[`FixedString`](/sql-reference/data-types/fixedstring)、または [`Array(T)`](/sql-reference/data-types/array) +* `x` — バイト数(String/FixedString の場合)または要素数(Array の場合)を計算する対象の値。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) または [`Array(T)`](/sql-reference/data-types/array) -**戻り値** +**返り値** -String/FixedString `x` のバイト数、または配列 `x` の要素数を返します。型は [`UInt64`](/sql-reference/data-types/int-uint) です。 +String/FixedString `x` のバイト数、または配列 `x` の要素数を返す。型は [`UInt64`](/sql-reference/data-types/int-uint)。 -**例** +**使用例** -**String の例** +**String の使用例** ```sql title=Query SELECT length('Hello, world!') @@ -4700,7 +4804,7 @@ SELECT length(['Hello', 'world']) 2 ``` -**constexpr の例** +**constexpr の使用例** ```sql title=Query WITH 'hello' || toString(number) AS str @@ -4718,7 +4822,7 @@ FROM numbers(3) └────────┴────────────────────────┴──────────────────────────────┘ ``` -**Unicodeの例** +**Unicode の例** ```sql title=Query SELECT 'ёлка' AS str1, length(str1), lengthUTF8(str1), normalizeUTF8NFKD(str1) AS str2, length(str2), lengthUTF8(str2) @@ -4730,7 +4834,7 @@ SELECT 'ёлка' AS str1, length(str1), lengthUTF8(str1), normalizeUTF8NFKD(str └──────┴──────────────┴──────────────────┴──────┴──────────────┴──────────────────┘ ``` -**ascii_vs_utf8 の例** +**ascii_vs_utf8 の使用例** ```sql title=Query SELECT 'ábc' AS str, length(str), lengthUTF8(str) @@ -4742,19 +4846,20 @@ SELECT 'ábc' AS str, length(str), lengthUTF8(str) └─────┴──────────────┴─────────────────┘ ``` + ## notEmpty {#notEmpty} 導入バージョン: v1.1 -入力配列が空でないかどうかをチェックします。 +入力配列が空かどうかをチェックします。 -少なくとも 1 つの要素を含む配列は、空でないと見なされます。 +配列に少なくとも 1 つの要素が含まれている場合、その配列は空でないと見なされます。 :::note -[`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns) 設定を有効にすることで最適化できます。`optimize_functions_to_subcolumns = 1` の場合、この関数は配列列全体を読み取って処理する代わりに、[size0](/sql-reference/data-types/array#array-size) サブカラムのみを読み取ります。クエリ `SELECT notEmpty(arr) FROM table` は `SELECT arr.size0 != 0 FROM TABLE` に変換されます。 +[`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns) 設定を有効にすることで最適化できます。`optimize_functions_to_subcolumns = 1` の場合、この関数は配列カラム全体を読み取って処理する代わりに、[size0](/sql-reference/data-types/array#array-size) サブカラムだけを読み取ります。クエリ `SELECT notEmpty(arr) FROM table` は `SELECT arr.size0 != 0 FROM TABLE` に変換されます。 ::: -この関数は String 型や UUID 型に対しても動作します。 +この関数は String や UUID に対しても利用できます。 **構文** @@ -4766,14 +4871,14 @@ notEmpty(arr) * `arr` — 入力配列。[`Array(T)`](/sql-reference/data-types/array) -**戻り値** - -配列が空でない場合は `1`、空の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +**返り値** -**例** +空でない配列には `1`、空の配列には `0` を返す。返り値の型は [`UInt8`](/sql-reference/data-types/int-uint)。 **使用例** +**使用例 1** + ```sql title=Query SELECT notEmpty([1,2]); ``` @@ -4782,23 +4887,24 @@ SELECT notEmpty([1,2]); 1 ``` + ## range {#range} 導入バージョン: v1.1 -`start` から `end - 1` までを `step` ごとに並べた数値の配列を返します。 +`start` から `end - 1` までを `step` ごとに並べた数値の配列を返す。 -サポートされている型は次のとおりです: +サポートされる型は次のとおり: * `UInt8/16/32/64` -* `Int8/16/32/64` +* `Int8/16/32/64]` -* すべての引数 `start`、`end`、`step` は上記のいずれかのサポート対象の型でなければなりません。返される配列の要素の型は、引数の上位型になります。 +* 引数 `start`、`end`、`step` はすべて、上記のサポートされる型のいずれかでなければならない。返り値の配列の要素の型は、引数型のスーパータイプになる。 -* 関数が返す配列の要素数の合計が、設定 [`function_range_max_elements_in_block`](../../operations/settings/settings.md#function_range_max_elements_in_block) で指定された要素数を超える場合は、例外がスローされます。 +* 返り値の配列の合計長が、SETTING [`function_range_max_elements_in_block`](../../operations/settings/settings.md#function_range_max_elements_in_block) で指定された要素数を超える場合、例外をスローする。 -* いずれかの引数が Nullable(nothing) 型の場合は `NULL` を返します。いずれかの引数が `NULL` 値(Nullable(T) 型)を持つ場合は、例外がスローされます。 +* いずれかの引数が `Nullable(nothing)` 型である場合、`NULL` を返す。いずれかの引数が `NULL` 値(`Nullable(T)` 型)を持つ場合、例外をスローする。 **構文** @@ -4808,13 +4914,13 @@ range([start, ] end [, step]) **引数** -* `start` — 省略可能。配列の先頭要素。`step` を使用する場合は必須。デフォルト値: `0`。 - `end` — 必須。配列に含める値の上限となる数値(この値の直前までが配列に含まれる)。 - `step` — 省略可能。配列内の各要素間の増分値を指定する。デフォルト値: `1`。 +* `start` — 省略可能。配列の最初の要素。`step` を使用する場合は必須。既定値: `0`。 - `end` — 必須。配列を構築する際の終了値の直前の数。 - `step` — 省略可能。配列内の各要素間の増分を指定します。既定値: `1`。 **戻り値** -`start` から `end - 1` までを `step` 刻みで並べた数値の配列。[`Array(T)`](/sql-reference/data-types/array) +`start` から `end - 1` までを `step` ごとに並べた数値の配列。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4828,11 +4934,12 @@ SELECT range(5), range(1, 5), range(1, 5, 2), range(-1, 5, 2); └─────────────┴─────────────┴────────────────┴─────────────────┘ ``` + ## replicate {#replicate} -導入バージョン: v1.1 +導入: v1.1 -単一の値からなる配列を作成します。 +単一の値を持つ配列を作成します。 **構文** @@ -4845,11 +4952,11 @@ replicate(x, arr) * `x` — 結果配列を埋める値。[`Any`](/sql-reference/data-types) * `arr` — 配列。[`Array(T)`](/sql-reference/data-types/array) -**返される値** +**返り値** -`arr` と同じ長さで、値 `x` が詰められた配列を返します。[`Array(T)`](/sql-reference/data-types/array) +`arr` と同じ長さで、値 `x` で埋められた配列を返す。[`Array(T)`](/sql-reference/data-types/array) -**例** +**使用例** **使用例** @@ -4863,11 +4970,12 @@ SELECT replicate(1, ['a', 'b', 'c']); └─────────────────────────────────┘ ``` + ## reverse {#reverse} 導入バージョン: v1.1 -入力配列の要素、または入力文字列の文字の順序を反転します。 +入力配列の要素、または入力文字列内の文字の順序を反転します。 **構文** @@ -4877,15 +4985,15 @@ reverse(arr | str) **引数** -* `arr | str` — 元の配列または文字列。[`Array(T)`](/sql-reference/data-types/array) または [`String`](/sql-reference/data-types/string) +* `arr | str` — 元となる配列または文字列。[`Array(T)`](/sql-reference/data-types/array) または [`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -要素または文字の順序を逆にした配列または文字列を返します。 +要素や文字の順序を逆にした配列または文字列を返す。 -**例** +**使用例** -**配列を逆順にする** +**配列の反転** ```sql title=Query SELECT reverse([1, 2, 3, 4]); @@ -4895,7 +5003,7 @@ SELECT reverse([1, 2, 3, 4]); [4, 3, 2, 1] ``` -**文字列の反転** +**文字列を逆順にする** ```sql title=Query SELECT reverse('abcd'); @@ -4907,6 +5015,7 @@ SELECT reverse('abcd'); {/*AUTOGENERATED_END*/ } + ## 距離関数 {#distance-functions} -サポートされているすべての関数は、[距離関数のドキュメント](../../sql-reference/functions/distance-functions.md)で説明されています。 +サポートされているすべての関数は、[距離関数のドキュメント](../../sql-reference/functions/distance-functions.md)に記載されています。 diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md index 0d185d92d95..4a9176736c3 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md @@ -6,23 +6,23 @@ title: 'arrayJoin 関数' doc_type: 'reference' --- -# arrayJoin function {#arrayjoin-function} +# arrayJoin 関数 {#arrayjoin-function} -これは少し特殊な関数です。 +これは非常に特殊な関数です。 -通常の関数は、行の集合自体は変更せず、各行の値だけを変更します(map)。 -集約関数は、行の集合を圧縮します(fold または reduce)。 -`arrayJoin` 関数は、各行を取り、それを行の集合に展開します(unfold)。 +通常の関数は行の集合を変更せず、各行内の値だけを変更します(map)。 +集約関数は行の集合を圧縮します(fold または reduce)。 +`arrayJoin` 関数は各行を受け取り、行の集合を生成します(unfold)。 -この関数は引数として配列を受け取り、配列内の要素数分だけ元の行を複数の行に増やします。 -この関数が適用される列以外の列の値は単純にコピーされ、その列の値のみが対応する配列要素の値に置き換えられます。 +この関数は配列を引数に取り、その配列の要素数だけ元の行を複数行に展開します。 +この関数が適用されるカラム以外のすべてのカラムの値は単純にコピーされ、そのカラムの値は対応する配列の要素で置き換えられます。 :::note 配列が空の場合、`arrayJoin` は行を一切生成しません。 -配列型のデフォルト値を含む 1 行を返したい場合は、[emptyArrayToSingle](./array-functions.md#emptyArrayToSingle) でラップします。例えば `arrayJoin(emptyArrayToSingle(...))` のようにします。 +配列型のデフォルト値を含む 1 行を返すには、例えば次のように [emptyArrayToSingle](./array-functions.md#emptyArrayToSingle) でラップします:`arrayJoin(emptyArrayToSingle(...))`。 ::: -例えば: +例えば: ```sql title="Query" SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src @@ -36,7 +36,7 @@ SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src └─────┴───────────┴─────────┘ ``` -`arrayJoin` 関数は、`WHERE` 節を含むクエリ内のすべての節に影響します。次のクエリの結果は、サブクエリが 1 行しか返していないにもかかわらず `2` になっている点に注意してください。 +`arrayJoin` 関数は、`WHERE` 節を含むクエリ内のすべての節に影響します。以下のクエリの結果は `2` になっていることに注意してください。サブクエリは 1 行しか返していないにもかかわらず、このような結果になります。 ```sql title="Query" SELECT sum(1) AS impressions @@ -53,8 +53,8 @@ WHERE arrayJoin(cities) IN ['Istanbul', 'Berlin']; └─────────────┘ ``` -1 つのクエリで複数の `arrayJoin` 関数を使用できます。この場合、変換は複数回行われ、行同士の組み合わせ分だけ増加します。 -例えば次のとおりです。 +クエリでは複数の `arrayJoin` 関数を使用できます。この場合、変換は複数回実行され、行数が掛け合わされます。 +例えば: ```sql title="Query" SELECT @@ -85,25 +85,25 @@ GROUP BY ### ベストプラクティス {#important-note} -同じ式に対して複数回 `arrayJoin` を使用すると、共通部分式の除去により意図しない結果になる場合があります。 -そのような場合は、結合の結果に影響を与えない追加の処理を加えて、繰り返し利用される配列式を変更することを検討してください。例えば、`arrayJoin(arraySort(arr))` や `arrayJoin(arrayConcat(arr, []))` などです。 +同じ式に対して複数回 `arrayJoin` を使用すると、共通部分式の除去により期待する結果にならない場合があります。 +そのような場合には、結合結果に影響を与えない追加の演算を挿入して、繰り返し使用される配列式を変更することを検討してください。例えば、`arrayJoin(arraySort(arr))`、`arrayJoin(arrayConcat(arr, []))` などです。 -例: +例: ```sql SELECT arrayJoin(dice) AS first_throw, - /* arrayJoin(dice) as second_throw */ -- 技術的には正しいが、結果セットが消失する - arrayJoin(arrayConcat(dice, [])) AS second_throw -- 再評価を強制するため意図的に式を変更 + /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set + arrayJoin(arrayConcat(dice, [])) AS second_throw -- intentionally changed expression to force re-evaluation FROM ( SELECT [1, 2, 3, 4, 5, 6] AS dice ); ``` -SELECT クエリ内の [`ARRAY JOIN`](../statements/select/array-join.md) 構文に注目してください。これにより、より幅広い操作が可能になります。 -`ARRAY JOIN` を使用すると、同じ要素数を持つ複数の配列を一度に展開できます。 +SELECT クエリ内の [`ARRAY JOIN`](../statements/select/array-join.md) 構文に注意してください。これにより、より幅広い操作が可能になります。 +`ARRAY JOIN` を使用すると、同じ要素数を持つ複数の配列を一度に変換できます。 -例: +例えば: ```sql SELECT @@ -132,9 +132,9 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -または [`Tuple`](../data-types/tuple.md) を使用できます。 +または [`Tuple`](../data-types/tuple.md) を使用できます -例: +例えば: ```sql title="Query" SELECT @@ -160,4 +160,4 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -ClickHouse における `arrayJoin` という名称は、1 行内の配列に対して適用されるという点を除けば、JOIN 演算との概念的な類似性に由来しています。従来の JOIN が複数のテーブルから行を結合するのに対し、`arrayJoin` は 1 行内の配列の各要素を「結合」し、配列要素ごとに 1 行ずつ複数の行を生成し、その際に他の列の値は複製されます。ClickHouse には、[`ARRAY JOIN`](/sql-reference/statements/select/array-join) 句の構文も用意されており、なじみのある SQL の JOIN 用語を使うことで、従来の JOIN 操作との関係性をさらに明示的に表現しています。この処理は配列を「展開する」(unfolding)とも呼ばれますが、テーブルを配列要素と結合しているように見え、JOIN 操作と同様の形でデータセットを拡張するため、関数名と句の両方に「join」という用語が使用されています。 +ClickHouse における `arrayJoin` という名称は、1 行内の配列に対して適用されるという点を除けば JOIN 操作と概念的に類似していることに由来します。従来の JOIN が異なるテーブル間で行を結合するのに対し、`arrayJoin` は 1 つの行の配列内の各要素を「結合」し、配列要素ごとに 1 行ずつ複数の行を生成しつつ、他のカラム値を複製します。ClickHouse には [`ARRAY JOIN`](/sql-reference/statements/select/array-join) 句構文も用意されており、なじみのある SQL JOIN 用語を使用することで、従来の JOIN 操作との関係性をさらに明示的にしています。この処理は配列を「展開する」と表現されることもありますが、テーブルと配列要素を結合してデータセットを JOIN 操作と同様の形で拡張するイメージに近いことから、関数名と句の両方で「join」という用語が使用されています。 diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md index ba188fc8a6e..b3e15c9e2ae 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md @@ -2,20 +2,20 @@ description: 'ハッシュ関数に関するドキュメント' sidebar_label: 'ハッシュ' slug: /sql-reference/functions/hash-functions -title: 'ハッシュ関数' +title: 'ハッシュ関数 {#hash-functions}' doc_type: 'reference' --- # ハッシュ関数 {#hash-functions} -ハッシュ関数は、要素を決定論的かつ疑似ランダムにシャッフルするために使用できます。 +ハッシュ関数は、要素を決定的な疑似乱数でシャッフルするために使用できます。 -SimHash はハッシュ関数であり、近い(類似した)引数に対して近いハッシュ値を返します。 +Simhash はハッシュ関数であり、近い(類似した)引数に対して近いハッシュ値を返します。 -ほとんどのハッシュ関数は、任意の型の任意個数の引数を受け付けます。 +ほとんどのハッシュ関数は、任意の数および任意の型の引数を受け取ります。 :::note -NULL のハッシュ値は NULL です。Nullable 列の NULL ではないハッシュ値を取得するには、それをタプルでラップしてください: +NULL のハッシュは NULL です。Nullable カラムの非 NULL ハッシュを取得するには、タプルで包みます。 ```sql SELECT cityHash64(tuple(NULL)) @@ -24,13 +24,12 @@ SELECT cityHash64(tuple(NULL)) ::: :::note -テーブル全体の内容のハッシュを計算するには、`sum(cityHash64(tuple(*)))`(または他のハッシュ関数)を使用してください。`tuple` により、NULL 値を含む行が除外されなくなります。`sum` により、行の順序に依存しなくなります。 +テーブル全体の内容のハッシュを計算するには、`sum(cityHash64(tuple(*)))`(または別のハッシュ関数)を使用します。`tuple` によって、NULL 値を含む行がスキップされないようにします。`sum` によって、行の順序に依存しないハッシュ値になります。 ::: {/* - 以下のタグ内の内容は、ドキュメントフレームワークのビルド時に - system.functions から生成されるドキュメントに置き換えられます。 - これらのタグを変更したり削除したりしないでください。 + 以下のタグ内のコンテンツは、ドキュメントフレームワークのビルド時に + system.functions から自動生成されたドキュメントに置き換えられます。タグを変更または削除しないでください。 詳細は https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md を参照してください。 */ } @@ -42,8 +41,8 @@ SELECT cityHash64(tuple(NULL)) BLAKE3 ハッシュ値を計算し、その結果のバイト列を FixedString として返します。 この暗号学的ハッシュ関数は、BLAKE3 Rust ライブラリを用いて ClickHouse に統合されています。 -この関数はかなり高速で、SHA-2 と比べておよそ 2 倍の速度を発揮しつつ、SHA-256 と同じ長さのハッシュを生成します。 -戻り値は、型 FixedString(32) のバイト配列としての BLAKE3 ハッシュです。 +この関数は非常に高速で、SHA-2 と比較して約 2 倍の性能を発揮しつつ、SHA-256 と同じ長さのハッシュを生成します。 +戻り値は、型が FixedString(32) の BLAKE3 ハッシュを表すバイト配列です。 **構文** @@ -77,7 +76,7 @@ SELECT hex(BLAKE3('ABC')) 導入バージョン: v21.11 -指定した文字列の MD4 ハッシュ値を計算します。 +指定された文字列の MD4 ハッシュ値を計算します。 **構文** @@ -91,7 +90,7 @@ MD4(s) **戻り値** -指定された入力文字列の MD4 ハッシュ値を固定長の文字列として返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の MD4 ハッシュを、固定長の文字列として返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **例** @@ -111,7 +110,7 @@ SELECT HEX(MD4('abc')); 導入バージョン: v1.1 -指定された文字列の MD5 ハッシュ値を計算します。 +指定された文字列の MD5 ハッシュを計算します。 **構文** @@ -123,9 +122,9 @@ MD5(s) * `s` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -指定された入力文字列の MD5 ハッシュ値を固定長の文字列として返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の MD5 ハッシュを固定長文字列として返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **例** @@ -143,7 +142,7 @@ SELECT HEX(MD5('abc')); ## RIPEMD160 {#RIPEMD160} -導入バージョン: v24.10 +導入: v24.10 指定された文字列の RIPEMD-160 ハッシュ値を計算します。 @@ -157,16 +156,16 @@ RIPEMD160(s) * `s` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -指定された入力文字列の RIPEMD160 ハッシュを固定長文字列として返します。[`FixedString(20)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の RIPEMD160 ハッシュ値を固定長文字列として返します。[`FixedString(20)`](/sql-reference/data-types/fixedstring) **例** **使用例** ```sql title=Query -SELECT HEX(RIPEMD160('素早い茶色の狐が怠惰な犬を飛び越える')); +SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog')); ``` ```response title=Response @@ -189,11 +188,11 @@ SHA1(s) **引数** -* `s` — ハッシュ化する入力文字列 [`String`](/sql-reference/data-types/string) +* `s` — ハッシュ対象の入力文字列 [`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -指定された入力文字列のSHA1ハッシュ値を固定長の文字列として返します。[`FixedString(20)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の SHA1 ハッシュ値を、固定長の文字列として返します。[`FixedString(20)`](/sql-reference/data-types/fixedstring) **例** @@ -211,9 +210,9 @@ SELECT HEX(SHA1('abc')); ## SHA224 {#SHA224} -導入バージョン:v1.1 +導入バージョン: v1.1 -指定した文字列の SHA224 ハッシュ値を計算します。 +指定された文字列の SHA224 ハッシュ値を計算します。 **構文** @@ -225,9 +224,9 @@ SHA224(s) * `s` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**返り値** -指定した入力文字列の SHA224 ハッシュ値を固定長の文字列として返します。[`FixedString(28)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の SHA224 ハッシュを固定長の文字列として返します。[`FixedString(28)`](/sql-reference/data-types/fixedstring) **例** @@ -247,7 +246,7 @@ SELECT HEX(SHA224('abc')); 導入バージョン: v1.1 -指定した文字列の SHA256 ハッシュを計算します。 +指定された文字列の SHA256 ハッシュを計算します。 **構文** @@ -259,9 +258,9 @@ SHA256(s) * `s` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -指定された入力文字列の SHA256 ハッシュ値を固定長文字列として返します。[`FixedString(32)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の SHA256 ハッシュ値を固定長の文字列として返します。[`FixedString(32)`](/sql-reference/data-types/fixedstring) **例** @@ -279,9 +278,9 @@ SELECT HEX(SHA256('abc')); ## SHA384 {#SHA384} -導入バージョン:v1.1 +導入されたバージョン: v1.1 -指定した文字列の SHA384 ハッシュ値を計算します。 +指定された文字列の SHA384 ハッシュ値を計算します。 **構文** @@ -293,9 +292,9 @@ SHA384(s) * `s` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -指定された入力文字列の SHA384 ハッシュ値を固定長の文字列として返します。[`FixedString(48)`](/sql-reference/data-types/fixedstring) +指定した入力文字列の SHA384 ハッシュ値を、長さ 48 の固定長文字列として返します。[`FixedString(48)`](/sql-reference/data-types/fixedstring) **例** @@ -313,9 +312,9 @@ SELECT HEX(SHA384('abc')); ## SHA512 {#SHA512} -導入バージョン: v1.1 +導入されたバージョン: v1.1 -与えられた文字列の SHA512 ハッシュ値を計算します。 +指定した文字列の SHA512 ハッシュ値を計算します。 **構文** @@ -329,7 +328,7 @@ SHA512(s) **戻り値** -与えられた入力文字列の SHA512 ハッシュ値を固定長文字列として返します。[`FixedString(64)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の SHA512 ハッシュ値を固定長の文字列として返します。[`FixedString(64)`](/sql-reference/data-types/fixedstring) **例** @@ -347,9 +346,9 @@ SELECT HEX(SHA512('abc')); ## SHA512_256 {#SHA512_256} -導入バージョン: v1.1 +導入: v1.1 -指定された文字列の SHA512_256 ハッシュ値を計算します。 +与えられた文字列の SHA512_256 ハッシュを計算します。 **構文** @@ -361,9 +360,9 @@ SHA512_256(s) * `s` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**返り値** -指定された入力文字列の SHA512_256 ハッシュを固定長文字列として返します。[`FixedString(32)`](/sql-reference/data-types/fixedstring) +指定された入力文字列の SHA512_256 ハッシュを固定長の文字列として返します。[`FixedString(32)`](/sql-reference/data-types/fixedstring) **例** @@ -383,14 +382,14 @@ SELECT HEX(SHA512_256('abc')); 導入バージョン: v1.1 -URL から取得した文字列に対して、何らかの正規化処理を行ったうえで適用する、高速かつ十分な品質を備えた非暗号学的ハッシュ関数です。 +URL から取得した文字列に対して、何らかの正規化処理を行ったうえで用いる、高速かつ品質の高い非暗号学的ハッシュ関数です。 このハッシュ関数には 2 つのモードがあります: -| Mode | Description | -| ----------------- | ------------------------------------------------------------------------------------------------------------- | -| `URLHash(url)` | 末尾に存在する場合は、末尾の `/`、`?`、`#` のいずれか 1 文字を取り除いた文字列からハッシュを計算します。 | -| `URLHash(url, N)` | 末尾に存在する場合は、末尾の `/`、`?`、`#` のいずれか 1 文字を取り除いたうえで、URL 階層の N レベル目までの文字列からハッシュを計算します。レベルの定義は `URLHierarchy` と同じです。 | +| モード | 説明 | +| ----------------- | -------------------------------------------------------------------------------------------------------------------- | +| `URLHash(url)` | 末尾に `/`、`?`、`#` のいずれかの記号が存在する場合、それらのうち 1 つを取り除いた文字列からハッシュ値を計算します。 | +| `URLHash(url, N)` | URL 階層の N レベル目までの文字列から、末尾に `/`、`?`、`#` のいずれかの記号が存在する場合はそれらのうち 1 つを取り除いたうえで、ハッシュ値を計算します。レベルの定義は `URLHierarchy` と同じです。 | **構文** @@ -401,11 +400,11 @@ URLHash(url[, N]) **引数** * `url` — ハッシュ化する URL 文字列。[`String`](/sql-reference/data-types/string) -* `N` — 省略可能。URL 階層内のレベル。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `N` — オプション。URL の階層におけるレベル。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -`url` の算出されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +`url` のハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -421,7 +420,7 @@ SELECT URLHash('https://www.clickhouse.com') └──────────────────────────┘ ``` -**指定レベルでの URL のハッシュ** +**指定したレベルの URL ハッシュ値** ```sql title=Query SELECT URLHash('https://www.clickhouse.com/docs', 0); @@ -429,11 +428,11 @@ SELECT URLHash('https://www.clickhouse.com/docs', 1); ``` ```response title=Response --- https://www.clickhouse.com のハッシュ +-- hash of https://www.clickhouse.com ┌─URLHash('htt⋯m/docs', 0)─┐ │ 13614512636072854701 │ └──────────────────────────┘ --- https://www.clickhouse.com/docs のハッシュ +-- hash of https://www.clickhouse.com/docs ┌─URLHash('htt⋯m/docs', 1)─┐ │ 13167253331440520598 │ └──────────────────────────┘ @@ -443,21 +442,21 @@ SELECT URLHash('https://www.clickhouse.com/docs', 1); 導入バージョン: v1.1 -64 ビットの [CityHash](https://github.com/google/cityhash) ハッシュ値を生成します。 +64 ビットの [CityHash](https://github.com/google/cityhash) ハッシュ値を返します。 -これは高速な非暗号学的ハッシュ関数です。 -文字列型の引数には CityHash アルゴリズムを使用し、それ以外のデータ型の引数には実装依存の高速な非暗号学的ハッシュ関数を使用します。 -この関数は、最終結果を得るために CityHash のコンビネーターを使用します。 +これは高速な非暗号論的ハッシュ関数です。 +文字列パラメータには CityHash アルゴリズムを使用し、それ以外のデータ型のパラメータには実装固有の高速な非暗号論的ハッシュ関数を使用します。 +最終的な結果を得るために CityHash のコンビネータを使用します。 :::info Google は、CityHash が ClickHouse に追加された後に CityHash のアルゴリズムを変更しました。 -つまり、ClickHouse の cityHash64 と Google のアップストリーム CityHash は現在異なる結果を生成します。 -ClickHouse の cityHash64 は CityHash v1.0.2 に対応しています。 +言い換えると、現在では ClickHouse の cityHash64 と Google の上流版 CityHash は異なる結果を生成します。 +ClickHouse の cityHash64 は CityHash v1.0.2 に対応します。 ::: :::note -異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が等しくなる場合があります。 -これは例えば、サイズの異なる整数型、同じデータを持つ名前付き・名前なしの `Tuple`、および同じデータを持つ `Map` とそれに対応する `Array(Tuple(key, value))` 型などに影響します。 +異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が同じになる場合があります。 +これは、例えばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -468,7 +467,7 @@ cityHash64(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュ値を計算する対象となる可変個数の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変長の入力引数。[`Any`](/sql-reference/data-types) **戻り値** @@ -488,7 +487,7 @@ SELECT cityHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:0 └──────────────────────┴────────┘ ``` -**行の順序も含めてテーブル全体のチェックサムを計算する** +**行の順序まで考慮してテーブル全体のチェックサムを計算する** ```sql title=Query CREATE TABLE users ( @@ -521,12 +520,12 @@ SELECT groupBitXor(cityHash64(*)) FROM users; `Fingerprint64` メソッドを使用して 64 ビットの [FarmHash](https://github.com/google/farmhash) 値を生成します。 :::tip -[`farmHash64`](#farmHash64) よりも安定かつ移植性の高い値が必要な場合は、`farmFingerprint64` の使用を推奨します。 +`farmFingerprint64` は、[`farmHash64`](#farmHash64) よりも安定かつ移植性の高い値が必要な場合に推奨されます。 ::: :::note -計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して等しくなる場合があります。 -これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などが該当します。 +異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が等しくなる場合があります。 +これは、例えばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と対応する `Array(Tuple(key, value))` 型などが該当します。 ::: **構文** @@ -537,11 +536,11 @@ farmFingerprint64(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算する可変長の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変個の入力引数。 [`Any`](/sql-reference/data-types) -**戻り値** +**返り値** -入力引数から計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力引数に対して計算されたハッシュ値を返します。 [`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -561,15 +560,15 @@ SELECT farmFingerprint64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 導入バージョン: v1.1 -`Hash64` メソッドを使用して 64 ビットの [FarmHash](https://github.com/google/farmhash) を生成します。 +`Hash64` メソッドを使用して、64 ビットの [FarmHash](https://github.com/google/farmhash) を生成します。 :::tip -安定かつ移植性の高い値が必要な場合は [`farmFingerprint64`](#farmFingerprint64) の使用を推奨します。 +安定して移植性の高い値が必要な場合は、[`farmFingerprint64`](#farmFingerprint64) の使用を推奨します。 ::: :::note -計算されるハッシュ値は、異なる引数型であっても、同じ入力値に対して同一になる場合があります。 -これは、たとえばサイズの異なる整数型、同一データを持つ名前付きおよび名前なしの `Tuple`、同一データを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 +計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同一になる場合があります。 +これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -580,11 +579,11 @@ farmHash64(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュ値を計算する任意個の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算する対象となる任意個数の入力引数。[`Any`](/sql-reference/data-types) -**戻り値** +**返される値** -入力引数のハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力引数に対して計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -604,9 +603,9 @@ SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:0 導入バージョン: v20.1 -入力値に対して、[GCC](https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191) で使用されているものと同じシードを用いて、64ビットの [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュを計算します。 +入力値に対して、[GCC](https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191) で使用されているものと同じシードを用いて、64 ビットの [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュ値を計算します。 -Clang と GCC のビルド間で同じ結果が得られます。 +Clang ビルドと GCC ビルドの間で同じ結果が得られるように移植性があります。 **構文** @@ -616,11 +615,11 @@ gccMurmurHash(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算する任意個の引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュ値を計算する対象となる任意個数の引数。[`Any`](/sql-reference/data-types) -**戻り値** +**返り値** -入力引数に対して計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力引数のハッシュ値を計算して返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -642,13 +641,13 @@ SELECT 導入バージョン: v1.1 -すべての入力パラメータを文字列として[解釈し](/sql-reference/functions/type-conversion-functions#reinterpretasstring)、それぞれに対して MD5 ハッシュ値を計算します。次に、それらのハッシュ値を連結し、得られた文字列のハッシュの先頭 8 バイトを取り出し、それをビッグエンディアンのバイト順で [UInt64](/sql-reference/data-types/int-uint) として解釈します。この関数は比較的低速です(1 プロセッサコアあたり 1 秒間に 500 万件の短い文字列)。 +すべての入力パラメータを文字列として[解釈し](/sql-reference/functions/type-conversion-functions#reinterpretasstring)、それぞれに対して MD5 ハッシュ値を計算します。次にハッシュ値を結合し、得られた文字列のハッシュの先頭 8 バイトを取得し、それをビッグエンディアンのバイト順で [UInt64](/sql-reference/data-types/int-uint) として解釈します。この関数は比較的低速です(1 プロセッサコアあたり毎秒 500 万件の短い文字列)。 代わりに [`sipHash64`](#sipHash64) 関数の使用を検討してください。 -この関数は可変数の入力パラメータを取ります。 -引数には、サポートされている任意のデータ型を指定できます。 -一部のデータ型では、引数の型が異なっていても(サイズの異なる整数、同一データを持つ名前付きおよび名前なしの Tuple、同一データを持つ Map と、同一データを持つ対応する Array(Tuple(key, value)) 型など)、同じ値に対してはハッシュ関数の計算結果が同じになる場合があります。 +この関数は可変個数の入力パラメータを受け取ります。 +引数にはサポートされている任意のデータ型を指定できます。 +一部のデータ型では、引数の型が異なっていても(サイズの異なる整数、同じデータを持つ名前付きおよび名前なしの Tuple、同じデータを持つ Map と対応する Array(Tuple(key, value)) 型など)、同じ値に対して計算されるハッシュ関数の値が同じになる場合があります。 **構文** @@ -658,11 +657,11 @@ halfMD5(arg1[, arg2, ..., argN]) **引数** -* `arg1[, arg2, ..., argN]` — ハッシュを計算する可変個数の引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ..., argN]` — ハッシュを計算する可変長の引数。[`Any`](/sql-reference/data-types) **戻り値** -指定した入力引数の half MD5 ハッシュ値を計算し、ビッグエンディアンのバイト順序で `UInt64` として返します。[`UInt64`](/sql-reference/data-types/int-uint) +指定された入力パラメータの half MD5 ハッシュ値を計算し、その結果をビッグエンディアンのバイト順の `UInt64` として返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -683,12 +682,12 @@ SELECT HEX(halfMD5('abc', 'cde', 'fgh')); 導入バージョン: v20.1 文字列から「HiveHash」を計算します。 -これは符号ビットをゼロクリアした [`JavaHash`](#javaHash) と同じです。 -この関数は、バージョン 3.0 より前の [Apache Hive](https://en.wikipedia.org/wiki/Apache_Hive) で使用されています。 +これは、符号ビットをゼロクリアした [`JavaHash`](#javaHash) です。 +この関数は [Apache Hive](https://en.wikipedia.org/wiki/Apache_Hive) の 3.0 より前のバージョンで使用されています。 :::caution -このハッシュ関数は性能が高くありません。 -すでに別のシステムでこのアルゴリズムが使われており、同じ結果を計算する必要がある場合にのみ使用してください。 +このハッシュ関数は性能が低いです。 +このアルゴリズムがすでに別のシステムで使われており、同じ結果を計算する必要がある場合にのみ使用してください。 ::: **構文** @@ -701,9 +700,9 @@ hiveHash(arg) * `arg` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -入力文字列に対して計算された「hive hash」の値を返します。[`Int32`](/sql-reference/data-types/int-uint) +入力文字列に対する「hive hash」を計算して返します。[`Int32`](/sql-reference/data-types/int-uint) **例** @@ -723,7 +722,7 @@ SELECT hiveHash('Hello, world!'); 導入バージョン: v25.5 -Iceberg の [ハッシュ変換](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements)ロジックを実装します。 +Apache Iceberg の [hashing transform](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements) のロジックを実装します。 **構文** @@ -733,16 +732,16 @@ icebergHash(value) **引数** -* `value` — ハッシュ値を計算する入力値。[`Integer`](/sql-reference/data-types/int-uint)、[`Bool`](/sql-reference/data-types/boolean)、[`Decimal`](/sql-reference/data-types/decimal)、[`Float*`](/sql-reference/data-types/float)、[`String`](/sql-reference/data-types/string)、[`FixedString`](/sql-reference/data-types/fixedstring)、[`UUID`](/sql-reference/data-types/uuid)、[`Date`](/sql-reference/data-types/date)、[`Time`](/sql-reference/data-types/time)、[`DateTime`](/sql-reference/data-types/datetime) のいずれか。 +* `value` — ハッシュを計算する元の値。[`Integer`](/sql-reference/data-types/int-uint)、[`Bool`](/sql-reference/data-types/boolean)、[`Decimal`](/sql-reference/data-types/decimal)、[`Float*`](/sql-reference/data-types/float)、[`String`](/sql-reference/data-types/string)、[`FixedString`](/sql-reference/data-types/fixedstring)、[`UUID`](/sql-reference/data-types/uuid)、[`Date`](/sql-reference/data-types/date)、[`Time`](/sql-reference/data-types/time)、[`DateTime`](/sql-reference/data-types/datetime) のいずれか。 -**返される値** +**戻り値** -32 ビットの Murmur3 ハッシュ(x86 バリアント、シード値 0)を表す [`Int32`](/sql-reference/data-types/int-uint) 型の値を返します。 - -**例** +32 ビットの Murmur3 ハッシュ値(x86 バリアント、シード値 0)を返します。型は [`Int32`](/sql-reference/data-types/int-uint) です。 **使用例** +**例** + ```sql title=Query SELECT icebergHash(1.0 :: Float32) ``` @@ -753,9 +752,9 @@ SELECT icebergHash(1.0 :: Float32) ## intHash32 {#intHash32} -導入: v1.1 +導入バージョン: v1.1 -整数の 32 ビットハッシュ値を計算します。 +整数の32ビットのハッシュ値を計算します。 このハッシュ関数は比較的高速ですが、暗号学的ハッシュ関数ではありません。 @@ -771,7 +770,7 @@ intHash32(arg) **戻り値** -入力整数の32ビットハッシュ値([`UInt32`](/sql-reference/data-types/int-uint))を返します。 +入力された整数に対する 32 ビットのハッシュコードを返します。型は [`UInt32`](/sql-reference/data-types/int-uint) です。 **例** @@ -793,7 +792,7 @@ SELECT intHash32(42); 整数の 64 ビットハッシュ値を計算します。 -このハッシュ関数は比較的高速で([`intHash32`](#intHash32) よりも高速ですが)、暗号学的ハッシュ関数ではありません。 +このハッシュ関数は比較的高速で([`intHash32`](#intHash32) よりも高速)ですが、暗号学的ハッシュ関数ではありません。 **構文** @@ -803,7 +802,7 @@ intHash64(int) **引数** -* `int` — ハッシュ化する整数値。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `int` — ハッシュ化する整数。[`(U)Int*`](/sql-reference/data-types/int-uint) **戻り値** @@ -836,13 +835,13 @@ SELECT intHash64(42); * [Long](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Long.java#l1060). :::caution -このハッシュ関数は効率が良くありません。 -すでに別のシステムでこのアルゴリズムが使われており、同じ結果を計算する必要がある場合にのみ使用してください。 +このハッシュ関数は非効率です。 +このアルゴリズムがすでに別のシステムで使用されており、同じ結果を計算する必要がある場合にのみ使用してください。 ::: :::note -Java は符号付き整数に対するハッシュの計算のみをサポートしています。 -符号なし整数のハッシュを計算したい場合は、適切な符号付きの ClickHouse 型にキャストする必要があります。 +Java は符号付き整数のハッシュ計算のみをサポートしています。 +そのため、符号なし整数のハッシュを計算したい場合は、適切な符号付き ClickHouse 型にキャストする必要があります。 ::: **構文** @@ -853,7 +852,7 @@ javaHash(arg) **引数** -* `arg` — ハッシュ計算の対象となる入力値。[`Any`](/sql-reference/data-types) +* `arg` — ハッシュ化する入力値。[`Any`](/sql-reference/data-types) **戻り値** @@ -873,7 +872,7 @@ SELECT javaHash(toInt32(123)); └────────────────────────┘ ``` -**使用例2** +**使用例 2** ```sql title=Query SELECT javaHash('Hello, world!'); @@ -889,7 +888,7 @@ SELECT javaHash('Hello, world!'); 導入バージョン: v20.1 -UTF-16LE でエンコードされた文字列を表すバイト列が含まれていると仮定して、その文字列から [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452) を計算します。 +UTF-16LE エンコーディングされた文字列を表すバイト列が含まれていると仮定して、その文字列に対する [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452) を計算します。 **構文** @@ -903,7 +902,7 @@ javaHashUTF16LE(arg) **戻り値** -UTF-16LE でエンコードされた文字列のハッシュ値を返します。[`Int32`](/sql-reference/data-types/int-uint) +UTF-16LE でエンコードされた文字列に対して計算されたハッシュ値を返します。[`Int32`](/sql-reference/data-types/int-uint) **例** @@ -923,7 +922,7 @@ SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le')); 導入バージョン: v1.1 -整数に対して[jump consistent hash](https://arxiv.org/pdf/1406.2294.pdf)を計算します。 +整数に対する [jump consistent hash](https://arxiv.org/pdf/1406.2294.pdf) を計算します。 **構文** @@ -934,7 +933,7 @@ jumpConsistentHash(key, buckets) **引数** * `key` — 入力キー。[`UInt64`](/sql-reference/data-types/int-uint) -* `buckets` — バケット数。[`Int32`](/sql-reference/data-types/int-uint) +* `buckets` — バケットの数。[`Int32`](/sql-reference/data-types/int-uint) **戻り値** @@ -956,9 +955,9 @@ SELECT jumpConsistentHash(256, 4) ## kafkaMurmurHash {#kafkaMurmurHash} -導入: v23.4 +導入バージョン: v23.4 -入力値の 32 ビット [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュ値を、[Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482) で使用されているものと同じシードを用い、かつ最上位ビットを除外することで、[Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328) と互換性を持つように計算します。 +入力値に対して 32 ビットの [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュを計算します。[Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482) と同じシード値を使用し、[Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328) との互換性を保つために最上位ビットを使用しません。 **構文** @@ -968,11 +967,11 @@ kafkaMurmurHash(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュ値を計算するための可変個の引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変個の引数。[`Any`](/sql-reference/data-types) **戻り値** -入力引数に対して計算されたハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) +入力引数から計算されたハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -992,9 +991,9 @@ SELECT ## keccak256 {#keccak256} -導入されたバージョン: v25.4 +導入バージョン: v25.4 -指定された文字列の Keccak-256 暗号学的ハッシュ値を計算します。 +指定した文字列の Keccak-256 暗号学的ハッシュを計算します。 このハッシュ関数はブロックチェーンアプリケーション、特に Ethereum で広く使用されています。 **構文** @@ -1029,8 +1028,8 @@ SELECT hex(keccak256('hello')) 導入バージョン: v22.6 -Konstantin 'Kostik' Oblakov による、時間計算量および空間計算量がともに O(1) のコンシステントハッシュアルゴリズム。 -`n <= 32768` の場合にのみ効率的です。 +Konstantin 'Kostik' Oblakov による、時間計算量および空間計算量が O(1) のコンシステントハッシュアルゴリズムです。 +`n <= 32768` の場合にのみ効率的に動作します。 **構文** @@ -1042,10 +1041,10 @@ kostikConsistentHash(input, n) **引数** -* `input` — 整数のキー。[`UInt64`](/sql-reference/data-types/int-uint) -* `n` — バケット数。[`UInt16`](/sql-reference/data-types/int-uint) +* `input` — 整数キー。[`UInt64`](/sql-reference/data-types/int-uint) +* `n` — バケットの数。[`UInt16`](/sql-reference/data-types/int-uint) -**戻り値** +**返される値** 計算されたハッシュ値を返します。[`UInt16`](/sql-reference/data-types/int-uint) @@ -1067,11 +1066,11 @@ SELECT kostikConsistentHash(16045690984833335023, 2); 導入バージョン: v1.1 -64 ビットの [MetroHash](http://www.jandrewrogers.com/2015/05/27/metrohash/) ハッシュ値を生成します。 +64ビットの [MetroHash](http://www.jandrewrogers.com/2015/05/27/metrohash/) ハッシュ値を生成します。 :::note -計算されるハッシュ値は、型が異なる引数であっても、同じ入力値に対して同一になる場合があります。 -これは例えば、サイズの異なる整数型や、同一データを持つ名前付きおよび名前なしの `Tuple`、同一データを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 +計算されるハッシュ値は、異なる引数型であっても同じ入力値に対して同一になる場合があります。 +これは、たとえばサイズの異なる整数型、同じデータを持つ名前付き/名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などが該当します。 ::: **構文** @@ -1082,11 +1081,11 @@ metroHash64(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算するための任意個の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュ値を計算する対象となる可変個の入力引数。[`Any`](/sql-reference/data-types) **戻り値** -入力引数に対して計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力引数から計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -1106,11 +1105,11 @@ SELECT metroHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00: 導入バージョン: v18.5 -入力値に対して [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュを計算します。 +入力値に対して [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュ値を計算します。 :::note -異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が同一になる場合があります。 -このことは、例えばサイズの異なる整数型、同一データを持つ名前付きおよび名前なしの `Tuple`、同一データを持つ `Map` と対応する `Array(Tuple(key, value))` 型などに影響します。 +同じ入力値でも、引数の型が異なる場合には、計算されるハッシュ値が同一になることがあります。 +これは例えば、サイズの異なる整数型、同一データを持つ名前付きおよび名前なしの `Tuple`、同一データを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -1121,11 +1120,11 @@ murmurHash2_32(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュ値を計算する可変個の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための任意個の入力引数。[`Any`](/sql-reference/data-types) -**戻り値** +**返り値** -入力引数に対して計算されたハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) +入力引数から計算されたハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -1148,8 +1147,8 @@ SELECT murmurHash2_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: 入力値に対して [MurmurHash2](https://github.com/aappleby/smhasher) ハッシュを計算します。 :::note -同じ入力値に対しても、引数の型が異なる場合には、計算されるハッシュ値が同一になることがあります。 -これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` とそれに対応する `Array(Tuple(key, value))` 型などが該当します。 +同じ入力値であっても、引数の型が異なる場合には、計算されるハッシュ値が同一になることがあります。 +これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -1160,7 +1159,7 @@ murmurHash2_64(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変個の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変個数の入力引数。[`Any`](/sql-reference/data-types) **戻り値** @@ -1182,9 +1181,9 @@ SELECT murmurHash2_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ## murmurHash3_128 {#murmurHash3_128} -導入バージョン: v18.10 +導入: v18.10 -入力値の 128 ビット [MurmurHash3](https://github.com/aappleby/smhasher) ハッシュ値を計算します。 +入力値に対する 128 ビットの [MurmurHash3](https://github.com/aappleby/smhasher) ハッシュを計算します。 **構文** @@ -1194,11 +1193,11 @@ murmurHash3_128(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変個数の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変個数の入力引数。[`Any`](/sql-reference/data-types) -**戻り値** +**返り値** -入力引数の 128 ビット `MurmurHash3` ハッシュ値を返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +入力引数の 128 ビットの `MurmurHash3` ハッシュ値を返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **例** @@ -1221,8 +1220,8 @@ SELECT hex(murmurHash3_128('foo', 'foo', 'foo')); [MurmurHash3](https://github.com/aappleby/smhasher) のハッシュ値を生成します。 :::note -計算されるハッシュ値は、引数の型が異なっていても、同じ入力値に対して同一になる場合があります。 -例えば、サイズの異なる整数型、同一データを持つ名前付きおよび非名前付きの `Tuple`、同一データを持つ `Map` とそれに対応する `Array(Tuple(key, value))` 型などが該当します。 +計算されるハッシュ値は、異なる引数型であっても同じ入力値に対して同じ値になることがあります。 +これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -1233,11 +1232,11 @@ murmurHash3_32(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュ値を計算する対象となる可変個数の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変数の入力引数。[`Any`](/sql-reference/data-types) **戻り値** -入力引数から計算されたハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) +入力引数に対して計算されたハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -1255,13 +1254,13 @@ SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ## murmurHash3_64 {#murmurHash3_64} -導入: v18.10 +導入バージョン: v18.10 -入力値に対して [MurmurHash3](https://github.com/aappleby/smhasher) ハッシュを計算します。 +入力値の [MurmurHash3](https://github.com/aappleby/smhasher) ハッシュを計算します。 :::note -同じ入力値であっても、引数の型が異なる場合に計算されるハッシュ値が同一になることがあります。 -これは、たとえばサイズの異なる整数型、同じデータを持つ名前付き/名前なしの `Tuple`、同じデータを持つ `Map` 型および対応する `Array(Tuple(key, value))` 型などに該当します。 +計算されるハッシュ値は、引数の型が異なっていても、同じ入力値であれば等しくなる場合があります。 +これは、たとえばサイズの異なる整数型、同じデータを持つ名前付き・名前なしの `Tuple`、同じデータを持つ `Map` 型とそれに対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -1272,7 +1271,7 @@ murmurHash3_64(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュ値を計算するための任意個数の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための任意個の入力引数。[`Any`](/sql-reference/data-types) **戻り値** @@ -1296,12 +1295,12 @@ SELECT murmurHash3_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: 導入バージョン: v21.1 -ASCII 文字列を、`ngramsize` 個の文字からなる n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュ値を要素とするタプルを返します。 -`hashnum` 個の最小ハッシュを用いて最小ハッシュを計算し、`hashnum` 個の最大ハッシュを用いて最大ハッシュを計算します。 +ASCII 文字列を、`ngramsize` 文字からなる n-gram に分割し、各 n-gram に対してハッシュ値を計算して、これらのハッシュ値を要素とするタプルを返します。 +最小ハッシュを計算するために `hashnum` 個の最小ハッシュ値を、最大ハッシュを計算するために `hashnum` 個の最大ハッシュ値を使用します。 大文字と小文字は区別されます。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使用して、類似した文字列を検出するために利用できます。 -2 つの文字列に対して、返されるハッシュ値が両方の文字列で同じであれば、それらの文字列は同一です。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて、ほぼ重複している文字列を検出するために使用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一です。 **構文** @@ -1311,13 +1310,13 @@ ngramMinHash(string[, ngramsize, hashnum]) **引数** -* `string` — ハッシュ値を計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可能。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可能。結果の計算に使用する最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 省略可能。n-gram のサイズ。`1` から `25` までの任意の値で、デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用する最小および最大ハッシュの個数。`1` から `25` までの任意の値で、デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -最小値と最大値、2 つのハッシュ値からなるタプルを返します。[`Tuple`](/sql-reference/data-types/tuple) +最小値と最大値の 2 つのハッシュを要素に持つタプルを返します。[`Tuple`](/sql-reference/data-types/tuple) **例** @@ -1337,7 +1336,7 @@ SELECT ngramMinHash('ClickHouse') AS Tuple; 導入バージョン: v21.1 -ASCII 文字列を `ngramsize` 文字からなる N-グラムに分割し、同じ入力に対して [`ngramMinHash`](#ngramMinHash) 関数で計算されるハッシュ値のうち、最小値と最大値を持つ N-グラムを返します。 +ASCII 文字列を、長さ `ngramsize` の n-gram に分割し、同じ入力に対して [`ngramMinHash`](#ngramMinHash) 関数で計算されたハッシュ値が最小および最大となる n-gram を返します。 大文字と小文字を区別します。 **構文** @@ -1348,13 +1347,13 @@ ngramMinHashArg(string[, ngramsize, hashnum]) **引数** -* `string` — ハッシュ値を計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果を計算する際に使用される最小ハッシュ数および最大ハッシュ数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `ngramsize` — オプション。n-gram のサイズで、`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — オプション。結果の計算に使用される最小および最大ハッシュの数で、`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -`hashnum` 個の n-gram を持つ 2 つのタプルから成るタプルを返します。[`Tuple(String)`](/sql-reference/data-types/tuple) +それぞれが `hashnum` 個の n-gram を持つ 2 つのタプルを要素とするタプルを返します。[`Tuple(String)`](/sql-reference/data-types/tuple) **例** @@ -1374,8 +1373,8 @@ SELECT ngramMinHashArg('ClickHouse') AS Tuple; 導入バージョン: v21.1 -ASCII 文字列を `ngramsize` 文字からなる n-gram に分割し、同じ入力に対して [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) 関数で計算される、ハッシュ値が最小の n-gram と最大の n-gram を返します。 -大文字小文字は区別されません。 +ASCII 文字列を `ngramsize` 文字の n-gram に分割し、同じ入力に対して [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) 関数で計算されたハッシュ値が最小および最大となる n-gram を返します。 +大文字と小文字を区別しません。 **構文** @@ -1386,12 +1385,12 @@ ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可。n-グラムのサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — オプション。n-gram のサイズで、`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — オプション。結果の計算に使用する最小および最大ハッシュの個数で、`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -`hashnum` 個の n-グラムを持つ 2 つのタプルから成るタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +`hashnum` 個の n-gram をそれぞれ含む 2 つのタプルを要素とするタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** @@ -1411,8 +1410,8 @@ SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple; 導入バージョン: v21.1 -UTF-8 文字列を、`ngramsize` 文字からなる n-gram に分割し、同じ入力に対して ngramMinHashCaseInsensitiveUTF8 関数で計算されるハッシュ値が最小および最大の n-gram を返します。 -大文字と小文字は区別されません。 +UTF-8 文字列を `ngramsize` 文字から成る n-gram に分割し、同じ入力に対して ngramMinHashCaseInsensitiveUTF8 関数で計算されたハッシュ値のうち、最小および最大のハッシュを持つ n-gram を返します。 +大文字小文字は区別されません。 **構文** @@ -1422,13 +1421,13 @@ ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum]) **引数** -* `string` — ハッシュ値を計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果を計算する際に使用する最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 省略可能。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -それぞれに `hashnum` 個の n-gram を含む 2 つのタプルから成るタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +それぞれに `hashnum` 個の n-gram を含む 2 つのタプルを要素とするタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** @@ -1448,7 +1447,7 @@ SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple; 導入バージョン: v21.1 -UTF-8 文字列を `ngramsize` 文字から成る N グラムに分割し、同じ入力に対して `ngramMinHashUTF8` 関数で計算されるハッシュ値が最小および最大となる N グラムを返します。 +UTF-8 文字列を `ngramsize` 個の文字からなる n-gram に分割し、同じ入力を `ngramMinHashUTF8` 関数に渡した場合と同様に計算されるハッシュ値のうち、最小および最大のハッシュ値を持つ n-gram を返します。 大文字と小文字は区別されます。 **構文** @@ -1460,12 +1459,12 @@ ngramMinHashArgUTF8(string[, ngramsize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルトは `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果の計算に使用される最小および最大ハッシュの数。`1` から `25` までの任意の数値。デフォルトは `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — オプション。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — オプション。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -`hashnum` 個の n-gram を持つ 2 つのタプルからなるタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +それぞれが `hashnum` 個の n-gram を持つ 2 つのタプルからなるタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** @@ -1485,12 +1484,12 @@ SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple; 導入バージョン: v21.1 -ASCII文字列を `ngramsize` 文字の n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュを含むタプルを返します。 -`hashnum` 個の最小ハッシュを用いて最小ハッシュを計算し、`hashnum` 個の最大ハッシュを用いて最大ハッシュを計算します。 +ASCII 文字列を、長さ `ngramsize` の n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュを含むタプルを返します。 +`hashnum` 個の最小ハッシュ候補から最小ハッシュを計算し、`hashnum` 個の最大ハッシュ候補から最大ハッシュを計算します。 大文字小文字は区別しません。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使って、準重複文字列を検出するために利用できます。 -2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなせます。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて、類似した文字列を検出するために使用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一です。 **構文** @@ -1500,11 +1499,11 @@ ngramMinHashCaseInsensitive(string[, ngramsize, hashnum]) **引数** -* `string` — 文字列。[String](../data-types/string.md)。- `ngramsize` — n-gram のサイズ。省略可能。許容値: `1` から `25` までの任意の整数値。デフォルト値: `3`。[UInt8](../data-types/int-uint.md)。- `hashnum` — 結果を計算する際に使用する、最小ハッシュおよび最大ハッシュの数。省略可能。許容値: `1` から `25` までの任意の整数値。デフォルト値: `6`。[UInt8](../data-types/int-uint.md)。 +* `string` — 文字列。[String](../data-types/string.md)。- `ngramsize` — n-gram のサイズ。省略可能。取りうる値: `1` から `25` までの任意の数値。デフォルト値: `3`。[UInt8](../data-types/int-uint.md)。- `hashnum` — 結果の計算に使用される最小および最大ハッシュの数。省略可能。取りうる値: `1` から `25` までの任意の数値。デフォルト値: `6`。[UInt8](../data-types/int-uint.md)。 -**戻り値** +**返り値** -2 つのハッシュ(最小値と最大値)を含むタプル。[Tuple](../data-types/tuple.md)([UInt64](../data-types/int-uint.md), [UInt64](../data-types/int-uint.md))。[`Tuple`](/sql-reference/data-types/tuple) +2 つのハッシュ (最小値および最大値) を含むタプル。[Tuple](../data-types/tuple.md)([UInt64](../data-types/int-uint.md), [UInt64](../data-types/int-uint.md)). [`Tuple`](/sql-reference/data-types/tuple) **例** @@ -1524,28 +1523,28 @@ SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple; 導入バージョン: v21.1 -UTF-8 文字列を `ngramsize` 個の文字からなる n-gram に分割し、それぞれの n-gram に対してハッシュ値を計算し、それらのハッシュを要素とするタプルを返します。 -`hashnum` 個の最小ハッシュを使って最小ハッシュを計算し、`hashnum` 個の最大ハッシュを使って最大ハッシュを計算します。 -大文字・小文字は区別しません。 +UTF-8 文字列を `ngramsize` 個の文字からなる n-gram に分割し、それぞれの n-gram に対してハッシュ値を計算し、それらのハッシュを含むタプルを返します。 +最小ハッシュ値を計算するために `hashnum` 個の最小ハッシュを、最大ハッシュ値を計算するために `hashnum` 個の最大ハッシュを使用します。 +大文字小文字は区別されません。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて、部分的に重複した(セミ重複)文字列を検出するために使用できます。 -2 つの文字列に対して、返されるハッシュが同じであれば、それらの文字列は同一と見なされます。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使用して、類似(半重複)の文字列を検出するために利用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなせます。 **構文** ```sql -ngramMinHashCaseInsensitiveUTF8(文字列 [, nグラムサイズ, ハッシュ数]) +ngramMinHashCaseInsensitiveUTF8(string [, ngramsize, hashnum]) ``` **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可能。N-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可能。結果の計算に使用するハッシュ値の最小個数および最大個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — 省略可能。n-gram のサイズ。`1` から `25` までの任意の数値。既定値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値。既定値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返される値** -最小値と最大値の 2 つのハッシュを要素として含むタプルを返します。[`Tuple`](/sql-reference/data-types/tuple) +最小ハッシュと最大ハッシュという 2 つのハッシュを要素に持つタプルを返します。[`Tuple`](/sql-reference/data-types/tuple) **例** @@ -1565,12 +1564,12 @@ SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple; 導入バージョン: v21.1 -UTF-8 文字列を `ngramsize` 文字の n-gram に分割し、各 n-gram のハッシュ値を計算して、それらのハッシュからなるタプルを返します。 -`hashnum` 個の最小ハッシュ値を用いて最小ハッシュを計算し、`hashnum` 個の最大ハッシュ値を用いて最大ハッシュを計算します。 +UTF-8 文字列を、`ngramsize` 文字からなる n-gram に分割し、それぞれの n-gram についてハッシュ値を計算し、これらのハッシュ値のタプルを返します。 +最小ハッシュ値を計算するために `hashnum` 個の最小ハッシュを、最大ハッシュ値を計算するために `hashnum` 個の最大ハッシュを使用します。 大文字と小文字は区別されます。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使って、部分的に重複した文字列を検出するために使用できます。 -2 つの文字列について、返されるハッシュが両方で同じであれば、それらの文字列は同一です。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて、部分的に重複する文字列を検出するために使用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一です。 **構文** @@ -1580,13 +1579,13 @@ ngramMinHashUTF8(string[, ngramsize, hashnum]) **引数** -* `string` — ハッシュ値を計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可能。N-gram のサイズ。`1` から `25` の任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可能。結果の計算に使用する最小および最大ハッシュの数。`1` から `25` の任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 省略可能。n-gram のサイズ。`1` から `25` までの任意の数値で、デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用する最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値で、デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -2 つのハッシュ(最小値と最大値)を要素とするタプルを返します。[`Tuple`](/sql-reference/data-types/tuple) +最小ハッシュと最大ハッシュの 2 つのハッシュからなるタプルを返します。[`Tuple`](/sql-reference/data-types/tuple) **例** @@ -1606,10 +1605,10 @@ SELECT ngramMinHashUTF8('ClickHouse') AS Tuple; 導入バージョン: v21.1 -ASCII 文字列を、長さ `ngramsize` の記号からなる n-gram に分割し、その n-gram の `simhash` を返します。 +ASCII 文字列を、長さ `ngramsize` の記号列からなる n-gram に分割し、その n-gram の `simhash` を返します。 -[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) と組み合わせて、部分的に重複した文字列の検出に使用できます。 -2 つの文字列について計算された `simhashes` 間の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、それらの文字列が同一である可能性が高くなります。 +[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を用いた、類似した重複文字列の検出に利用できます。 +2 つの文字列から計算された `simhashes` 同士の [Hamming 距離](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列が同一である可能性が高くなります。 **構文** @@ -1619,12 +1618,12 @@ ngramSimHash(string[, ngramsize]) **引数** -* `string` — 大文字・小文字を区別して `simhash` を計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可能。n-gram のサイズで、`1` から `25` までの任意の数値。既定値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 大文字小文字を区別して `simhash` を計算するための文字列。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 省略可能。n-gram のサイズで、`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -入力文字列のハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力文字列に対して計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -1644,11 +1643,11 @@ SELECT ngramSimHash('ClickHouse') AS Hash; 導入バージョン: v21.1 -ASCII 文字列を、`ngramsize` 文字からなる n-gram に分割し、n-gram の `simhash` を返します。 -大文字と小文字を区別しません。 +ASCII 文字列を `ngramsize` 個の文字からなる n-gram に分割し、n-gram の `simhash` を返します。 +大文字・小文字は区別されません。 -[`bitHammingDistance`](/sql-reference/functions/bit-functions#bitHammingDistance) と組み合わせて、重複に近い文字列の検出に使用できます。 -2 つの文字列について計算した `simhash` の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、それらの文字列が同一である可能性が高くなります。 +[`bitHammingDistance`](/sql-reference/functions/bit-functions#bitHammingDistance) と組み合わせて、ほぼ重複した文字列の検出に使用できます。 +2 つの文字列について計算された `simhash` 値の [ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列が同一である可能性が高くなります。 **構文** @@ -1658,7 +1657,7 @@ ngramSimHashCaseInsensitive(string[, ngramsize]) **引数** -* `string` — 大文字小文字を区別せずに `simhash` を計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `string` — 大文字小文字を区別しない `simhash` を計算する対象の文字列。[`String`](/sql-reference/data-types/string) * `ngramsize` — 省略可能。n-gram のサイズで、`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** @@ -1683,10 +1682,10 @@ SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash; 導入バージョン: v21.1 -UTF-8 文字列を `ngramsize` 個の文字からなる n-gram に分割し、n-gram の `simhash` を返します。 -大文字と小文字を区別しません。 +UTF-8 文字列を、`ngramsize` 文字からなる n-gram に分割し、その n-gram の `simhash` を返します。 +大文字小文字は区別されません。 -[bitHammingDistance](../functions/bit-functions.md/#bitHammingDistance) と組み合わせて、重複度の高い文字列の検出に使用できます。2 つの文字列について計算された `simhash` 値同士の [Hamming Distance](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列が同一である可能性が高くなります。 +[bitHammingDistance](../functions/bit-functions.md/#bitHammingDistance) と組み合わせて、部分的に重複した文字列の検出に使用できます。2つの文字列から計算された `simhash` 同士の [Hamming Distance](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列は同一である可能性が高くなります。 **構文** @@ -1697,7 +1696,7 @@ ngramSimHashCaseInsensitiveUTF8(string[, ngramsize]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可能。n-gram のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — 省略可。n-gram のサイズ。`1` から `25` までの任意の整数値。既定値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** @@ -1721,11 +1720,11 @@ SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS Hash; 導入バージョン: v21.1 -UTF-8 エンコードされた文字列を `ngramsize` 個の文字からなる n-gram に分割し、その n-gram の `simhash` を返します。 -大文字と小文字を区別します。 +UTF-8 でエンコードされた文字列を、`ngramsize` 個のシンボルからなる n-gram に分割し、各 n-gram に対する `simhash` を返します。 +大文字と小文字は区別されます。 -[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) と組み合わせて、部分的に重複した文字列の検出に使用できます。 -2 つの文字列について計算された `simhashes` の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、それらの文字列が同一である可能性が高くなります。 +[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を用いた、ほぼ重複した文字列の検出に利用できます。 +2 つの文字列について計算された `simhash` の [ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それら 2 つの文字列が同一である可能性が高くなります。 **構文** @@ -1736,7 +1735,7 @@ ngramSimHashUTF8(string[, ngramsize]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 省略可能。n-gram のサイズで、`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — オプション。n-gram のサイズ。`1` から `25` までの任意の整数。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** @@ -1760,11 +1759,11 @@ SELECT ngramSimHashUTF8('ClickHouse') AS Hash; 導入バージョン: v1.1 -[`sipHash64`](#sipHash64) に似ていますが、128 ビットのハッシュ値を生成します。つまり、最終的な XOR フォールディング処理が 128 ビットまで行われます。 +[`sipHash64`](#sipHash64) と同様ですが、128 ビットのハッシュ値を生成します。すなわち、最終的な xor フォールディング処理が 128 ビットまで行われます。 -:::tip 新規プロジェクトでは sipHash128Reference を使用する -この 128 ビット版はリファレンス実装と異なり、安全性がより低い実装です。 -このバージョンが存在するのは、作成当時 SipHash の公式な 128 ビット拡張が存在しなかったためです。 +:::tip 新規プロジェクトでは sipHash128Reference を使用してください +この 128 ビット版はリファレンス実装と異なり、より弱いものです。 +このバージョンが存在するのは、実装当時、SipHash の公式な 128 ビット拡張が存在しなかったためです。 新規プロジェクトでは [`sipHash128Reference`](#sipHash128Reference) の使用を推奨します。 ::: @@ -1776,7 +1775,7 @@ sipHash128(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算する任意個の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変個数の入力引数。[`Any`](/sql-reference/data-types) **戻り値** @@ -1798,14 +1797,14 @@ SELECT hex(sipHash128('foo', '\x01', 3)); ## sipHash128Keyed {#sipHash128Keyed} -導入バージョン: v23.2 +導入: v23.2 -[`sipHash128`](#sipHash128) と同じですが、固定キーを使う代わりに明示的なキー引数を追加で受け取ります。 +[`sipHash128`](#sipHash128) と同様ですが、固定キーを使用する代わりに、明示的なキー引数を追加で受け取ります。 -:::tip 新しいプロジェクトでは sipHash128ReferenceKeyed を使用してください -この 128 ビット版はリファレンス実装とは異なり、より弱くなっています。 -このバージョンが存在するのは、これが実装された当時、SipHash には公式な 128 ビット拡張が存在しなかったためです。 -新しいプロジェクトでは [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed) の使用が推奨されます。 +:::tip 新規プロジェクトでは sipHash128ReferenceKeyed を使用する +この 128 ビット版はリファレンス実装と挙動が異なり、より弱いです。 +このバージョンが存在するのは、実装当時、SipHash の公式な 128 ビット拡張が存在しなかったためです。 +新規プロジェクトでは [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed) の使用を推奨します。 ::: **構文** @@ -1817,11 +1816,11 @@ sipHash128Keyed((k0, k1), [arg1, arg2, ...]) **引数** * `(k0, k1)` — キーを表す 2 つの UInt64 値からなるタプル。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[, arg2, ...]` — ハッシュを計算するための任意個数の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変長入力引数。[`Any`](/sql-reference/data-types) -**戻り値** +**返される値** -型 [FixedString(16)](../data-types/fixedstring.md) の 128 ビットの `SipHash` ハッシュ値。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +型 [FixedString(16)](../data-types/fixedstring.md) の 128 ビット `SipHash` ハッシュ値。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **例** @@ -1851,7 +1850,7 @@ sipHash128Reference(arg1[, arg2, ...]) **引数** -* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変個の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算するための可変個数の入力引数。[`Any`](/sql-reference/data-types) **戻り値** @@ -1875,7 +1874,7 @@ SELECT hex(sipHash128Reference('foo', '', 3)); 導入バージョン: v23.2 -[`sipHash128Reference`](#sipHash128Reference) と同様ですが、固定キーを使用する代わりに、明示的なキー引数を取ります。 +[`sipHash128Reference`](#sipHash128Reference) と同様ですが、固定キーを使用する代わりに、明示的に指定されたキー引数を取ります。 **構文** @@ -1886,9 +1885,9 @@ sipHash128ReferenceKeyed((k0, k1), arg1[, arg2, ...]) **引数** * `(k0, k1)` — キーを表す 2 つの値からなるタプル。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変個数の入力引数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — ハッシュを計算する対象となる可変個の入力引数。[`Any`](/sql-reference/data-types) -**戻り値** +**返り値** 入力引数に対して計算された 128 ビットの `SipHash` ハッシュ値を返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) @@ -1912,18 +1911,18 @@ SELECT hex(sipHash128Reference('foo', '', 3)); 64 ビットの [SipHash](https://en.wikipedia.org/wiki/SipHash) ハッシュ値を生成します。 -これは暗号学的ハッシュ関数です。[`MD5`](#MD5) ハッシュ関数より少なくとも 3 倍高速で動作します。 +これは暗号学的ハッシュ関数です。[`MD5`](#MD5) ハッシュ関数に比べて、少なくとも 3 倍高速に動作します。 -この関数は、すべての入力パラメータを文字列として[解釈](/sql-reference/functions/type-conversion-functions#reinterpretasstring)し、それぞれについてハッシュ値を計算します。 -その後、以下のアルゴリズムでそれらのハッシュ値を結合します: +この関数は、すべての入力パラメータを文字列として[解釈](/sql-reference/functions/type-conversion-functions#reinterpretasstring)し、それぞれに対してハッシュ値を計算します。 +その後、次のアルゴリズムでハッシュを結合します: -1. 1 番目と 2 番目のハッシュ値を連結して配列を作成し、それをハッシュします。 -2. 直前に計算したハッシュ値と 3 番目の入力パラメータのハッシュ値を、同様の方法でハッシュします。 -3. この計算を、元の入力に対応する残りすべてのハッシュ値に対して繰り返します。 +1. 1 番目と 2 番目のハッシュ値を連結して配列を作成し、その配列をハッシュします。 +2. 直前に計算したハッシュ値と、3 番目の入力パラメータのハッシュ値を同様の方法でハッシュします。 +3. この計算を、元のすべての入力に対応する残りのハッシュ値に対して繰り返します。 :::note -同じ入力値でも、引数の型が異なる場合には、計算されるハッシュ値が同一になることがあります。 -これは、たとえばサイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と、それに対応する `Array(Tuple(key, value))` 型などに影響します。 +異なる引数型であっても、同じ入力値に対して計算されるハッシュ値が等しくなる場合があります。 +たとえば、サイズの異なる整数型、同じデータを持つ名前付きおよび名前なしの `Tuple`、同じデータを持つ `Map` と対応する `Array(Tuple(key, value))` 型などに影響します。 ::: **構文** @@ -1938,7 +1937,7 @@ sipHash64(arg1[, arg2, ...]) **戻り値** -入力引数に対して計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力引数から計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -1958,7 +1957,7 @@ SELECT sipHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00 導入バージョン: v23.2 -[`sipHash64`](#sipHash64) と同様ですが、固定キーではなく、明示的に指定したキー引数を取ります。 +固定キーを使用する代わりに明示的なキー引数を追加で受け取ることを除き、[`sipHash64`](#sipHash64) と同様です。 **構文** @@ -1968,8 +1967,8 @@ sipHash64Keyed((k0, k1), arg1[,arg2, ...]) **引数** -* `(k0, k1)` — キーを表す 2 つの値のタプル。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[,arg2, ...]` — 可変個の入力引数。[`Any`](/sql-reference/data-types) +* `(k0, k1)` — キーを表す2つの値からなるタプル。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +* `arg1[,arg2, ...]` — 可変個数の入力引数。[`Any`](/sql-reference/data-types) **返り値** @@ -1993,12 +1992,12 @@ SELECT sipHash64Keyed((506097522914230528, 1084818905618843912), array('e','x',' 導入バージョン: v21.1 -ASCII 文字列を `shinglesize` 語からなる部分列(シングル)に分割し、各シングルごとにハッシュ値を計算して、それらのハッシュを要素とするタプルを返します。 -最小ハッシュの計算には `hashnum` 個の最小ハッシュを、最大ハッシュの計算には `hashnum` 個の最大ハッシュを使用します。 +ASCII 文字列を `shinglesize` 語ずつのシングル(shingle)に分割し、各ワードシングルのハッシュ値を計算して、それらのハッシュを要素とするタプルを返します。 +`hashnum` 個の最小ハッシュを用いて最小ハッシュを計算し、`hashnum` 個の最大ハッシュを用いて最大ハッシュを計算します。 大文字と小文字は区別されます。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使って、準重複文字列を検出するために利用できます。 -2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一であるとみなせます。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使用して、部分的に重複している文字列を検出するために利用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、その 2 つの文字列は同一と見なされます。 **構文** @@ -2008,13 +2007,13 @@ wordShingleMinHash(string[, shinglesize, hashnum]) **引数** -* `string` — ハッシュ値を計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可能。ワードシングル(shingle)のサイズ。`1` から `25` の範囲の任意の整数。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の数。`1` から `25` の範囲の任意の整数。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 省略可能。word shingle のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュおよび最大ハッシュの数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -2 つのハッシュ値(最小値と最大値)を要素とするタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +最小ハッシュと最大ハッシュの 2 つのハッシュを含むタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **例** @@ -2034,8 +2033,8 @@ SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management 導入バージョン: v1.1 -ASCII 文字列を `shinglesize` 語ごとの部分(シングル)に分割し、同じ入力を用いて wordShingleMinHash 関数で計算される単語ハッシュの最小値および最大値を持つシングルを返します。 -ケースセンシティブです。 +ASCII 文字列を `shinglesize` 語ごとのパーツ(シングル)に分割し、同じ入力を用いて wordShingleMinHash 関数で計算された単語ハッシュの最小値および最大値に対応するシングルを返します。 +大文字と小文字は区別されます。 **構文** @@ -2045,20 +2044,20 @@ wordShingleMinHashArg(string[, shinglesize, hashnum]) **引数** -* `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可能。ワードシングル(word shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可能。結果の計算に使用する最小ハッシュと最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — ハッシュ値を計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `shinglesize` — オプション。ワードシングルのサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — オプション。結果の計算に使用される最小ハッシュおよび最大ハッシュの数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -`hashnum` 個のワードシングルを含む 2 つのタプルからなるタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +`hashnum` 個のワードシングルを含む 2 つのタプルから成るタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** **使用例** ```sql title=Query -SELECT wordShingleMinHashArg('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArg('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response @@ -2071,8 +2070,8 @@ SELECT wordShingleMinHashArg('ClickHouse®は、オンライン分析処理(OL 導入バージョン: v21.1 -ASCII文字列を、`shinglesize` 個の単語からなる部分(シングル)に分割し、同じ入力に対して [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) 関数で計算される、単語ハッシュが最小および最大となるシングルを返します。 -大文字と小文字は区別されません。 +ASCII 文字列を、`shinglesize` 語からなるパーツ(シングル)に分割し、同じ入力を用いて [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) 関数で計算される最小および最大の単語ハッシュを持つシングルを返します。 +大文字と小文字を区別しません。 **構文** @@ -2083,19 +2082,19 @@ wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可能。ワードシングルのサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュ値および最大ハッシュ値の個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — オプション。ワードシングルのサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — オプション。結果を計算するために使用される最小ハッシュおよび最大ハッシュの数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -`hashnum` 個のワードシングルをそれぞれ含む 2 つのタプルからなるタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +それぞれに `hashnum` 個のワードシングルを含む 2 つのタプルを要素とするタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** **使用例** ```sql title=Query -SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response @@ -2108,8 +2107,8 @@ SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse®は、オンライン 導入バージョン: v21.1 -UTF-8 文字列を `shinglesize` 語ずつの部分(シングル)に分割し、同じ入力に対して [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) 関数で計算される単語ハッシュの最小値および最大値に対応するシングルを返します。 -大文字小文字は区別されません。 +UTF-8 文字列を、各 `shinglesize` 語からなる部分(シングル)に分割し、同じ入力に対して [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) 関数で計算される、単語ハッシュが最小および最大となるシングルを返します。 +大文字と小文字を区別しません。 **構文** @@ -2120,19 +2119,19 @@ wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果の計算に使用される最小および最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。ワードシングルのサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュおよび最大ハッシュの数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) -**戻り値** +**返される値** -それぞれが `hashnum` 個のワードシングルを持つ 2 つのタプルから構成されるタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +`hashnum` 個のワードシングルをそれぞれ含む 2 つのタプルを要素とするタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** **使用例** ```sql title=Query -SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response @@ -2145,8 +2144,8 @@ SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse®は、オンライ 導入バージョン: v21.1 -UTF-8 文字列を `shinglesize` 語ごとの部分(shingle)に分割し、同じ入力に対して [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) 関数で計算される、単語ハッシュ値が最小および最大の shingle を返します。 -大文字と小文字は区別されます。 +UTF-8 文字列を、`shinglesize` 語ずつのシングル(単語列)に分割し、同じ入力に対して [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) 関数で計算された、単語ハッシュ値が最小および最大となるシングルを返します。 +大文字小文字を区別します。 **構文** @@ -2157,19 +2156,19 @@ wordShingleMinHashArgUTF8(string[, shinglesize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。ワードシングルのサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用する最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -`hashnum` 個のワードシングルをそれぞれ含む 2 つのタプルから成るタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +`hashnum` 個のワードシングルをそれぞれ含む 2 つのタプルを要素とするタプルを返します。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **例** **使用例** ```sql title=Query -SELECT wordShingleMinHashArgUTF8('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response @@ -2182,12 +2181,12 @@ SELECT wordShingleMinHashArgUTF8('ClickHouse®は、オンライン分析処理( 導入バージョン: v21.1 -ASCII 文字列を `shinglesize` 語からなる部分(シングル)に分割し、各ワードシングルのハッシュ値を計算して、そのハッシュを要素とするタプルを返します。 -`hashnum` 個の最小ハッシュを使用して最小ハッシュを計算し、`hashnum` 個の最大ハッシュを使用して最大ハッシュを計算します。 -大文字小文字は区別されません。 +ASCII 文字列を、`shinglesize` 語からなる部分(シングル)に分割し、それぞれのワードシングルについてハッシュ値を計算し、これらのハッシュ値からなるタプルを返します。 +最小ハッシュを計算するために `hashnum` 個のハッシュ値を用いてその最小値を求め、最大ハッシュを計算するために `hashnum` 個のハッシュ値を用いてその最大値を求めます。 +大文字と小文字は区別されません。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) と組み合わせて、準重複文字列を検出するために利用できます。 -2つの文字列について、返されるハッシュ値が両方の文字列で同じであれば、それらの文字列は同一であると見なせます。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使って、類似した(半重複の)文字列を検出するために使用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一であるとみなせます。 **構文** @@ -2198,12 +2197,12 @@ wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — オプション。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — オプション。結果を計算するために使用される最小ハッシュと最大ハッシュの数。`1` から `25` までの任意の値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用される最小ハッシュおよび最大ハッシュの数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) -**返される値** +**戻り値** -2 つのハッシュ(最小値と最大値)を要素に持つタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +最小ハッシュと最大ハッシュの 2 つのハッシュを含むタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **例** @@ -2223,12 +2222,12 @@ SELECT wordShingleMinHashCaseInsensitive('ClickHouse® is a column-oriented data 導入バージョン: v21.1 -UTF-8 文字列を `shinglesize` 語からなるシングル(shingle)に分割し、各シングルのハッシュ値を計算して、そのハッシュを要素とするタプルを返します。 -最小ハッシュ値を計算するために `hashnum` 個のハッシュを、最大ハッシュ値を計算するために `hashnum` 個のハッシュを使用します。 -大文字小文字は区別しません。 +UTF-8 文字列を `shinglesize` 語からなる shingle(部分列)に分割し、各 shingle に対してハッシュ値を計算し、これらのハッシュ値からなるタプルを返します。 +`hashnum` 個の最小ハッシュを用いて最小ハッシュを計算し、`hashnum` 個の最大ハッシュを用いて最大ハッシュを計算します。 +大文字と小文字は区別されません。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を使って、類似した文字列を検出するために使用できます。 -2 つの文字列に対して、返されるハッシュが両方で同じであれば、その文字列は同一であるとみなせます。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて、類似した文字列を検出できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一です。 **構文** @@ -2239,19 +2238,19 @@ wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の整数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果を計算するために使用される最小ハッシュおよび最大ハッシュの個数。`1` から `25` までの任意の整数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可。ワードシングル(shingle)のサイズ。`1` から `25` までの数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可。結果の計算に使用される最小ハッシュおよび最大ハッシュの数。`1` から `25` までの数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** -最小値と最大値の 2 つのハッシュを要素とするタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +2 つのハッシュ(最小値と最大値)から成るタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **例** **使用例** ```sql title=Query -SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。') AS Tuple; +SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2264,12 +2263,12 @@ SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse®は、オンライン 導入バージョン: v21.1 -UTF-8 文字列を、`shinglesize` 個の単語から成る部分列(シングル, shingle)に分割し、各単語シングルのハッシュ値を計算して、これらのハッシュを要素とするタプルを返します。 -`hashnum` 個の最小ハッシュを使って最小ハッシュを計算し、`hashnum` 個の最大ハッシュを使って最大ハッシュを計算します。 +UTF-8 文字列を `shinglesize` 語ごとのパーツ(シングル)に分割し、各ワードシングルのハッシュ値を計算し、それらのハッシュからなるタプルを返します。 +最小ハッシュの計算には `hashnum` 個の最小ハッシュを、最大ハッシュの計算には `hashnum` 個の最大ハッシュを使用します。 大文字と小文字は区別されます。 -[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて準重複文字列を検出するために利用できます。 -2 つの文字列に対して、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなされます。 +[`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) を用いて、ほぼ重複した文字列を検出するために使用できます。 +2 つの文字列について、返されるハッシュが両方の文字列で同じであれば、それらの文字列は同一とみなせます。 **構文** @@ -2280,19 +2279,19 @@ wordShingleMinHashUTF8(string[, shinglesize, hashnum]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可。単語シングル(shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 省略可。結果の計算に使用する最小ハッシュと最大ハッシュの数。`1` から `25` までの任意の数値。デフォルト値は `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。単語シングル(word shingle)の長さ。`1` から `25` までの任意の数値で、デフォルト値は `3` です。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 省略可能。結果の計算に使用する最小ハッシュおよび最大ハッシュの数。`1` から `25` までの任意の数値で、デフォルト値は `6` です。[`UInt8`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -2 つのハッシュ(最小値と最大値)を含むタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +2 つのハッシュ(最小値と最大値)を要素として持つタプルを返します。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **例** **使用例** ```sql title=Query -SELECT wordShingleMinHashUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。') AS Tuple; +SELECT wordShingleMinHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2305,11 +2304,11 @@ SELECT wordShingleMinHashUTF8('ClickHouse®は、オンライン分析処理(OLA 導入バージョン: v21.1 -ASCII 文字列を `shinglesize` 語から成る部分(ワードシングル)に分割し、そのワードシングルの `simhash` を返します。 +ASCII 文字列を、`shinglesize` 語からなる連続した単語列(シングル)に分割し、単語シングルの `simhash` を返します。 大文字と小文字は区別されます。 -[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) と組み合わせて、部分的に重複した文字列の検出に使用できます。 -2 つの文字列について計算された `simhashes` の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、これらの文字列が同一または非常に類似している可能性が高くなります。 +[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を使用して、準重複文字列の検出に利用できます。 +2 つの文字列から計算された `simhashes` の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、それらの文字列が同一である可能性が高くなります。 **構文** @@ -2320,7 +2319,7 @@ wordShingleSimHash(string[, shinglesize]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可。ワードシングル(連続する単語列)のサイズ。`1` から `25` の任意の数値。既定値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — オプション。word shingle のサイズで、`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** @@ -2331,7 +2330,7 @@ wordShingleSimHash(string[, shinglesize]) **使用例** ```sql title=Query -SELECT wordShingleSimHash('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。') AS Hash; +SELECT wordShingleSimHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2344,11 +2343,11 @@ SELECT wordShingleSimHash('ClickHouse®は、オンライン分析処理(OLAP) 導入バージョン: v21.1 -ASCII 文字列を `shinglesize` 語からなる部分文字列(シングル)に分割し、その単語シングルの `simhash` を返します。 -大文字小文字は区別されません。 +ASCII 文字列を `shinglesize` 語からなるシングル(shingle)に分割し、その単語シングルの `simhash` を返します。 +大文字・小文字は区別しません。 -[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を用いた、ほぼ重複した文字列の検出に使用できます。 -2 つの文字列について計算された `simhash` 同士の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、それらの文字列が同一である可能性が高くなります。 +[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を用いた、部分的に重複した文字列の検出に使用できます。 +2 つの文字列から計算された `simhashes` の [Hamming 距離](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列が同一である可能性が高くなります。 **構文** @@ -2359,7 +2358,7 @@ wordShingleSimHashCaseInsensitive(string[, shinglesize]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可能。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。ワードシングル(word shingle)のサイズ。`1` から `25` までの任意の数値で、デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** @@ -2370,7 +2369,7 @@ wordShingleSimHashCaseInsensitive(string[, shinglesize]) **使用例** ```sql title=Query -SELECT wordShingleSimHashCaseInsensitive('ClickHouse®は、オンライン分析処理(OLAP)クエリのためのカラム指向データベース管理システム(DBMS)です。') AS Hash; +SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2383,11 +2382,11 @@ SELECT wordShingleSimHashCaseInsensitive('ClickHouse®は、オンライン分 導入バージョン: v1.1 -UTF-8 エンコードされた文字列を、`shinglesize` 語から成るシングル(shingle)に分割し、その単語シングルの `simhash` を返します。 -大文字・小文字は区別されません。 +UTF-8 でエンコードされた文字列を、`shinglesize` 語ずつのパーツ(シングル)に分割し、単語シングルの `simhash` を返します。 +大文字と小文字は区別されません。 -[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を使用して、類似した重複文字列の検出に利用できます。 -2 つの文字列から計算された `simhashes` の [ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列が同じである可能性が高くなります。 +[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を用いて、一部が重複した文字列の検出に使用できます。 +2 つの文字列について計算された `simhashes` の [Hamming Distance](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、それらの文字列が同一である可能性が高くなります。 **構文** @@ -2398,9 +2397,9 @@ wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可能。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の整数。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。ワードシングル(shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) -**返り値** +**戻り値** 計算されたハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) @@ -2409,7 +2408,7 @@ wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize]) **使用例** ```sql title=Query -SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse®は、オンライン分析処理(OLAP)のためのカラム指向データベース管理システム(DBMS)です。') AS Hash; +SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2422,11 +2421,11 @@ SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse®は、オンライン 導入バージョン: v21.1 -UTF-8 文字列を、`shinglesize` 語から成る連続した部分列(シングル、shingle)に分割し、語シングル(word shingle)の `simhash` 値を返します。 -大文字と小文字を区別します。 +UTF-8 文字列を、`shinglesize` 語からなる部分(シングル)に分割し、単語シングルの `simhash` を返します。 +大文字と小文字は区別されます。 -[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) と組み合わせて、近似重複文字列を検出するために使用できます。 -2 つの文字列について計算された `simhash` 値の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)が小さいほど、それらの文字列が同一である可能性が高くなります。 +[`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) を用いた準重複文字列の検出に使用できます。 +2 つの文字列について計算された `simhash` の [ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance) が小さいほど、その 2 つの文字列が同一である可能性が高くなります。 **構文** @@ -2437,7 +2436,7 @@ wordShingleSimHashUTF8(string[, shinglesize]) **引数** * `string` — ハッシュを計算する対象の文字列。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 省略可能。単語シングル(shingle)のサイズ。`1` から `25` までの任意の数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 省略可能。単語シングル(shingle)のサイズ。`1` から `25` までの整数値。デフォルト値は `3`。[`UInt8`](/sql-reference/data-types/int-uint) **戻り値** @@ -2448,7 +2447,7 @@ wordShingleSimHashUTF8(string[, shinglesize]) **使用例** ```sql title=Query -SELECT wordShingleSimHashUTF8('ClickHouse®は、オンライン分析処理(OLAP)のための列指向データベース管理システム(DBMS)です。') AS Hash; +SELECT wordShingleSimHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2461,7 +2460,7 @@ SELECT wordShingleSimHashUTF8('ClickHouse®は、オンライン分析処理(OLA 導入バージョン: v22.7 -64ビットの [wyHash64](https://github.com/wangyi-fudan/wyhash) ハッシュ値を計算します。 +64ビット [wyHash64](https://github.com/wangyi-fudan/wyhash) ハッシュ値を計算します。 **構文** @@ -2471,7 +2470,7 @@ wyHash64(arg) **引数** -* `arg` — ハッシュを計算する対象となる文字列引数。[`String`](/sql-reference/data-types/string) +* `arg` — ハッシュを計算する対象の文字列引数。[`String`](/sql-reference/data-types/string) **戻り値** @@ -2493,9 +2492,9 @@ SELECT wyHash64('ClickHouse') AS Hash; 導入バージョン: v20.1 -文字列に対する [xxHash](http://cyan4973.github.io/xxHash/) を計算します。 +文字列に対して [xxHash](http://cyan4973.github.io/xxHash/) を計算します。 -64ビット版については [`xxHash64`](#xxHash64) を参照してください。 +64-bit 版については [`xxHash64`](#xxHash64) を参照してください。 **構文** @@ -2505,11 +2504,11 @@ xxHash32(arg) **引数** -* `arg` — ハッシュ化する対象の入力文字列。[`String`](/sql-reference/data-types/string) +* `arg` — ハッシュ化する入力文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**戻り値** -入力文字列の 32 ビットハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) +入力文字列に対して計算された 32 ビットのハッシュ値を返します。[`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -2527,9 +2526,9 @@ SELECT xxHash32('Hello, world!'); ## xxHash64 {#xxHash64} -導入: v20.1 +導入バージョン: v20.1 -文字列に対する [xxHash](http://cyan4973.github.io/xxHash/) を計算します。 +文字列の [xxHash](http://cyan4973.github.io/xxHash/) を計算します。 32 ビット版については [`xxHash32`](#xxHash32) を参照してください。 @@ -2545,7 +2544,7 @@ xxHash64(arg) **戻り値** -入力文字列に対して計算された 64 ビットのハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +入力文字列の 64 ビットのハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -2565,7 +2564,7 @@ SELECT xxHash64('Hello, world!'); 導入バージョン: v22.12 -[XXH3](https://github.com/Cyan4973/xxHash) の 64 ビットハッシュ値を計算します。 +[XXH3](https://github.com/Cyan4973/xxHash) 方式の 64 ビットハッシュ値を計算します。 **構文** @@ -2575,11 +2574,11 @@ xxh3(expr) **引数** -* `expr` — 任意のデータ型の式からなるリスト。[`Any`](/sql-reference/data-types) +* `expr` — 任意のデータ型の式のリスト。[`Any`](/sql-reference/data-types) **戻り値** -計算された64ビットの `xxh3` ハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) +計算された 64ビットの `xxh3` ハッシュ値を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md index ae1a1150d37..20da59f6410 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md @@ -1,16 +1,16 @@ --- -description: 'IPv4 および IPv6 アドレスを操作する関数に関するドキュメント' +description: 'IPv4 および IPv6 アドレスを操作するための関数に関するドキュメント。' sidebar_label: 'IP アドレス' slug: /sql-reference/functions/ip-address-functions title: 'IPv4 および IPv6 アドレスを操作する関数' doc_type: 'reference' --- -# IPv4 および IPv6 アドレスを扱うための関数 {#functions-for-working-with-ipv4-and-ipv6-addresses} +# IPv4 および IPv6 アドレスを処理する関数 {#functions-for-working-with-ipv4-and-ipv6-addresses} {/* - 以下のタグの内部の内容は、ドキュメントフレームワークのビルド時に - system.functions から自動生成されたドキュメントで置き換えられます。タグを変更したり削除したりしないでください。 + 以下のタグ内の内容は、ドキュメントフレームワークのビルド時に + system.functions から自動生成されたドキュメントで置き換えられます。タグを変更または削除しないでください。 詳細は https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md を参照してください。 */ } @@ -20,7 +20,7 @@ doc_type: 'reference' 導入バージョン: v20.1 -クラスレス ドメイン間ルーティング (CIDR) のプレフィックス長付き IPv4 アドレスを受け取り、そのサブネットのアドレス範囲を、サブネット内の最初と最後のアドレスを表す 2 つの IPv4 値から成るタプルとして返します。 +クラスレスドメイン間ルーティング (CIDR) のプレフィックス長付き IPv4 アドレスを受け取り、そのサブネット内の最初と最後の IPv4 アドレスを要素とするタプルとして、サブネットのアドレス範囲を返します。 IPv6 版については [`IPv6CIDRToRange`](#IPv4CIDRToRange) を参照してください。 **構文** @@ -36,7 +36,7 @@ IPv4CIDRToRange(ipv4, cidr) **戻り値** -サブネット範囲を表す 2 つの IPv4 アドレスからなるタプルを返します。[`Tuple(IPv4, IPv4)`](/sql-reference/data-types/tuple) +サブネット範囲を表す 2 つの IPv4 アドレスを要素とするタプルを返します。[`Tuple(IPv4, IPv4)`](/sql-reference/data-types/tuple) **例** @@ -56,8 +56,8 @@ SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16); 導入バージョン: v1.1 -32ビット整数を、ドット区切りの10進数表記(A.B.C.D 形式)の IPv4 アドレス文字列表現に変換します。 -入力はビッグエンディアンのバイトオーダーとして解釈されます。 +32 ビット整数を、ドット区切り 10 進表記の IPv4 アドレス文字列(A.B.C.D 形式)に変換します。 +入力はビッグエンディアンのバイト順序で解釈されます。 **構文** @@ -69,11 +69,11 @@ IPv4NumToString(num) **引数** -* `num` — UInt32 型の数値として表される IPv4 アドレス。[`UInt32`](/sql-reference/data-types/int-uint) +* `num` — UInt32 数値として表現された IPv4 アドレス。[`UInt32`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -MAC アドレスを表す数値、または形式が無効な場合は `0` を返します。[`String`](/sql-reference/data-types/string) +MAC アドレスを表す数値、またはフォーマットが不正な場合は `0` を返します。[`String`](/sql-reference/data-types/string) **例** @@ -91,8 +91,8 @@ IPv4NumToString(3232235521) 導入バージョン: v1.1 -32ビット整数を、ドット区切り10進表記(A.B.C.D形式)のIPv4アドレス文字列表現に変換します。 -[`IPv4NumToString`](#IPv4NumToString) と同様ですが、最後のオクテットの代わりに `xxx` を使用します。 +32ビット整数を、ドット区切りの10進数表記(A.B.C.D 形式)の IPv4 アドレス文字列に変換します。 +[`IPv4NumToString`](#IPv4NumToString) に似ていますが、最後のオクテットを `xxx` に置き換えます。 **構文** @@ -102,15 +102,15 @@ IPv4NumToStringClassC(num) **引数** -* `num` — UInt32 値として表される IPv4 アドレス。[`UInt32`](/sql-reference/data-types/int-uint) +* `num` — UInt32 型の数値で表した IPv4 アドレス。[`UInt32`](/sql-reference/data-types/int-uint) -**返される値** +**戻り値** -最後のオクテットを xxx に置き換えた IPv4 アドレスを表す文字列を返します。[`String`](/sql-reference/data-types/string) +最後のオクテットを xxx に置き換えた IPv4 アドレス文字列を返します。[`String`](/sql-reference/data-types/string) **例** -**集計を伴う基本的な例** +**集約を用いた基本的な例** ```sql title=Query SELECT @@ -141,8 +141,8 @@ LIMIT 10 導入バージョン: v1.1 -ドット区切りの 10 進表記(A.B.C.D 形式)の IPv4 アドレス文字列を、対応する 32ビット整数表現に変換します([`IPv4NumToString`](#IPv4NumToString) の逆の処理です)。\ -IPv4 アドレス文字列の形式が無効な場合は、例外がスローされます。 +ドット区切りの 10 進数表記(A.B.C.D 形式)の IPv4 アドレス文字列を、対応する 32 ビット整数表現に変換します([`IPv4NumToString`](#IPv4NumToString) の逆の動作)。 +IPv4 アドレスの形式が無効な場合は、例外が発生します。 **構文** @@ -156,7 +156,7 @@ IPv4StringToNum(string) * `string` — IPv4 アドレス文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** IPv4 アドレスを返します。[`UInt32`](/sql-reference/data-types/int-uint) @@ -174,9 +174,9 @@ IPv4StringToNum('192.168.0.1') ## IPv4StringToNumOrDefault {#IPv4StringToNumOrDefault} -導入: v22.3 +導入バージョン: v22.3 -ドット区切り10進表記(A.B.C.D 形式)の IPv4 アドレス文字列を対応する 32 ビット整数表現に変換します。IPv4 アドレスの形式が不正な場合は `0` を返します。 +ドット区切りの10進表記(A.B.C.D 形式)の IPv4 アドレス文字列を、対応する 32 ビット整数値に変換します。IPv4 アドレスの形式が無効な場合は `0` を返します。 **構文** @@ -186,11 +186,11 @@ IPv4StringToNumOrDefault(string) **引数** -* `string` — IPv4 アドレス文字列。[`String`](/sql-reference/data-types/string) +* `string` — IPv4 アドレスを表す文字列。[`String`](/sql-reference/data-types/string) **戻り値** -IPv4 アドレスを返します。無効な場合は `0` を返します。[`UInt32`](/sql-reference/data-types/int-uint) +IPv4 アドレス、または無効な場合は `0` を返します。[`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -212,7 +212,7 @@ SELECT 導入バージョン: v22.3 -32ビット整数を IPv4 アドレスの文字列表現(A.B.C.D 形式のドット区切りの 10 進表記)に変換します。ただし、IPv4 アドレスの形式が不正な場合は `NULL` を返します。 +32 ビット整数を、ドット区切り 10 進表記(A.B.C.D 形式)の IPv4 アドレス文字列表現に変換します。ただし、IPv4 アドレスの形式が無効な場合は `NULL` を返します。 **構文** @@ -224,9 +224,9 @@ IPv4StringToNumOrNull(string) * `string` — IPv4 アドレス文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**返り値** -IPv4 アドレスを返し、無効な場合は `NULL` を返します。[`Nullable(UInt32)`](/sql-reference/data-types/nullable) +IPv4 アドレス、または無効な場合は `NULL` を返します。[`Nullable(UInt32)`](/sql-reference/data-types/nullable) **例** @@ -248,7 +248,7 @@ IPv4StringToNumOrNull('invalid') AS invalid; 導入バージョン: v1.1 -(ビッグエンディアンの) 32 ビット整数値を IPv4 アドレスとして解釈し、それを対応する IPv6 アドレスの `FixedString(16)` 表現に変換します。 +ビッグエンディアンの 32 ビット整数値を IPv4 アドレスとして解釈し、そのアドレスに対応する IPv6 アドレスを表す `FixedString(16)` 形式の値として解釈します。 **構文** @@ -258,11 +258,11 @@ IPv4ToIPv6(x) **引数** -* `x` — IPv4アドレス。[`UInt32` 型](/sql-reference/data-types/int-uint) +* `x` — IPv4 アドレス。[`UInt32`](/sql-reference/data-types/int-uint) **戻り値** -バイナリ形式の IPv6アドレスを返します。[`FixedString(16)` 型](/sql-reference/data-types/fixedstring) +バイナリ形式の IPv6 アドレスを返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **例** @@ -282,7 +282,7 @@ SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr; 導入バージョン: v20.1 -クラスレスドメイン間ルーティング (CIDR) のプレフィックス長付き IPv6 アドレスを受け取り、そのサブネットのアドレス範囲を、最小アドレスと最大アドレスの 2 つの IPv6 値からなるタプルとして返します。 +クラスレスドメイン間ルーティング (CIDR) のプレフィックス長付き IPv6 アドレスを受け取り、そのサブネットのアドレス範囲を 2 つの IPv6 値からなるタプルとして返します。タプルは、そのサブネット内の最小アドレスと最大アドレスを表します。 IPv4 版については [`IPv4CIDRToRange`](#IPv4CIDRToRange) を参照してください。 **構文** @@ -296,9 +296,9 @@ IPv6CIDRToRange(ipv6, cidr) * `ipv6` — IPv6 アドレス。[`IPv6`](/sql-reference/data-types/ipv6) または [`String`](/sql-reference/data-types/string) * `cidr` — CIDR 値。[`UInt8`](/sql-reference/data-types/int-uint) -**返される値** +**戻り値** -サブネット範囲を表す 2 つの IPv6 アドレスからなるタプルを返します。[`Tuple(IPv6, IPv6)`](/sql-reference/data-types/tuple) +サブネット範囲を表す2つの IPv6 アドレスを含むタプルを返します。[`Tuple(IPv6, IPv6)`](/sql-reference/data-types/tuple) **例** @@ -316,10 +316,10 @@ SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32); ## IPv6NumToString {#IPv6NumToString} -導入: v1.1 +導入バージョン: v1.1 -IPv6 アドレスをバイナリ形式 (FixedString(16)) から標準的なテキスト表現に変換します。 -IPv4 にマップされた IPv6 アドレスは、`::ffff:111.222.33.44` の形式で表示されます。 +IPv6 アドレスをバイナリ形式 (`FixedString(16)`) から標準的なテキスト表現に変換します。 +IPv4 にマッピングされた IPv6 アドレスは `::ffff:111.222.33.44` の形式で表示されます。 **構文** @@ -331,11 +331,11 @@ IPv6NumToString(x) **引数** -* `x` — バイナリ形式の IPv6 アドレス。[`FixedString(16)`](/sql-reference/data-types/fixedstring) または [`IPv6`](/sql-reference/data-types/ipv6) +* `x` — バイナリ形式の IPv6 アドレスを表す値。[`FixedString(16)`](/sql-reference/data-types/fixedstring) または [`IPv6`](/sql-reference/data-types/ipv6) **戻り値** -テキスト形式の IPv6 アドレス文字列を返します。[`String`](/sql-reference/data-types/string) +テキスト形式の IPv6 アドレスを表す文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -351,7 +351,7 @@ SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), └──────────────┘ ``` -**IPv6 を用いたヒット分析** +**ヒット分析を伴う IPv6** ```sql title=Query SELECT @@ -379,7 +379,7 @@ LIMIT 10 └─────────────────────────────────────────┴───────┘ ``` -**IPv6 マップド IPv4 アドレス** +**IPv6 でマップされた IPv4 アドレス** ```sql title=Query SELECT @@ -411,11 +411,11 @@ LIMIT 10 導入バージョン: v1.1 -IPv6 アドレスを、その標準テキスト表現からバイナリ形式(`FixedString(16)`)に変換します。 -`::ffff:111.222.33.44.` 形式の IPv4 マップド IPv6 アドレスを受け付けます。 -IPv6 アドレスの形式が不正な場合は、例外がスローされます。 +IPv6 アドレスを標準的なテキスト表現からバイナリ形式(`FixedString(16)`)に変換します。 +`::ffff:111.222.33.44.` の形式の IPv4 マップド IPv6 アドレスを受け付けます。 +IPv6 アドレスの形式が無効な場合は、例外がスローされます。 -入力文字列に有効な IPv4 アドレスが含まれている場合は、対応する IPv6 アドレスを返します。 +入力文字列に有効な IPv4 アドレスが含まれている場合、その IPv6 に相当するアドレスを返します。 16 進数表記は大文字・小文字のいずれでもかまいません。 **構文** @@ -424,7 +424,7 @@ IPv6 アドレスの形式が不正な場合は、例外がスローされます IPv6StringToNum(string) ``` -**エイリアス**: `INET6_ATON` +**別名**: `INET6_ATON` **引数** @@ -432,7 +432,7 @@ IPv6StringToNum(string) **戻り値** -IPv6 アドレスをバイナリ形式で返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +IPv6 アドレスをバイナリ形式に変換して返します。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **例** @@ -456,7 +456,7 @@ SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '1 IPv6 アドレスを標準的な文字列表現からバイナリ形式(`FixedString(16)`)に変換します。 `::ffff:111.222.33.44.` 形式の IPv4 マップド IPv6 アドレスを受け付けます。 -IPv6 アドレスの形式が無効な場合は、デフォルト値の `::` を返します。 +IPv6 アドレスの形式が無効な場合、デフォルト値 `::` を返します。 **構文** @@ -474,7 +474,7 @@ IPv6StringToNumOrDefault(string) **例** -**無効なアドレスを使用した基本的な例** +**無効なアドレスを使った基本的な例** ```sql title=Query SELECT @@ -493,8 +493,8 @@ SELECT 導入バージョン: v22.3 IPv6 アドレスを標準的なテキスト表現からバイナリ形式(`FixedString(16)`)に変換します。 -`::ffff:111.222.33.44.` 形式の IPv4 マップド IPv6 アドレスを受け付けます。 -IPv6 アドレスの形式が不正な場合は、`NULL` を返します。 +`::ffff:111.222.33.44.` 形式の IPv4 マッピングされた IPv6 アドレスを受け付けます。 +IPv6 アドレスの形式が無効な場合は `NULL` を返します。 **構文** @@ -512,7 +512,7 @@ IPv6 アドレスをバイナリ形式で返し、無効な場合は `NULL` を **例** -**無効なアドレスを使用した基本的な例** +**無効なアドレスを使った基本的な例** ```sql title=Query SELECT @@ -528,10 +528,10 @@ SELECT ## cutIPv6 {#cutIPv6} -導入バージョン: v1.1 +導入バージョン:v1.1 バイナリ形式の IPv6 アドレスを格納した `FixedString(16)` 型の値を受け取ります。 -指定したバイト数を削除したアドレスをテキスト形式で返します。 +指定したバイト数だけアドレスを切り詰めたものを、テキスト形式の文字列として返します。 **構文** @@ -547,7 +547,7 @@ cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4) **戻り値** -指定したバイト数を削除した IPv6 アドレスをテキスト形式で含む文字列を返します。[`String`](/sql-reference/data-types/string) +指定されたバイトを削除したテキスト形式の IPv6 アドレスを含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -570,11 +570,11 @@ SELECT ## isIPAddressInRange {#isIPAddressInRange} -導入: v21.4 +導入バージョン: v21.4 -IPアドレスが [Classless Inter-Domain Routing (CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 表記で表されるネットワーク内に含まれているかどうかを判定します。 +[Classless Inter-Domain Routing (CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 表記で表されるネットワークに、IP アドレスが含まれているかどうかを判定します。 -この関数は、文字列として表現された IPv4 および IPv6 のアドレス(およびネットワーク)の両方を受け付けます。アドレスと CIDR の IP バージョンが一致しない場合は `0` を返します。 +この関数は、文字列で表現された IPv4 および IPv6 のアドレス(およびネットワーク)の両方を受け付けます。アドレスと CIDR の IP バージョンが一致しない場合は `0` を返します。 **構文** @@ -603,7 +603,7 @@ SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8') 1 ``` -**IPv4 アドレスが有効な範囲内にありません** +**IPv4 アドレスが範囲外** ```sql title=Query SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16') @@ -613,7 +613,7 @@ SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16') 0 ``` -**IPv6 アドレスが範囲外です** +**範囲外の IPv6 アドレス** ```sql title=Query SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128') @@ -638,11 +638,11 @@ isIPv4String(string) **引数** -* `string` — 判定対象の IP アドレス文字列。[`String`](/sql-reference/data-types/string) +* `string` — チェック対象の IP アドレス文字列。[`String`](/sql-reference/data-types/string) **戻り値** -`string` が IPv4 アドレスであれば `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +`string` が IPv4 アドレスであれば `1` を返し、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -679,11 +679,11 @@ isIPv6String(string) **引数** -* `string` — チェック対象の IP アドレス文字列。[`String`](/sql-reference/data-types/string) +* `string` — 判定対象の IP アドレス文字列。[`String`](/sql-reference/data-types/string) **戻り値** -`string` が IPv6 アドレスの場合は `1` を、そうでない場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +`string` が IPv6 アドレスの場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -708,8 +708,8 @@ ARRAY JOIN addr; 導入バージョン: v20.1 -IPv4 アドレスの文字列または UInt32 形式を IPv4 型に変換します。 -[`IPv4StringToNum`](/sql-reference/functions/ip-address-functions#IPv4StringToNum) 関数および [`IPv4NumToString`](/sql-reference/functions/ip-address-functions#IPv4NumToString) 関数に類似していますが、入力引数として文字列型と符号なし整数型の両方を受け付けます。 +IPv4 アドレスを表す文字列、または UInt32 型の値を `IPv4` 型に変換します。 +[`IPv4StringToNum`](/sql-reference/functions/ip-address-functions#IPv4StringToNum) や [`IPv4NumToString`](/sql-reference/functions/ip-address-functions#IPv4NumToString) 関数と同様ですが、入力引数として文字列型と符号なし整数型の両方をサポートします。 **構文** @@ -739,7 +739,7 @@ SELECT toIPv4('171.225.130.45'); └──────────────────────────┘ ``` -**IPv4StringToNum 関数および IPv4NumToString 関数との比較** +**IPv4StringToNum 関数と IPv4NumToString 関数の比較** ```sql title=Query WITH @@ -771,13 +771,13 @@ SELECT toIPv4(2130706433); 導入バージョン: v22.3 -文字列または UInt32 形式の IPv4 アドレスを [`IPv4`](../data-types/ipv4.md) 型に変換します。 -IPv4 アドレスの形式が無効な場合は、`0.0.0.0`(IPv4 の 0 アドレス)、または指定されたデフォルトの IPv4 を返します。 +IPv4 アドレスを表す文字列または UInt32 形式を [`IPv4`](../data-types/ipv4.md) 型に変換します。 +IPv4 アドレスの形式が無効な場合は、`0.0.0.0`(0 IPv4)または指定された IPv4 のデフォルト値を返します。 **構文** ```sql -toIPv4OrDefault(文字列[, デフォルト]) +toIPv4OrDefault(string[, default]) ``` **引数** @@ -789,9 +789,9 @@ toIPv4OrDefault(文字列[, デフォルト]) 文字列を IPv4 アドレスに変換した値、または変換に失敗した場合はデフォルト値を返します。[`IPv4`](/sql-reference/data-types/ipv4) -**例** +**使用例** -**有効および無効な IPv4 文字列** +**有効な IPv4 文字列と無効な IPv4 文字列** ```sql title=Query WITH @@ -805,7 +805,7 @@ SELECT ``` ```response title=Response -┌─有効─────────┬─デフォルト値─┬─指定デフォルト値─┐ +┌─valid─────────┬─default_value─┬─provided_default─┐ │ 192.168.1.1 │ 0.0.0.0 │ 8.8.8.8 │ └───────────────┴───────────────┴──────────────────┘ ``` @@ -814,20 +814,20 @@ SELECT 導入バージョン: v22.3 -入力値を型 `IPv4` の値に変換しますが、エラーが発生した場合は `NULL` を返します。 +入力値を `IPv4` 型の値に変換しますが、エラーが発生した場合は `NULL` を返します。 [`toIPv4`](#toIPv4) と同様ですが、変換エラー時に例外をスローする代わりに `NULL` を返します。 サポートされる引数: -* ドット区切りの 10 進表記による IPv4 アドレスの文字列表現。 +* ドット区切り 10 進表記による IPv4 アドレスの文字列表現。 * IPv4 アドレスの整数表現。 -サポートされない引数(`NULL` を返します): +サポートされない引数(`NULL` を返す): * 無効な IP アドレス形式。 * IPv6 アドレス。 * 範囲外の値。 -* 不正な形式のアドレス。 +* 書式が不正なアドレス。 **構文** @@ -837,11 +837,11 @@ toIPv4OrNull(x) **引数** -* `x` — IPv4 アドレスの文字列または整数による表現。[`String`](/sql-reference/data-types/string) または [`Integer`](/sql-reference/data-types/int-uint) +* `x` — IPv4 アドレスの文字列表現または整数表現。[`String`](/sql-reference/data-types/string) または [`Integer`](/sql-reference/data-types/int-uint) -**返される値** +**戻り値** -成功時は IPv4 アドレスを返し、それ以外は `NULL` を返します。[`IPv4`](/sql-reference/data-types/ipv4) または [`NULL`](/sql-reference/syntax#null) +成功した場合は IPv4 アドレスを返し、失敗した場合は `NULL` を返します。[`IPv4`](/sql-reference/data-types/ipv4) または [`NULL`](/sql-reference/syntax#null) **例** @@ -863,15 +863,15 @@ SELECT 導入バージョン: v23.1 -入力値を [IPv4](../data-types/ipv4.md) 型の値に変換しますが、エラーが発生した場合はゼロ値の IPv4 アドレスを返します。 -[`toIPv4`](#toIPv4) と同様ですが、変換エラー時に例外を送出する代わりに、ゼロ値の IPv4 アドレス (`0.0.0.0`) を返します。 +入力値を [IPv4](../data-types/ipv4.md) 型の値に変換しますが、エラーが発生した場合は IPv4 のゼロアドレスを返します。 +[`toIPv4`](#toIPv4) と同様ですが、変換エラー時に例外をスローする代わりに、IPv4 のゼロアドレス(`0.0.0.0`)を返します。 サポートされる引数: -* ドット区切り 10 進数表記の IPv4 アドレス文字列表現。 +* ドットで区切られた 10 進表記による IPv4 アドレスの文字列表現。 * IPv4 アドレスの整数表現。 -サポートされない引数(ゼロ値の IPv4 アドレスを返す): +サポートされない引数(IPv4 のゼロアドレスを返す): * 無効な IP アドレス形式。 * IPv6 アドレス。 @@ -885,11 +885,11 @@ toIPv4OrZero(x) **引数** -* `x` — IPv4 アドレスの文字列または整数による表現。[`String`](/sql-reference/data-types/string) または [`Integer`](/sql-reference/data-types/int-uint) +* `x` — IPv4 アドレスの文字列表現または整数表現。[`String`](/sql-reference/data-types/string) または [`Integer`](/sql-reference/data-types/int-uint) -**返される値** +**返り値** -成功した場合は IPv4 アドレスを返し、失敗した場合はゼロの IPv4 アドレス (`0.0.0.0`) を返します。[`IPv4`](/sql-reference/data-types/ipv4) +成功した場合は IPv4 アドレスを返し、それ以外の場合はゼロ値の IPv4 アドレス (`0.0.0.0`) を返します。[`IPv4`](/sql-reference/data-types/ipv4) **例** @@ -911,9 +911,9 @@ SELECT 導入バージョン: v20.1 -IPv6 アドレスの文字列または `UInt128` 表現を [`IPv6`](../data-types/ipv6.md) 型に変換します。 -文字列の場合、IPv6 アドレスの形式が無効なときは空の値を返します。 -IPv6 アドレスをバイナリ形式(`FixedString(16)`)に変換したり、その逆を行う [`IPv6StringToNum`](/sql-reference/functions/ip-address-functions#IPv6StringToNum) 関数および [`IPv6NumToString`](/sql-reference/functions/ip-address-functions#IPv6NumToString) 関数と類似しています。 +IPv6 アドレスの文字列、または `UInt128` 形式を [`IPv6`](../data-types/ipv6.md) 型に変換します。 +文字列の場合、IPv6 アドレスの形式が不正な場合は空の値を返します。 +IPv6 アドレスをバイナリ形式(`FixedString(16)`)に相互変換する関数である [`IPv6StringToNum`](/sql-reference/functions/ip-address-functions#IPv6StringToNum) および [`IPv6NumToString`](/sql-reference/functions/ip-address-functions#IPv6NumToString) と同様です。 入力文字列に有効な IPv4 アドレスが含まれている場合、その IPv4 アドレスに対応する IPv6 アドレスが返されます。 @@ -948,7 +948,7 @@ SELECT └───────────────────────────────────┴──────────────────────────────────┘ ``` -**IPv4 から IPv6 へのマッピング** +**IPv4 アドレスから IPv6 アドレスへのマッピング** ```sql title=Query SELECT toIPv6('127.0.0.1'); @@ -962,10 +962,10 @@ SELECT toIPv6('127.0.0.1'); ## toIPv6OrDefault {#toIPv6OrDefault} -導入: v22.3 +導入バージョン: v22.3 -文字列または IPv6 アドレスの UInt128 形式を [`IPv6`](../data-types/ipv6.md) 型に変換します。 -IPv6 アドレスの形式が不正な場合は、`::` (0 IPv6) または指定されたデフォルトの IPv6 アドレスを返します。 +IPv6 アドレスを表す文字列または `UInt128` 形式を [`IPv6`](../data-types/ipv6.md) 型に変換します。 +IPv6 アドレスの形式が無効な場合は、`::`(0 の IPv6 アドレス)または指定された IPv6 のデフォルト値を返します。 **構文** @@ -975,12 +975,11 @@ toIPv6OrDefault(string[, default]) **引数** -* `string` — 変換する IP アドレス文字列。 -* `default` — 省略可能。`string` の形式が無効な場合に返す値。 +* `string` — 変換する IP アドレス文字列。 - `default` — 省略可能。`string` が不正な形式の場合に返す値。 -**返り値** +**戻り値** -IPv6 アドレスを返します。`string` 引数の形式が無効な場合は `::` を返すか、指定されている場合は `default` の値を返します。[`IPv6`](/sql-reference/data-types/ipv6) +IPv6 アドレスを返します。引数 `string` が不正な形式の場合は、`::` または指定された省略可能なデフォルト値を返します。[`IPv6`](/sql-reference/data-types/ipv6) **例** @@ -988,17 +987,17 @@ IPv6 アドレスを返します。`string` 引数の形式が無効な場合は ```sql title=Query WITH - '2001:0db8:85a3:0000:0000:8a2e:0370:7334' AS 有効なIPv6文字列, - '2001:0db8:85a3::8a2e:370g:7334' AS 無効なIPv6文字列, - 'not_an_ipv6' AS 不正な形式の文字列 + '2001:0db8:85a3:0000:0000:8a2e:0370:7334' AS valid_IPv6_string, + '2001:0db8:85a3::8a2e:370g:7334' AS invalid_IPv6_string, + 'not_an_ipv6' AS malformed_string SELECT - toIPv6OrDefault(有効なIPv6文字列) AS 有効, - toIPv6OrDefault(無効なIPv6文字列) AS デフォルト値, - toIPv6OrDefault(不正な形式の文字列, toIPv6('::1')) AS 指定デフォルト; + toIPv6OrDefault(valid_IPv6_string) AS valid, + toIPv6OrDefault(invalid_IPv6_string) AS default_value, + toIPv6OrDefault(malformed_string, toIPv6('::1')) AS provided_default; ``` ```response title=Response -┌─有効──────────────────────────────────┬─デフォルト値─┬─指定されたデフォルト値─┐ +┌─valid──────────────────────────────────┬─default_value─┬─provided_default─┐ │ 2001:db8:85a3::8a2e:370:7334 │ :: │ ::1 │ └────────────────────────────────────────┴───────────────┴──────────────────┘ ``` @@ -1013,10 +1012,10 @@ SELECT サポートされる引数: * 標準表記による IPv6 アドレスの文字列表現。 -* IPv4 マップド IPv6 アドレスに変換される、IPv4 アドレスの文字列表現。 +* IPv4 アドレスの文字列表現(IPv4 マップド IPv6 アドレスに変換されます)。 * IPv6 アドレスのバイナリ表現。 -サポートされていない引数(`NULL` を返す): +サポートされない引数(`NULL` を返す): * 無効な IP アドレス形式。 * 不正な形式の IPv6 アドレス。 @@ -1035,7 +1034,7 @@ toIPv6OrNull(x) **戻り値** -成功した場合は IPv6 アドレスを、失敗した場合は `NULL` を返します。[`IPv6`](/sql-reference/data-types/ipv6) または [`NULL`](/sql-reference/syntax#null) +成功した場合は IPv6 アドレスを返し、そうでない場合は `NULL` を返します。[`IPv6`](/sql-reference/data-types/ipv6) または [`NULL`](/sql-reference/syntax#null) **例** @@ -1057,19 +1056,19 @@ SELECT 導入バージョン: v23.1 -入力値を[IPv6](../data-types/ipv6.md)型の値に変換しますが、エラー時にはゼロの IPv6 アドレスを返します。 -[`toIPv6`](#toIPv6) と同様に動作しますが、変換エラー時に例外をスローする代わりにゼロの IPv6 アドレス(`::`)を返します。 +入力値を [IPv6](../data-types/ipv6.md) 型の値に変換しますが、エラー発生時にはゼロの IPv6 アドレスを返します。 +[`toIPv6`](#toIPv6) と同様ですが、変換エラー時に例外をスローする代わりにゼロの IPv6 アドレス(`::`)を返します。 サポートされる引数: * 標準表記による IPv6 アドレスの文字列表現。 -* IPv4 マップド IPv6 アドレスに変換される IPv4 アドレスの文字列表現。 +* IPv4 マップド IPv6 に変換される IPv4 アドレスの文字列表現。 * IPv6 アドレスのバイナリ表現。 サポートされない引数(ゼロの IPv6 アドレスを返す): * 無効な IP アドレス形式。 -* 不正形式の IPv6 アドレス。 +* 不正な形式の IPv6 アドレス。 * 範囲外の値。 **構文** @@ -1084,7 +1083,7 @@ toIPv6OrZero(x) **戻り値** -成功した場合は IPv6 アドレスを返し、失敗した場合はゼロの IPv6 アドレス (`::`) を返します。[`IPv6`](/sql-reference/data-types/ipv6) +成功した場合は IPv6 アドレスを返し、失敗した場合はゼロの IPv6 アドレス(`::`)を返します。[`IPv6`](/sql-reference/data-types/ipv6) **例** diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md index 9ef19776a6a..156b75bedd1 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md @@ -8,27 +8,27 @@ doc_type: 'reference' import VersionBadge from '@theme/badges/VersionBadge'; -# 文字列を扱うための関数 {#functions-for-working-with-strings} +# 文字列操作用関数 {#functions-for-working-with-strings} -文字列の[検索](string-search-functions.md)および[置換](string-replace-functions.md)に関する関数については、別途説明しています。 +文字列内の[検索](string-search-functions.md)および[置換](string-replace-functions.md)に関する関数は、別途説明されています。 :::note -以下のドキュメントは、`system.functions` システムテーブルから生成されています。 +以下のドキュメントは `system.functions` システムテーブルから生成されています。 ::: {/* - 以下のタグ内の内容は、ドキュメントフレームワークのビルド時に - system.functions から自動生成されたドキュメントで置き換えられます。タグを変更または削除しないでください。 + 以下のタグの内部の内容は、ドキュメントフレームワークのビルド時に + system.functions から自動生成されたドキュメントに置き換えられます。これらのタグは変更または削除しないでください。 詳細は https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md を参照してください。 */ } -{/*AUTOGENERATED_START*/ } +{{/*AUTOGENERATED_START*/ } } ## CRC32 {#CRC32} 導入バージョン: v20.1 -CRC-32-IEEE 802.3 の多項式および初期値 `0xffffffff`(zlib 実装)を使用して、文字列の CRC32 チェックサムを計算します。 +CRC-32-IEEE 802.3 多項式と初期値 `0xffffffff`(zlib 実装)を使用して、文字列の CRC32 チェックサムを計算します。 **構文** @@ -38,11 +38,11 @@ CRC32(s) **引数** -* `s` — CRC32 を計算する対象の文字列。[`String`](/sql-reference/data-types/string) +* `s` — CRC32 チェックサムを計算する対象の文字列。[`String`](/sql-reference/data-types/string) **戻り値** -文字列の CRC32 チェックサム値を返します。[`UInt32`](/sql-reference/data-types/int-uint) +文字列の CRC32 チェックサムを返します。[`UInt32`](/sql-reference/data-types/int-uint) **例** @@ -62,7 +62,7 @@ SELECT CRC32('ClickHouse') 導入バージョン: v20.1 -CRC-32-IEEE 802.3 多項式を用いて、文字列の CRC32 チェックサムを計算します。 +CRC-32-IEEE 802.3 の多項式を使用して、文字列のCRC32チェックサムを計算します。 **構文** @@ -96,7 +96,7 @@ SELECT CRC32IEEE('ClickHouse'); 導入バージョン: v20.1 -CRC-64-ECMA多項式を使用して、文字列のCRC64チェックサムを計算します。 +CRC-64-ECMA 多項式を使用して、文字列の CRC64 チェックサムを計算します。 **構文** @@ -106,7 +106,7 @@ CRC64(s) **引数** -* `s` — CRC64 を計算する文字列。[`String`](/sql-reference/data-types/string) +* `s` — CRC64 を計算する対象となる文字列。[`String`](/sql-reference/data-types/string) **戻り値** @@ -130,7 +130,7 @@ SELECT CRC64('ClickHouse'); 導入バージョン: v1.1 -文字列 `s` が空でなく、かつ末尾の文字が `c` でない場合に、文字 `c` を `s` の末尾に追加します。 +文字列 `s` が空でなく、末尾が文字 `c` で終わっていない場合に、文字 `c` を文字列 `s` の末尾に追加します。 **構文** @@ -141,11 +141,11 @@ appendTrailingCharIfAbsent(s, c) **引数** * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -* `c` — 末尾に存在しない場合に追加する文字。[`String`](/sql-reference/data-types/string) +* `c` — `s` が末尾に持っていない場合に追加する文字。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -文字列 `s` が `c` で終わっていない場合、その末尾に文字 `c` を付加したものを返します。[`String`](/sql-reference/data-types/string) +文字列 `s` が文字 `c` で終わっていない場合、末尾に `c` を追加した文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -165,7 +165,7 @@ SELECT appendTrailingCharIfAbsent('https://example.com', '/'); 導入バージョン: v22.11 -文字列 `s` の先頭文字の ASCII コードポイント値を `Int32` として返します。 +文字列 `s` の先頭文字の ASCII コードポイントを `Int32` として返します。 **構文** @@ -179,7 +179,7 @@ ascii(s) **戻り値** -先頭文字の ASCII コードポイントを返します。`s` が空文字列の場合、結果は `0` です。先頭文字が ASCII 文字ではない、または UTF-16 における Latin-1 補助範囲に含まれない場合、結果は未定義です。[`Int32`](/sql-reference/data-types/int-uint) +先頭文字の ASCII コードポイントを返します。`s` が空の場合、結果は `0` です。先頭文字が ASCII 文字ではないか、UTF-16 の Latin-1 補助範囲に含まれていない場合、結果は未定義です。[`Int32`](/sql-reference/data-types/int-uint) **例** @@ -199,8 +199,8 @@ SELECT ascii('234') 導入バージョン: v25.6 -[Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6)(RFC 4648)文字列をデコードします。 -文字列が有効な Base32 エンコードではない場合、例外をスローします。 +[Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6)(RFC 4648)でエンコードされた文字列をデコードします。 +文字列が有効な Base32 エンコードではない場合、例外が発生します。 **構文** @@ -210,11 +210,11 @@ base32Decode(encoded) **引数** -* `encoded` — 文字列カラムまたは定数。[`String`](/sql-reference/data-types/string) +* `encoded` — 文字列型のカラムまたは定数。[`String`](/sql-reference/data-types/string) **戻り値** -引数をデコードした値を含む文字列を返します。[`String`](/sql-reference/data-types/string) +デコードされた引数の値を含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -226,7 +226,7 @@ SELECT base32Decode('IVXGG33EMVSA===='); ```response title=Response ┌─base32Decode('IVXGG33EMVSA====')─┐ -│ エンコード済み │ +│ Encoded │ └──────────────────────────────────┘ ``` @@ -246,9 +246,9 @@ base32Encode(plaintext) * `plaintext` — エンコードするプレーンテキスト。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -引数をエンコードした値を含む文字列を返します。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) +引数の値をエンコードした文字列を返します。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) **例** @@ -269,7 +269,7 @@ SELECT base32Encode('Encoded') 導入バージョン: v22.7 [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3) でエンコードされた文字列をデコードします。 -文字列が有効な Base58 エンコードでない場合は、例外がスローされます。 +文字列が有効な Base58 エンコード文字列でない場合は、例外がスローされます。 **構文** @@ -279,11 +279,11 @@ base58Decode(encoded) **引数** -* `encoded` — デコード対象の文字列カラムまたは定数。[`String`](/sql-reference/data-types/string) +* `encoded` — デコードする文字列型のカラムまたは定数。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -引数として指定された値をデコードした結果の文字列を返します。[`String`](/sql-reference/data-types/string) +引数をデコードした値を含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -301,9 +301,9 @@ SELECT base58Decode('JxF12TrwUP45BMd'); ## base58Encode {#base58Encode} -導入: v22.7 +導入バージョン: v22.7 -[Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html) エンコード方式を使って文字列をエンコードします。 +文字列を [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html) 方式でエンコードします。 **構文** @@ -315,7 +315,7 @@ base58Encode(plaintext) * `plaintext` — エンコードするプレーンテキスト。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** 引数の値をエンコードした文字列を返します。[`String`](/sql-reference/data-types/string) @@ -337,8 +337,8 @@ SELECT base58Encode('ClickHouse'); 導入バージョン: v18.16 -[RFC 4648](https://en.wikipedia.org/wiki/Base64) に従い、[Base64](https://en.wikipedia.org/wiki/Base64) 形式から文字列をデコードします。 -エラーが発生した場合は例外をスローします。 +[RFC 4648](https://en.wikipedia.org/wiki/Base64) に従って、[Base64](https://en.wikipedia.org/wiki/Base64) 形式から文字列をデコードします。 +エラー時には例外をスローします。 **構文** @@ -350,11 +350,11 @@ base64Decode(encoded) **引数** -* `encoded` — デコードする文字列型のカラムまたは定数。文字列が有効な Base64 形式でない場合は、例外がスローされる。[`String`](/sql-reference/data-types/string) +* `encoded` — デコードする文字列カラムまたは定数。文字列が有効な Base64 形式でエンコードされていない場合は、例外がスローされます。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -デコードされた文字列を返す。[`String`](/sql-reference/data-types/string) +デコードされた文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -374,7 +374,7 @@ SELECT base64Decode('Y2xpY2tob3VzZQ==') 導入バージョン: v18.16 -[RFC 4648](https://en.wikipedia.org/wiki/Base64) に従って、文字列を Base64 形式でエンコードします。 +RFC 4648 に準拠した [Base64](https://en.wikipedia.org/wiki/Base64) 表現で文字列をエンコードします。 **構文** @@ -386,11 +386,11 @@ base64Encode(plaintext) **引数** -* `plaintext` — 復号する対象のプレーンテキストを含むカラムまたは定数。[`String`](/sql-reference/data-types/string) +* `plaintext` — デコード対象のプレーンテキストのカラムまたは定数。[`String`](/sql-reference/data-types/string) **返される値** -引数の値をエンコードした文字列を返します。[`String`](/sql-reference/data-types/string) +引数のエンコードされた値を含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -408,10 +408,10 @@ SELECT base64Encode('clickhouse') ## base64URLDecode {#base64URLDecode} -導入バージョン: v24.6 +導入: v24.6 -URL セーフアルファベットを使用し、RFC 4648 に従って [Base64](https://en.wikipedia.org/wiki/Base64) 表現から文字列をデコードします。 -エラーが発生した場合は例外をスローします。 +RFC 4648 に従い、URL セーフなアルファベットを使用して [Base64](https://en.wikipedia.org/wiki/Base64) 表現から文字列をデコードします。 +エラーが発生した場合は例外を送出します。 **構文** @@ -421,11 +421,11 @@ base64URLDecode(encoded) **引数** -* `encoded` — エンコード対象の文字列カラムまたは定数。文字列が有効な Base64 形式でエンコードされていない場合は、例外がスローされます。[`String`](/sql-reference/data-types/string) +* `encoded` — エンコード対象の文字列カラムまたは定数。文字列が有効な Base64 形式でない場合は、例外がスローされます。 [`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -引数のデコード後の値を含む文字列を返します。[`String`](/sql-reference/data-types/string) +引数をデコードした値を含む文字列を返します。 [`String`](/sql-reference/data-types/string) **例** @@ -445,7 +445,7 @@ SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') 導入バージョン: v18.16 -URL セーフなアルファベットを用いる [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4)(RFC 4648)表現で文字列をエンコードします。 +URL セーフなアルファベットを用いた [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4)(RFC 4648)表現で文字列をエンコードします。 **構文** @@ -459,7 +459,7 @@ base64URLEncode(plaintext) **戻り値** -引数の値をエンコードした文字列を返します。[`String`](/sql-reference/data-types/string) +引数のエンコードされた値を含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -477,10 +477,10 @@ SELECT base64URLEncode('https://clickhouse.com') ## basename {#basename} -導入バージョン: v20.1 +導入バージョン:v20.1 文字列内の最後のスラッシュまたはバックスラッシュ以降の部分を抽出します。 -この関数は、パスからファイル名を抽出する際によく使用されます。 +この関数は、パスからファイル名を抽出するためによく使用されます。 **構文** @@ -490,15 +490,15 @@ basename(expr) **引数** -* `expr` — 文字列表現。バックスラッシュはエスケープする必要があります。[`String`](/sql-reference/data-types/string) +* `expr` — 文字列式。バックスラッシュはエスケープする必要があります。[`String`](/sql-reference/data-types/string) **戻り値** -入力文字列の最後のスラッシュまたはバックスラッシュ以降の部分を返します。入力文字列がスラッシュまたはバックスラッシュで終わる場合、関数は空文字列を返します。スラッシュやバックスラッシュが存在しない場合は元の文字列を返します。[`String`](/sql-reference/data-types/string) +入力文字列中で最後に現れるスラッシュまたはバックスラッシュ以降の部分文字列を返します。入力文字列がスラッシュまたはバックスラッシュで終わる場合は、空文字列を返します。スラッシュやバックスラッシュが存在しない場合は元の文字列を返します。[`String`](/sql-reference/data-types/string) -**例** +**使用例** -**Unix パスからファイル名を抽出** +**Unix パスからファイル名を抽出する** ```sql title=Query SELECT 'some/long/path/to/file' AS a, basename(a) @@ -510,7 +510,7 @@ SELECT 'some/long/path/to/file' AS a, basename(a) └────────────────────────┴────────────────────────────────────┘ ``` -**Windows のパスからファイル名を抽出する** +**Windows のパスからファイル名を取得** ```sql title=Query SELECT 'some\\long\\path\\to\\file' AS a, basename(a) @@ -538,7 +538,7 @@ SELECT 'some-file-name' AS a, basename(a) 導入バージョン: v23.9 -2つのバイト文字列間の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)を計算します。 +2つのバイト列同士の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)を計算します。 **構文** @@ -546,7 +546,7 @@ SELECT 'some-file-name' AS a, basename(a) byteHammingDistance(s1, s2) ``` -**エイリアス**: `mismatches` +**別名**: `mismatches` **引数** @@ -555,7 +555,7 @@ byteHammingDistance(s1, s2) **戻り値** -2 つの文字列のハミング距離を返します。[`UInt64`](/sql-reference/data-types/int-uint) +2 つの文字列間のハミング距離を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -573,7 +573,7 @@ SELECT byteHammingDistance('karolin', 'kathrin') ## compareSubstrings {#compareSubstrings} -導入バージョン: v25.2 +導入されたバージョン: v25.2 2つの文字列を辞書順で比較します。 @@ -585,15 +585,15 @@ compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes) **引数** -* `s1` — 比較する最初の文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 比較する2番目の文字列。[`String`](/sql-reference/data-types/string) -* `s1_offset` — 比較を開始する `s1` 内の位置(0始まり)。[`UInt*`](/sql-reference/data-types/int-uint) +* `s1` — 比較する1つ目の文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 比較する2つ目の文字列。[`String`](/sql-reference/data-types/string) +* `s1_offset` — 比較を開始する `s1` 内の位置(0始まりのインデックス)。[`UInt*`](/sql-reference/data-types/int-uint) * `s2_offset` — 比較を開始する `s2` 内の位置(0始まりのインデックス)。[`UInt*`](/sql-reference/data-types/int-uint) -* `num_bytes` — 両方の文字列で比較する最大バイト数。`s1_offset`(または `s2_offset`) + `num_bytes` が入力文字列の末尾を超える場合、`num_bytes` はそれに応じて調整されます。[`UInt*`](/sql-reference/data-types/int-uint) +* `num_bytes` — 両方の文字列で比較する最大バイト数。`s1_offset`(または `s2_offset`) + `num_bytes` が入力文字列の末尾を超える場合は、`num_bytes` がそれに応じて小さくなります。[`UInt*`](/sql-reference/data-types/int-uint) **戻り値** -次の値を返します: +次のいずれかを返します: * `-1` — `s1`[`s1_offset` : `s1_offset` + `num_bytes`] < `s2`[`s2_offset` : `s2_offset` + `num_bytes`] の場合。 * `0` — `s1`[`s1_offset` : `s1_offset` + `num_bytes`] = `s2`[`s2_offset` : `s2_offset` + `num_bytes`] の場合。 @@ -621,7 +621,7 @@ SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result 指定された引数を連結します。 [`String`](../data-types/string.md) または [`FixedString`](../data-types/fixedstring.md) 型ではない引数は、デフォルトのシリアライゼーションを用いて文字列に変換されます。 -これはパフォーマンスを低下させるため、String/FixedString 以外の引数の使用は推奨されません。 +これはパフォーマンスが低下するため、String / FixedString 以外の引数の使用は推奨されません。 **構文** @@ -631,13 +631,13 @@ concat([s1, s2, ...]) **引数** -* `s1, s2, ...` — 任意の型の値を任意の数だけ指定できます。[`Any`](/sql-reference/data-types) +* `s1, s2, ...` — 任意の型の値をいくつでも指定できます。[`Any`](/sql-reference/data-types) -**戻り値** +**返り値** -引数を連結して作成された String を返します。いずれかの引数が `NULL` の場合、関数は `NULL` を返します。引数が 1 つも指定されていない場合は、空文字列を返します。[`Nullable(String)`](/sql-reference/data-types/nullable) +引数を連結して作成された String を返します。いずれかの引数が `NULL` の場合、関数は `NULL` を返します。引数が1つも指定されていない場合は、空文字列を返します。[`Nullable(String)`](/sql-reference/data-types/nullable) -**例** +**使用例** **文字列の連結** @@ -665,12 +665,12 @@ SELECT concat(42, 144) ## concatAssumeInjective {#concatAssumeInjective} -導入バージョン: v1.1 +導入: v1.1 [`concat`](#concat) と同様ですが、`concat(s1, s2, ...) → sn` が単射である、 -つまり異なる引数に対して常に異なる結果を返すと仮定します。 +すなわち異なる引数に対して異なる結果を返すと仮定します。 -`GROUP BY` の最適化に使用できます。 +`GROUP BY` の最適化に利用できます。 **構文** @@ -680,13 +680,13 @@ concatAssumeInjective([s1, s2, ...]) **引数** -* `s1, s2, ...` — 任意の型の値を任意の数だけ指定できます。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) +* `s1, s2, ...` — 任意の型の値を任意の数だけ指定可能。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) -**返り値** +**戻り値** -引数を連結して生成された文字列を返します。いずれかの引数の値が `NULL` の場合、関数は `NULL` を返します。引数が 1 つも指定されない場合は、空文字列を返します。型は [`String`](/sql-reference/data-types/string) です。 +引数を連結して生成された文字列を返します。いずれかの引数の値が `NULL` の場合は `NULL` を返します。引数が 1 つも渡されない場合は、空文字列を返します。型は [`String`](/sql-reference/data-types/string) です。 -**使用例** +**例** **GROUP BY の最適化** @@ -706,7 +706,7 @@ SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjectiv 導入バージョン: v22.12 -指定した区切り文字で区切って、指定された文字列を連結します。 +指定されたセパレータで区切って、与えられた文字列を連結します。 **構文** @@ -719,11 +719,11 @@ concatWithSeparator(sep[, exp1, exp2, ...]) **引数** * `sep` — 使用する区切り文字。[`const String`](/sql-reference/data-types/string) または [`const FixedString`](/sql-reference/data-types/fixedstring) -* `exp1, exp2, ...` — 連結する式。型が `String` または `FixedString` でない引数は、デフォルトのシリアル化により文字列に変換されます。これはパフォーマンスを低下させるので、非 String/FixedString 型の引数を使用することは推奨されません。[`Any`](/sql-reference/data-types) +* `exp1, exp2, ...` — 連結する式。`String` または `FixedString` 型ではない引数は、既定のシリアライゼーションで文字列に変換されます。これはパフォーマンスが低下するため、String/FixedString 以外の引数の使用は推奨されません。[`Any`](/sql-reference/data-types) -**戻り値** +**返される値** -引数を連結して生成された String を返します。いずれかの引数の値が `NULL` の場合、関数は `NULL` を返します。[`String`](/sql-reference/data-types/string) +引数を連結して作成された `String` を返します。いずれかの引数の値が `NULL` の場合、関数は `NULL` を返します。[`String`](/sql-reference/data-types/string) **例** @@ -744,7 +744,7 @@ SELECT concatWithSeparator('a', '1', '2', '3', '4') 導入バージョン: v22.12 [`concatWithSeparator`](#concatWithSeparator) と同様ですが、`concatWithSeparator(sep[,exp1, exp2, ... ]) → result` が単射であると仮定します。 -関数は、異なる引数に対して必ず異なる結果を返す場合に単射と呼ばれます。 +異なる引数に対して異なる結果を返す関数を単射と呼びます。 `GROUP BY` の最適化に使用できます。 @@ -756,12 +756,12 @@ concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ]) **引数** -* `sep` — 使用するセパレーター。[`const String`](/sql-reference/data-types/string) または [`const FixedString`](/sql-reference/data-types/fixedstring) -* `exp1, exp2, ...` — 連結する式。`String` または `FixedString` 型ではない引数は、デフォルトのシリアライゼーションを使用して文字列に変換されます。これはパフォーマンスの低下を招くため、非 String/FixedString 引数の使用は推奨されません。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) +* `sep` — 使用するセパレータ。[`const String`](/sql-reference/data-types/string) または [`const FixedString`](/sql-reference/data-types/fixedstring) +* `exp1, exp2, ...` — 連結する式。`String` または `FixedString` 型ではない引数は、デフォルトのシリアライゼーションで文字列に変換されます。これはパフォーマンス低下を招くため、String/FixedString 以外の引数の使用は推奨されません。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) **返される値** -引数を連結して生成された String 型の値を返します。いずれかの引数の値が `NULL` の場合、関数は `NULL` を返します。[`String`](/sql-reference/data-types/string) +引数を連結して作成された String 型の値を返します。いずれかの引数が `NULL` の場合、関数は `NULL` を返します。[`String`](/sql-reference/data-types/string) **例** @@ -804,8 +804,8 @@ GROUP BY concatWithSeparatorAssumeInjective('-', first_name, last_name); 異なる基数の間で数値を変換します。 -この関数は、ある基数から別の基数へ数値を変換します。2 から 36 までの基数をサポートします。 -10 を超える基数では、10〜35 の数字を表すために文字 A〜Z(大文字・小文字は区別されません)が使用されます。 +この関数は、ある基数で表された数値を別の基数に変換します。サポートされる基数は 2 から 36 です。 +基数が 10 を超える場合、10~35 の数字を表すために文字 A-Z(大文字・小文字は区別しません)が使用されます。 この関数は MySQL の CONV() 関数と互換性があります。 @@ -817,11 +817,11 @@ conv(number, from_base, to_base) **引数** -* `number` — 変換する数値。文字列または数値型を指定できます。 - `from_base` — 変換元の基数 (2-36)。整数である必要があります。 - `to_base` — 変換先の基数 (2-36)。整数である必要があります。 +* `number` — 変換する数値。文字列型または数値型を指定できます。 - `from_base` — 元の基数 (2-36)。整数である必要があります。 - `to_base` — 変換先の基数 (2-36)。整数である必要があります。 **戻り値** -変換先の基数で表現された数値の文字列表現。 +変換先の基数で表した数値の文字列表現。 **例** @@ -835,7 +835,7 @@ SELECT conv('10', 10, 2) 1010 ``` -**16進数を10進数に変換** +**16進数を10進数に変換する** ```sql title=Query SELECT conv('FF', 16, 10) @@ -845,7 +845,7 @@ SELECT conv('FF', 16, 10) 255 ``` -**負の数で変換** +**負の数による変換** ```sql title=Query SELECT conv('-1', 10, 16) @@ -869,7 +869,7 @@ SELECT conv('1010', 2, 8) 導入バージョン: v1.1 -エンコーディング `from` から `to` へ変換した文字列 `s` を返します。 +文字列 `s` をエンコーディング `from` から `to` へ変換した結果を返します。 **構文** @@ -885,7 +885,7 @@ convertCharset(s, from, to) **戻り値** -文字列 `s` を、エンコーディング `from` から `to` に変換して返します。[`String`](/sql-reference/data-types/string) +エンコーディング `from` の文字列 `s` を `to` エンコーディングに変換して返します。[`String`](/sql-reference/data-types/string) **例** @@ -905,7 +905,7 @@ SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1'); 導入バージョン: v24.1 -2つのバイト列間の [Damerau-Levenshtein 距離](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) を計算します。 +2 つのバイト列間の [Damerau-Levenshtein 距離](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) を計算します。 **構文** @@ -915,8 +915,8 @@ damerauLevenshteinDistance(s1, s2) **引数** -* `s1` — 1つ目の入力文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 2つ目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s1` — 1番目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 2番目の入力文字列。[`String`](/sql-reference/data-types/string) **戻り値** @@ -940,7 +940,7 @@ SELECT damerauLevenshteinDistance('clickhouse', 'mouse') 導入バージョン: v23.9 -文字列内の HTML エンティティ参照を対応する文字にデコードします。 +文字列中の HTML エンティティを対応する文字にデコードします。 **構文** @@ -950,9 +950,9 @@ decodeHTMLComponent(s) **引数** -* `s` — デコードする HTML エンティティを含む文字列。[`String`](/sql-reference/data-types/string) +* `s` — HTML エンティティをデコードする対象の文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** HTML エンティティをデコードした文字列を返します。[`String`](/sql-reference/data-types/string) @@ -974,7 +974,7 @@ SELECT decodeHTMLComponent('<div>Hello & "World"</div> 導入バージョン: v21.2 -文字列内の XML エンティティを対応する文字にデコードします。 +文字列中の XML エンティティを対応する文字にデコードします。 **構文** @@ -984,9 +984,9 @@ decodeXMLComponent(s) **引数** -* `s` — デコードする XML エンティティを含む文字列。[`String`](/sql-reference/data-types/string) +* `s` — デコード対象の XML エンティティを含む文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**戻り値** 指定された文字列内の XML エンティティをデコードした文字列を返します。[`String`](/sql-reference/data-types/string) @@ -1008,7 +1008,7 @@ SELECT decodeXMLComponent('<tag>Hello & World</tag>') 導入バージョン: v23.9 -2つのバイト列間の[編集距離](https://en.wikipedia.org/wiki/Edit_distance)を計算します。 +2 つのバイト列間の[編集距離](https://en.wikipedia.org/wiki/Edit_distance)を計算します。 **構文** @@ -1020,12 +1020,12 @@ editDistance(s1, s2) **引数** -* `s1` — 1 つ目の入力文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 2 つ目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s1` — 1つ目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 2つ目の入力文字列。[`String`](/sql-reference/data-types/string) **戻り値** -2 つの文字列間の編集距離を返します。[`UInt64`](/sql-reference/data-types/int-uint) +2つの文字列間の編集距離を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -1045,7 +1045,7 @@ SELECT editDistance('clickhouse', 'mouse') 導入バージョン: v24.6 -2 つの UTF8 文字列間の [編集距離](https://en.wikipedia.org/wiki/Edit_distance) を計算します。 +2つの UTF8 文字列間の[編集距離](https://en.wikipedia.org/wiki/Edit_distance)を計算します。 **構文** @@ -1053,16 +1053,16 @@ SELECT editDistance('clickhouse', 'mouse') editDistanceUTF8(s1, s2) ``` -**エイリアス**: `levenshteinDistanceUTF8` +**別名**: `levenshteinDistanceUTF8` **引数** -* `s1` — 1つ目の入力文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 2つ目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s1` — 1 番目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 2 番目の入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -2つの UTF8 文字列間の編集距離を返します。[`UInt64`](/sql-reference/data-types/int-uint) +2 つの UTF-8 文字列間の編集距離を返します。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -1082,7 +1082,7 @@ SELECT editDistanceUTF8('我是谁', '我是我') 導入バージョン: v21.1 -文字列を XML テキストノードまたは属性内に配置できるように、文字をエスケープします。 +文字列を XML のテキストノードまたは属性値として配置できるように、特殊文字をエスケープします。 **構文** @@ -1096,7 +1096,7 @@ encodeXMLComponent(s) **戻り値** -エスケープされた文字列。[`String`](/sql-reference/data-types/string) +エスケープされた文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1110,7 +1110,7 @@ SELECT ```response title=Response ┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐ -│ こんにちは & "世界" │ <tag>こんにちは & "世界"</tag> │ +│ Hello & "World" │ <tag>Hello & "World"</tag> │ └────────────────────────────┴──────────────────────────────────────────────────────┘ ``` @@ -1118,7 +1118,7 @@ SELECT 導入バージョン: v1.1 -文字列が指定されたサフィックスで終わるかどうかを判定します。 +文字列が指定された接尾辞で終わっているかどうかを判定します。 **構文** @@ -1129,11 +1129,11 @@ endsWith(s, suffix) **引数** * `s` — チェック対象の文字列。[`String`](/sql-reference/data-types/string) -* `suffix` — 末尾に付いているかを確認する接尾辞。[`String`](/sql-reference/data-types/string) +* `suffix` — `s` の末尾にあるかどうかを確認する文字列。[`String`](/sql-reference/data-types/string) **戻り値** -`s` が `suffix` で終わる場合は `1` を、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +`s` が `suffix` で終わる場合は `1`、それ以外は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -1153,7 +1153,7 @@ SELECT endsWith('ClickHouse', 'House'); 導入バージョン: v25.9 -文字列が、大文字小文字を区別せずに指定したサフィックスで終わっているかどうかをチェックします。 +文字列が、指定された接尾辞で大文字小文字を区別せずに終わっているかどうかを判定します。 **構文** @@ -1164,11 +1164,11 @@ endsWithCaseInsensitive(s, suffix) **引数** * `s` — チェック対象の文字列。[`String`](/sql-reference/data-types/string) -* `suffix` — 末尾として一致するかを判定する、大文字・小文字を区別しないサフィックス。[`String`](/sql-reference/data-types/string) +* `suffix` — 大文字・小文字を区別せずに末尾としてチェックする接尾辞。[`String`](/sql-reference/data-types/string) -**返り値** +**返される値** -`s` の末尾が、大文字・小文字を区別せずに `suffix` と一致する場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +文字列 `s` が大文字・小文字を区別せずに `suffix` で終わる場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -1188,8 +1188,8 @@ SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE'); 導入バージョン: v25.9 -文字列 `s` が、大文字と小文字を区別せずに `suffix` で終わるかどうかを返します。 -文字列が有効な UTF-8 でエンコードされたテキストであることを前提とします。 +文字列 `s` が、大文字・小文字を区別せずに `suffix` で終わるかどうかを返します。 +文字列が有効な UTF-8 エンコードされたテキストであることを前提とします。 この前提が満たされない場合、例外はスローされず、結果は未定義です。 **構文** @@ -1201,7 +1201,7 @@ endsWithCaseInsensitiveUTF8(s, suffix) **引数** * `s` — チェック対象の文字列。[`String`](/sql-reference/data-types/string) -* `suffix` — 大文字小文字を区別せずに判定されるサフィックス文字列。[`String`](/sql-reference/data-types/string) +* `suffix` — 大文字小文字を区別せずに、末尾としてチェックする文字列。[`String`](/sql-reference/data-types/string) **戻り値** @@ -1227,7 +1227,7 @@ SELECT endsWithCaseInsensitiveUTF8('данных', 'ых'); 文字列 `s` が `suffix` で終わるかどうかを返します。 文字列が有効な UTF-8 でエンコードされたテキストであることを前提とします。 -この前提が成り立たない場合でも、例外はスローされず、結果は未定義です。 +この前提が満たされなくても、例外はスローされず、結果は未定義です。 **構文** @@ -1237,12 +1237,12 @@ endsWithUTF8(s, suffix) **引数** -* `s` — 判定対象の文字列。[`String`](/sql-reference/data-types/string) -* `suffix` — 末尾にあるかを確認するサフィックス文字列。[`String`](/sql-reference/data-types/string) +* `s` — チェック対象の文字列。[`String`](/sql-reference/data-types/string) +* `suffix` — 末尾に存在するかを確認するサフィックス(接尾辞)。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -`s` が `suffix` で終わる場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +`s` が `suffix` で終わる場合は `1`、そうでない場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -1262,17 +1262,17 @@ SELECT endsWithUTF8('данных', 'ых'); 導入バージョン: v21.3 -HTML または XHTML からテキストコンテンツを抽出します。 +HTML または XHTML からテキスト内容を抽出します。 -この関数は、HTML タグ、コメント、script/style 要素を削除し、テキストコンテンツのみを残します。次の処理を行います: +この関数は HTML タグ、コメント、script/style 要素を削除し、テキスト内容のみを残します。次の処理を行います: * すべての HTML/XML タグの削除 * コメント(``)の削除 * script および style 要素とその内容の削除 * CDATA セクションの処理(内容をそのままコピー) -* 空白文字の適切な処理と正規化 +* 適切な空白処理と正規化 -注意: HTML エンティティはデコードされないため、必要に応じて別の関数で処理する必要があります。 +注意: HTML エンティティはデコードされないため、必要に応じて別の関数で処理してください。 **構文** @@ -1286,7 +1286,7 @@ extractTextFromHTML(html) **戻り値** -空白を正規化した抽出済みのテキストコンテンツを返します。[`String`](/sql-reference/data-types/string) +抽出されたテキストコンテンツを、空白を正規化したうえで返します。[`String`](/sql-reference/data-types/string) **例** @@ -1295,9 +1295,9 @@ extractTextFromHTML(html) ```sql title=Query SELECT extractTextFromHTML(' - ページタイトル + Page Title -

こんにちは 世界

+

Hello World!

@@ -1313,9 +1313,9 @@ SELECT extractTextFromHTML(' ## firstLine {#firstLine} -導入されたバージョン: v23.7 +導入バージョン: v23.7 -複数行文字列の最初の行を返します。 +複数行の文字列の最初の行を返します。 **構文** @@ -1329,7 +1329,7 @@ firstLine(s) **戻り値** -入力文字列に含まれる最初の行を返します。改行文字が存在しない場合は、文字列全体を返します。[`String`](/sql-reference/data-types/string) +入力文字列の最初の行を返します。行区切り文字が存在しない場合は、文字列全体を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1349,9 +1349,9 @@ SELECT firstLine('foo\\nbar\\nbaz') 導入バージョン: v24.1 -[Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA) メカニズムに従って、ドメイン名の Unicode(UTF-8)表現(ToUnicode アルゴリズム)を返します。 -エラーが発生した場合(例: 入力が無効な場合)、入力文字列をそのまま返します。 -大文字小文字の正規化により、[`idnaEncode()`](#idnaEncode) と [`idnaDecode()`](#idnaDecode) を繰り返し適用しても、必ずしも元の文字列には戻らないことに注意してください。 +[Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)メカニズムに従い、ドメイン名の Unicode(UTF-8)表現(ToUnicode アルゴリズム)を返します。 +エラーが発生した場合(たとえば入力が不正な場合)には、入力文字列をそのまま返します。 +大文字小文字の正規化が行われるため、[`idnaEncode()`](#idnaEncode) と [`idnaDecode()`](#idnaDecode) を繰り返し適用しても、必ずしも元の文字列が返されるとは限らない点に注意してください。 **構文** @@ -1363,9 +1363,9 @@ idnaDecode(s) * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -入力値に対して IDNA メカニズムを適用し、入力文字列を Unicode (UTF-8) で表現した値を返します。[`String`](/sql-reference/data-types/string) +入力値に対する IDNA メカニズムに従って、入力文字列の Unicode(UTF-8)表現を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1385,11 +1385,11 @@ SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de') 導入バージョン: v24.1 -[Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA) の仕組みに従って、ドメイン名の ASCII 表現(ToASCII アルゴリズム)を返します。 -入力文字列は UTF でエンコードされており、ASCII 文字列に変換可能である必要があります。条件を満たさない場合は例外がスローされます。 +[Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA) の仕組みに従い、ドメイン名の ASCII 表現(ToASCII アルゴリズム)を返します。 +入力文字列は UTF-8 でエンコードされており、ASCII 文字列に変換可能である必要があります。そうでない場合は例外が発生します。 :::note -パーセントデコードや、タブ・スペース・制御文字のトリミングは行われません。 +パーセントデコードや、タブ・空白・制御文字のトリミングは行われません。 ::: **構文** @@ -1402,9 +1402,9 @@ idnaEncode(s) * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**返り値** -入力値に対する IDNA メカニズムに従い、入力文字列の ASCII 表現を返します。[`String`](/sql-reference/data-types/string) +IDNA メカニズムに従って、入力文字列の ASCII 表現を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1425,11 +1425,11 @@ SELECT idnaEncode('straße.münchen.de') 導入バージョン: v23.7 各単語の最初の文字を大文字にし、それ以外を小文字に変換します。 -ここでの単語とは、英数字から成る連続した文字列であり、英数字以外の文字によって区切られたものを指します。 +単語は、英数字が連続した並びで構成され、非英数字によって区切られます。 :::note -`initcap` は各単語の最初の文字のみを大文字に変換するため、アポストロフィや大文字を含む単語では予期しない動作が発生する場合があります。 -これは既知の挙動であり、現時点で修正の予定はありません。 +`initcap` は各単語の最初の文字だけを大文字に変換するため、アポストロフィや大文字を含む単語では予期しない動作となる場合があります。 +これは既知の動作であり、現時点で修正の予定はありません。 ::: **構文** @@ -1460,7 +1460,7 @@ SELECT initcap('building for fast') └──────────────────────────────┘ ``` -**アポストロフィや大文字を含む単語に関する既知の動作の例** +**アポストロフィや大文字を含む単語に関する既知の動作例** ```sql title=Query SELECT initcap('John''s cat won''t eat.'); @@ -1476,13 +1476,13 @@ SELECT initcap('John''s cat won''t eat.'); 導入バージョン: v23.7 -[`initcap`](#initcap) と同様に、`initcapUTF8` は各単語の最初の文字を大文字にし、残りを小文字に変換します。 +[`initcap`](#initcap) と同様に、`initcapUTF8` は各単語の先頭の文字を大文字にし、残りを小文字に変換します。 文字列が有効な UTF-8 でエンコードされたテキストであることを前提とします。 -この前提が満たされない場合でも例外はスローされず、結果は未定義です。 +この前提が満たされない場合でも、例外はスローされず、結果は未定義です。 :::note -この関数は言語を判別しません。例えばトルコ語では結果が正確にならない場合があります (i/İ と i/I など)。 -あるコードポイントにおいて、大文字と小文字で UTF-8 のバイト列の長さが異なる場合、そのコードポイントに対する結果は正しくない可能性があります。 +この関数は言語を判別しません。例えばトルコ語では結果が必ずしも正しくならない可能性があります(i/İ と i/I の違いなど)。 +あるコードポイントについて、大文字と小文字で UTF-8 バイト列の長さが異なる場合、そのコードポイントに対する結果は正しくない可能性があります。 ::: **構文** @@ -1495,9 +1495,9 @@ initcapUTF8(s) * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -各単語の先頭文字を大文字に変換した `s` を返します。[`String`](/sql-reference/data-types/string) +各単語の先頭文字を大文字にした `s` を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1517,14 +1517,14 @@ SELECT initcapUTF8('не тормозит') 導入バージョン: v25.9 -入力の String または FixedString が ASCII バイト (0x00–0x7F) のみを含む場合は 1、それ以外の場合は 0 を返します。 +入力された String または FixedString が ASCII バイト (0x00–0x7F) のみで構成されている場合は 1 を返し、それ以外の場合は 0 を返します。 **構文** ```sql ``` -**エイリアス**: `isASCII` +**別名**: `isASCII` **引数** @@ -1547,7 +1547,7 @@ SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii 導入バージョン: v20.1 -バイト列が有効な UTF-8 でエンコードされたテキストかどうかを確認します。 +バイト列が有効な UTF-8 エンコードされたテキストかどうかを判定します。 **構文** @@ -1557,11 +1557,11 @@ isValidUTF8(s) **引数** -* `s` — UTF-8 エンコードの有効性を検査する対象の文字列。[`String`](/sql-reference/data-types/string) +* `s` — UTF-8 エンコードの妥当性を検証する文字列。[`String`](/sql-reference/data-types/string) **戻り値** -バイト列が有効な UTF-8 でエンコードされたテキストを構成していれば `1`、そうでなければ `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +バイト列が有効な UTF-8 エンコードのテキストであれば `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -1579,9 +1579,9 @@ SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid ## jaroSimilarity {#jaroSimilarity} -導入: v24.1 +導入バージョン: v24.1 -2 つのバイト文字列間の [Jaro 類似度](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) を計算します。 +2つのバイト列同士の [Jaro 類似度](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) を計算します。 **構文** @@ -1591,12 +1591,12 @@ jaroSimilarity(s1, s2) **引数** -* `s1` — 1 番目の入力文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 2 番目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s1` — 1番目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 2番目の入力文字列。[`String`](/sql-reference/data-types/string) **戻り値** -2 つの文字列間の Jaro 類似度を返します。[`Float64`](/sql-reference/data-types/float) +2つの文字列間の Jaro 類似度を返します。[`Float64`](/sql-reference/data-types/float) **例** @@ -1626,12 +1626,12 @@ jaroWinklerSimilarity(s1, s2) **引数** -* `s1` — 1 つ目の入力文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 2 つ目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s1` — 1番目の入力文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 2番目の入力文字列。[`String`](/sql-reference/data-types/string) **戻り値** -2 つの文字列間の Jaro-Winkler 類似度を返します。[`Float64`](/sql-reference/data-types/float) +2つの文字列間の Jaro-Winkler 類似度を返します。[`Float64`](/sql-reference/data-types/float) **例** @@ -1651,7 +1651,7 @@ SELECT jaroWinklerSimilarity('clickhouse', 'click') 導入バージョン: v22.1 -文字列 `s` の左端から、指定された `offset` の長さの部分文字列を返します。 +文字列 `s` の左端から `offset` 文字分の部分文字列を返します。 **構文** @@ -1662,20 +1662,20 @@ left(s, offset) **引数** * `s` — 部分文字列を取得する対象の文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — オフセットを表すバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `offset` — オフセット値のバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -戻り値: +返り値: -* 正の `offset` の場合、文字列の左側から開始し、`offset` バイト分の `s` の部分文字列。 -* 負の `offset` の場合、文字列の左側から開始し、`length(s) - |offset|` バイト分の `s` の部分文字列。 +* 正の `offset` の場合、文字列の左端から `offset` バイト分を含む `s` の部分文字列。 +* 負の `offset` の場合、文字列の左端から `length(s) - |offset|` バイト分を含む `s` の部分文字列。 * `length` が `0` の場合は空文字列。 [`String`](/sql-reference/data-types/string) **例** -**正のオフセット** +**正の offset** ```sql title=Query SELECT left('Hello World', 5) @@ -1697,9 +1697,9 @@ Hello ## leftPad {#leftPad} -導入: v21.8 +導入バージョン: v21.8 -結果の文字列が指定された `length` に達するまで、左側からスペースまたは指定した文字列(必要に応じて複数回)で文字列を埋めます。 +文字列の左側をスペース、または指定した文字列(必要に応じて繰り返し)で埋め、結果の文字列が指定された `length` に達するまでパディングします。 **構文** @@ -1711,13 +1711,13 @@ leftPad(string, length[, pad_string]) **引数** -* `string` — パディング対象となる入力文字列。[`String`](/sql-reference/data-types/string) -* `length` — 結果の文字列の長さ。値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — 省略可。入力文字列をパディングする際に使用する文字列。指定されていない場合、入力文字列はスペースでパディングされます。[`String`](/sql-reference/data-types/string) +* `string` — パディング対象の入力文字列。[`String`](/sql-reference/data-types/string) +* `length` — 結果の文字列の長さ。この値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — 省略可能。入力文字列をパディングする際に使用する文字列。指定されていない場合、入力文字列は空白文字でパディングされます。[`String`](/sql-reference/data-types/string) **返される値** -指定した長さになるよう左側がパディングされた文字列を返します。[`String`](/sql-reference/data-types/string) +指定された長さになるよう左側がパディングされた文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1737,8 +1737,8 @@ SELECT leftPad('abc', 7, '*'), leftPad('def', 7) 導入バージョン: v21.8 -UTF-8 文字列の左側を、スペースまたは指定した文字列で(必要に応じて複数回)パディングし、結果の文字列が指定された長さに達するまで埋めます。 -文字列の長さをバイト数で測定する [`leftPad`](#leftPad) と異なり、文字列の長さはコードポイント数で測定されます。 +UTF8 文字列の左側を、結果の文字列が指定された長さに達するまで、スペースまたは指定した文字列(必要に応じて複数回)で埋めます。 +文字列長をバイト数で測定する [`leftPad`](#leftPad) とは異なり、この関数では文字列長はコードポイント数で測定されます。 **構文** @@ -1749,10 +1749,10 @@ leftPadUTF8(string, length[, pad_string]) **引数** * `string` — パディング対象の入力文字列。[`String`](/sql-reference/data-types/string) -* `length` — 結果の文字列の長さ。値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — 省略可能。入力文字列をパディングするための文字列。指定されていない場合、入力文字列はスペースでパディングされます。[`String`](/sql-reference/data-types/string) +* `length` — 結果となる文字列の長さ。値が入力文字列の長さより小さい場合は、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — 任意。入力文字列を埋めるために使用する文字列。指定されていない場合、入力文字列はスペースで埋められます。[`String`](/sql-reference/data-types/string) -**返される値** +**返り値** 指定された長さになるよう左側がパディングされた文字列を返します。[`String`](/sql-reference/data-types/string) @@ -1774,7 +1774,7 @@ SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7) 導入バージョン: v22.1 -UTF-8 エンコードされた文字列 `s` に対して、左端からの `offset` で指定された位置を開始位置とする部分文字列を返します。 +UTF-8 エンコードされた文字列 `s` の左端から、指定した `offset` 文字分の部分文字列を返します。 **構文** @@ -1784,15 +1784,15 @@ leftUTF8(s, offset) **引数** -* `s` — 部分文字列を計算する対象の UTF-8 エンコード済み文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — オフセットのバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `s` — 部分文字列を計算する対象となる UTF-8 エンコード文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) +* `offset` — オフセットとなるバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) -**戻り値** +**返される値** -次を返します: +返される値は次のとおりです。 -* 正の `offset` の場合、文字列の左端から開始する、`offset` バイト分の `s` の部分文字列。 -* 負の `offset` の場合、文字列の左端から開始する、`length(s) - |offset|` バイト分の `s` の部分文字列。 +* `offset` が正の場合、文字列の左端から数えて `offset` バイトの長さを持つ、`s` の部分文字列。 +* `offset` が負の場合、文字列の左端から数えて `length(s) - |offset|` バイトの長さを持つ、`s` の部分文字列。 * `length` が 0 の場合は空文字列。 [`String`](/sql-reference/data-types/string) @@ -1820,11 +1820,11 @@ SELECT leftUTF8('Привет', -4) ## lengthUTF8 {#lengthUTF8} -導入: v1.1 +導入バージョン: v1.1 -文字列の長さを、バイト数や文字数ではなく Unicode コードポイント数で返します。 -文字列は有効な UTF-8 でエンコードされたテキストであると仮定します。 -この前提が満たされない場合でも、例外はスローされず、結果は未定義です。 +文字列の長さを、バイト数や文字数ではなく、Unicode コードポイント数として返します。 +文字列には有効な UTF-8 でエンコードされたテキストが含まれていると仮定します。 +この前提が満たされない場合でも、例外はスローされず、結果は未定義となります。 **構文** @@ -1832,15 +1832,15 @@ SELECT leftUTF8('Привет', -4) lengthUTF8(s) ``` -**別名**: `CHAR_LENGTH`, `CHARACTER_LENGTH` +**エイリアス**: `CHAR_LENGTH`, `CHARACTER_LENGTH` **引数** * `s` — 有効な UTF-8 でエンコードされたテキストを含む文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -文字列 `s` の長さ(Unicode コードポイント数)。[`UInt64`](/sql-reference/data-types/int-uint) +Unicode のコードポイント数で表した文字列 `s` の長さ。[`UInt64`](/sql-reference/data-types/int-uint) **例** @@ -1858,7 +1858,7 @@ SELECT lengthUTF8('Здравствуй, мир!') ## lower {#lower} -導入: v1.1 +導入バージョン: v1.1 ASCII 文字列を小文字に変換します。 @@ -1872,11 +1872,11 @@ lower(s) **引数** -* `s` — 小文字に変換する対象の文字列。 [`String`](/sql-reference/data-types/string) +* `s` — 小文字に変換する文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**戻り値** -`s` を小文字に変換した文字列を返します。 [`String`](/sql-reference/data-types/string) +`s` を小文字に変換した文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1894,9 +1894,9 @@ SELECT lower('CLICKHOUSE') ## lowerUTF8 {#lowerUTF8} -導入バージョン: v1.1 +導入: v1.1 -文字列が有効な UTF-8 でエンコードされたテキストであると仮定して、小文字に変換します。この前提が満たされない場合でも、例外はスローされず、結果は未定義になります。 +文字列が有効な UTF-8 でエンコードされたテキストであると仮定して、その文字列を小文字に変換します。この前提が満たされない場合でも、例外は送出されず、結果は未定義です。 **構文** @@ -1912,7 +1912,7 @@ lowerUTF8(input) 小文字に変換された文字列を返します。[`String`](/sql-reference/data-types/string) -**使用例** +**例** **first** @@ -1926,9 +1926,9 @@ münchen ## normalizeUTF8NFC {#normalizeUTF8NFC} -導入: v21.11 +導入バージョン: v21.11 -UTF-8文字列を [NFC 正規化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms) に従って正規化します。 +[正規化形式 NFC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms) に従って UTF-8 文字列を正規化します。 **構文** @@ -1940,9 +1940,9 @@ normalizeUTF8NFC(str) * `str` — UTF-8 でエンコードされた入力文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**戻り値** -UTF-8 文字列の NFC 正規化形式を返します。[`String`](/sql-reference/data-types/string) +UTF-8 文字列を NFC で正規化した形式を返します。[`String`](/sql-reference/data-types/string) **例** @@ -1950,7 +1950,7 @@ UTF-8 文字列の NFC 正規化形式を返します。[`String`](/sql-referenc ```sql title=Query SELECT -'é' AS original, -- e + 結合アキュートアクセント (U+0065 + U+0301) +'é' AS original, -- e + combining acute accent (U+0065 + U+0301) length(original), normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9) length(nfc_normalized); @@ -1966,7 +1966,7 @@ length(nfc_normalized); 導入バージョン: v21.11 -UTF-8 文字列を、[NFD 正規化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)に従って正規化します。 +UTF-8 文字列を [NFD 正規化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms) に従って正規化します。 **構文** @@ -1978,9 +1978,9 @@ normalizeUTF8NFD(str) * `str` — UTF-8 でエンコードされた入力文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**戻り値** -UTF-8 文字列を NFD 形式に正規化した値を返します。[`String`](/sql-reference/data-types/string) +UTF-8 文字列を NFD 形式に正規化したものを返します。[`String`](/sql-reference/data-types/string) **例** @@ -1988,9 +1988,9 @@ UTF-8 文字列を NFD 形式に正規化した値を返します。[`String`](/ ```sql title=Query SELECT - 'é' AS original, -- é (U+00E9) アキュート付きe + 'é' AS original, -- é (U+00E9) length(original), - normalizeUTF8NFD('é') AS nfd_normalized, -- e + 結合アキュート (U+0065 + U+0301) + normalizeUTF8NFD('é') AS nfd_normalized, -- e + combining acute (U+0065 + U+0301) length(nfd_normalized); ``` @@ -2004,7 +2004,7 @@ SELECT 導入バージョン: v21.11 -UTF-8 文字列を [NFKC 正規化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms) に従って正規化します。 +[NFKC 正規化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)に従って UTF-8 文字列を正規化します。 **構文** @@ -2016,9 +2016,9 @@ normalizeUTF8NFKC(str) * `str` — UTF-8 でエンコードされた入力文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -UTF-8 文字列を NFKC 形式に正規化した文字列を返します。[`String`](/sql-reference/data-types/string) +UTF-8 文字列の NFKC 正規化形式を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2026,8 +2026,8 @@ UTF-8 文字列を NFKC 形式に正規化した文字列を返します。[`Str ```sql title=Query SELECT - '① ② ③' AS original, -- 丸囲み数字 - normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- 1 2 3 に変換されます + '① ② ③' AS original, -- Circled number characters + normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- Converts to 1 2 3 ``` ```response title=Response @@ -2038,9 +2038,9 @@ SELECT ## normalizeUTF8NFKD {#normalizeUTF8NFKD} -導入されたバージョン: v21.11 +導入バージョン: v21.11 -UTF-8 文字列を [NFKD 正規化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms) に従って正規化します。 +[正規化形式 NFKD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms) に従って UTF-8 文字列を正規化します。 **構文** @@ -2052,7 +2052,7 @@ normalizeUTF8NFKD(str) * `str` — UTF-8 でエンコードされた入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** UTF-8 文字列を NFKD 形式に正規化したものを返します。[`String`](/sql-reference/data-types/string) @@ -2062,8 +2062,8 @@ UTF-8 文字列を NFKD 形式に正規化したものを返します。[`String ```sql title=Query SELECT - 'H₂O²' AS original, -- H + 下付き文字2 + O + 上付き文字2 - normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- H 2 O 2 に変換 + 'H₂O²' AS original, -- H + subscript 2 + O + superscript 2 + normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- Converts to H 2 O 2 ``` ```response title=Response @@ -2076,8 +2076,8 @@ SELECT 導入バージョン: v24.1 -[Punycode](https://en.wikipedia.org/wiki/Punycode) でエンコードされた文字列の、UTF8 エンコードされたプレーンテキストを返します。 -有効な Punycode でエンコードされた文字列が指定されていない場合は、例外がスローされます。 +[Punycode](https://en.wikipedia.org/wiki/Punycode) でエンコードされた文字列の、UTF-8 エンコードされた平文を返します。 +有効な Punycode でエンコードされた文字列が指定されていない場合は、例外をスローします。 **構文** @@ -2112,7 +2112,7 @@ SELECT punycodeDecode('Mnchen-3ya') 導入バージョン: v24.1 文字列の [Punycode](https://en.wikipedia.org/wiki/Punycode) 表現を返します。 -文字列は UTF-8 でエンコードされている必要があり、そうでない場合の動作は未定義です。 +文字列は UTF-8 でエンコードされている必要があり、それ以外の場合の動作は未定義です。 **構文** @@ -2126,7 +2126,7 @@ punycodeEncode(s) **戻り値** -入力値を Punycode 形式で表した値を返します。[`String`](/sql-reference/data-types/string) +入力値の Punycode 表現を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2146,7 +2146,7 @@ SELECT punycodeEncode('München') 導入バージョン: v23.2 -`haystack` 内で正規表現パターンにマッチし、指定した正規表現グループインデックスに対応する最初の文字列を抽出します。 +`haystack` 内で正規表現パターンにマッチし、指定された正規表現グループのインデックスに対応する最初の文字列を抽出します。 **構文** @@ -2158,13 +2158,13 @@ regexpExtract(haystack, pattern[, index]) **引数** -* `haystack` — 正規表現パターンをマッチさせる対象となる文字列。[`String`](/sql-reference/data-types/string) -* `pattern` — 正規表現パターンを表す文字列。`pattern` には複数の正規表現グループを含めることができ、`index` はどの正規表現グループを抽出するかを示します。`index` が 0 の場合は、正規表現全体にマッチした部分(全体一致)を意味します。[`const String`](/sql-reference/data-types/string) -* `index` — 省略可能。0 以上の整数値で、デフォルト値は 1 です。抽出する正規表現グループを表します。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `haystack` — 正規表現パターンと照合する対象の文字列。[`String`](/sql-reference/data-types/string) +* `pattern` — 正規表現を表す文字列。`pattern` には複数の正規表現グループ(キャプチャグループ)を含めることができ、`index` はどのグループを抽出するかを示します。インデックス 0 は正規表現全体にマッチすることを意味します。[`const String`](/sql-reference/data-types/string) +* `index` — 省略可能。0 以上の整数値で、デフォルトは 1 です。抽出する正規表現グループを指定します。[`(U)Int*`](/sql-reference/data-types/int-uint) **戻り値** -マッチした文字列を返します。[`String`](/sql-reference/data-types/string) +一致した文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2186,9 +2186,9 @@ SELECT ## repeat {#repeat} -導入されたバージョン: v20.1 +導入バージョン: v20.1 -指定された回数だけ、文字列を繰り返し連結します。 +指定された回数分だけ文字列を繰り返して連結します。 **構文** @@ -2203,7 +2203,7 @@ repeat(s, n) **返される値** -文字列 `s` を `n` 回繰り返した文字列。`n` が負の場合、関数は空文字列を返します。[`String`](/sql-reference/data-types/string) +文字列 `s` を `n` 回繰り返した文字列。`n` が負の値の場合、関数は空文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2221,11 +2221,11 @@ SELECT repeat('abc', 10) ## reverseUTF8 {#reverseUTF8} -導入バージョン: v1.1 +導入: v1.1 文字列内の Unicode コードポイントの並びを逆順にします。 -文字列が有効な UTF-8 でエンコードされたテキストであることを前提とします。 -この前提が満たされない場合でも、例外はスローされず、結果は未定義になります。 +文字列に有効な UTF-8 でエンコードされたテキストが含まれていることを前提とします。 +この前提が満たされない場合でも、例外はスローされず、結果は未定義のままです。 **構文** @@ -2237,9 +2237,9 @@ reverseUTF8(s) * `s` — 有効な UTF-8 でエンコードされたテキストを含む文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**返される値** -Unicode コードポイントの並びを逆順にした文字列を返します。[`String`](/sql-reference/data-types/string) +Unicode コードポイント列を逆順にした文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2257,7 +2257,7 @@ esuoHkcilC 導入バージョン: v22.1 -文字列 `s` の末尾(右側)から数えて `offset` 文字分の部分文字列を返します。 +文字列 `s` の末尾(右端)から `offset` 文字分の位置を開始点とする部分文字列を返します。 **構文** @@ -2267,15 +2267,15 @@ right(s, offset) **引数** -* `s` — 部分文字列を計算する対象の文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) +* `s` — 部分文字列を取得する元の文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) * `offset` — オフセットのバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) -**返り値** +**戻り値** -次を返します: +次を返します: -* 正の `offset` の場合、文字列の右端から `offset` バイト分の `s` の部分文字列。 -* 負の `offset` の場合、文字列の右端から `length(s) - |offset|` バイト分の `s` の部分文字列。 +* 正の `offset` の場合、文字列の右端から数えて `offset` バイト分の `s` の部分文字列。 +* 負の `offset` の場合、文字列の右端から数えて `length(s) - |offset|` バイト分の `s` の部分文字列。 * `length` が `0` の場合は空文字列。 [`String`](/sql-reference/data-types/string) @@ -2305,7 +2305,7 @@ lo 導入バージョン: v21.8 -文字列の右端をスペースまたは指定した文字列(必要に応じて複数回)で埋めて、結果の文字列が指定された `length` に達するまでパディングします。 +文字列の右側に、スペースまたは指定した文字列を(必要に応じて複数回)追加して、結果の文字列が指定された `length` に達するまでパディングします。 **構文** @@ -2317,11 +2317,11 @@ rightPad(string, length[, pad_string]) **引数** -* `string` — パディング対象となる入力文字列。[`String`](/sql-reference/data-types/string) -* `length` — 生成される文字列の長さ。この値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — オプション。入力文字列をパディングするための文字列。指定されていない場合、入力文字列はスペースでパディングされます。[`String`](/sql-reference/data-types/string) +* `string` — パディング対象の入力文字列。[`String`](/sql-reference/data-types/string) +* `length` — 結果の文字列の長さ。値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — 省略可能。入力文字列のパディングに使用する文字列。指定しない場合、入力文字列はスペースでパディングされます。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** 指定された長さの、右側がパディングされた文字列を返します。[`String`](/sql-reference/data-types/string) @@ -2343,8 +2343,8 @@ SELECT rightPad('abc', 7, '*'), rightPad('abc', 7) 導入バージョン: v21.8 -文字列の右側を空白、または指定した文字列(必要に応じて複数回)で埋め、結果の文字列が指定された長さに達するまでパディングします。 -文字列長をバイト数で測定する [`rightPad`](#rightPad) と異なり、文字列長はコードポイント数で測定されます。 +文字列の右端を、スペースまたは指定した文字列で(必要に応じて複数回)埋めて、結果の文字列が指定された長さに達するまでパディングします。 +文字列の長さをバイト数で計測する [`rightPad`](#rightPad) とは異なり、文字列の長さはコードポイント数で計測されます。 **構文** @@ -2355,12 +2355,12 @@ rightPadUTF8(string, length[, pad_string]) **引数** * `string` — パディング対象の入力文字列。[`String`](/sql-reference/data-types/string) -* `length` — 結果となる文字列の長さ。値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — 省略可能。入力文字列をパディングする際に使用する文字列。指定しない場合、入力文字列はスペースでパディングされます。[`String`](/sql-reference/data-types/string) +* `length` — 生成される文字列の長さ。この値が入力文字列の長さより小さい場合、入力文字列は `length` 文字に切り詰められます。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — 省略可能。入力文字列をパディングする際に使用する文字列。指定しない場合、入力文字列は空白文字でパディングされます。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -指定した長さの右側パディング済み文字列を返します。[`String`](/sql-reference/data-types/string) +指定された長さになるように右側がパディングされた文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2380,7 +2380,7 @@ SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7) 導入バージョン: v22.1 -UTF-8 でエンコードされた文字列 `s` に対して、右端から数えた指定の `offset` 位置を開始位置とする部分文字列を返します。 +UTF-8 エンコードされた文字列 `s` について、末尾からの `offset` を開始位置として部分文字列を返します。 **構文** @@ -2390,15 +2390,15 @@ rightUTF8(s, offset) **引数** -* `s` — 部分文字列を取得する対象の UTF-8 エンコード文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — オフセットを表すバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `s` — 部分文字列を計算する対象の UTF-8 でエンコードされた文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) +* `offset` — オフセットのバイト数。[`(U)Int*`](/sql-reference/data-types/int-uint) -**返される値** +**返り値** -戻り値: +返り値: -* 正の `offset` の場合、文字列の右端から数えて `offset` バイト分の `s` の部分文字列。 -* 負の `offset` の場合、文字列の右端から数えて `length(s) - |offset|` バイト分の `s` の部分文字列。 +* `offset` が正の場合、文字列の右端から数えて `offset` バイト分の `s` の部分文字列。 +* `offset` が負の場合、文字列の右端から数えて `length(s) - |offset|` バイト分の `s` の部分文字列。 * `length` が `0` の場合は空文字列。 [`String`](/sql-reference/data-types/string) @@ -2462,7 +2462,7 @@ SELECT soundex('aksel') 導入バージョン: v23.5 -指定された回数分の空白文字(` `)を連結して返します。 +指定された回数分のスペース(` `)を連結した文字列を返します。 **構文** @@ -2476,7 +2476,7 @@ space(n) **戻り値** -スペースを `n` 回繰り返した文字列を返します。`n <= 0` の場合は空文字列を返します。[`String`](/sql-reference/data-types/string) +スペースを `n` 回繰り返した文字列を返します。`n <= 0` の場合、空文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -2496,10 +2496,8 @@ SELECT space(3) AS res, length(res); 導入バージョン: v25.5 -指定された文字列から、長さが少なくとも `n` のすべての部分文字列を抽出します。 -このとき、その部分文字列の両端にある (n-1)-gram のハッシュ値が、 -その部分文字列内部に含まれるどの (n-1)-gram のハッシュ値よりも厳密に大きいものだけを対象とします。 -ハッシュ関数としては `CRC32` を使用します。 +指定された文字列から、長さが少なくとも `n` であり、かつその部分文字列の両端にある (n-1)-グラムのハッシュ値が、その部分文字列内部に含まれる任意の (n-1)-グラムのハッシュ値よりも厳密に大きくなるような、すべての部分文字列を見つけます。 +ハッシュ関数として `CRC32` を使用します。 **構文** @@ -2510,12 +2508,12 @@ sparseGrams(s[, min_ngram_length, max_ngram_length]) **引数** * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 省略可能。抽出される n-gram の最小長。デフォルトかつ最小値は 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 省略可能。抽出される n-gram の最大長。デフォルト値は 100。`min_ngram_length` 以上である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — オプション。抽出される n-gram の最小長。デフォルトかつ最小値は 3。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — オプション。抽出される n-gram の最大長。デフォルト値は 100。`min_ngram_length` 以上である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) -**返り値** +**戻り値** -選択された部分文字列の配列を返します。[`Array(String)`](/sql-reference/data-types/array) +抽出された部分文字列の配列を返します。[`Array(String)`](/sql-reference/data-types/array) **例** @@ -2533,11 +2531,11 @@ SELECT sparseGrams('alice', 3) ## sparseGramsHashes {#sparseGramsHashes} -導入: v25.5 +導入バージョン: v25.5 -長さが少なくとも `n` ある、指定された文字列のすべての部分文字列のハッシュ値を求めます。 -ここで、その部分文字列の境界にある (n-1)-gram のハッシュ値は、 -その部分文字列内部にある任意の (n-1)-gram のハッシュ値よりも常に大きくなります。 +与えられた文字列に対して、長さが少なくとも `n` であるすべての部分文字列のハッシュを求めます。 +このとき、その部分文字列の境界にある (n-1)-グラムのハッシュが、 +その部分文字列内部に含まれるいかなる (n-1)-グラムのハッシュよりも厳密に大きい、という条件を満たす必要があります。 ハッシュ関数として `CRC32` を使用します。 **構文** @@ -2549,12 +2547,12 @@ sparseGramsHashes(s[, min_ngram_length, max_ngram_length]) **引数** * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 省略可。抽出される n-gram の最小長さ。デフォルトかつ最小の値は 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 省略可。抽出される n-gram の最大長さ。デフォルト値は 100。`min_ngram_length` 以上でなければならない。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — 省略可能。抽出される n-gram の最小長さ。デフォルトかつ最小値は 3。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — 省略可能。抽出される n-gram の最大長さ。デフォルト値は 100。`min_ngram_length` 以上である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -選択された部分文字列の CRC32 ハッシュ値の配列を返す。[`Array(UInt32)`](/sql-reference/data-types/array) +選択された部分文字列の CRC32 ハッシュの配列を返します。[`Array(UInt32)`](/sql-reference/data-types/array) **例** @@ -2572,10 +2570,10 @@ SELECT sparseGramsHashes('alice', 3) ## sparseGramsHashesUTF8 {#sparseGramsHashesUTF8} -導入: v25.5 +導入バージョン: v25.5 -指定された UTF-8 文字列について、長さが少なくとも `n` のすべての部分文字列のハッシュを求めます。このとき、その部分文字列の両端にある (n-1)-gram のハッシュが、その部分文字列内に含まれる任意の (n-1)-gram のハッシュよりも厳密に大きい場合のみを対象とします。 -UTF-8 文字列を受け取り、UTF-8 の不正なシーケンスが含まれている場合は例外をスローします。 +UTF-8 文字列を入力として受け取り、そのすべての部分文字列のうち、長さが少なくとも `n` であり、かつその部分文字列の両端にある (n-1)-グラムのハッシュ値が、その部分文字列内部に含まれる任意の (n-1)-グラムのハッシュ値よりも厳密に大きいものについて、そのハッシュ値を求めます。 +UTF-8 文字列を前提としており、不正な UTF-8 シーケンスがあった場合には例外をスローします。 ハッシュ関数として `CRC32` を使用します。 **構文** @@ -2587,8 +2585,8 @@ sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length]) **引数** * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 省略可能。抽出される n-gram の長さの最小値。デフォルトかつ最小値は 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 省略可能。抽出される n-gram の長さの最大値。デフォルト値は 100。`min_ngram_length` 以上でなければなりません。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — オプション。抽出される n-gram の長さの最小値。デフォルトかつ最小値は 3。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — オプション。抽出される n-gram の長さの最大値。デフォルト値は 100。`min_ngram_length` 以上でなければなりません。[`UInt*`](/sql-reference/data-types/int-uint) **戻り値** @@ -2612,8 +2610,8 @@ SELECT sparseGramsHashesUTF8('алиса', 3) 導入バージョン: v25.5 -与えられた UTF-8 文字列について、長さが少なくとも `n` であり、かつその部分文字列の両端にある (n-1)-gram のハッシュ値が、その部分文字列内に含まれるいずれの (n-1)-gram のハッシュ値よりも厳密に大きくなるような、すべての部分文字列を検出します。 -UTF-8 文字列を入力として受け取り、無効な UTF-8 シーケンスがあった場合は例外をスローします。 +指定された UTF-8 文字列について、長さが少なくとも `n` のすべての部分文字列を求めます。このとき、その部分文字列の両端にある (n-1)-gram のハッシュ値が、その部分文字列内部に存在するいかなる (n-1)-gram のハッシュ値よりも厳密に大きいものだけを対象とします。 +UTF-8 文字列を受け取り、無効な UTF-8 シーケンスが含まれている場合は例外を送出します。 ハッシュ関数として `CRC32` を使用します。 **構文** @@ -2625,12 +2623,12 @@ sparseGramsUTF8(s[, min_ngram_length, max_ngram_length]) **引数** * `s` — 入力文字列。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 省略可能。抽出される n-gram の最小長さ。既定かつ最小の値は 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 省略可能。抽出される n-gram の最大長さ。既定値は 100。`min_ngram_length` 以上である必要がある。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — 省略可能。抽出される ngram の長さの最小値。デフォルトかつ取り得る最小の値は 3 です。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — 省略可能。抽出される ngram の長さの最大値。デフォルト値は 100 です。`min_ngram_length` 以上である必要があります。[`UInt*`](/sql-reference/data-types/int-uint) -**戻り値** +**返される値** -選択された UTF-8 の部分文字列の配列を返す。[`Array(String)`](/sql-reference/data-types/array) +抽出された UTF-8 部分文字列の配列を返します。[`Array(String)`](/sql-reference/data-types/array) **例** @@ -2650,7 +2648,7 @@ SELECT sparseGramsUTF8('алиса', 3) 導入バージョン: v1.1 -文字列が指定された文字列で始まるかどうかを判定します。 +文字列が指定した文字列で始まるかどうかを判定します。 **構文** @@ -2660,8 +2658,8 @@ startsWith(s, prefix) **引数** -* `s` — チェック対象の文字列。[`String`](/sql-reference/data-types/string) -* `prefix` — `s` の先頭に存在するかをチェックするプレフィックス文字列。[`String`](/sql-reference/data-types/string) +* `s` — 判定対象の文字列。[`String`](/sql-reference/data-types/string) +* `prefix` — `s` がこのプレフィックスで始まるかどうかを確認するための文字列。[`String`](/sql-reference/data-types/string) **戻り値** @@ -2685,7 +2683,7 @@ SELECT startsWith('ClickHouse', 'Click'); 導入バージョン: v25.9 -文字列が指定された文字列で始まっているかを、大文字・小文字を区別せずに判定します。 +文字列が、大文字小文字を区別しない比較において、指定した文字列で始まるかどうかを判定します。 **構文** @@ -2696,11 +2694,11 @@ startsWithCaseInsensitive(s, prefix) **引数** * `s` — チェック対象の文字列。[`String`](/sql-reference/data-types/string) -* `prefix` — 大文字・小文字を区別せずにチェックするプレフィックス文字列。[`String`](/sql-reference/data-types/string) +* `prefix` — 大文字小文字を区別せずに判定するプレフィックス文字列。[`String`](/sql-reference/data-types/string) **戻り値** -`s` が大文字・小文字を区別せずに `prefix` で始まる場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +`1` を返します。`s` が大文字小文字を区別せずに比較したときに `prefix` で始まる場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -2720,9 +2718,9 @@ SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK'); 導入バージョン: v25.9 -文字列が、指定した大文字小文字を区別しないプレフィックスで始まるかどうかをチェックします。 -文字列には、有効な UTF-8 でエンコードされたテキストのみが含まれていることを前提とします。 -この前提に反している場合でも、例外はスローされず、結果は未定義です。 +文字列が、指定されたプレフィックスで始まっているかを大文字小文字を区別せずに確認します。 +文字列が有効な UTF-8 でエンコードされたテキストであることを前提とします。 +この前提が満たされない場合、例外はスローされず、結果は未定義となります。 **構文** @@ -2733,11 +2731,11 @@ startsWithCaseInsensitiveUTF8(s, prefix) **引数** * `s` — 判定対象の文字列。[`String`](/sql-reference/data-types/string) -* `prefix` — 大文字小文字を区別せずに判定するプレフィックス文字列。[`String`](/sql-reference/data-types/string) +* `prefix` — 大文字小文字を区別せずに先頭一致を判定するプレフィックス文字列。[`String`](/sql-reference/data-types/string) **戻り値** -`s` が大文字小文字を区別せずに `prefix` で始まる場合は `1` を返し、そうでない場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +` s` が大文字小文字を区別せずに `prefix` で始まる場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -2757,9 +2755,9 @@ SELECT startsWithCaseInsensitiveUTF8('приставка', 'при') 導入バージョン: v23.8 -文字列が指定された接頭辞で始まるかどうかをチェックします。 -文字列が有効な UTF-8 でエンコードされたテキストであると仮定します。 -この前提が満たされない場合でも、例外はスローされず、結果は未定義となります。 +文字列が指定されたプレフィックスで始まるかをチェックします。 +文字列が有効な UTF-8 でエンコードされたテキストであることを前提とします。 +この前提が満たされない場合でも、例外はスローされず、結果は未定義です。 **構文** @@ -2769,12 +2767,12 @@ startsWithUTF8(s, prefix) **引数** -* `s` — 判定対象の文字列。[`String`](/sql-reference/data-types/string) -* `prefix` — 先頭一致を確認するためのプレフィックス。[`String`](/sql-reference/data-types/string) +* `s` — チェックする文字列。[`String`](/sql-reference/data-types/string) +* `prefix` — 先頭にあるかどうかを判定するプレフィックス。[`String`](/sql-reference/data-types/string) **返される値** -`s` が `prefix` で始まる場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) +`s` が `prefix` で始まる場合は `1` を返し、それ以外の場合は `0` を返します。[`UInt8`](/sql-reference/data-types/int-uint) **例** @@ -2794,7 +2792,7 @@ SELECT startsWithUTF8('приставка', 'при') 導入バージョン: v25.6 -文字列内のバイト分布に対する Shannon エントロピーを計算します。 +文字列内のバイト分布のシャノンのエントロピーを計算します。 **構文** @@ -2806,9 +2804,9 @@ stringBytesEntropy(s) * `s` — 解析対象の文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返り値** -文字列内のバイト分布のシャノンエントロピーを返します。[`Float64`](/sql-reference/data-types/float) +文字列内のバイト分布に対するシャノンのエントロピーを返します。[`Float64`](/sql-reference/data-types/float) **例** @@ -2826,9 +2824,9 @@ SELECT stringBytesEntropy('Hello, world!') ## stringBytesUniq {#stringBytesUniq} -導入バージョン: v25.6 +導入: v25.6 -文字列内の重複しないバイトの個数を数えます。 +文字列内に含まれる異なるバイト数をカウントします。 **構文** @@ -2838,11 +2836,11 @@ stringBytesUniq(s) **引数** -* `s` — 解析対象の文字列。[`String`](/sql-reference/data-types/string) +* `s` — 解析する文字列。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -文字列内に含まれる異なるバイトの種類数を返します。[`UInt16`](/sql-reference/data-types/int-uint) +文字列中に含まれる異なるバイトの数を返します。[`UInt16`](/sql-reference/data-types/int-uint) **例** @@ -2862,7 +2860,7 @@ SELECT stringBytesUniq('Hello') 導入バージョン: v23.11 -2 つのバイト列間の [Jaccard 類似度](https://en.wikipedia.org/wiki/Jaccard_index) を計算します。 +2つのバイト列間の [Jaccard similarity index](https://en.wikipedia.org/wiki/Jaccard_index) を計算します。 **構文** @@ -2877,7 +2875,7 @@ stringJaccardIndex(s1, s2) **戻り値** -2 つの文字列間のジャカード類似度係数を返します。[`Float64`](/sql-reference/data-types/float) +2 つの文字列の Jaccard 類似度指数を返します。[`Float64`](/sql-reference/data-types/float) **例** @@ -2897,7 +2895,7 @@ SELECT stringJaccardIndex('clickhouse', 'mouse') 導入バージョン: v23.11 -[`stringJaccardIndex`](#stringJaccardIndex) と同様ですが、UTF-8 エンコードの文字列を対象とします。 +[`stringJaccardIndex`](#stringJaccardIndex) と同様ですが、UTF-8 エンコードされた文字列を対象とします。 **構文** @@ -2907,12 +2905,12 @@ stringJaccardIndexUTF8(s1, s2) **引数** -* `s1` — 1 番目の入力 UTF8 文字列。[`String`](/sql-reference/data-types/string) -* `s2` — 2 番目の入力 UTF8 文字列。[`String`](/sql-reference/data-types/string) +* `s1` — 1 番目の UTF8 入力文字列。[`String`](/sql-reference/data-types/string) +* `s2` — 2 番目の UTF8 入力文字列。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -2つの UTF8 文字列間の Jaccard 類似度インデックスを返します。[`Float64`](/sql-reference/data-types/float) +2 つの UTF8 文字列の Jaccard 類似度インデックスを返します。[`Float64`](/sql-reference/data-types/float) **例** @@ -2932,13 +2930,13 @@ SELECT stringJaccardIndexUTF8('我爱你', '我也爱你') 導入バージョン: v1.1 -文字列 `s` のうち、指定されたバイトインデックス `offset` から始まる部分文字列を返します。 -バイトのカウントは 1 から始まり、次のルールに従います: +文字列 `s` の、指定されたバイトインデックス `offset` の位置から始まる部分文字列を返します。 +バイトのカウントは次のロジックで 1 から始まります: * `offset` が `0` の場合、空文字列を返します。 -* `offset` が負の値の場合、部分文字列は先頭からではなく、文字列の末尾から `pos` 文字目を起点として始まります。 +* `offset` が負の場合、部分文字列は先頭からではなく、文字列の末尾から `pos` 文字分だけさかのぼった位置から始まります。 -省略可能な引数 `length` で、返される部分文字列が持つことのできる最大バイト数を指定します。 +省略可能な引数 `length` では、返される部分文字列が持つことのできる最大バイト数を指定します。 **構文** @@ -2950,17 +2948,17 @@ substring(s, offset[, length]) **引数** -* `s` — 部分文字列を取得する元となる文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) または [`Enum`](/sql-reference/data-types/enum) +* `s` — 部分文字列を取り出す対象の文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) または [`Enum`](/sql-reference/data-types/enum) * `offset` — `s` における部分文字列の開始位置。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `length` — 省略可能。部分文字列の最大バイト長。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `length` — 省略可能。部分文字列の最大長。[`(U)Int*`](/sql-reference/data-types/int-uint) **戻り値** -`offset` バイト目から開始し、`length` バイト分の `s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) +`offset` で指定された位置から `length` バイト分の `s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) **例** -**基本的な使用例** +**基本的な使い方** ```sql title=Query SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1) @@ -2976,7 +2974,7 @@ SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1) 導入バージョン: v23.7 -Spark や MySQL と同様に、文字列 `s` から、区切り文字 `delim` が `count` 回目に現れる位置より前の部分文字列を返します。 +Spark や MySQL と同様に、`s` から、デリミタ `delim` が `count` 回出現するより前の部分文字列を返します。 **構文** @@ -2989,12 +2987,12 @@ substringIndex(s, delim, count) **引数** * `s` — 部分文字列を抽出する元の文字列。[`String`](/sql-reference/data-types/string) -* `delim` — 文字列を分割するための区切り文字。[`String`](/sql-reference/data-types/string) -* `count` — 部分文字列を抽出する前に数える区切り文字の出現回数。`count` が正の値の場合、(左側から数えて)最後の区切り文字より左側のすべてが返されます。`count` が負の値の場合、(右側から数えて)最後の区切り文字より右側のすべてが返されます。[`UInt`](/sql-reference/data-types/int-uint) または [`Int`](/sql-reference/data-types/int-uint) +* `delim` — 分割に用いる区切り文字(列)。[`String`](/sql-reference/data-types/string) +* `count` — 部分文字列を抽出する前にカウントする区切り文字の出現回数。`count` が正の場合は(左から数えて)最後に現れる区切り文字より左側のすべてが返されます。`count` が負の場合は(右から数えて)最後に現れる区切り文字より右側のすべてが返されます。[`UInt`](/sql-reference/data-types/int-uint) または [`Int`](/sql-reference/data-types/int-uint) -**戻り値** +**返される値** -`delim` が `count` 回出現する位置より前の、`s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) +`delim` が `count` 回出現する位置より前の `s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3014,9 +3012,9 @@ SELECT substringIndex('www.clickhouse.com', '.', 2) 導入バージョン: v23.7 -Unicode コードポイント用に、区切り文字 `delim` が `count` 回出現するより前にある `s` の部分文字列を返します。 -文字列には、有効な UTF-8 でエンコードされたテキストが含まれていると仮定します。 -この前提が満たされない場合でも、例外はスローされず、結果は未定義です。 +区切り文字 `delim` が `count` 回出現するより前にある `s` の部分文字列を、Unicode コードポイント単位で返します。 +文字列が有効な UTF-8 でエンコードされたテキストであることを前提としています。 +この前提が満たされない場合でも例外はスローされず、結果は未定義です。 **構文** @@ -3026,15 +3024,15 @@ substringIndexUTF8(s, delim, count) **引数** -* `s` — 部分文字列を抽出する対象の文字列。[`String`](/sql-reference/data-types/string) +* `s` — 部分文字列を抽出する元の文字列。[`String`](/sql-reference/data-types/string) * `delim` — 分割に使用する区切り文字。[`String`](/sql-reference/data-types/string) -* `count` — 部分文字列を抽出する前にカウントする区切り文字の出現回数。`count` が正の場合、(左から数えて)最後の区切り文字より左側のすべてが返されます。`count` が負の場合、(右から数えて)最後の区切り文字より右側のすべてが返されます。[`UInt`](/sql-reference/data-types/int-uint) または [`Int`](/sql-reference/data-types/int-uint) +* `count` — 部分文字列を抽出する前に数える区切り文字の出現回数。`count` が正の場合は、(左から数えた)最後の区切り文字より左側のすべてが返されます。`count` が負の場合は、(右から数えた)最後の区切り文字より右側のすべてが返されます。[`UInt`](/sql-reference/data-types/int-uint) または [`Int`](/sql-reference/data-types/int-uint) -**戻り値** +**返される値** -`delim` が `count` 回出現するまでの `s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) +`delim` が `count` 回出現する手前までの、`s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) -**使用例** +**例** **UTF-8 の例** @@ -3050,16 +3048,16 @@ www.straßen-in-europa 導入バージョン: v1.1 -Unicode コードポイントに対して、指定されたバイトインデックス `offset` から始まる文字列 `s` の部分文字列を返します。 +Unicode コードポイントに対して、文字列 `s` の指定されたバイトインデックス `offset` から始まる部分文字列を返します。 バイト数のカウントは、次のロジックで `1` から始まります。 * `offset` が `0` の場合、空文字列が返されます。 -* `offset` が負の値の場合、部分文字列は文字列の先頭ではなく、末尾から `pos` 文字分さかのぼった位置から始まります。 +* `offset` が負の値の場合、部分文字列は先頭からではなく、文字列の末尾から数えて `pos` 文字目から始まります。 -省略可能な引数 `length` は、返される部分文字列が持つことのできる最大バイト数を指定します。 +オプション引数 `length` は、返される部分文字列が持つことができる最大バイト数を指定します。 :::note -この関数は、文字列に有効な UTF-8 でエンコードされたテキストが含まれていることを前提とします。 +この関数は、文字列が有効な UTF-8 エンコードのテキストであることを前提とします。 この前提が満たされない場合でも、例外はスローされず、結果は未定義です。 ::: @@ -3073,11 +3071,11 @@ substringUTF8(s, offset[, length]) * `s` — 部分文字列を取得する対象の文字列。[`String`](/sql-reference/data-types/string) または [`FixedString`](/sql-reference/data-types/fixedstring) または [`Enum`](/sql-reference/data-types/enum) * `offset` — `s` における部分文字列の開始位置。[`Int`](/sql-reference/data-types/int-uint) または [`UInt`](/sql-reference/data-types/int-uint) -* `length` — 部分文字列の最大長(バイト数)。省略可能。[`Int`](/sql-reference/data-types/int-uint) または [`UInt`](/sql-reference/data-types/int-uint) +* `length` — 部分文字列の最大長。省略可能。[`Int`](/sql-reference/data-types/int-uint) または [`UInt`](/sql-reference/data-types/int-uint) -**戻り値** +**返り値** -インデックス `offset` から開始し、`length` で指定されたバイト数の `s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) +`offset` を開始位置として、長さ `length` バイトの `s` の部分文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3095,8 +3093,8 @@ Täglich grüßt das Murmeltier. grüßt das Murmeltier. grüßt 導入バージョン: v20.1 -文字列中の無効な UTF-8 文字を、置換文字 `�` (U+FFFD) に置き換えることで、有効な UTF-8 文字列に変換します。 -連続する複数の無効な文字が検出された場合、それらは 1 つの置換文字にまとめられます。 +文字列を、有効な UTF-8 エンコーディングに変換します。この際、文字列中の無効な UTF-8 文字は、置換文字 `�` (U+FFFD) に置き換えられます。 +複数の無効な文字が連続している場合は、1 つの置換文字にまとめられます。 **構文** @@ -3131,7 +3129,7 @@ c 導入バージョン: v20.1 -文字列の先頭と末尾から、指定した文字を削除します。 +文字列の先頭と末尾から指定した文字を削除します。 デフォルトでは、一般的な ASCII の空白文字を削除します。 **構文** @@ -3144,12 +3142,12 @@ trimBoth(s[, trim_characters]) **引数** -* `s` — トリムする文字列。[`String`](/sql-reference/data-types/string) -* `trim_characters` — 省略可能。トリムする文字の集合。指定されていない場合は、一般的な空白文字が削除されます。[`String`](/sql-reference/data-types/string) +* `s` — トリム対象の文字列。[`String`](/sql-reference/data-types/string) +* `trim_characters` — 省略可能。トリムする対象の文字。指定しない場合、一般的な空白文字が削除されます。[`String`](/sql-reference/data-types/string) -**戻り値** +**返される値** -指定された文字が両端からトリムされた文字列を返します。[`String`](/sql-reference/data-types/string) +両端から指定された文字が取り除かれた文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3169,8 +3167,8 @@ SELECT trimBoth('$$ClickHouse$$', '$') 導入バージョン: v20.1 -文字列の先頭から、指定された文字を除去します。 -デフォルトでは、一般的な ASCII の空白文字を除去します。 +文字列の先頭から指定された文字を取り除きます。 +デフォルトでは、一般的な空白(ASCII)文字を取り除きます。 **構文** @@ -3178,16 +3176,16 @@ SELECT trimBoth('$$ClickHouse$$', '$') trimLeft(input[, trim_characters]) ``` -**エイリアス**: `ltrim` +**別名**: `ltrim` **引数** -* `input` — トリミングする文字列。[`String`](/sql-reference/data-types/string) -* `trim_characters` — 省略可能。トリミングする文字。指定されていない場合、一般的な空白文字が削除されます。[`String`](/sql-reference/data-types/string) +* `input` — 左側をトリムする対象の文字列。[`String`](/sql-reference/data-types/string) +* `trim_characters` — 省略可能。トリムする文字の集合。指定しない場合は、一般的な空白文字が削除されます。[`String`](/sql-reference/data-types/string) **戻り値** -指定された文字を左側から取り除いた文字列を返します。[`String`](/sql-reference/data-types/string) +左側から指定された文字をトリムした文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3205,10 +3203,10 @@ SELECT trimLeft('ClickHouse', 'Click'); ## trimRight {#trimRight} -導入: v20.1 +導入バージョン: v20.1 -文字列の末尾から、指定した文字を削除します。 -デフォルトでは、一般的な空白文字(ASCII)を削除します。 +文字列の末尾から指定された文字を削除します。 +デフォルトでは、一般的な ASCII の空白文字を削除します。 **構文** @@ -3220,12 +3218,12 @@ trimRight(s[, trim_characters]) **引数** -* `s` — 末尾をトリミングする対象の文字列。[`String`](/sql-reference/data-types/string) -* `trim_characters` — 省略可能なトリミング対象の文字。指定しない場合は、一般的な空白文字が末尾から削除されます。[`String`](/sql-reference/data-types/string) +* `s` — 末尾の文字をトリムする対象の文字列。[`String`](/sql-reference/data-types/string) +* `trim_characters` — 任意で指定するトリム対象の文字。指定しない場合は、一般的な空白文字が削除されます。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -指定された文字を右側から取り除いた文字列を返します。[`String`](/sql-reference/data-types/string) +指定した文字を末尾(右側)から取り除いた文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3245,7 +3243,7 @@ SELECT trimRight('ClickHouse','House'); 導入バージョン: v25.6 -文字列を受け取り、[Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) エンコード方式に従ってデコードします。 +文字列を引数に取り、[Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) エンコーディング方式でデコードします。 **構文** @@ -3255,7 +3253,7 @@ tryBase32Decode(encoded) **引数** -* `encoded` — デコードする文字列カラムまたは定数。文字列が有効な Base32 でエンコードされたものでない場合、エラー時には空文字列を返します。[`String`](/sql-reference/data-types/string) +* `encoded` — デコード対象の文字列カラムまたは定数。文字列が有効な Base32 形式でエンコードされていない場合、エラーが発生したときは空文字列を返します。[`String`](/sql-reference/data-types/string) **戻り値** @@ -3271,7 +3269,7 @@ SELECT tryBase32Decode('IVXGG33EMVSA===='); ```response title=Response ┌─tryBase32Decode('IVXGG33EMVSA====')─┐ -│ エンコード済み │ +│ Encoded │ └─────────────────────────────────────┘ ``` @@ -3279,7 +3277,7 @@ SELECT tryBase32Decode('IVXGG33EMVSA===='); 導入バージョン: v22.10 -[`base58Decode`](#base58Decode) と同様ですが、エラーが発生した場合は空の文字列を返します。 +[`base58Decode`](#base58Decode) と同様ですが、エラーが発生した場合は空文字列を返します。 **構文** @@ -3289,11 +3287,11 @@ tryBase58Decode(encoded) **引数** -* `encoded` — 文字列カラムまたは定数。文字列が有効な Base58 エンコード文字列でない場合、エラー時には空文字列を返します。[`String`](/sql-reference/data-types/string) +* `encoded` — 文字列カラムまたは定数。文字列が有効な Base58 エンコードではない場合、エラー時には空文字列を返します。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** -引数をデコードした値を含む文字列を返します。[`String`](/sql-reference/data-types/string) +引数のデコード済みの値を含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3305,7 +3303,7 @@ SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_i ```response title=Response ┌─res─────┬─res_invalid─┐ -│ エンコード済み │ │ +│ Encoded │ │ └─────────┴─────────────┘ ``` @@ -3313,7 +3311,7 @@ SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_i 導入バージョン: v18.16 -[`base64Decode`](#base64Decode) と同様ですが、エラー時には空文字列を返します。 +[`base64Decode`](#base64Decode) と同様ですが、エラーが発生した場合は空文字列を返します。 **構文** @@ -3323,9 +3321,9 @@ tryBase64Decode(encoded) **引数** -* `encoded` — デコードする文字列カラムまたは定数。文字列が有効な Base64 文字列でない場合、エラーの場合は空文字列を返します。[`String`](/sql-reference/data-types/string) +* `encoded` — デコードする文字列カラムまたは定数。有効な Base64 形式でエンコードされていない文字列の場合、エラー時には空文字列を返します。[`String`](/sql-reference/data-types/string) -**返される値** +**戻り値** 引数をデコードした値を含む文字列を返します。[`String`](/sql-reference/data-types/string) @@ -3345,7 +3343,7 @@ SELECT tryBase64Decode('Y2xpY2tob3VzZQ==') ## tryBase64URLDecode {#tryBase64URLDecode} -導入されたバージョン: v18.16 +導入バージョン: v18.16 [`base64URLDecode`](#base64URLDecode) と同様ですが、エラーが発生した場合は空文字列を返します。 @@ -3357,11 +3355,11 @@ tryBase64URLDecode(encoded) **引数** -* `encoded` — デコードする文字列カラムまたは定数。文字列が有効な Base64 文字列でない場合、エラー時には空文字列を返します。[`String`](/sql-reference/data-types/string) +* `encoded` — デコード対象の文字列カラムまたは定数。文字列が有効な Base64 でエンコードされたものでない場合、エラー時には空文字列を返します。[`String`](/sql-reference/data-types/string) **戻り値** -引数をデコードした値を含む文字列を返します。[`String`](/sql-reference/data-types/string) +引数のデコードされた値を含む文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3381,8 +3379,8 @@ SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') 導入バージョン: v24.1 -[Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA) メカニズムに従い、ドメイン名の Unicode (UTF-8) 表現(ToUnicode アルゴリズム)を返します。 -エラーが発生した場合は、例外をスローせず空文字列を返します。 +[Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA) 方式に従って、ドメイン名の Unicode (UTF-8) 表現(ToUnicode アルゴリズム)を返します。 +エラーが発生した場合は、例外をスローする代わりに空文字列を返します。 **構文** @@ -3396,7 +3394,7 @@ tryIdnaEncode(s) **戻り値** -入力値の IDNA 方式に基づいて、入力文字列の ASCII 表現を返します。入力値が無効な場合は空文字列を返します。[`String`](/sql-reference/data-types/string) +入力値の IDNA メカニズムに基づいて変換した、入力文字列の ASCII 表現を返します。入力が不正な場合は空文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3416,7 +3414,7 @@ SELECT tryIdnaEncode('straße.münchen.de') 導入バージョン: v24.1 -`punycodeDecode` と似ていますが、有効な Punycode でエンコードされた文字列が渡されなかった場合は空文字列を返します。 +`punycodeDecode` と同様ですが、有効な Punycode 文字列が指定されなかった場合は空文字列を返します。 **構文** @@ -3430,7 +3428,7 @@ tryPunycodeDecode(s) **戻り値** -入力値のプレーンテキストを返します。入力が無効な場合は空文字列を返します。[`String`](/sql-reference/data-types/string) +入力値に対応するプレーンテキストを返します。入力が無効な場合は空文字列を返します。[`String`](/sql-reference/data-types/string) **例** @@ -3448,7 +3446,7 @@ SELECT tryPunycodeDecode('Mnchen-3ya') ## upper {#upper} -導入バージョン: v1.1 +導入: v1.1 文字列中の ASCII ラテン文字を大文字に変換します。 @@ -3464,7 +3462,7 @@ upper(s) * `s` — 大文字に変換する文字列。[`String`](/sql-reference/data-types/string) -**返り値** +**戻り値** `s` を大文字に変換した文字列を返します。[`String`](/sql-reference/data-types/string) @@ -3487,11 +3485,11 @@ SELECT upper('clickhouse') 導入バージョン: v1.1 文字列が有効な UTF-8 でエンコードされたテキストであると仮定して、その文字列を大文字に変換します。 -この仮定が満たされない場合でも、例外はスローされず、結果は未定義です。 +この前提が満たされない場合でも、例外はスローされず、結果は未定義です。 :::note -この関数は言語を自動判別しません。たとえばトルコ語では結果が完全には正しくない場合があります(i/İ と i/I など)。 -コードポイントの大文字と小文字で UTF-8 のバイト列の長さが異なる場合(`ẞ` と `ß` など)、そのコードポイントに対する結果が正しくない可能性があります。 +この関数は言語を判別しません。例えばトルコ語では結果が完全には正しくない場合があります(i/İ と i/I など)。 +あるコードポイントについて、大文字と小文字で UTF-8 バイト列の長さが異なる場合(`ẞ` と `ß` など)、そのコードポイントに対する結果は正しくない可能性があります。 ::: **構文** @@ -3506,7 +3504,7 @@ upperUTF8(s) **戻り値** -`String` 型の値。[`String`](/sql-reference/data-types/string) +String 型の値。[`String`](/sql-reference/data-types/string) **例** diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md index 2517ef6f5f1..410e650428a 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md @@ -1,61 +1,64 @@ --- -description: 'CHECK TABLE に関するドキュメント' +description: 'Check Table のドキュメント' sidebar_label: 'CHECK TABLE' sidebar_position: 41 slug: /sql-reference/statements/check-table -title: 'CHECK TABLE ステートメント' +title: 'CHECK TABLE 文' doc_type: 'reference' --- -ClickHouse における `CHECK TABLE` クエリは、特定のテーブルまたはそのパーティションに対して検証を実行するために使用されます。チェックサムやその他の内部データ構造を検証することで、データの整合性を確認します。 +ClickHouse における `CHECK TABLE` クエリは、特定のテーブルまたはそのパーティションに対して整合性チェックを実行するために使用されます。チェックサムおよびその他の内部データ構造を検証することで、データの整合性を確認します。 -特に、サーバー上に保存されている期待されるファイルサイズと実際のファイルサイズを比較します。ファイルサイズが保存されている値と一致しない場合、データが破損していることを意味します。これは、例えばクエリ実行中のシステムクラッシュなどが原因で発生することがあります。 +具体的には、実際のファイルサイズと、サーバー上に保存されている期待される値を比較します。ファイルサイズが保存されている値と一致しない場合、そのデータは破損していることを意味します。これは、たとえばクエリ実行中のシステムクラッシュなどによって発生する可能性があります。 :::warning -`CHECK TABLE` クエリはテーブル内のすべてのデータを読み取り、多くのリソースを占有する可能性があるため、リソース負荷の高い処理となる場合があります。 -このクエリを実行する前に、パフォーマンスやリソース使用量への影響を十分に考慮してください。 -このクエリはシステムのパフォーマンスを向上させるものではなく、何をしているか確信が持てない場合には実行すべきではありません。 +`CHECK TABLE` クエリはテーブル内のすべてのデータを読み取り、一定のリソースを占有する可能性があるため、リソース負荷の高い処理となり得ます。 +このクエリを実行する前に、パフォーマンスおよびリソース使用への影響を十分に考慮してください。 +このクエリによってシステムのパフォーマンスが向上することはないため、自分が行っていることに確信が持てない場合は実行すべきではありません。 ::: + + ## 構文 {#syntax} -クエリの基本的な構文は次のとおりです。 +クエリの基本的な構文は以下のとおりです。 ```sql CHECK TABLE table_name [PARTITION partition_expression | PART part_name] [FORMAT format] [SETTINGS check_query_single_value_result = (0|1) [, other_settings]] ``` * `table_name`: チェック対象のテーブル名を指定します。 -* `partition_expression`: (任意)テーブル内の特定のパーティションのみをチェックしたい場合、この式を使ってパーティションを指定します。 -* `part_name`: (任意)テーブル内の特定のパーツのみをチェックしたい場合、パーツ名を指定する文字列リテラルを追加します。 +* `partition_expression`: (任意)テーブル内の特定のパーティションのみをチェックしたい場合、この式でパーティションを指定できます。 +* `part_name`: (任意)テーブル内の特定のパーツのみをチェックしたい場合、文字列リテラルでパーツ名を指定できます。 * `FORMAT format`: (任意)結果の出力フォーマットを指定できます。 -* `SETTINGS`: (任意)追加の設定を行えます。 +* `SETTINGS`: (任意)追加の設定を指定できます。 * **`check_query_single_value_result`**: (任意)詳細な結果(`0`)と要約結果(`1`)を切り替えるための設定です。 - * その他の設定も適用できます。結果の順序が決定的である必要がない場合、クエリを高速化するために max_threads を 1 より大きい値に設定できます。 + * 他の設定も適用できます。結果の順序が決定的である必要がない場合は、クエリを高速化するために `max_threads` を 1 より大きい値に設定できます。 -クエリのレスポンスは、`check_query_single_value_result` 設定の値に依存します。 -`check_query_single_value_result = 1` の場合、単一行のみを持つ `result` 列だけが返されます。この行の値は、整合性チェックに合格した場合は `1`、データが破損している場合は `0` です。 +クエリ結果は、`check_query_single_value_result` 設定の値に依存します。 +`check_query_single_value_result = 1` の場合は、1 行のみを含む `result` カラムだけが返されます。この行の値は、整合性チェックに合格した場合は `1`、データが破損している場合は `0` です。 -`check_query_single_value_result = 0` の場合、クエリは以下の列を返します。 +`check_query_single_value_result = 0` の場合、クエリは次のカラムを返します。 -* `part_path`: データパーツのパスまたはファイル名を示します。 +* `part_path`: データパーツまたはファイル名へのパスを示します。 * `is_passed`: このパーツのチェックが成功した場合は 1、そうでない場合は 0 を返します。 * `message`: エラーや成功メッセージなど、チェックに関連する追加メッセージです。 -`CHECK TABLE` クエリは、次のテーブルエンジンをサポートします。 +`CHECK TABLE` クエリは次のテーブルエンジンをサポートします。 * [Log](../../engines/table-engines/log-family/log.md) * [TinyLog](../../engines/table-engines/log-family/tinylog.md) * [StripeLog](../../engines/table-engines/log-family/stripelog.md) * [MergeTree family](../../engines/table-engines/mergetree-family/mergetree.md) -これら以外のテーブルエンジンのテーブルに対して実行した場合は、`NOT_IMPLEMENTED` 例外が発生します。 +その他のテーブルエンジンを使用するテーブルに対して実行すると、`NOT_IMPLEMENTED` 例外が発生します。 `*Log` ファミリーのエンジンは、障害発生時の自動データ復旧を提供しません。`CHECK TABLE` クエリを使用して、データ損失をタイムリーに検知してください。 -## 例 {#examples} -デフォルトでは、`CHECK TABLE` クエリはテーブル全体の総合的なチェック結果を表示します。 +## Examples {#examples} + +デフォルトでは、`CHECK TABLE` クエリはテーブル全体のチェック結果を表示します。 ```sql CHECK TABLE test_table; @@ -67,9 +70,9 @@ CHECK TABLE test_table; └────────┘ ``` -各データパーツごとのチェックステータスを確認したい場合は、`check_query_single_value_result` 設定を使用できます。 +各データパーツごとのチェック状況を確認したい場合は、`check_query_single_value_result` 設定を使用できます。 -また、テーブルの特定パーティションをチェックするには、`PARTITION` キーワードを使用できます。 +また、テーブルの特定のパーティションのみをチェックするには、`PARTITION` キーワードを使用できます。 ```sql CHECK TABLE t0 PARTITION ID '201003' @@ -77,7 +80,7 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 ``` -出力: +出力例: ```text ┌─part_path────┬─is_passed─┬─message─┐ @@ -86,7 +89,7 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴─────────┘ ``` -同様に、`PART` キーワードを使用してテーブルの特定の部分だけを確認することもできます。 +同様に、`PART` キーワードを使用すると、テーブル内の特定のパートを確認できます。 ```sql CHECK TABLE t0 PART '201003_7_7_0' @@ -94,7 +97,7 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 ``` -出力: +出力結果: ```text ┌─part_path────┬─is_passed─┬─message─┐ @@ -102,20 +105,20 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴─────────┘ ``` -パーツが存在しない場合、クエリはエラーを返します。 +なお、パートが存在しない場合は、クエリはエラーを返します。 ```sql CHECK TABLE t0 PART '201003_111_222_0' ``` ```text -DB::Exception: テーブル 'default.t0' に確認対象のデータパート '201003_111_222_0' が存在しません。(NO_SUCH_DATA_PART) +DB::Exception: No such data part '201003_111_222_0' to check in table 'default.t0'. (NO_SUCH_DATA_PART) ``` ### 「Corrupted(破損)」という結果を受け取った場合 {#receiving-a-corrupted-result} :::warning -免責事項: ここで説明する手順(データディレクトリ内のファイルを手動で操作・削除することを含みます)は、実験環境または開発環境でのみ使用してください。本番サーバーでは絶対に実行しないでください。データ損失やその他の予期しない結果を招くおそれがあります。 +免責事項: ここで説明している手順(データディレクトリ内のファイルを手動で操作したり、直接削除したりすることを含む)は、実験または開発環境のみを対象としています。これを本番サーバーで実行しないでください。データ損失やその他の予期しない結果を招く可能性があります。 ::: 既存のチェックサムファイルを削除します: @@ -130,7 +133,7 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 -出力: +Output: ```text ┌─part_path────┬─is_passed─┬─message──────────────────────────────────┐ @@ -139,9 +142,9 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴──────────────────────────────────────────┘ ```` -checksums.txt ファイルが存在しない場合は、復元できます。特定のパーティションに対して `CHECK TABLE` コマンドを実行する際に再計算および再書き込みされ、ステータスは引き続き 'is_passed = 1' として報告されます。 +checksums.txt ファイルが存在しない場合でも、復元できます。特定のパーティションに対して `CHECK TABLE` コマンドを実行する際に再計算されて書き込まれ、そのステータスは引き続き 'is_passed = 1' として報告されます。 -`CHECK ALL TABLES` クエリを使用すると、既存の `(Replicated)MergeTree` テーブルをすべて一度にチェックできます。 +`CHECK ALL TABLES` クエリを使用すると、既存のすべての `(Replicated)MergeTree` テーブルを一度にチェックできます。 ```sql CHECK ALL TABLES @@ -149,6 +152,7 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 ``` + ```text ┌─database─┬─table────┬─part_path───┬─is_passed─┬─message─┐ │ default │ t2 │ all_1_95_3 │ 1 │ │ @@ -164,11 +168,12 @@ SETTINGS check_query_single_value_result = 0 └──────────┴──────────┴─────────────┴───────────┴─────────┘ ``` -## データが破損している場合 {#if-the-data-is-corrupted} -テーブルが破損している場合は、破損していないデータを別のテーブルにコピーできます。そのためには、次の手順を実行します。 +## If the Data Is Corrupted {#if-the-data-is-corrupted} + +テーブルが破損している場合、破損していないデータを別のテーブルにコピーできます。次の手順を実行します。 -1. 破損したテーブルと同じ構造を持つ新しいテーブルを作成します。これには、クエリ `CREATE TABLE AS ` を実行します。 -2. 次のクエリを単一スレッドで処理するために、`max_threads` の値を1に設定します。これには、クエリ `SET max_threads = 1` を実行します。 -3. クエリ `INSERT INTO SELECT * FROM ` を実行します。このクエリは、破損したテーブルから破損していないデータを別のテーブルにコピーします。破損部分より前のデータのみがコピーされます。 +1. 破損したテーブルと同じ構造を持つ新しいテーブルを作成します。そのためには、クエリ `CREATE TABLE AS ` を実行します。 +2. 次のクエリを単一スレッドで処理するために、`max_threads` の値を 1 に設定します。そのためには、クエリ `SET max_threads = 1` を実行します。 +3. クエリ `INSERT INTO SELECT * FROM ` を実行します。このクエリは、破損していないデータを破損したテーブルから別のテーブルにコピーします。破損している部分より前のデータのみがコピーされます。 4. `max_threads` の値をリセットするために、`clickhouse-client` を再起動します。 diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md index a8caaa14aef..035d505c194 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md @@ -1,5 +1,5 @@ --- -description: 'Azure Blob Storage 内のファイルの選択/挿入を行うためのテーブル形式のインターフェイスを提供します。s3 テーブル関数と同様です。' +description: 'Azure Blob Storage 内のファイルを選択および挿入するためのテーブル関数のようなインターフェースを提供します。s3 関数と同様です。' keywords: ['azure blob storage'] sidebar_label: 'azureBlobStorage' sidebar_position: 10 @@ -11,9 +11,12 @@ doc_type: 'reference' import ExperimentalBadge from '@theme/badges/ExperimentalBadge'; import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; + # azureBlobStorage テーブル関数 {#azureblobstorage-table-function} -[Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 内のファイルに対して SELECT および INSERT を行うための、テーブルのようなインターフェイスを提供します。このテーブル関数は、[s3 関数](../../sql-reference/table-functions/s3.md) と類似しています。 +[Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 内のファイルに対して、SELECT/INSERT クエリを実行するテーブル形式のインターフェイスを提供します。このテーブル関数は [s3 関数](../../sql-reference/table-functions/s3.md) と類似しています。 + + ## 構文 {#syntax} @@ -21,29 +24,34 @@ import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; azureBlobStorage(- connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression, structure, partition_strategy, partition_columns_in_data_file, extra_credentials(client_id=, tenant_id=)]) ``` -## 引数 {#arguments} + +## Arguments {#arguments} | Argument | Description | |---------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `connection_string`\| `storage_account_url` | `connection_string` にはアカウント名とキーが含まれます([Create connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account) を参照)。または、ここにストレージ アカウントの URL を指定し、アカウント名とアカウントキーを個別のパラメータとして指定することもできます(`account_name` および `account_key` パラメータを参照)。 | +| `connection_string`\| `storage_account_url` | `connection_string` にはアカウント名とキーが含まれます([接続文字列を作成](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account) を参照)。または、ここにストレージアカウント URL を指定し、アカウント名とアカウントキーを別々のパラメータとして指定することもできます(パラメータ `account_name` および `account_key` を参照)。 | | `container_name` | コンテナー名 | -| `blobpath` | ファイルパス。読み取り専用モードでは、次のワイルドカードが使用できます: `*`, `**`, `?`, `{abc,def}`, `{N..M}`。ここで `N`, `M` は数値、`'abc'`, `'def'` は文字列です。 | +| `blobpath` | ファイルパス。読み取り専用モードで次のワイルドカードをサポートします: `*`, `**`, `?`, `{abc,def}`, `{N..M}`。ここで `N`, `M` は数値、`'abc'`, `'def'` は文字列です。 | | `account_name` | `storage_account_url` を使用する場合、アカウント名をここで指定できます。 | | `account_key` | `storage_account_url` を使用する場合、アカウントキーをここで指定できます。 | | `format` | ファイルの [format](/sql-reference/formats)。 | -| `compression` | サポートされる値: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`。デフォルトでは、ファイル拡張子から圧縮形式を自動検出します(`auto` を指定した場合と同じ動作)。 | +| `compression` | サポートされる値: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`。デフォルトでは、ファイル拡張子から圧縮形式を自動検出します(`auto` を指定した場合と同じ)。 | | `structure` | テーブルの構造。形式: `'column1_name column1_type, column2_name column2_type, ...'`。 | -| `partition_strategy` | 省略可能なパラメータです。サポートされる値: `WILDCARD` または `HIVE`。`WILDCARD` では、パス内に `{_partition_id}` を含める必要があり、これはパーティションキーで置き換えられます。`HIVE` ではワイルドカードは使用できず、パスはテーブルのルートであるとみなされます。この場合、ファイル名として Snowflake ID、拡張子としてファイルフォーマットを用いた Hive 形式のパーティションディレクトリが生成されます。デフォルトは `WILDCARD` です。 | -| `partition_columns_in_data_file` | 省略可能なパラメータです。`HIVE` パーティション戦略でのみ使用されます。パーティション列がデータファイル内に書き込まれているかどうかを ClickHouse に指示します。デフォルトは `false` です。 | -| `extra_credentials` | 認証には `client_id` と `tenant_id` を使用します。`extra_credentials` が指定されている場合、`account_name` および `account_key` よりも優先して使用されます。 +| `partition_strategy` | オプションのパラメータです。サポートされる値: `WILDCARD` または `HIVE`。`WILDCARD` ではパス内に `{_partition_id}` が必要で、これがパーティションキーに置き換えられます。`HIVE` ではワイルドカードは使用できず、パスはテーブルのルートであるとみなし、ファイル名に Snowflake ID、拡張子にファイルフォーマットを用いた Hive 形式のパーティションディレクトリを生成します。デフォルトは `WILDCARD` です。 | +| `partition_columns_in_data_file` | オプションのパラメータです。`HIVE` パーティション戦略でのみ使用されます。ClickHouse が、パーティションカラムがデータファイル内に書き込まれていることを想定すべきかどうかを指定します。デフォルトは `false` です。 | +| `extra_credentials` | 認証には `client_id` と `tenant_id` を使用してください。`extra_credentials` が指定されている場合は、`account_name` および `account_key` よりも優先されます。 | + + ## 返される値 {#returned_value} -指定されたファイル内のデータを読み取り/書き込みするための、指定された構造を持つテーブル。 +指定した構造を持ち、指定したファイル内のデータを読み書きするためのテーブル。 + + ## 例 {#examples} -[AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage) テーブルエンジンと同様に、ローカル環境での Azure Storage の開発には Azurite エミュレーターを使用できます。詳細は[こちら](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)を参照してください。以下では、Azurite がホスト名 `azurite1` で利用可能であると仮定します。 +[AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage) テーブルエンジンと同様に、ローカルの Azure Storage 開発環境向けに Azurite エミュレーターを使用できます。詳細は[こちら](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)を参照してください。以下では、Azurite がホスト名 `azurite1` で利用可能であると仮定します。 次の方法で Azure Blob Storage にデータを書き込みます: @@ -53,7 +61,7 @@ INSERT INTO TABLE FUNCTION azureBlobStorage('http://azurite1:10000/devstoreaccou 'CSV', 'auto', 'column1 UInt32, column2 UInt32, column3 UInt32') PARTITION BY column3 VALUES (1, 2, 3), (3, 2, 1), (78, 43, 3); ``` -その後、次のようにして読み出せます +その後、次のようにして読み込めます。 ```sql SELECT * FROM azureBlobStorage('http://azurite1:10000/devstoreaccount1', @@ -62,7 +70,7 @@ SELECT * FROM azureBlobStorage('http://azurite1:10000/devstoreaccount1', ``` ```response -┌───列1─┬────列2─┬───列3─┐ +┌───column1─┬────column2─┬───column3─┐ │ 3 │ 2 │ 1 │ └───────────┴────────────┴───────────┘ ``` @@ -80,22 +88,25 @@ SELECT count(*) FROM azureBlobStorage('DefaultEndpointsProtocol=https;AccountNam └─────────┘ ``` + ## 仮想カラム {#virtual-columns} -- `_path` — ファイルへのパス。型: `LowCardinality(String)`。 -- `_file` — ファイル名。型: `LowCardinality(String)`。 -- `_size` — ファイルサイズ(バイト単位)。型: `Nullable(UInt64)`。ファイルサイズが不明な場合、値は `NULL` です。 -- `_time` — ファイルの最終更新時刻。型: `Nullable(DateTime)`。時刻が不明な場合、値は `NULL` です。 +- `_path` — ファイルへのパス。型は `LowCardinality(String)`。 +- `_file` — ファイル名。型は `LowCardinality(String)`。 +- `_size` — ファイルサイズ(バイト単位)。型は `Nullable(UInt64)`。ファイルサイズが不明な場合、値は `NULL` です。 +- `_time` — ファイルの最終更新時刻。型は `Nullable(DateTime)`。時刻が不明な場合、値は `NULL` です。 + + -## パーティション分割での書き込み {#partitioned-write} +## パーティション書き込み {#partitioned-write} ### パーティション戦略 {#partition-strategy} -INSERT クエリでのみサポートされます。 +INSERT クエリでのみサポートされています。 `WILDCARD`(デフォルト):ファイルパス内の `{_partition_id}` ワイルドカードを実際のパーティションキーで置き換えます。 -`HIVE` は、読み取りおよび書き込みに対して Hive スタイルのパーティション分割を実装します。次の形式でファイルを生成します:`//.`。 +`HIVE` は、読み取りおよび書き込みの両方に対して Hive スタイルのパーティション方式を実装します。次の形式を使用してファイルを生成します:`//.`。 **`HIVE` パーティション戦略の例** @@ -112,27 +123,29 @@ select _path, * from azureBlobStorage(azure_conf2, storage_account_url = 'http:/ └─────────────────────────────────────────────────────────────────────────────────┴────┴──────┴─────────┘ ``` + ## use_hive_partitioning 設定 {#hive-style-partitioning} -これは、読み取り時に ClickHouse が Hive スタイルのパーティション分割ファイルを解析するためのヒントとなる設定です。書き込み時には影響しません。読み取りと書き込みの動作を対称にしたい場合は、`partition_strategy` 引数を使用してください。 +これは、読み込み時に Hive スタイルでパーティション分割されたファイルを ClickHouse がパースするためのヒントです。書き込みには影響しません。読み込みと書き込みを対称にしたい場合は、`partition_strategy` 引数を使用してください。 -`use_hive_partitioning` 設定を 1 にすると、ClickHouse はパス内の Hive スタイルのパーティション分割(`/name=value/`)を検出し、クエリ内でパーティション列を仮想カラムとして使用できるようにします。これらの仮想カラムは、パーティション分割されたパス内の名前と同じ名前を持ちますが、先頭に `_` が付きます。 +`use_hive_partitioning` 設定を 1 にすると、ClickHouse はパス(`/name=value/`)内の Hive スタイルのパーティション分割を検出し、クエリ内でパーティションカラムを仮想カラムとして使用できるようになります。これらの仮想カラムは、パーティションパス内の名前と同じですが、先頭に `_` が付きます。 -**Example** +**例** -Hive スタイルのパーティション分割で作成された仮想カラムを使用する。 +Hive スタイルのパーティション分割で作成された仮想カラムを使用する ```sql SELECT * FROM azureBlobStorage(config, storage_account_url='...', container='...', blob_path='http://data/path/date=*/country=*/code=*/*.parquet') WHERE _date > '2020-01-01' AND _country = 'Netherlands' AND _code = 42; ``` + ## 共有アクセス署名 (SAS) の使用 {#using-shared-access-signatures-sas-sas-tokens} -共有アクセス署名 (SAS) は、Azure Storage のコンテナまたはファイルへの制限されたアクセス権を付与する URI です。これを使用すると、ストレージ アカウント キーを共有せずに、ストレージ アカウント リソースへの有効期限付きアクセスを提供できます。詳細は[こちら](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature)を参照してください。 +共有アクセス署名 (SAS) は、Azure Storage のコンテナーまたはファイルへの制限付きアクセス権を付与する URI です。ストレージ アカウント キーを共有することなく、ストレージ アカウント リソースへの時間制限付きアクセスを提供するために使用します。詳細は[こちら](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature)を参照してください。 -`azureBlobStorage` 関数は共有アクセス署名 (SAS) をサポートしています。 +`azureBlobStorage` 関数は共有アクセス署名 (SAS) をサポートします。 -[Blob SAS トークン](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers)には、対象の BLOB、アクセス許可、有効期間など、リクエストの認証に必要なすべての情報が含まれます。BLOB の URL を構成するには、BLOB サービス エンドポイントに SAS トークンを付加します。たとえば、エンドポイントが `https://clickhousedocstest.blob.core.windows.net/` の場合、リクエストは次のようになります。 +[Blob SAS トークン](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers)には、対象 BLOB、権限、有効期間など、要求の認証に必要なすべての情報が含まれています。BLOB URL を構築するには、SAS トークンを BLOB サービス エンドポイントに付加します。たとえば、エンドポイントが `https://clickhousedocstest.blob.core.windows.net/` の場合、リクエストは次のようになります。 ```sql SELECT count() @@ -142,7 +155,7 @@ FROM azureBlobStorage('BlobEndpoint=https://clickhousedocstest.blob.core.windows │ 10 │ └─────────┘ -1 行のセット。経過時間: 0.425 秒 +1 row in set. Elapsed: 0.425 sec. ``` または、生成された [Blob SAS URL](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers) を使用することもできます。 @@ -155,8 +168,9 @@ FROM azureBlobStorage('https://clickhousedocstest.blob.core.windows.net/?sp=r&st │ 10 │ └─────────┘ -1 row in set. 経過時間: 0.153秒 +1 row in set. Elapsed: 0.153 sec. ``` + ## 関連項目 {#related} - [AzureBlobStorage テーブルエンジン](engines/table-engines/integrations/azureBlobStorage.md) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md index 93ea60836db..8e5fe1634c6 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md @@ -48,10 +48,10 @@ Docker Compose は、デフォルトの `otel-collector` セットアップに ### リポジトリをクローンする {#clone-the-repo} -Docker Compose を使用してデプロイするには、HyperDX リポジトリをクローンし、そのディレクトリに移動して `docker-compose up` を実行します: +Docker Compose を使用してデプロイするには、ClickStack リポジトリをクローンし、そのディレクトリに移動して `docker-compose up` を実行します: ```shell -git clone git@github.com:hyperdxio/hyperdx.git +git clone https://github.com/ClickHouse/ClickStack.git docker compose up ``` @@ -61,7 +61,7 @@ docker compose up ユーザー名と、要件を満たすパスワードを入力してユーザーを作成します。 -`Create` をクリックすると、Helm チャートでデプロイされた ClickHouse インスタンス用のデータソースが作成されます。 +`Create` をクリックすると、Docker Compose でデプロイされた ClickHouse インスタンス用のデータソースが作成されます。 :::note 既定の接続の上書き 統合された ClickHouse インスタンスへの既定の接続は上書きできます。詳細については、「[Using ClickHouse Cloud](#using-clickhouse-cloud)」を参照してください。 @@ -88,34 +88,31 @@ docker compose up ユーザーは、使用するバージョンなどのスタック設定を、環境変数ファイルで変更できます。 ```shell -user@example-host hyperdx % cat .env -# docker-compose.yml で使用 {#used-by-docker-composeyml} -# docker-compose.yml で使用 {#used-by-docker-composeyml} -HDX_IMAGE_REPO=docker.hyperdx.io -IMAGE_NAME=ghcr.io/hyperdxio/hyperdx -IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx -LOCAL_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-local -LOCAL_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-local -ALL_IN_ONE_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-all-in-one -ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-all-in-one -OTEL_COLLECTOR_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-otel-collector -OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-otel-collector -CODE_VERSION=2.0.0-beta.16 -IMAGE_VERSION_SUB_TAG=.16 -IMAGE_VERSION=2-beta +user@example-host clickstack % cat .env + +# Used by docker-compose.yml +IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one +LOCAL_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-local +ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one +OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-otel-collector +CODE_VERSION=2.8.0 +IMAGE_VERSION_SUB_TAG=.8.0 +IMAGE_VERSION=2 IMAGE_NIGHTLY_TAG=2-nightly +IMAGE_LATEST_TAG=latest -# ドメイン URL の設定 {#set-up-domain-urls} -HYPERDX_API_PORT=8000 # 任意(他のサービスで使用されていないポートを指定すること) +# Set up domain URLs +HYPERDX_API_PORT=8000 #optional (should not be taken by other services) HYPERDX_APP_PORT=8080 HYPERDX_APP_URL=http://localhost HYPERDX_LOG_LEVEL=debug HYPERDX_OPAMP_PORT=4320 -# OTel/ClickHouse 設定 {#otelclickhouse-config} +# Otel/Clickhouse config HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default ``` + ### OpenTelemetry collector の設定 {#configuring-collector} 必要に応じて OTel collector の設定を変更できます。設定の変更方法の詳細は、["Modifying configuration"](/use-cases/observability/clickstack/ingesting-data/otel-collector#modifying-otel-collector-configuration) を参照してください。 @@ -124,13 +121,13 @@ HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default このディストリビューションは ClickHouse Cloud と併用できます。ユーザーは次の手順を実行してください: -* `docker-compose.yaml` ファイルから ClickHouse のサービスを削除します。テスト用途であれば任意で、削除しない場合はデプロイされた ClickHouse インスタンスは単に無視されますが、ローカルリソースを無駄に消費します。サービスを削除する場合は、`depends_on` など当該サービスへの参照も削除してください。 +* `docker-compose.yml` ファイルから ClickHouse のサービスを削除します。テスト用途であれば任意で、削除しない場合はデプロイされた ClickHouse インスタンスは単に無視されますが、ローカルリソースを無駄に消費します。サービスを削除する場合は、`depends_on` など当該サービスへの参照も削除してください。 * compose ファイル内で環境変数 `CLICKHOUSE_ENDPOINT`、`CLICKHOUSE_USER`、`CLICKHOUSE_PASSWORD` を設定し、OTel collector が ClickHouse Cloud インスタンスを使用するように変更します。具体的には、OTel collector サービスにこれらの環境変数を追加します: ```shell otel-collector: - image: ${OTEL_COLLECTOR_IMAGE_NAME}:${IMAGE_VERSION} + image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: CLICKHOUSE_ENDPOINT: '' # ここに https エンドポイントを指定 CLICKHOUSE_USER: '' @@ -155,25 +152,25 @@ HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default -これらを設定するには、`docker-compose.yaml` 内の該当するサービスを編集します: +これらを設定するには、`docker-compose.yml` 内の該当するサービスを編集します: ```yaml app: - image: ${HDX_IMAGE_REPO}/${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} + image: ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} ports: - ${HYPERDX_API_PORT}:${HYPERDX_API_PORT} - ${HYPERDX_APP_PORT}:${HYPERDX_APP_PORT} environment: - BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # JSONを有効化 + BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # enable JSON FRONTEND_URL: ${HYPERDX_APP_URL}:${HYPERDX_APP_PORT} HYPERDX_API_KEY: ${HYPERDX_API_KEY} HYPERDX_API_PORT: ${HYPERDX_API_PORT} - # 簡潔さのため省略 + # truncated for brevity otel-collector: - image: ${HDX_IMAGE_REPO}/${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} + image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: - OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # JSONを有効化 + OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # enable JSON CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s' - # 簡潔さのため省略 + # truncated for brevity ``` diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 8c76b9f11b5..20ec6b6ea5a 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -23,156 +23,154 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p このサンプルデータセットは、記載されているとおり手順にわずかな調整を加えるだけで、ClickHouse Cloud 上の HyperDX でも使用できます。ClickHouse Cloud で HyperDX を使用する場合は、[このデプロイメントモデル向けの入門ガイド](/use-cases/observability/clickstack/deployment/hyperdx-clickhouse-cloud)で説明されているように、ローカルで実行される OpenTelemetry collector が必要です。 ::: - - -## カスタムOpenTelemetry設定を作成する {#create-otel-configuration} - -以下の内容で `custom-local-config.yaml` ファイルを作成します: - -```yaml -receivers: - filelog: - include: - - /host/var/log/**/*.log # ホストからのLinuxログ - - /host/var/log/syslog - - /host/var/log/messages - - /host/private/var/log/*.log # ホストからのmacOSログ - start_at: beginning - resource: - service.name: "system-logs" - - hostmetrics: - collection_interval: 1s - scrapers: - cpu: - metrics: - system.cpu.time: - enabled: true - system.cpu.utilization: - enabled: true - memory: - metrics: - system.memory.usage: - enabled: true - system.memory.utilization: - enabled: true - filesystem: - metrics: - system.filesystem.usage: - enabled: true - system.filesystem.utilization: - enabled: true - paging: - metrics: - system.paging.usage: - enabled: true - system.paging.utilization: - enabled: true - system.paging.faults: - enabled: true - disk: - load: - network: - processes: - -service: - pipelines: - logs/local: - receivers: [filelog] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - metrics/hostmetrics: - receivers: [hostmetrics] - processors: - - memory_limiter - - batch - exporters: - - clickhouse -``` - -この設定は、macOSおよびLinuxシステムのシステムログとメトリクスを収集し、結果をClickStackに送信します。この設定では、新しいレシーバーとパイプラインを追加することでClickStackコレクターを拡張します。ベースのClickStackコレクターで既に設定されている`clickhouse`エクスポーターとプロセッサー(`memory_limiter`、`batch`)を参照してください。 - -:::note インジェストのタイムスタンプ -この設定はインジェスト時にタイムスタンプを調整し、各イベントに更新された時刻値を割り当てます。正確なイベント時刻を保持するために、ユーザーはログファイル内の[タイムスタンプを前処理または解析](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching)する際に、OTelプロセッサーまたはオペレーターを使用することを推奨します。 - -この設定例では、receiverまたはfileプロセッサがファイルの先頭から開始するように構成されている場合、既存のすべてのログエントリには同一の調整済みタイムスタンプ(元のイベント時刻ではなく処理時刻)が割り当てられます。ファイルに追加される新しいイベントには、実際の生成時刻に近似したタイムスタンプが付与されます。 - -この動作を回避するには、レシーバー設定で開始位置を `end` に設定します。これにより、新しいエントリのみが取り込まれ、実際の到着時刻に近いタイムスタンプが付与されます。 -::: - -OpenTelemetry (OTel) の設定構造の詳細については、[公式ガイド](https://opentelemetry.io/docs/collector/configuration/)を参照してください。 - -## カスタム設定でClickStackを起動する {#start-clickstack} - -カスタム設定でオールインワンコンテナを起動するには、以下のdockerコマンドを実行します: - -```shell -docker run -d --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-all-in-one:latest -``` - -:::note rootユーザー -すべてのシステムログにアクセスするため、コレクターをrootユーザーとして実行します。これは、Linuxベースのシステムにおいて保護されたパスからログを取得するために必要です。ただし、この方法は本番環境では推奨されません。本番環境では、OpenTelemetry Collectorは、意図するログソースへのアクセスに必要な最小限の権限のみを持つローカルエージェントとしてデプロイする必要があります。 - -ホストの `/var/log` をコンテナ内の `/host/var/log` にマウントすることで、コンテナ自身のログファイルとの競合を回避しています。 -::: - -スタンドアロンコレクターでClickHouse CloudのHyperDXを使用する場合は、代わりに以下のコマンドを使用してください: - -```shell -docker run -d \ - -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ - -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ - -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ - -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-otel-collector:latest -``` - -コレクターは即座にローカルシステムのログとメトリクスの収集を開始します。 - -## HyperDX UIへ移動する {#navigate-to-the-hyperdx-ui} - -ローカルにデプロイする場合は、[http://localhost:8080](http://localhost:8080)にアクセスしてHyperDX UIを開きます。ClickHouse CloudでHyperDXを使用する場合は、サービスを選択し、左メニューから`HyperDX`を選択します。 - -## システムログの確認 {#explore-system-logs} - -検索UIにローカルシステムログが表示されます。フィルタを展開して`system.log`を選択します: - -HyperDX ローカルログ - -## システムメトリクスを確認する {#explore-system-metrics} - -チャートを使用してメトリクスを確認できます。 + + ## カスタムOpenTelemetry設定を作成する {#create-otel-configuration} + + 以下の内容で `custom-local-config.yaml` ファイルを作成します: + + ```yaml + receivers: + filelog: + include: + - /host/var/log/**/*.log # ホストからのLinuxログ + - /host/var/log/syslog + - /host/var/log/messages + - /host/private/var/log/*.log # ホストからのmacOSログ + start_at: beginning + resource: + service.name: "system-logs" + + hostmetrics: + collection_interval: 1s + scrapers: + cpu: + metrics: + system.cpu.time: + enabled: true + system.cpu.utilization: + enabled: true + memory: + metrics: + system.memory.usage: + enabled: true + system.memory.utilization: + enabled: true + filesystem: + metrics: + system.filesystem.usage: + enabled: true + system.filesystem.utilization: + enabled: true + paging: + metrics: + system.paging.usage: + enabled: true + system.paging.utilization: + enabled: true + system.paging.faults: + enabled: true + disk: + load: + network: + processes: + + service: + pipelines: + logs/local: + receivers: [filelog] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + metrics/hostmetrics: + receivers: [hostmetrics] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + ``` + + この設定は、macOSおよびLinuxシステムのシステムログとメトリクスを収集し、結果をClickStackに送信します。この設定では、新しいレシーバーとパイプラインを追加することでClickStackコレクターを拡張します。ベースのClickStackコレクターで既に設定されている`clickhouse`エクスポーターとプロセッサー(`memory_limiter`、`batch`)を参照してください。 + + :::note インジェストのタイムスタンプ + この設定はインジェスト時にタイムスタンプを調整し、各イベントに更新された時刻値を割り当てます。正確なイベント時刻を保持するために、ユーザーはログファイル内の[タイムスタンプを前処理または解析](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching)する際に、OTelプロセッサーまたはオペレーターを使用することを推奨します。 + + この設定例では、receiverまたはfileプロセッサがファイルの先頭から開始するように構成されている場合、既存のすべてのログエントリには同一の調整済みタイムスタンプ(元のイベント時刻ではなく処理時刻)が割り当てられます。ファイルに追加される新しいイベントには、実際の生成時刻に近似したタイムスタンプが付与されます。 + + この動作を回避するには、レシーバー設定で開始位置を `end` に設定します。これにより、新しいエントリのみが取り込まれ、実際の到着時刻に近いタイムスタンプが付与されます。 + ::: + + OpenTelemetry (OTel) の設定構造の詳細については、[公式ガイド](https://opentelemetry.io/docs/collector/configuration/)を参照してください。 + + ## カスタム設定でClickStackを起動する {#start-clickstack} + + カスタム設定でオールインワンコンテナを起動するには、以下のdockerコマンドを実行します: + + ```shell + docker run -d --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-all-in-one:latest + ``` + + :::note rootユーザー + すべてのシステムログにアクセスするため、コレクターをrootユーザーとして実行します。これは、Linuxベースのシステムにおいて保護されたパスからログを取得するために必要です。ただし、この方法は本番環境では推奨されません。本番環境では、OpenTelemetry Collectorは、意図するログソースへのアクセスに必要な最小限の権限のみを持つローカルエージェントとしてデプロイする必要があります。 + + ホストの `/var/log` をコンテナ内の `/host/var/log` にマウントすることで、コンテナ自身のログファイルとの競合を回避しています。 + ::: + + スタンドアロンコレクターでClickHouse CloudのHyperDXを使用する場合は、代わりに以下のコマンドを使用してください: + + ```shell + docker run -d \ + -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ + -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ + -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ + -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-otel-collector:latest + ``` + + コレクターは即座にローカルシステムのログとメトリクスの収集を開始します。 + + ## HyperDX UIへ移動する {#navigate-to-the-hyperdx-ui} + + ローカルにデプロイする場合は、[http://localhost:8080](http://localhost:8080)にアクセスしてHyperDX UIを開きます。ClickHouse CloudでHyperDXを使用する場合は、サービスを選択し、左メニューから`HyperDX`を選択します。 + + ## システムログの確認 {#explore-system-logs} + + 検索UIにローカルシステムログが表示されます。フィルタを展開して`system.log`を選択します: + + HyperDX ローカルログ + + ## システムメトリクスを確認する {#explore-system-metrics} -左側のメニューから Chart Explorer に移動します。ソースとして `Metrics` を選択し、集計タイプとして `Maximum` を選択します。 + チャートを使用してメトリクスを確認できます。 -`Select a Metric`メニューで、`system.memory.utilization (Gauge)`を選択する前に`memory`と入力します。 + 左側のメニューから Chart Explorer に移動します。ソースとして `Metrics` を選択し、集計タイプとして `Maximum` を選択します。 -実行ボタンを押して、時系列でのメモリ使用率を可視化します。 + `Select a Metric`メニューで、`system.memory.utilization (Gauge)`を選択する前に`memory`と入力します。 -メモリ使用量の推移 + 実行ボタンを押して、時系列でのメモリ使用率を可視化します。 -数値は浮動小数点の`%`として返されます。より明確に表示するには、`数値形式を設定`を選択してください。 + メモリ使用量の推移 -数値形式 + 数値は浮動小数点の`%`として返されます。より明確に表示するには、`数値形式を設定`を選択してください。 -表示されたメニューで、`Output format`ドロップダウンから`Percentage`を選択し、`Apply`をクリックします。 + 数値形式 -メモリに費やした時間の割合(%) + 表示されたメニューで、`Output format`ドロップダウンから`Percentage`を選択し、`Apply`をクリックします。 + メモリに費やした時間の割合(%) \ No newline at end of file diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md index 4898ab7c82e..d59deb0eca7 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md @@ -44,7 +44,6 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke - 認証を有効にしている場合の Redis パスワード - #### Redis接続の確認 まず、Redisに接続できること、およびINFOコマンドが機能することを確認します: @@ -67,9 +66,9 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke **一般的なRedisエンドポイント:** -* **ローカルインストール**: `localhost:6379` -* **Docker**: コンテナ名またはサービス名を指定します(例: `redis:6379`) -* **リモート**: `:6379` + * **ローカルインストール**: `localhost:6379` + * **Docker**: コンテナ名またはサービス名を指定します(例: `redis:6379`) + * **リモート**: `:6379` #### カスタムOTel collector設定を作成する @@ -123,111 +122,110 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke この設定では: -* `localhost:6379` 上の Redis に接続します(ご利用の環境に合わせてエンドポイントを調整してください) -* 10秒ごとにメトリクスを収集します -* 主要なパフォーマンスメトリクス(コマンド、クライアント、メモリ、キー空間の統計)を収集 -* [OpenTelemetry semantic conventions](https://opentelemetry.io/docs/specs/semconv/resource/#service) に従い、**必須の `service.name` リソース属性を設定します** -* 専用パイプライン経由でメトリクスを ClickHouse エクスポーターに送信します + * `localhost:6379` 上の Redis に接続します(ご利用の環境に合わせてエンドポイントを調整してください) + * 10秒ごとにメトリクスを収集します + * 主要なパフォーマンスメトリクス(コマンド、クライアント、メモリ、キー空間の統計)を収集 + * [OpenTelemetry semantic conventions](https://opentelemetry.io/docs/specs/semconv/resource/#service) に従い、**必須の `service.name` リソース属性を設定します** + * 専用パイプライン経由でメトリクスを ClickHouse エクスポーターに送信します **収集される主要メトリクス:** -* `redis.commands.processed` - 1秒あたりの処理済みコマンド数 -* `redis.clients.connected` - 接続中のクライアント数 -* `redis.clients.blocked` - ブロッキングコールでブロックされているクライアント数 -* `redis.memory.used` - Redis が使用しているメモリ(バイト単位) -* `redis.memory.peak` - 最大メモリ使用量 -* `redis.keyspace.hits` - 成功したキー参照数 -* `redis.keyspace.misses` - キー検索の失敗数(キャッシュヒット率の算出に使用) -* `redis.keys.expired` - 期限切れになったキー -* `redis.keys.evicted` - メモリ不足により破棄されたキー数 -* `redis.connections.received` - 受信した接続の総数 -* `redis.connections.rejected` - 拒否された接続数 + * `redis.commands.processed` - 1秒あたりの処理済みコマンド数 + * `redis.clients.connected` - 接続中のクライアント数 + * `redis.clients.blocked` - ブロッキングコールでブロックされているクライアント数 + * `redis.memory.used` - Redis が使用しているメモリ(バイト単位) + * `redis.memory.peak` - 最大メモリ使用量 + * `redis.keyspace.hits` - 成功したキー参照数 + * `redis.keyspace.misses` - キー検索の失敗数(キャッシュヒット率の算出に使用) + * `redis.keys.expired` - 期限切れになったキー + * `redis.keys.evicted` - メモリ不足により破棄されたキー数 + * `redis.connections.received` - 受信した接続の総数 + * `redis.connections.rejected` - 拒否された接続数 :::note -* カスタム設定では、新しい receiver、processor、pipeline のみを定義します -* `memory_limiter` と `batch` の各 processor、および `clickhouse` exporter は、ベースの ClickStack 構成内ですでに定義されているため、名前を指定するだけで参照できます -* `resource` プロセッサは、OpenTelemetry のセマンティック規約に従い、必須の `service.name` 属性を設定します -* 認証付きの本番運用環境では、パスワードを環境変数 `${env:REDIS_PASSWORD}` に保存してください。 -* 必要に応じて `collection_interval` を調整します(デフォルトは 10s。値を小さくするとデータ量が増加します) -* 複数の Redis インスタンスがある場合は、それらを区別するために `service.name` をカスタマイズしてください(例: `"redis-cache"`、`"redis-sessions"`) + * カスタム設定では、新しい receiver、processor、pipeline のみを定義します + * `memory_limiter` と `batch` の各 processor、および `clickhouse` exporter は、ベースの ClickStack 構成内ですでに定義されているため、名前を指定するだけで参照できます + * `resource` プロセッサは、OpenTelemetry のセマンティック規約に従い、必須の `service.name` 属性を設定します + * 認証付きの本番運用環境では、パスワードを環境変数 `${env:REDIS_PASSWORD}` に保存してください。 + * 必要に応じて `collection_interval` を調整します(デフォルトは 10s。値を小さくするとデータ量が増加します) + * 複数の Redis インスタンスがある場合は、それらを区別するために `service.name` をカスタマイズしてください(例: `"redis-cache"`、`"redis-sessions"`) #### ClickStackにカスタム設定を読み込ませる 既存のClickStackデプロイメントでカスタムコレクター設定を有効にするには、次の手順を実行してください: -1. カスタム構成ファイルを `/etc/otelcol-contrib/custom.config.yaml` にマウントします。 -2. 環境変数 `CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml` を設定してください -3. ClickStack と Redis 間のネットワーク接続を確保する - - ##### オプション1: Docker Compose - - ClickStackのデプロイメント設定を更新します: - - ```yaml - services: - clickstack: - # ... 既存の設定 ... - environment: - - CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - # オプション: Redis で認証が必要な場合 - # - REDIS_PASSWORD=your-redis-password - # ... その他の環境変数 ... - volumes: - - ./redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro - # ... その他のボリューム ... - # Redis が同じ compose ファイル内にある場合: - depends_on: - - redis - - redis: - image: redis:7-alpine - ports: - - "6379:6379" - # オプション: 認証を有効にする - # command: redis-server --requirepass your-redis-password - ``` - - ##### オプション2:Docker run(オールインワンイメージ) - - `docker run`でオールインワンイメージを使用する場合: - - ```bash - docker run --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - clickhouse/clickstack-all-in-one:latest - ``` - - **重要:** Redisが別のコンテナで実行されている場合は、Dockerネットワーキングを使用してください: - - ```bash - # ネットワークを作成 - docker network create monitoring - - # ネットワーク上でRedisを実行 - docker run -d --name redis --network monitoring redis:7-alpine - - # 同じネットワーク上でClickStackを実行(設定ファイル内のエンドポイントを "redis:6379" に更新) - docker run --name clickstack \ - --network monitoring \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - clickhouse/clickstack-all-in-one:latest - ``` - - #### HyperDXでメトリクスを確認する - - 設定完了後、HyperDXにログインし、メトリクスが正常に送信されていることを確認します: - -1. 「Metrics explorer」に移動します -2. `redis.` で始まるメトリクス(例: `redis.commands.processed`, `redis.memory.used`)を検索します。 -3. 設定した収集間隔でメトリクスのデータポイントが表示されるはずです - - {/* Redis メトリクスビュー */ } + 1. カスタム構成ファイルを `/etc/otelcol-contrib/custom.config.yaml` にマウントします。 + 2. 環境変数 `CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml` を設定してください + 3. ClickStack と Redis 間のネットワーク接続を確保する + + ##### オプション1: Docker Compose + + ClickStackのデプロイメント設定を更新します: + + ```yaml + services: + clickstack: + # ... 既存の設定 ... + environment: + - CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml + # オプション: Redis で認証が必要な場合 + # - REDIS_PASSWORD=your-redis-password + # ... その他の環境変数 ... + volumes: + - ./redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro + # ... その他のボリューム ... + # Redis が同じ compose ファイル内にある場合: + depends_on: + - redis + + redis: + image: redis:7-alpine + ports: + - "6379:6379" + # オプション: 認証を有効にする + # command: redis-server --requirepass your-redis-password + ``` + + ##### オプション2:Docker run(オールインワンイメージ) + + `docker run`でオールインワンイメージを使用する場合: + + ```bash + docker run --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + clickhouse/clickstack-all-in-one:latest + ``` + + **重要:** Redisが別のコンテナで実行されている場合は、Dockerネットワーキングを使用してください: + + ```bash + # ネットワークを作成 + docker network create monitoring + + # ネットワーク上でRedisを実行 + docker run -d --name redis --network monitoring redis:7-alpine + + # 同じネットワーク上でClickStackを実行(設定ファイル内のエンドポイントを "redis:6379" に更新) + docker run --name clickstack \ + --network monitoring \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + clickhouse/clickstack-all-in-one:latest + ``` + + #### HyperDXでメトリクスを確認する + + 設定完了後、HyperDXにログインし、メトリクスが正常に送信されていることを確認します: + + 1. 「Metrics explorer」に移動します + 2. `redis.` で始まるメトリクス(例: `redis.commands.processed`, `redis.memory.used`)を検索します。 + 3. 設定した収集間隔でメトリクスのデータポイントが表示されるはずです + {/* Redis メトリクスビュー */ } ## デモ用データセット {#demo-dataset} diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md index 765b39acf7d..bc4a4455fe3 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md @@ -42,14 +42,15 @@ ENGINE = AzureQueue('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1; SETTINGS mode = 'unordered' ``` + ## Settings {#settings} -Набор поддерживаемых настроек в основном совпадает с настройками для движка таблиц `S3Queue`, но без префикса `s3queue_`. См. [полный список настроек](../../../engines/table-engines/integrations/s3queue.md#settings). +Набор поддерживаемых настроек в основном совпадает с настройками для движка таблицы `S3Queue`, но без префикса `s3queue_`. См. [полный список настроек](../../../engines/table-engines/integrations/s3queue.md#settings). Чтобы получить список настроек, заданных для таблицы, используйте таблицу `system.azure_queue_settings`. Доступно начиная с версии 24.10. -Ниже приведены настройки, совместимые только с AzureQueue и не применимые к S3Queue. +Ниже приведены настройки, совместимые только с AzureQueue и неприменимые к S3Queue. -### `after_processing_move_connection_string` {#after_processing_move_connection_string} +### `after_processing_move_connection_string` {#after_processing_move_connection_string} Строка подключения к Azure Blob Storage, в которую будут перемещаться успешно обработанные файлы, если в качестве назначения используется другой контейнер Azure. @@ -59,7 +60,7 @@ SETTINGS mode = 'unordered' Значение по умолчанию: пустая строка. -### `after_processing_move_container` {#after_processing_move_container} +### `after_processing_move_container` {#after_processing_move_container} Имя контейнера, в который необходимо переместить успешно обработанные файлы, если целевым контейнером является другой контейнер Azure. @@ -85,6 +86,13 @@ SETTINGS after_processing_move_container = 'dst-container'; ``` + +## SELECT из движка таблицы AzureQueue {#select} + +Запросы SELECT по умолчанию запрещены для таблиц AzureQueue. Это соответствует общей модели работы очередей, в которой данные читаются один раз, а затем удаляются из очереди. SELECT запрещён, чтобы предотвратить случайную потерю данных. +Однако иногда это может быть полезно. Для этого необходимо установить настройку `stream_like_engine_allow_direct_select` в значение `True`. +Движок AzureQueue имеет специальную настройку для запросов SELECT: `commit_on_select`. Установите её в `False`, чтобы сохранить данные в очереди после чтения, или в `True`, чтобы удалить их. + ## Описание {#description} `SELECT` не особенно полезен для потокового импорта (кроме отладки), потому что каждый файл можно импортировать только один раз. Гораздо практичнее создавать потоки в реальном времени с использованием [материализованных представлений](../../../sql-reference/statements/create/view.md). Для этого: @@ -112,6 +120,7 @@ CREATE MATERIALIZED VIEW consumer TO stats SELECT * FROM stats ORDER BY key; ``` + ## Виртуальные столбцы {#virtual-columns} * `_path` — Путь к файлу. @@ -143,24 +152,24 @@ SELECT * FROM stats ORDER BY key; CREATE TABLE system.azure_queue_log ( - `hostname` LowCardinality(String) COMMENT 'Имя хоста', - `event_date` Date COMMENT 'Дата события записи данной строки журнала', - `event_time` DateTime COMMENT 'Время события записи данной строки журнала', - `database` String COMMENT 'Имя базы данных, в которой находится таблица S3Queue.', - `table` String COMMENT 'Имя таблицы S3Queue.', - `uuid` String COMMENT 'UUID таблицы S3Queue', - `file_name` String COMMENT 'Имя обрабатываемого файла', - `rows_processed` UInt64 COMMENT 'Количество обработанных строк', - `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT 'Статус обработки файла', - `processing_start_time` Nullable(DateTime) COMMENT 'Время начала обработки файла', - `processing_end_time` Nullable(DateTime) COMMENT 'Время завершения обработки файла', - `exception` String COMMENT 'Сообщение об исключении при его возникновении' + `hostname` LowCardinality(String) COMMENT 'Hostname', + `event_date` Date COMMENT 'Event date of writing this log row', + `event_time` DateTime COMMENT 'Event time of writing this log row', + `database` String COMMENT 'The name of a database where current S3Queue table lives.', + `table` String COMMENT 'The name of S3Queue table.', + `uuid` String COMMENT 'The UUID of S3Queue table', + `file_name` String COMMENT 'File name of the processing file', + `rows_processed` UInt64 COMMENT 'Number of processed rows', + `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT 'Status of the processing file', + `processing_start_time` Nullable(DateTime) COMMENT 'Time of the start of processing the file', + `processing_end_time` Nullable(DateTime) COMMENT 'Time of the end of processing the file', + `exception` String COMMENT 'Exception message if happened' ) ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 8192 -COMMENT 'Содержит записи журнала с информацией о файлах, обработанных движком S3Queue.' +COMMENT 'Contains logging entries with the information files processes by S3Queue engine.' ``` @@ -172,7 +181,7 @@ FROM system.azure_queue_log LIMIT 1 FORMAT Vertical -Строка 1: +Row 1: ────── hostname: clickhouse event_date: 2024-12-16 @@ -187,6 +196,6 @@ processing_start_time: 2024-12-16 13:42:47 processing_end_time: 2024-12-16 13:42:47 exception: -Получена 1 строка. Затрачено: 0.002 сек. +1 row in set. Elapsed: 0.002 sec. ``` diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md index 686e3cdbdfb..b49882b8130 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md @@ -1,5 +1,5 @@ --- -description: 'Этот движок обеспечивает интеграцию с экосистемой Azure Blob Storage.' +description: 'Этот движок предоставляет интеграцию с экосистемой Azure Blob Storage.' sidebar_label: 'Azure Blob Storage' sidebar_position: 10 slug: /engines/table-engines/integrations/azureBlobStorage @@ -7,9 +7,9 @@ title: 'Табличный движок AzureBlobStorage' doc_type: 'reference' --- -# Табличный движок AzureBlobStorage {#azureblobstorage-table-engine} +# Движок таблицы AzureBlobStorage {#azureblobstorage-table-engine} -Этот движок предоставляет интеграцию с экосистемой [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs). +Этот движок обеспечивает интеграцию с экосистемой [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs). ## Создание таблицы {#create-table} @@ -22,22 +22,22 @@ CREATE TABLE azure_blob_storage_table (name String, value UInt32) ### Параметры движка {#engine-parameters} -* `endpoint` — URL конечной точки AzureBlobStorage с контейнером и префиксом. Дополнительно может содержать `account_name`, если это требуется используемому методу аутентификации (`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`), либо эти параметры могут быть переданы отдельно с помощью `storage_account_url`, `account_name` и `container`. Для указания префикса должен использоваться `endpoint`. -* `endpoint_contains_account_name` — флаг, указывающий, содержит ли `endpoint` `account_name`, так как это требуется только для некоторых методов аутентификации. (По умолчанию: `true`) -* `connection_string|storage_account_url` — `connection_string` включает имя учетной записи и ключ ([Create connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)), либо здесь также можно указать URL учетной записи хранилища, а имя учетной записи и ключ учетной записи передать отдельными параметрами (см. параметры `account_name` и `account_key`). +* `endpoint` — URL-адрес AzureBlobStorage с контейнером и префиксом. При необходимости может включать account_name, если он требуется выбранному методу аутентификации (`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`), либо эти параметры могут быть переданы отдельно с помощью storage_account_url, account_name и container. Для указания префикса следует использовать endpoint. +* `endpoint_contains_account_name` — флаг, указывающий, содержит ли endpoint account_name; это требуется только для некоторых методов аутентификации. (По умолчанию: true) +* `connection_string|storage_account_url` — connection_string включает имя учетной записи и ключ ([Создание строки подключения](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)), либо здесь можно указать URL учетной записи хранилища и задать имя учетной записи и ключ учетной записи как отдельные параметры (см. параметры account_name и account_key). * `container_name` — имя контейнера. * `blobpath` — путь к файлу. Поддерживает следующие шаблоны (wildcards) в режиме только для чтения: `*`, `**`, `?`, `{abc,def}` и `{N..M}`, где `N`, `M` — числа, `'abc'`, `'def'` — строки. -* `account_name` — если используется `storage_account_url`, то имя учетной записи можно указать здесь. -* `account_key` — если используется `storage_account_url`, то ключ учетной записи можно указать здесь. -* `format` — [формат](/interfaces/formats.md) файла. -* `compression` — поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. По умолчанию тип сжатия определяется автоматически по расширению файла (то же, что и установка `auto`). -* `partition_strategy` – варианты: `WILDCARD` или `HIVE`. `WILDCARD` требует наличия `{_partition_id}` в пути, который будет заменён на ключ партиции. `HIVE` не допускает шаблоны, предполагает, что путь — это корень таблицы, и генерирует каталоги партиций в стиле Hive с идентификаторами Snowflake в качестве имён файлов и форматом файла в качестве расширения. По умолчанию используется `WILDCARD`. -* `partition_columns_in_data_file` — используется только со стратегией партиционирования `HIVE`. Сообщает ClickHouse, следует ли ожидать, что столбцы партиционирования будут записаны в файл данных. По умолчанию `false`. -* `extra_credentials` — используйте `client_id` и `tenant_id` для аутентификации. Если заданы `extra_credentials`, они имеют приоритет над `account_name` и `account_key`. +* `account_name` — если используется storage_account_url, здесь можно указать имя учетной записи. +* `account_key` — если используется storage_account_url, здесь можно указать ключ учетной записи. +* `format` — [format](/interfaces/formats.md) файла. +* `compression` — Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. По умолчанию тип сжатия определяется автоматически по расширению файла (то же, что и установка значения `auto`). +* `partition_strategy` — Опции: `WILDCARD` или `HIVE`. Для `WILDCARD` требуется наличие `{_partition_id}` в пути, который заменяется ключом партиции. `HIVE` не допускает использование шаблонов (wildcards), предполагает, что путь является корнем таблицы и генерирует каталоги партиций в стиле Hive с идентификаторами Snowflake в качестве имен файлов и форматом файла в качестве расширения. По умолчанию используется `WILDCARD`. +* `partition_columns_in_data_file` — используется только со стратегией партиционирования `HIVE`. Указывает ClickHouse, следует ли ожидать, что столбцы партиций будут записаны в файл данных. По умолчанию `false`. +* `extra_credentials` — используйте `client_id` и `tenant_id` для аутентификации. Если заданы extra_credentials, они имеют приоритет над `account_name` и `account_key`. **Пример** -Пользователи могут использовать эмулятор Azurite для локальной разработки с Azure Storage. Дополнительные сведения — [здесь](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage). При использовании локального экземпляра Azurite пользователям может потребоваться заменить `http://localhost:10000` на `http://azurite1:10000` в командах ниже, если предполагается, что Azurite доступен по хосту `azurite1`. +Для локальной разработки с Azure Storage можно использовать эмулятор Azurite. Подробности см. [здесь](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage). При использовании локального экземпляра Azurite может потребоваться заменить в приведенных ниже командах `http://azurite1:10000` на `http://localhost:10000`, если Azurite доступен по хосту `localhost`, а не `azurite1`. ```sql CREATE TABLE test_table (key UInt64, data String) @@ -49,7 +49,7 @@ SELECT * FROM test_table; ``` ```text -┌─ключ─┬─данные─┐ +┌─key──┬─data──┐ │ 1 │ a │ │ 2 │ b │ │ 3 │ c │ @@ -58,23 +58,23 @@ SELECT * FROM test_table; ## Виртуальные столбцы {#virtual-columns} -- `_path` — Путь к файлу. Тип: `LowCardinality(String)`. -- `_file` — Имя файла. Тип: `LowCardinality(String)`. -- `_size` — Размер файла в байтах. Тип: `Nullable(UInt64)`. Если размер неизвестен, значение равно `NULL`. -- `_time` — Время последнего изменения файла. Тип: `Nullable(DateTime)`. Если время неизвестно, значение равно `NULL`. +* `_path` — Путь к файлу. Тип: `LowCardinality(String)`. +* `_file` — Имя файла. Тип: `LowCardinality(String)`. +* `_size` — Размер файла в байтах. Тип: `Nullable(UInt64)`. Если размер неизвестен, значение — `NULL`. +* `_time` — Время последнего изменения файла. Тип: `Nullable(DateTime)`. Если время неизвестно, значение — `NULL`. ## Аутентификация {#authentication} В настоящее время есть три способа аутентификации: * `Managed Identity` — может использоваться при указании `endpoint`, `connection_string` или `storage_account_url`. -* `SAS Token` — может использоваться при указании `endpoint`, `connection_string` или `storage_account_url`. Определяется по наличию символа '?' в URL. См. раздел [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens) с примерами. -* `Workload Identity` — может использоваться при указании `endpoint` или `storage_account_url`. Если параметр `use_workload_identity` установлен в конфигурации, для аутентификации используется механизм [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications). +* `SAS Token` — может использоваться при указании `endpoint`, `connection_string` или `storage_account_url`. Определяется по наличию символа `?` в URL. Примеры см. в разделе [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens). +* `Workload Identity` — может использоваться при указании `endpoint` или `storage_account_url`. Если параметр `use_workload_identity` задан в конфигурации, для аутентификации используется [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications). ### Кэш данных {#data-cache} Движок таблиц `Azure` поддерживает кэширование данных на локальном диске. -Параметры конфигурации и использование кэша файловой системы описаны в этом [разделе](/operations/storing-data.md/#using-local-cache). +Параметры конфигурации файлового кэша и примеры использования приведены в этом [разделе](/operations/storing-data.md/#using-local-cache). Кэширование выполняется в зависимости от пути и ETag объекта хранилища, поэтому ClickHouse не будет читать устаревшую версию кэша. Чтобы включить кэширование, используйте настройки `filesystem_cache_name = ''` и `enable_filesystem_cache = 1`. @@ -91,18 +91,18 @@ SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1; - путь к каталогу кэша + path to cache directory 10Gi ``` -2. повторно используйте конфигурацию кеша (и, соответственно, хранилище кеша) из секции `storage_configuration` ClickHouse, [описанной здесь](/operations/storing-data.md/#using-local-cache) +2. использовать повторно конфигурацию кэша (и, следовательно, хранилище кэша) из секции `storage_configuration` ClickHouse, [описанной здесь](/operations/storing-data.md/#using-local-cache) ### PARTITION BY {#partition-by} -`PARTITION BY` — необязательный параметр. В большинстве случаев ключ партиционирования не нужен, а когда он все же требуется, обычно нет необходимости делать его более детализированным, чем по месяцам. Партиционирование не ускоряет выполнение запросов (в отличие от выражения ORDER BY). Не следует использовать слишком детализированное партиционирование. Не партиционируйте данные по идентификаторам или именам клиентов (вместо этого сделайте идентификатор или имя клиента первым столбцом в выражении ORDER BY). +`PARTITION BY` — необязательный параметр. В большинстве случаев ключ партиционирования не требуется, а если он и нужен, то, как правило, не более детальный, чем по месяцам. Партиционирование не ускоряет выполнение запросов (в отличие от выражения ORDER BY). Никогда не используйте слишком детальное партиционирование. Не выполняйте партиционирование данных по идентификаторам или именам клиентов (вместо этого сделайте идентификатор или имя клиента первым столбцом в выражении ORDER BY). Для партиционирования по месяцам используйте выражение `toYYYYMM(date_column)`, где `date_column` — это столбец с датой типа [Date](/sql-reference/data-types/date.md). Имена партиций в этом случае имеют формат `"YYYYMM"`. @@ -110,9 +110,9 @@ SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1; `WILDCARD` (по умолчанию): заменяет подстановочный шаблон `{_partition_id}` в пути к файлу фактическим ключом партиции. Чтение не поддерживается. -`HIVE` реализует партиционирование в стиле Hive для операций чтения и записи. Чтение реализовано с использованием рекурсивного glob-шаблона. Запись генерирует файлы в следующем формате: `//.`. +`HIVE` реализует партиционирование в стиле Hive для чтения и записи. Чтение реализовано с использованием рекурсивного шаблона glob. При записи файлы создаются в следующем формате: `//.`. -Примечание: при использовании стратегии партиционирования `HIVE` настройка `use_hive_partitioning` не влияет на поведение. +Примечание: при использовании стратегии партиционирования `HIVE` настройка `use_hive_partitioning` не оказывает никакого эффекта. Пример стратегии партиционирования `HIVE`: diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md index 21a0cc02ca4..b340f207cd1 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md @@ -1,18 +1,22 @@ --- -description: 'Движок таблицы MongoDB — это движок только для чтения, который позволяет считывать данные из удалённой коллекции.' +description: 'Движок MongoDB — это табличный движок, предназначенный только для чтения, который позволяет считывать данные из удалённой коллекции.' sidebar_label: 'MongoDB' sidebar_position: 135 slug: /engines/table-engines/integrations/mongodb -title: 'Движок таблицы MongoDB' +title: 'Табличный движок MongoDB' doc_type: 'reference' --- -# Табличный движок MongoDB {#mongodb-table-engine} -Табличный движок MongoDB — это движок только для чтения, который позволяет читать данные из удалённой коллекции [MongoDB](https://www.mongodb.com/). -Поддерживаются только серверы MongoDB версии 3.6 и выше. -[Seed list (`mongodb+srv`)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list) пока не поддерживается. +# Движок таблиц MongoDB {#mongodb-table-engine} + +Движок MongoDB — это табличный движок только для чтения, который позволяет считывать данные из удалённой коллекции [MongoDB](https://www.mongodb.com/). + +Поддерживаются только серверы MongoDB версии v3.6 и новее. +[Список начальных узлов (`mongodb+srv`)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list) пока не поддерживается. + + ## Создание таблицы {#creating-a-table} @@ -27,22 +31,22 @@ CREATE TABLE [IF NOT EXISTS] [db.]table_name **Параметры движка** -| Параметр | Описание | -| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `host:port` | Адрес сервера MongoDB. | -| `database` | Имя удалённой базы данных. | -| `collection` | Имя удалённой коллекции. | -| `user` | Пользователь MongoDB. | -| `password` | Пароль пользователя. | -| `options` | Необязательный параметр. Параметры строки подключения MongoDB [options](https://www.mongodb.com/docs/manual/reference/connection-string-options/#connection-options) в формате URL-строки, например: `'authSource=admin&ssl=true'`. | -| `oid_columns` | Разделённый запятыми список столбцов, которые должны интерпретироваться как `oid` в предложении WHERE. По умолчанию `_id`. | +| Parameter | Description | +| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host:port` | Адрес сервера MongoDB. | +| `database` | Имя удалённой базы данных. | +| `collection` | Имя удалённой коллекции. | +| `user` | Пользователь MongoDB. | +| `password` | Пароль пользователя. | +| `options` | Необязательный параметр. Параметры строки подключения MongoDB ([options](https://www.mongodb.com/docs/manual/reference/connection-string-options/#connection-options)) в формате URL. Например, `'authSource=admin&ssl=true'` | +| `oid_columns` | Список столбцов, разделённых запятыми, которые должны рассматриваться как `oid` в предложении WHERE. По умолчанию `_id`. | :::tip -Если вы используете облачный сервис MongoDB Atlas, URL подключения можно получить в разделе «Atlas SQL». -Seed-список(`mongodb**+srv**`) пока не поддерживается, но поддержка будет добавлена в будущих релизах. +Если вы используете облачный сервис MongoDB Atlas, URL подключения можно получить из пункта 'Atlas SQL'. +Seed‑список (`mongodb+srv`) пока не поддерживается, но будет добавлен в будущих релизах. ::: -Либо вы можете передать URI: +В качестве альтернативы вы можете передать URI: ```sql ENGINE = MongoDB(uri, collection[, oid_columns]); @@ -50,34 +54,35 @@ ENGINE = MongoDB(uri, collection[, oid_columns]); **Параметры движка** -| Параметр | Описание | -| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `uri` | URI подключения к серверу MongoDB. | -| `collection` | Имя коллекции на удалённом сервере. | -| `oid_columns` | Список имён столбцов, разделённых запятыми, которые в предложении WHERE должны интерпретироваться как `oid`. По умолчанию — `_id`. | - -## Сопоставление типов {#types-mappings} - -| MongoDB | ClickHouse | -| ----------------------- | ------------------------------------------------------------------------------------ | -| bool, int32, int64 | *любой числовой тип, кроме Decimals*, Boolean, String | -| double | Float64, String | -| date | Date, Date32, DateTime, DateTime64, String | -| string | String, *любой числовой тип (кроме Decimals), если значение имеет корректный формат* | -| document | String (как JSON) | -| array | Array, String (как JSON) | -| oid | String | -| binary | String, если в столбце; строка в кодировке base64, если в массиве или документе | -| uuid (binary subtype 4) | UUID | -| *any other* | String | - -Если ключ не найден в документе MongoDB (например, имя столбца не совпадает), будет вставлено значение по умолчанию или `NULL` (если столбец допускает значения `NULL`). +| Параметр | Описание | +| ------------- | -------------------------------------------------------------------------------------------------------------------- | +| `uri` | URI подключения к серверу MongoDB. | +| `collection` | Имя удалённой коллекции. | +| `oid_columns` | Список столбцов, разделённых запятыми, которые в предложении WHERE следует трактовать как `oid`. По умолчанию `_id`. | + + +## Соответствие типов {#types-mappings} + +| MongoDB | ClickHouse | +| ----------------------- | ------------------------------------------------------------------------------- | +| bool, int32, int64 | *любой числовой тип, кроме Decimals*, Boolean, String | +| double | Float64, String | +| date | Date, Date32, DateTime, DateTime64, String | +| string | String, *любой числовой тип (кроме Decimals) при корректном формате* | +| document | String (в формате JSON) | +| array | Array, String (в формате JSON) | +| oid | String | +| binary | String, если в столбце; строка в base64-кодировке, если в массиве или документе | +| uuid (binary subtype 4) | UUID | +| *any other* | String | + +Если ключ не найден в документе MongoDB (например, имя столбца не совпадает), будет вставлено значение по умолчанию или `NULL` (если столбец имеет тип данных Nullable). ### OID {#oid} -Если вы хотите, чтобы `String` обрабатывался как `oid` в условии WHERE, просто укажите имя столбца в последнем аргументе движка таблицы. -Это может понадобиться при выборке записи по столбцу `_id`, который по умолчанию имеет тип `oid` в MongoDB. -Если поле `_id` в таблице имеет другой тип, например `uuid`, необходимо указать пустой `oid_columns`, иначе по умолчанию используется значение `_id` для этого параметра. +Если вы хотите, чтобы `String` интерпретировалась как `oid` в предложении WHERE, укажите имя столбца в последнем аргументе движка таблицы. +Это может быть необходимо при выполнении запроса к записи по столбцу `_id`, который по умолчанию имеет тип `oid` в MongoDB. +Если поле `_id` в таблице имеет другой тип, например `uuid`, необходимо указать пустой `oid_columns`, иначе для этого параметра будет использовано значение по умолчанию (`_id`). ```javascript db.sample_oid.insertMany([ @@ -93,7 +98,7 @@ db.sample_oid.find(); ] ``` -По умолчанию только `_id` считается столбцом типа `oid`. +По умолчанию только `_id` используется как столбец типа `oid`. ```sql CREATE TABLE sample_oid @@ -102,11 +107,11 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('mongodb://user:pass@host/db', 'sample_oid'); -SELECT count() FROM sample_oid WHERE _id = '67bf6cc44ebc466d33d42fb2'; --вернёт 1. -SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; --вернёт 0 +SELECT count() FROM sample_oid WHERE _id = '67bf6cc44ebc466d33d42fb2'; --will output 1. +SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; --will output 0 ``` -В этом случае результат будет `0`, потому что ClickHouse не знает, что `another_oid_column` имеет тип данных `oid`, поэтому давайте это исправим: +В этом случае выводом будет `0`, потому что ClickHouse не знает, что `another_oid_column` имеет тип данных `oid`, так что давайте это исправим: ```sql CREATE TABLE sample_oid @@ -115,7 +120,7 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('mongodb://user:pass@host/db', 'sample_oid', '_id,another_oid_column'); --- или +-- or CREATE TABLE sample_oid ( @@ -123,25 +128,26 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('host', 'db', 'sample_oid', 'user', 'pass', '', '_id,another_oid_column'); -SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; -- теперь вернёт 1 +SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; -- will output 1 now ``` -## Поддерживаемые предложения {#supported-clauses} + +## Поддерживаемые конструкции {#supported-clauses} Поддерживаются только запросы с простыми выражениями (например, `WHERE field = ORDER BY field2 LIMIT `). -Такие выражения переводятся в язык запросов MongoDB и выполняются на стороне сервера. +Такие выражения транслируются в язык запросов MongoDB и выполняются на стороне сервера. Вы можете отключить все эти ограничения, используя [mongodb_throw_on_unsupported_query](../../../operations/settings/settings.md#mongodb_throw_on_unsupported_query). -В этом случае ClickHouse пытается преобразовать запрос на основе принципа «best effort», но это может привести к полному сканированию таблицы и обработке на стороне ClickHouse. +В этом случае ClickHouse пытается преобразовать запрос максимально возможным образом, но это может привести к полному сканированию таблицы и обработке на стороне ClickHouse. :::note -Всегда лучше явно указывать тип литерала, потому что Mongo требует строго типизированных фильтров.\ +Всегда лучше явно указывать тип литерала, поскольку Mongo требует строго типизированные фильтры. Например, вы хотите отфильтровать по `Date`: ```sql SELECT * FROM mongo_table WHERE date = '2024-01-01' ``` -Это не сработает, потому что Mongo не преобразует строку в `Date`, так что вам нужно выполнить преобразование вручную: +Это не сработает, потому что Mongo не приведёт строку к типу `Date`, поэтому вам нужно сделать это вручную: ```sql SELECT * FROM mongo_table WHERE date = '2024-01-01'::Date OR date = toDate('2024-01-01') @@ -151,11 +157,12 @@ SELECT * FROM mongo_table WHERE date = '2024-01-01'::Date OR date = toDate('2024 ::: + ## Пример использования {#usage-example} Предположим, что в MongoDB загружен набор данных [sample_mflix](https://www.mongodb.com/docs/atlas/sample-data/sample-mflix). -Создайте таблицу в ClickHouse, которая позволит читать данные из коллекции в MongoDB: +Создайте таблицу в ClickHouse, которая позволит читать данные из коллекции MongoDB: ```sql CREATE TABLE sample_mflix_table @@ -185,10 +192,10 @@ SELECT count() FROM sample_mflix_table ``` ```sql --- JSONExtractString не может быть передан в MongoDB +-- JSONExtractString cannot be pushed down to MongoDB SET mongodb_throw_on_unsupported_query = 0; --- Найти все сиквелы «Назад в будущее» с рейтингом > 7.5 +-- Find all 'Back to the Future' sequels with rating > 7.5 SELECT title, plot, genres, directors, released FROM sample_mflix_table WHERE title IN ('Back to the Future', 'Back to the Future Part II', 'Back to the Future Part III') AND toFloat32(JSONExtractString(imdb, 'rating')) > 7.5 @@ -200,7 +207,7 @@ FORMAT Vertical; Row 1: ────── title: Back to the Future -plot: Молодой человек случайно переносится на 30 лет в прошлое на машине времени DeLorean, изобретённой его другом, доктором Эмметом Брауном, и должен сделать так, чтобы его родители-старшеклассники встретились и полюбили друг друга, иначе он сам перестанет существовать. +plot: A young man is accidentally sent 30 years into the past in a time-traveling DeLorean invented by his friend, Dr. Emmett Brown, and must make sure his high-school-age parents unite in order to save his own existence. genres: ['Adventure','Comedy','Sci-Fi'] directors: ['Robert Zemeckis'] released: 1985-07-03 @@ -208,14 +215,14 @@ released: 1985-07-03 Row 2: ────── title: Back to the Future Part II -plot: После визита в 2015 год Марти МакФлай должен снова отправиться в 1955 год, чтобы предотвратить катастрофические изменения в 1985 году... не вмешиваясь при этом в события своего первого путешествия. +plot: After visiting 2015, Marty McFly must repeat his visit to 1955 to prevent disastrous changes to 1985... without interfering with his first trip. genres: ['Action','Adventure','Comedy'] directors: ['Robert Zemeckis'] released: 1989-11-22 ``` ```sql --- Найти топ-3 фильмов по книгам Кормака Маккарти +-- Find top 3 movies based on Cormac McCarthy's books SELECT title, toFloat32(JSONExtractString(imdb, 'rating')) AS rating FROM sample_mflix_table WHERE arrayExists(x -> x LIKE 'Cormac McCarthy%', writers) @@ -224,14 +231,15 @@ LIMIT 3; ``` ```text - ┌─название───────────────┬─рейтинг┐ -1. │ Старикам тут не место │ 8.1 │ -2. │ Закатный экспресс │ 7.4 │ -3. │ Дорога │ 7.3 │ + ┌─title──────────────────┬─rating─┐ +1. │ No Country for Old Men │ 8.1 │ +2. │ The Sunset Limited │ 7.4 │ +3. │ The Road │ 7.3 │ └────────────────────────┴────────┘ ``` -## Диагностика и устранение неполадок {#troubleshooting} -Сгенерированный запрос MongoDB можно увидеть в журналах с уровнем DEBUG. -Подробности реализации приведены в документации [mongocxx](https://github.com/mongodb/mongo-cxx-driver) и [mongoc](https://github.com/mongodb/mongo-c-driver). +## Устранение неполадок {#troubleshooting} +Вы можете увидеть сгенерированный запрос MongoDB в логах на уровне DEBUG. + +Подробности реализации можно найти в документации по [mongocxx](https://github.com/mongodb/mongo-cxx-driver) и [mongoc](https://github.com/mongodb/mongo-c-driver). diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md index 9e36123f057..0982a784c01 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md @@ -1,6 +1,6 @@ --- description: 'Этот движок обеспечивает интеграцию с экосистемой Amazon S3. Аналогичен - движку HDFS, но предоставляет специальные возможности для S3.' + движку HDFS, но предоставляет специализированные функции для S3.' sidebar_label: 'S3' sidebar_position: 180 slug: /engines/table-engines/integrations/s3 @@ -8,9 +8,13 @@ title: 'Табличный движок S3' doc_type: 'reference' --- -# Движок таблицы S3 {#s3-table-engine} -Этот движок обеспечивает интеграцию с экосистемой [Amazon S3](https://aws.amazon.com/s3/). Он похож на движок [HDFS](/engines/table-engines/integrations/hdfs), но поддерживает специфичные для S3 возможности. + +# Табличный движок S3 {#s3-table-engine} + +Этот движок обеспечивает интеграцию с экосистемой [Amazon S3](https://aws.amazon.com/s3/). Он похож на движок [HDFS](/engines/table-engines/integrations/hdfs), но реализует ряд возможностей, специфичных для S3. + + ## Пример {#example} @@ -31,6 +35,7 @@ SELECT * FROM s3_engine_table LIMIT 2; └──────┴───────┘ ``` + ## Создайте таблицу {#creating-a-table} ```sql @@ -42,20 +47,20 @@ CREATE TABLE s3_engine_table (name String, value UInt32) ### Параметры движка {#parameters} -* `path` — URL бакета с путем к файлу. В режиме только для чтения поддерживаются следующие шаблоны: `*`, `**`, `?`, `{abc,def}` и `{N..M}`, где `N`, `M` — числа, `'abc'`, `'def'` — строки. Дополнительную информацию см. [ниже](#wildcards-in-path). -* `NOSIGN` — Если это ключевое слово указано вместо учетных данных, все запросы не будут подписываться. -* `format` — [Формат](/sql-reference/formats#formats-overview) файла. -* `aws_access_key_id`, `aws_secret_access_key` — Долгосрочные учетные данные пользователя аккаунта [AWS](https://aws.amazon.com/). Их можно использовать для аутентификации запросов. Параметр необязателен. Если учетные данные не указаны, они берутся из конфигурационного файла. Дополнительную информацию см. в разделе [Использование S3 для хранения данных](../mergetree-family/mergetree.md#table_engine-mergetree-s3). -* `compression` — Тип сжатия. Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. Параметр необязателен. По умолчанию тип сжатия автоматически определяется по расширению файла. -* `partition_strategy` – Варианты: `WILDCARD` или `HIVE`. `WILDCARD` требует наличия `{_partition_id}` в пути, который заменяется ключом партиционирования. `HIVE` не допускает шаблоны, предполагает, что путь — это корень таблицы, и генерирует директории партиций в стиле Hive с идентификаторами Snowflake в качестве имен файлов и форматом файла в качестве расширения. По умолчанию используется `WILDCARD`. -* `partition_columns_in_data_file` — Используется только со стратегией партиционирования `HIVE`. Указывает ClickHouse, следует ли ожидать, что столбцы партиционирования будут записаны в файл данных. По умолчанию `false`. -* `storage_class_name` — Варианты: `STANDARD` или `INTELLIGENT_TIERING`, позволяют указать [AWS S3 Intelligent Tiering](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/). +* `path` — URL бакета с путем к файлу. Поддерживает следующие шаблоны (wildcards) в режиме только для чтения: `*`, `**`, `?`, `{abc,def}` и `{N..M}`, где `N`, `M` — числа, `'abc'`, `'def'` — строки. Дополнительную информацию см. [ниже](#wildcards-in-path). +* `NOSIGN` — если это ключевое слово указано вместо учетных данных, все запросы не подписываются. +* `format` — [формат](/sql-reference/formats#formats-overview) файла. +* `aws_access_key_id`, `aws_secret_access_key` — долгосрочные учетные данные пользователя аккаунта [AWS](https://aws.amazon.com/). Вы можете использовать их для аутентификации своих запросов. Параметр необязательный. Если учетные данные не указаны, они берутся из конфигурационного файла. Дополнительную информацию см. в разделе [Использование S3 для хранения данных](../mergetree-family/mergetree.md#table_engine-mergetree-s3). +* `compression` — тип сжатия. Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. Параметр необязательный. По умолчанию тип сжатия автоматически определяется по расширению файла. +* `partition_strategy` – варианты: `WILDCARD` или `HIVE`. `WILDCARD` требует наличия `{_partition_id}` в пути, который заменяется ключом партиционирования. `HIVE` не допускает шаблонов, предполагает, что путь — это корень таблицы, и создает каталоги партиций в стиле Hive с идентификаторами Snowflake в качестве имен файлов и форматом файла в качестве расширения. По умолчанию используется `WILDCARD`. +* `partition_columns_in_data_file` — используется только со стратегией партиционирования `HIVE`. Сообщает ClickHouse, следует ли ожидать, что столбцы партиции будут записаны в файл данных. По умолчанию `false`. +* `storage_class_name` — варианты: `STANDARD` или `INTELLIGENT_TIERING`, позволяют указать [AWS S3 Intelligent Tiering](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/). ### Кэш данных {#data-cache} Движок таблиц `S3` поддерживает кэширование данных на локальном диске. -Параметры конфигурации файлового кэша и примеры использования приведены в этом [разделе](/operations/storing-data.md/#using-local-cache). -Кэширование выполняется в зависимости от пути и ETag объекта хранилища, поэтому ClickHouse не будет читать устаревшую версию кэша. +Параметры конфигурации файлового кэша и примеры использования см. в этом [разделе](/operations/storing-data.md/#using-local-cache). +Кэширование выполняется в зависимости от пути и ETag объекта хранилища, поэтому ClickHouse не будет использовать устаревшую версию кэша. Чтобы включить кэширование, используйте настройки `filesystem_cache_name = ''` и `enable_filesystem_cache = 1`. @@ -65,7 +70,7 @@ FROM s3('http://minio:10000/clickhouse//test_3.csv', 'minioadmin', 'minioadminpa SETTINGS filesystem_cache_name = 'cache_for_s3', enable_filesystem_cache = 1; ``` -Существует два способа задать кэш в конфигурационном файле. +Есть два способа задать кэш в конфигурационном файле. 1. Добавьте следующий раздел в конфигурационный файл ClickHouse: @@ -73,27 +78,28 @@ SETTINGS filesystem_cache_name = 'cache_for_s3', enable_filesystem_cache = 1; - путь к каталогу кэша + path to cache directory 10Gi ``` -2. повторно используйте конфигурацию кеша (и, следовательно, хранилище кеша) из секции ClickHouse `storage_configuration`, [описанной здесь](/operations/storing-data.md/#using-local-cache) +2. повторно использовать конфигурацию кэша (и, соответственно, хранилище кэша) из секции ClickHouse `storage_configuration`, [описанной здесь](/operations/storing-data.md/#using-local-cache) ### PARTITION BY {#partition-by} -`PARTITION BY` — необязательный параметр. В большинстве случаев вам не нужен ключ партиционирования, а если он все же требуется, как правило, не нужен ключ с более мелкой детализацией, чем по месяцам. Партиционирование не ускоряет запросы (в отличие от выражения ORDER BY). Никогда не используйте слишком мелкое партиционирование. Не делите данные на партиции по идентификаторам или именам клиентов (вместо этого сделайте идентификатор или имя клиента первым столбцом в выражении ORDER BY). +`PARTITION BY` — необязательный параметр. В большинстве случаев вам не нужен ключ партиционирования, а если он и нужен, то, как правило, нет необходимости делать его более детализированным, чем помесячный. Партиционирование не ускоряет запросы (в отличие от выражения ORDER BY). Никогда не используйте слишком детализированное партиционирование. Не делите данные на партиции по идентификаторам или именам клиентов (вместо этого сделайте идентификатор или имя клиента первым столбцом в выражении ORDER BY). -Для партиционирования по месяцам используйте выражение `toYYYYMM(date_column)`, где `date_column` — это столбец с датой типа [Date](/sql-reference/data-types/date.md). Имена партиций здесь имеют формат `"YYYYMM"`. +Для партиционирования по месяцам используйте выражение `toYYYYMM(date_column)`, где `date_column` — это столбец с датой типа [Date](/sql-reference/data-types/date.md). Имена партиций в этом случае имеют формат `"YYYYMM"`. #### Стратегия партиционирования {#partition-strategy} -`WILDCARD` (по умолчанию): заменяет подстановочный шаблон `{_partition_id}` в пути к файлу фактическим ключом партиционирования. Чтение не поддерживается. +`WILDCARD` (по умолчанию): заменяет шаблон `{_partition_id}` в пути к файлу фактическим ключом партиции. Чтение не поддерживается. + -`HIVE` реализует партиционирование в стиле Hive для чтения и записи. Чтение реализовано с использованием рекурсивного glob-шаблона, что эквивалентно запросу `SELECT * FROM s3('table_root/**.parquet')`. -При записи файлы создаются в следующем формате: `//.`. +`HIVE` реализует разбиение на партиции в стиле Hive для операций чтения и записи. Чтение выполняется с использованием рекурсивного шаблона glob, что эквивалентно `SELECT * FROM s3('table_root/**.parquet')`. +При записи файлы генерируются в следующем формате: `//.`. Примечание: при использовании стратегии партиционирования `HIVE` настройка `use_hive_partitioning` не влияет на поведение. @@ -134,23 +140,24 @@ arthur :) select _path, * from t_03363_parquet; └────────────────────────────────────────────────────────────────────────────┴──────┴─────────┴─────────┘ ``` -### Запросы к секционированным данным {#querying-partitioned-data} +### Выполнение запросов к разбиённым данным {#querying-partitioned-data} -В этом примере используется [рецепт для docker compose](https://github.com/ClickHouse/examples/tree/5fdc6ff72f4e5137e23ea075c88d3f44b0202490/docker-compose-recipes/recipes/ch-and-minio-S3), который интегрирует ClickHouse и MinIO. Вы сможете воспроизвести те же запросы, используя S3, заменив endpoint и значения аутентификации. +В этом примере используется [docker compose recipe](https://github.com/ClickHouse/examples/tree/5fdc6ff72f4e5137e23ea075c88d3f44b0202490/docker-compose-recipes/recipes/ch-and-minio-S3), который интегрирует ClickHouse и MinIO. Вы можете воспроизвести те же запросы, используя S3, просто заменив endpoint и параметры аутентификации. + +Обратите внимание, что endpoint S3 в конфигурации `ENGINE` использует параметр `{_partition_id}` как часть объекта S3 (имени файла) и что запросы SELECT выполняются по этим получившимся именам объектов (например, `test_3.csv`). -Обратите внимание, что endpoint S3 в конфигурации `ENGINE` использует токен-параметр `{_partition_id}` как часть объекта S3 (имени файла) и что запросы SELECT выполняются по соответствующим именам объектов (например, `test_3.csv`). :::note -Как показано в примере, выполнение запросов к S3-таблицам, разбитым на партиции, -в настоящее время напрямую не поддерживается, но может быть реализовано путём запроса отдельных партиций -с использованием табличной функции S3. +Как показано в примере, выполнение запросов к партиционированным таблицам S3 +на данный момент напрямую не поддерживается, но может быть реализовано +путём выполнения запросов к отдельным партициям с использованием `S3` table function. -Основной сценарий использования записи +Основной сценарий записи партиционированных данных в S3 — последующая передача этих данных в другую -систему ClickHouse (например, при миграции с локальных систем в ClickHouse -Cloud). Поскольку наборы данных ClickHouse часто очень велики, а надёжность -сетевого соединения иногда оставляет желать лучшего, имеет смысл передавать наборы -данных частями, то есть использовать партиционированную запись. +систему ClickHouse (например, при переносе с on‑prem систем в ClickHouse +Cloud). Поскольку наборы данных ClickHouse часто очень большие, а +надёжность сети иногда оставляет желать лучшего, имеет смысл передавать наборы данных +по частям, то есть использовать партиционированную запись. ::: #### Создайте таблицу {#create-the-table} @@ -171,7 +178,7 @@ ENGINE = S3( PARTITION BY column3 ``` -#### Вставка данных {#insert-data} +#### Добавление данных {#insert-data} ```sql INSERT INTO p VALUES (1, 2, 3), (3, 2, 1), (78, 43, 45) @@ -180,7 +187,7 @@ INSERT INTO p VALUES (1, 2, 3), (3, 2, 1), (78, 43, 45) #### Выборка из партиции 3 {#select-from-partition-3} :::tip -Этот запрос использует табличную функцию s3 +Этот запрос использует табличную функцию S3 ::: ```sql @@ -194,7 +201,7 @@ FROM s3('http://minio:10000/clickhouse//test_3.csv', 'minioadmin', 'minioadminpa └────┴────┴────┘ ``` -#### Выбор данных из партиции 1 {#select-from-partition-1} +#### Выборка данных из партиции 1 {#select-from-partition-1} ```sql SELECT * @@ -207,7 +214,7 @@ FROM s3('http://minio:10000/clickhouse//test_1.csv', 'minioadmin', 'minioadminpa └────┴────┴────┘ ``` -#### Выбор из партиции 45 {#select-from-partition-45} +#### Выборка данных из партиции 45 {#select-from-partition-45} ```sql SELECT * @@ -222,70 +229,77 @@ FROM s3('http://minio:10000/clickhouse//test_45.csv', 'minioadmin', 'minioadminp #### Ограничение {#limitation} -Логично попробовать выполнить `Select * from p`, но, как отмечалось выше, этот запрос завершится с ошибкой; используйте приведённый выше запрос. +Вполне естественно попытаться выполнить `Select * from p`, но, как уже отмечалось выше, этот запрос завершится с ошибкой. Используйте приведённый выше запрос. ```sql SELECT * FROM p ``` ```response -Получено исключение от сервера (версия 23.4.1): -Код: 48. DB::Exception: Получено от localhost:9000. DB::Exception: Чтение из партиционированного хранилища S3 еще не реализовано. (NOT_IMPLEMENTED) +Received exception from server (version 23.4.1): +Code: 48. DB::Exception: Received from localhost:9000. DB::Exception: Reading from a partitioned S3 storage is not implemented yet. (NOT_IMPLEMENTED) ``` + ## Вставка данных {#inserting-data} -Обратите внимание, что строки можно вставлять только в новые файлы. Здесь нет циклов слияния или операций разбиения файлов. После того как файл записан, последующие вставки завершатся с ошибкой. Чтобы этого избежать, вы можете использовать настройки `s3_truncate_on_insert` и `s3_create_new_file_on_insert`. Подробнее см. [здесь](/integrations/s3#inserting-data). +Обратите внимание, что строки можно вставлять только в новые файлы. Операции слияния или разбиения файлов не выполняются. После записи файла последующие вставки будут завершаться с ошибкой. Чтобы этого избежать, вы можете использовать настройки `s3_truncate_on_insert` и `s3_create_new_file_on_insert`. Подробнее см. [здесь](/integrations/s3#inserting-data). + + ## Виртуальные столбцы {#virtual-columns} -- `_path` — путь к файлу. Тип: `LowCardinality(String)`. -- `_file` — имя файла. Тип: `LowCardinality(String)`. -- `_size` — размер файла в байтах. Тип: `Nullable(UInt64)`. Если размер неизвестен, значение — `NULL`. -- `_time` — время последнего изменения файла. Тип: `Nullable(DateTime)`. Если время неизвестно, значение — `NULL`. -- `_etag` — ETag файла. Тип: `LowCardinality(String)`. Если значение ETag неизвестно, значение — `NULL`. -- `_tags` — теги файла. Тип: `Map(String, String)`. Если тегов нет, значение — пустая карта `{}`. +- `_path` — Путь к файлу. Тип: `LowCardinality(String)`. +- `_file` — Имя файла. Тип: `LowCardinality(String)`. +- `_size` — Размер файла в байтах. Тип: `Nullable(UInt64)`. Если размер неизвестен, значение — `NULL`. +- `_time` — Время последнего изменения файла. Тип: `Nullable(DateTime)`. Если время неизвестно, значение — `NULL`. +- `_etag` — ETag файла. Тип: `LowCardinality(String)`. Если ETag неизвестен, значение — `NULL`. +- {_tags} — Теги файла. Тип: `Map(String, String)`. Если теги отсутствуют, значение — пустая карта `{}`. + +Для получения дополнительной информации о виртуальных столбцах см. [здесь](../../../engines/table-engines/index.md#table_engines-virtual_columns). + -Для получения дополнительной информации о виртуальных столбцах см. [здесь](../../../engines/table-engines/index.md#table_engines-virtual_columns){}`. -## Детали реализации {#implementation-details} +## Подробности реализации {#implementation-details} -- Операции чтения и записи могут выполняться параллельно. +- Чтение и запись могут выполняться параллельно - Не поддерживаются: - Операции `ALTER` и `SELECT...SAMPLE`. - Индексы. - - Репликация [zero-copy](../../../operations/storing-data.md#zero-copy) возможна, но не поддерживается. + - [Zero-copy](../../../operations/storing-data.md#zero-copy) репликация возможна, но не поддерживается. - :::note Репликация zero-copy не готова для промышленной эксплуатации - Репликация zero-copy по умолчанию отключена в ClickHouse, начиная с версии 22.8. Не рекомендуется использовать эту функцию в промышленной эксплуатации. + :::note Zero-copy репликация не готова для промышленной эксплуатации + Zero-copy репликация по умолчанию отключена в версиях ClickHouse 22.8 и выше. Эта функция не рекомендуется для использования в производственных средах. ::: -## Подстановочные шаблоны в пути {#wildcards-in-path} -Аргумент `path` может задавать несколько файлов, используя подстановочные шаблоны в стиле bash. Для обработки файл должен существовать и полностью совпадать с шаблоном пути. Список файлов определяется во время выполнения `SELECT` (а не в момент `CREATE`). -* `*` — Заменяет любое количество любых символов, кроме `/`, включая пустую строку. -* `**` — Заменяет любое количество любых символов, включая `/`, включая пустую строку. -* `?` — Заменяет ровно один любой символ. -* `{some_string,another_string,yet_another_one}` — Заменяет любую из строк `'some_string', 'another_string', 'yet_another_one'`. -* `{N..M}` — Заменяет любое число в диапазоне от N до M включительно. N и M могут иметь ведущие нули, например `000..078`. +## Подстановочные символы в `path` {#wildcards-in-path} + +Аргумент `path` может указывать на несколько файлов, используя подстановочные символы в стиле bash. Для обработки файл должен существовать и полностью соответствовать шаблону пути. Список файлов определяется во время выполнения `SELECT` (а не в момент `CREATE`). + +* `*` — Подставляет любое количество любых символов, кроме `/`, включая пустую строку. +* `**` — Подставляет любое количество любых символов, включая `/`, включая пустую строку. +* `?` — Подставляет любой одиночный символ. +* `{some_string,another_string,yet_another_one}` — Подставляет любую из строк `'some_string', 'another_string', 'yet_another_one'`. +* `{N..M}` — Подставляет любое число в диапазоне от N до M включительно. N и M могут содержать ведущие нули, например `000..078`. Конструкции с `{}` аналогичны табличной функции [remote](../../../sql-reference/table-functions/remote.md). :::note -Если перечень файлов содержит диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками отдельно для каждой цифры или используйте `?`. +Если список файлов содержит числовые диапазоны с ведущими нулями, используйте конструкцию с фигурными скобками отдельно для каждой цифры или используйте `?`. ::: -**Пример с подстановочными шаблонами 1** +**Пример с подстановочными символами 1** -Создадим таблицу с файлами `file-000.csv`, `file-001.csv`, ... , `file-999.csv`: +Создайте таблицу, использующую файлы с именами `file-000.csv`, `file-001.csv`, ... , `file-999.csv`: ```sql CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/my_folder/file-{000..999}.csv', 'CSV'); ``` -**Пример с подстановочными знаками 2** +**Пример с подстановочными символами 2** Предположим, у нас есть несколько файлов в формате CSV со следующими URI в S3: @@ -296,7 +310,7 @@ CREATE TABLE big_table (name String, value UInt32) * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_2.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_2.csv)' * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_3.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_3.csv)' -Есть несколько способов создать таблицу, включающую все шесть файлов: +Существует несколько способов создать таблицу, включающую все шесть файлов: 1. Указать диапазон суффиксов имён файлов: @@ -305,63 +319,68 @@ CREATE TABLE table_with_range (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/some_file_{1..3}', 'CSV'); ``` -2. Возьмите все файлы с префиксом `some_file_` (в обеих папках не должно быть каких-либо лишних файлов с таким префиксом): +2. Возьмите все файлы с префиксом `some_file_` (в обоих каталогах не должно быть дополнительных файлов с таким префиксом): ```sql CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/some_file_?', 'CSV'); ``` -3. Возьмите все файлы из обеих папок (все файлы должны соответствовать формату и схеме, описанным в запросе): +3. Соберите все файлы из обеих папок (все файлы должны соответствовать формату и схеме, описанным в запросе): ```sql CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/*', 'CSV'); ``` -## Настройки хранилища {#storage-settings} -- [s3_truncate_on_insert](/operations/settings/settings.md#s3_truncate_on_insert) - позволяет обрезать файл перед вставкой данных в него. По умолчанию отключено. -- [s3_create_new_file_on_insert](/operations/settings/settings.md#s3_create_new_file_on_insert) - позволяет создавать новый файл при каждой вставке, если формат имеет суффикс. По умолчанию отключено. -- [s3_skip_empty_files](/operations/settings/settings.md#s3_skip_empty_files) - позволяет пропускать пустые файлы при чтении. По умолчанию включено. +## Параметры хранения {#storage-settings} + +- [s3_truncate_on_insert](/operations/settings/settings.md#s3_truncate_on_insert) — позволяет усекать файл перед вставкой в него. По умолчанию отключено. +- [s3_create_new_file_on_insert](/operations/settings/settings.md#s3_create_new_file_on_insert) — позволяет создавать новый файл при каждой вставке, если формат имеет суффикс. По умолчанию отключено. +- [s3_skip_empty_files](/operations/settings/settings.md#s3_skip_empty_files) — позволяет пропускать пустые файлы при чтении. По умолчанию включено. + + + +## Параметры, связанные с S3 {#settings} -## Настройки, связанные с S3 {#settings} +Следующие настройки могут быть заданы перед выполнением запроса или включены в файл конфигурации. -Следующие настройки могут быть заданы перед выполнением запроса или помещены в файл конфигурации. +- `s3_max_single_part_upload_size` — максимальный размер объекта для загрузки с использованием однократной (singlepart) загрузки в S3. Значение по умолчанию — `32Mb`. +- `s3_min_upload_part_size` — минимальный размер части для загрузки при многокомпонентной (multipart) загрузке [S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). Значение по умолчанию — `16Mb`. +- `s3_max_redirects` — максимальное число допустимых перенаправлений (redirects) S3. Значение по умолчанию — `10`. +- `s3_single_read_retries` — максимальное число попыток при одиночном чтении. Значение по умолчанию — `4`. +- `s3_max_put_rps` — максимальное число запросов PUT в секунду до включения троттлинга. Значение по умолчанию — `0` (без ограничений). +- `s3_max_put_burst` — максимальное количество запросов, которые могут быть выполнены одновременно до достижения лимита запросов в секунду. По умолчанию (значение `0`) равно `s3_max_put_rps`. +- `s3_max_get_rps` — максимальное число запросов GET в секунду до включения троттлинга. Значение по умолчанию — `0` (без ограничений). +- `s3_max_get_burst` — максимальное количество запросов, которые могут быть выполнены одновременно до достижения лимита запросов в секунду. По умолчанию (значение `0`) равно `s3_max_get_rps`. +- `s3_upload_part_size_multiply_factor` — умножать `s3_min_upload_part_size` на этот коэффициент каждый раз, когда `s3_multiply_parts_count_threshold` частей были загружены одним действием записи в S3. Значение по умолчанию — `2`. +- `s3_upload_part_size_multiply_parts_count_threshold` — каждый раз, когда в S3 загружается указанное количество частей, `s3_min_upload_part_size` умножается на `s3_upload_part_size_multiply_factor`. Значение по умолчанию — `500`. +- `s3_max_inflight_parts_for_one_file` — ограничивает количество запросов PUT, которые могут выполняться параллельно для одного объекта. Это значение следует ограничивать. Значение `0` означает отсутствие ограничений. Значение по умолчанию — `20`. Каждая часть «в полёте» имеет буфер размером `s3_min_upload_part_size` для первых `s3_upload_part_size_multiply_factor` частей и больше, когда файл достаточно большой, см. `upload_part_size_multiply_factor`. При настройках по умолчанию один загружаемый файл использует не более `320Mb` для файла размером менее `8G`. Потребление больше для более крупного файла. -- `s3_max_single_part_upload_size` — Максимальный размер объекта для загрузки в S3 одним запросом (single-part upload). Значение по умолчанию — `32 МБ`. -- `s3_min_upload_part_size` — Минимальный размер части, загружаемой при многокомпонентной загрузке ([S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)). Значение по умолчанию — `16 МБ`. -- `s3_max_redirects` — Максимальное количество переходов при перенаправлениях S3. Значение по умолчанию — `10`. -- `s3_single_read_retries` — Максимальное количество попыток однократного чтения. Значение по умолчанию — `4`. -- `s3_max_put_rps` — Максимальная частота запросов PUT в секунду до начала ограничения (throttling). Значение по умолчанию — `0` (без ограничений). -- `s3_max_put_burst` — Максимальное количество запросов, которые могут быть выполнены одновременно до достижения лимита запросов в секунду. По умолчанию (значение `0`) равно `s3_max_put_rps`. -- `s3_max_get_rps` — Максимальная частота запросов GET в секунду до начала ограничения. Значение по умолчанию — `0` (без ограничений). -- `s3_max_get_burst` — Максимальное количество запросов, которые могут быть выполнены одновременно до достижения лимита запросов в секунду. По умолчанию (значение `0`) равно `s3_max_get_rps`. -- `s3_upload_part_size_multiply_factor` — Умножать `s3_min_upload_part_size` на этот коэффициент каждый раз, когда было загружено `s3_multiply_parts_count_threshold` частей из одной операции записи в S3. Значение по умолчанию — `2`. -- `s3_upload_part_size_multiply_parts_count_threshold` — Каждый раз, когда в S3 загружено такое количество частей, `s3_min_upload_part_size` умножается на `s3_upload_part_size_multiply_factor`. Значение по умолчанию — `500`. -- `s3_max_inflight_parts_for_one_file` — Ограничивает количество запросов PUT, которые могут выполняться параллельно для одного объекта. Рекомендуется ограничить это значение. Значение `0` означает отсутствие ограничений. Значение по умолчанию — `20`. Каждая активная (in-flight) часть имеет буфер размером `s3_min_upload_part_size` для первых `s3_upload_part_size_multiply_factor` частей и больше, когда файл достаточно большой, см. `upload_part_size_multiply_factor`. При настройках по умолчанию один загружаемый файл потребляет не более `320 МБ` памяти для файла размером менее `8 ГБ`. Для более крупных файлов потребление больше. +Соображения безопасности: если вредоносный пользователь может указывать произвольные S3 URL, параметр `s3_max_redirects` должен быть установлен в ноль, чтобы избежать атак [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery), либо в конфигурации сервера должен быть указан `remote_host_filter`. -Соображения безопасности: если злоумышленник может указывать произвольные URL-адреса S3, параметр `s3_max_redirects` должен быть установлен в ноль, чтобы избежать атак [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery), либо в конфигурации сервера должен быть задан `remote_host_filter`. -## Параметры для отдельных endpoint {#endpoint-settings} + +## Параметры на основе endpoint {#endpoint-settings} Следующие параметры могут быть указаны в конфигурационном файле для заданного endpoint (который будет сопоставляться по точному префиксу URL): -* `endpoint` — Задает префикс endpoint. Обязательный параметр. -* `access_key_id` и `secret_access_key` — Задают учетные данные для использования с заданным endpoint. Необязательные параметры. -* `use_environment_credentials` — Если установлено в `true`, клиент S3 попытается получить учетные данные из переменных окружения и метаданных [Amazon EC2](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud) для заданного endpoint. Необязательный параметр, значение по умолчанию — `false`. -* `region` — Задает имя региона S3. Необязательный параметр. -* `use_insecure_imds_request` — Если установлено в `true`, клиент S3 будет использовать небезопасный IMDS-запрос при получении учетных данных из метаданных Amazon EC2. Необязательный параметр, значение по умолчанию — `false`. -* `expiration_window_seconds` — Дополнительный интервал при проверке, истекли ли учетные данные с ограниченным сроком действия. Необязательный параметр, значение по умолчанию — `120`. -* `no_sign_request` - Игнорирует все учетные данные, чтобы запросы не подписывались. Полезно для доступа к публичным бакетам. -* `header` — Добавляет указанный HTTP-заголовок к запросу к заданному endpoint. Необязательный параметр, может быть указан несколько раз. -* `access_header` - Добавляет указанный HTTP-заголовок к запросу к заданному endpoint в случаях, когда нет других учетных данных из какого-либо другого источника. -* `server_side_encryption_customer_key_base64` — Если указан, будут установлены необходимые заголовки для доступа к объектам S3 с шифрованием SSE-C. Необязательный параметр. -* `server_side_encryption_kms_key_id` - Если указан, будут установлены необходимые заголовки для доступа к объектам S3 с [шифрованием SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html). Если указана пустая строка, будет использован управляемый AWS ключ S3. Необязательный параметр. -* `server_side_encryption_kms_encryption_context` - Если указан вместе с `server_side_encryption_kms_key_id`, будет установлен соответствующий заголовок контекста шифрования для SSE-KMS. Необязательный параметр. -* `server_side_encryption_kms_bucket_key_enabled` - Если указан вместе с `server_side_encryption_kms_key_id`, будет установлен заголовок для включения ключей бакета S3 для SSE-KMS. Необязательный параметр, может быть `true` или `false`, по умолчанию не задан (соответствует настройке на уровне бакета). -* `max_single_read_retries` — Максимальное количество попыток при одном чтении. Значение по умолчанию — `4`. Необязательный параметр. -* `max_put_rps`, `max_put_burst`, `max_get_rps` и `max_get_burst` - Настройки ограничения скорости (см. описание выше), применяемые к конкретному endpoint вместо настроек на запрос. Необязательные параметры. +* `endpoint` — Указывает префикс endpoint. Обязательный параметр. +* `access_key_id` и `secret_access_key` — Указывают учетные данные для использования с данным endpoint. Необязательные параметры. +* `use_environment_credentials` — Если установлено значение `true`, клиент S3 попытается получить учетные данные из переменных окружения и метаданных [Amazon EC2](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud) для данного endpoint. Необязательный параметр, значение по умолчанию — `false`. +* `region` — Указывает имя региона S3. Необязательный параметр. +* `use_insecure_imds_request` — Если установлено значение `true`, клиент S3 будет использовать небезопасный IMDS-запрос при получении учетных данных из метаданных Amazon EC2. Необязательный параметр, значение по умолчанию — `false`. +* `expiration_window_seconds` — Льготный период при проверке, истекли ли учетные данные с ограниченным сроком действия. Необязательный параметр, значение по умолчанию — `120`. +* `no_sign_request` — Игнорировать все учетные данные, чтобы запросы не подписывались. Полезно для доступа к публичным бакетам. +* `header` — Добавляет указанный HTTP-заголовок к запросу к данному endpoint. Необязательный параметр, может быть указан несколько раз. +* `access_header` — Добавляет указанный HTTP-заголовок к запросу к данному endpoint в случаях, когда нет других учетных данных из другого источника. +* `server_side_encryption_customer_key_base64` — Если указано, будут установлены необходимые заголовки для доступа к объектам S3 с шифрованием SSE-C. Необязательный параметр. +* `server_side_encryption_kms_key_id` — Если указано, будут установлены необходимые заголовки для доступа к объектам S3 с [шифрованием SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html). Если указана пустая строка, будет использован управляемый AWS ключ S3. Необязательный параметр. +* `server_side_encryption_kms_encryption_context` — Если указано вместе с `server_side_encryption_kms_key_id`, будет установлен соответствующий заголовок контекста шифрования для SSE-KMS. Необязательный параметр. +* `server_side_encryption_kms_bucket_key_enabled` — Если указано вместе с `server_side_encryption_kms_key_id`, будет установлен заголовок для включения ключей бакета S3 для SSE-KMS. Необязательный параметр, может быть `true` или `false`, по умолчанию не задан (соответствует настройке на уровне бакета). +* `max_single_read_retries` — Максимальное количество попыток при одиночном чтении. Значение по умолчанию — `4`. Необязательный параметр. +* `max_put_rps`, `max_put_burst`, `max_get_rps` и `max_get_burst` — Параметры ограничения скорости (см. описание выше), которые используются для конкретного endpoint вместо ограничения на уровне запроса. Необязательные параметры. **Пример:** @@ -386,15 +405,16 @@ CREATE TABLE table_with_asterisk (name String, value UInt32) ``` + ## Работа с архивами {#working-with-archives} -Предположим, что у нас есть несколько файлов-архивов со следующими URI в S3: +Предположим, у нас есть несколько архивных файлов со следующими URI в S3: * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-10.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-10.csv.zip)' * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-11.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-11.csv.zip)' * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-12.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-12.csv.zip)' -Извлечение данных из этих архивов можно выполнять с помощью синтаксиса ::. Глоб-шаблоны (globs) могут использоваться как в части URL, так и в части после :: (отвечающей за имя файла внутри архива). +Извлекать данные из этих архивов можно с помощью конструкции ::. Шаблоны glob могут использоваться как в части URL, так и в части после ::, которая отвечает за имя файла внутри архива. ```sql SELECT * @@ -408,13 +428,14 @@ ClickHouse поддерживает три формата архивов: ZIP TAR 7Z -Архивы ZIP и TAR могут считываться из любого поддерживаемого хранилища, тогда как архивы 7Z читаются только из локальной файловой системы, на которой установлен ClickHouse. +Архивы ZIP и TAR могут быть прочитаны из любого поддерживаемого хранилища, а архивы 7Z — только из локальной файловой системы узла, где установлен ClickHouse. ::: -## Доступ к общедоступным бакетам {#accessing-public-buckets} + +## Доступ к публичным бакетам {#accessing-public-buckets} ClickHouse пытается получить учетные данные из множества различных источников. -Иногда это может приводить к проблемам при доступе к некоторым общедоступным бакетам, в результате чего клиент возвращает код ошибки `403`. +Иногда это может приводить к проблемам при обращении к некоторым публичным бакетам, в результате чего клиент возвращает ошибку `403`. Этой проблемы можно избежать, используя ключевое слово `NOSIGN`, которое заставляет клиент игнорировать все учетные данные и не подписывать запросы. ```sql @@ -422,9 +443,12 @@ CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/aapl_stock.csv', NOSIGN, 'CSVWithNames'); ``` + ## Оптимизация производительности {#optimizing-performance} -Подробнее об оптимизации производительности функции s3 см. в [нашем подробном руководстве](/integrations/s3/performance). +Подробные сведения об оптимизации производительности функции s3 см. в [нашем подробном руководстве](/integrations/s3/performance). + + ## См. также {#see-also} diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md index b8090eb3032..bf52209f72e 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md @@ -64,7 +64,7 @@ SETTINGS mode = 'unordered'; ``` -Использование коллекций с именами: +Использование именованных коллекций: ```xml @@ -85,9 +85,10 @@ SETTINGS mode = 'ordered'; ``` + ## Настройки {#settings} -Чтобы получить список настроек, заданных для таблицы, используйте таблицу `system.s3_queue_settings`. Доступно, начиная с версии `24.10`. +Чтобы получить список настроек таблицы, используйте таблицу `system.s3_queue_settings`. Доступно начиная с версии `24.10`. ### Mode {#mode} @@ -98,7 +99,7 @@ SETTINGS Значение по умолчанию: `ordered` в версиях до 24.6. Начиная с 24.6 значение по умолчанию отсутствует, настройку требуется указывать вручную. Для таблиц, созданных в более ранних версиях, значение по умолчанию останется `ordered` для сохранения совместимости. -### `after_processing` {#after_processing} +### `after_processing` {#after_processing} Что делать с файлом после успешной обработки. @@ -134,7 +135,8 @@ SETTINGS Для добавления тегов необходимо указать ключ и значение тега в параметрах `after_processing_tag_key` и `after_processing_tag_value`. -### `after_processing_retries` {#after_processing_retries} + +### `after_processing_retries` {#after_processing_retries} Количество повторных попыток выполнения запрошенного действия постобработки перед тем, как прекратить попытки. @@ -144,7 +146,7 @@ SETTINGS Значение по умолчанию: `10`. -### `after_processing_move_access_key_id` {#after_processing_move_access_key_id} +### `after_processing_move_access_key_id` {#after_processing_move_access_key_id} ID ключа доступа (Access Key ID) для S3‑бакета, в который нужно переместить успешно обработанные файлы, если целевым местом назначения является другой S3‑бакет. @@ -154,9 +156,9 @@ ID ключа доступа (Access Key ID) для S3‑бакета, в кот Значение по умолчанию: пустая строка. -### `after_processing_move_prefix` {#after_processing_move_prefix} +### `after_processing_move_prefix` {#after_processing_move_prefix} -Префикс пути, в который перемещаются успешно обработанные файлы. Применимо как при перемещении в пределах того же бакета, так и в другой бакет. +Префикс пути, в который перемещаются успешно обработанные файлы. Применимо как при перемещении в пределах того же бакета, так и при перемещении в другой бакет. Возможные значения: @@ -164,7 +166,7 @@ ID ключа доступа (Access Key ID) для S3‑бакета, в кот Значение по умолчанию: пустая строка. -### `after_processing_move_secret_access_key` {#after_processing_move_secret_access_key} +### `after_processing_move_secret_access_key` {#after_processing_move_secret_access_key} Secret Access Key для S3‑бакета, в который нужно перемещать успешно обработанные файлы, если целевой ресурс — другой S3‑бакет. @@ -174,7 +176,7 @@ Secret Access Key для S3‑бакета, в который нужно пер Значение по умолчанию: пустая строка. -### `after_processing_move_uri` {#after_processing_move_uri} +### `after_processing_move_uri` {#after_processing_move_uri} URI S3-бакета, в который следует перемещать успешно обработанные файлы, если местом назначения является другой S3-бакет. @@ -184,7 +186,7 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: пустая строка. -### `after_processing_tag_key` {#after_processing_tag_key} +### `after_processing_tag_key` {#after_processing_tag_key} Ключ тега, который будет использоваться для пометки успешно обработанных файлов, если `after_processing='tag'`. @@ -194,7 +196,7 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: пустая строка. -### `after_processing_tag_value` {#after_processing_tag_value} +### `after_processing_tag_value` {#after_processing_tag_value} Значение тега, которое будет присвоено успешно обработанным файлам, если `after_processing='tag'`. @@ -213,7 +215,7 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `/`. -### `s3queue_loading_retries` {#loading_retries} +### `s3queue_loading_retries` {#loading_retries} Повторять загрузку файла до указанного количества раз. По умолчанию повторы не выполняются. Возможные значения: @@ -222,13 +224,13 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `0`. -### `s3queue_processing_threads_num` {#processing_threads_num} +### `s3queue_processing_threads_num` {#processing_threads_num} Количество потоков обработки. Применяется только в режиме `Unordered`. -Значение по умолчанию: количество CPU или 16. +Значение по умолчанию: число CPU или 16. -### `s3queue_parallel_inserts` {#parallel_inserts} +### `s3queue_parallel_inserts` {#parallel_inserts} По умолчанию `processing_threads_num` будет выполнять один `INSERT`, поэтому файлы будут только загружаться и парситься в несколько потоков. Но это ограничивает степень параллелизма, поэтому для лучшей пропускной способности используйте `parallel_inserts=true` — это позволит вставлять данные параллельно (но имейте в виду, что это приведёт к большему количеству создаваемых частей данных для семейства движков MergeTree). @@ -239,13 +241,13 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `false`. -### `s3queue_enable_logging_to_s3queue_log` {#enable_logging_to_s3queue_log} +### `s3queue_enable_logging_to_s3queue_log` {#enable_logging_to_s3queue_log} Включает логирование в `system.s3queue_log`. Значение по умолчанию: `0`. -### `s3queue_polling_min_timeout_ms` {#polling_min_timeout_ms} +### `s3queue_polling_min_timeout_ms` {#polling_min_timeout_ms} Указывает минимальное время в миллисекундах, которое ClickHouse ожидает перед следующей попыткой опроса. @@ -255,7 +257,7 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `1000`. -### `s3queue_polling_max_timeout_ms` {#polling_max_timeout_ms} +### `s3queue_polling_max_timeout_ms` {#polling_max_timeout_ms} Определяет максимальное время в миллисекундах, в течение которого ClickHouse ждёт перед запуском следующей попытки опроса. @@ -275,7 +277,7 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `0`. -### `s3queue_tracked_files_limit` {#tracked_files_limit} +### `s3queue_tracked_files_limit` {#tracked_files_limit} Позволяет ограничить количество узлов ZooKeeper при использовании режима `unordered`; не влияет на режим `ordered`. Если лимит достигнут, самые старые обработанные файлы будут удалены из узла ZooKeeper и обработаны повторно. @@ -286,10 +288,10 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `1000`. -### `s3queue_tracked_file_ttl_sec` {#tracked_file_ttl_sec} +### `s3queue_tracked_file_ttl_sec` {#tracked_file_ttl_sec} Максимальное время в секундах для хранения обработанных файлов в узле ZooKeeper (по умолчанию хранятся бессрочно) в режиме `unordered`; не влияет на режим `ordered`. -По истечении указанного времени файл будет загружен повторно. +По истечении указанного времени файл будет повторно импортирован. Возможные значения: @@ -297,27 +299,27 @@ URI S3-бакета, в который следует перемещать ус Значение по умолчанию: `0`. -### `s3queue_cleanup_interval_min_ms` {#cleanup_interval_min_ms} +### `s3queue_cleanup_interval_min_ms` {#cleanup_interval_min_ms} Для режима `Ordered`. Определяет минимальное значение интервала перепланирования фоновой задачи, которая отвечает за поддержание TTL отслеживаемых файлов и ограничения на их максимальное количество. Значение по умолчанию: `10000`. -### `s3queue_cleanup_interval_max_ms` {#cleanup_interval_max_ms} +### `s3queue_cleanup_interval_max_ms` {#cleanup_interval_max_ms} -Для режима `Ordered`. Определяет максимальный интервал между переназначениями фоновой задачи, которая отвечает за поддержание TTL отслеживаемых файлов и максимального набора отслеживаемых файлов. +Для режима `Ordered`. Определяет верхнюю границу интервала перепланирования фоновой задачи, которая отвечает за поддержание TTL отслеживаемых файлов и максимального числа отслеживаемых файлов. Значение по умолчанию: `30000`. ### `s3queue_buckets` {#buckets} -Для режима `Ordered`. Доступно начиная с версии `24.6`. Если существует несколько реплик таблицы `S3Queue`, каждая из которых работает с одним и тем же каталогом метаданных в keeper, значение `s3queue_buckets` должно быть не меньше количества реплик. Если также используется настройка `s3queue_processing_threads`, имеет смысл дополнительно увеличить значение `s3queue_buckets`, так как она определяет фактический уровень параллелизма обработки `S3Queue`. +Для режима `Ordered`. Доступно начиная с версии `24.6`. Если существует несколько реплик таблицы `S3Queue`, каждая из которых работает с одним и тем же каталогом метаданных в keeper, значение `s3queue_buckets` должно быть не меньше количества реплик. Если также используется настройка `s3queue_processing_threads`, имеет смысл дополнительно увеличить значение `s3queue_buckets`, так как она определяет фактический уровень параллелизма обработки в `S3Queue`. -### `use_persistent_processing_nodes` {#use_persistent_processing_nodes} +### `use_persistent_processing_nodes` {#use_persistent_processing_nodes} -По умолчанию таблица S3Queue всегда использовала эфемерные узлы обработки, что могло приводить к дублированию данных в случае, если сессия ZooKeeper истекает до того, как S3Queue зафиксирует обработанные файлы в ZooKeeper, но после того, как обработка уже началась. Эта настройка заставляет сервер исключить возможность появления дубликатов при истечении сессии Keeper. +По умолчанию таблица S3Queue всегда использовала эфемерные узлы обработки, что могло приводить к дублированию данных в случае, если сессия ZooKeeper истекает до того, как S3Queue зафиксирует обработанные файлы в ZooKeeper, но после того, как обработка уже началась. Эта настройка гарантирует исключение возможности появления дубликатов при истечении сессии Keeper. -### `persistent_processing_nodes_ttl_seconds` {#persistent_processing_nodes_ttl_seconds} +### `persistent_processing_nodes_ttl_seconds` {#persistent_processing_nodes_ttl_seconds} В случае некорректного завершения работы сервера, если включён `use_persistent_processing_nodes`, могут остаться неудалённые узлы обработки. Этот параметр определяет период времени, по истечении которого эти узлы обработки могут быть безопасно удалены. @@ -350,6 +352,7 @@ SETTINGS ... ``` + ## Упорядоченный режим (ordered) для S3Queue {#ordered-mode} Режим обработки `S3Queue` позволяет хранить меньше метаданных в ZooKeeper, но имеет ограничение: файлы, добавленные позже по времени, должны иметь имена, которые в алфавитно-цифровом порядке больше имён ранее добавленных файлов. @@ -359,13 +362,19 @@ SETTINGS Использование настройки `(s3queue_)processing_threads_num` не рекомендуется до версии `24.6`. Настройка `(s3queue_)buckets` доступна начиная с версии `24.6`. +## SELECT из движка таблиц S3Queue {#select} + +Запросы SELECT по умолчанию запрещены для таблиц S3Queue. Это соответствует общему шаблону работы очереди, когда данные читаются один раз, а затем удаляются из очереди. SELECT запрещён, чтобы предотвратить случайную потерю данных. +Однако иногда это может быть полезно. Для этого необходимо установить настройку `stream_like_engine_allow_direct_select` в `True`. +Движок S3Queue имеет специальную настройку для запросов SELECT: `commit_on_select`. Установите её в `False`, чтобы сохранять данные в очереди после чтения, или в `True`, чтобы удалять их. + ## Описание {#description} -`SELECT` мало полезен для потокового импорта (кроме отладки), потому что каждый файл можно импортировать только один раз. Более практично создавать потоки в реальном времени с помощью [материализованных представлений](../../../sql-reference/statements/create/view.md). Для этого: +`SELECT` мало полезен для потокового импорта (кроме отладки), потому что каждый файл можно импортировать только один раз. Более практично создавать потоки в реальном времени с помощью [materialized views](../../../sql-reference/statements/create/view.md). Для этого: -1. Используйте этот движок для создания таблицы, которая будет читать данные из указанного пути в S3 и рассматриваться как поток данных. +1. Используйте этот движок для создания таблицы, которая будет читать данные из указанного пути в S3 и рассматривать её как поток данных. 2. Создайте таблицу с требуемой структурой. -3. Создайте материализованное представление, которое преобразует данные из этого движка и помещает их в ранее созданную таблицу. +3. Создайте materialized view, которое преобразует данные из этого движка и помещает их в ранее созданную таблицу. Когда `MATERIALIZED VIEW` подключено к этому движку, оно начинает собирать данные в фоновом режиме. @@ -386,6 +395,7 @@ SETTINGS SELECT * FROM stats ORDER BY name; ``` + ## Виртуальные столбцы {#virtual-columns} * `_path` — Путь к файлу. @@ -440,7 +450,7 @@ SETTINGS `exception` String ) ENGINE = SystemS3Queue -COMMENT 'Содержит состояние метаданных S3Queue в памяти и текущее количество обработанных строк по каждому файлу.' │ +COMMENT 'Contains in-memory state of S3Queue metadata and currently processed rows per file.' │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` @@ -451,12 +461,12 @@ COMMENT 'Содержит состояние метаданных S3Queue в п SELECT * FROM system.s3queue -Строка 1: +Row 1: ────── zookeeper_path: /clickhouse/s3queue/25ea5621-ae8c-40c7-96d0-cec959c5ab88/3b3f66a1-9866-4c2e-ba78-b6bfa154207e file_name: wikistat/original/pageviews-20150501-030000.gz rows_processed: 5068534 -status: Обработано +status: Processed processing_start_time: 2023-10-13 13:09:48 processing_end_time: 2023-10-13 13:10:31 ProfileEvents: {'ZooKeeperTransactions':3,'ZooKeeperGet':2,'ZooKeeperMulti':1,'SelectedRows':5068534,'SelectedBytes':198132283,'ContextLock':1,'S3QueueSetFileProcessingMicroseconds':2480,'S3QueueSetFileProcessedMicroseconds':9985,'S3QueuePullMicroseconds':273776,'LogTest':17} @@ -470,7 +480,7 @@ exception: ```sql SHOW CREATE TABLE system.s3queue_log -ID запроса: 0ad619c3-0f2a-4ee4-8b40-c73d86e04314 +Query id: 0ad619c3-0f2a-4ee4-8b40-c73d86e04314 ┌─statement──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ CREATE TABLE system.s3queue_log @@ -493,7 +503,7 @@ SETTINGS index_granularity = 8192 │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` -Чтобы использовать `system.s3queue_log`, задайте его конфигурацию в файле конфигурации сервера: +Чтобы использовать `system.s3queue_log`, укажите его конфигурацию в конфигурационном файле сервера: ```xml diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md index 250c8af7963..3acc992b73c 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md @@ -2,23 +2,26 @@ slug: '/examples/aggregate-function-combinators/maxMap' title: 'maxMap' description: 'Пример использования комбинатора maxMap' -keywords: ['max', 'map', 'combinator', 'examples', 'maxMap'] +keywords: ['max', 'map', 'комбинатор', 'примеры', 'maxMap'] sidebar_label: 'maxMap' doc_type: 'reference' --- + + # maxMap {#maxmap} + + ## Описание {#description} -Комбинатор [`Map`](/sql-reference/aggregate-functions/combinators#-map) можно применить к функции [`max`](/sql-reference/aggregate-functions/reference/max), -чтобы вычислять максимальное значение в Map по каждому ключу с использованием агрегатной функции-комбинатора `maxMap`. +Комбинатор [`Map`](/sql-reference/aggregate-functions/combinators#-map) может быть применён к функции [`max`](/sql-reference/aggregate-functions/reference/max) для вычисления максимального значения в `Map` по каждому ключу с использованием агрегатной функции-комбинатора `maxMap`. + + ## Пример использования {#example-usage} -В этом примере мы создадим таблицу, которая хранит коды статусов и число их вхождений для разных временных интервалов, -где каждая строка содержит `Map` кодов статусов и соответствующих им количеств. Мы будем использовать -`maxMap`, чтобы найти максимальное количество для каждого кода статуса в рамках каждого временного интервала. +В этом примере мы создадим таблицу, которая хранит коды статусов и количество их вхождений для разных временных интервалов, где каждая строка содержит `Map` с соответствием кодов статусов их количествам. Мы будем использовать `maxMap`, чтобы найти максимальное количество для каждого кода статуса в каждом временном интервале. ```sql title="Query" CREATE TABLE metrics( @@ -40,15 +43,15 @@ FROM metrics GROUP BY timeslot; ``` -Функция `maxMap` находит максимальное значение для каждого кода статуса в каждом временном интервале. Например: +Функция `maxMap` находит максимальное значение для каждого статус-кода в каждом временном интервале. Например: -* В интервале времени '2000-01-01 00:00:00': +* Во временном интервале '2000-01-01 00:00:00': * Статус 'a': 15 * Статус 'b': 25 * Статус 'c': max(35, 45) = 45 * Статус 'd': 55 * Статус 'e': 65 -* В интервале времени '2000-01-01 00:01:00': +* Во временном интервале '2000-01-01 00:01:00': * Статус 'd': 75 * Статус 'e': 85 * Статус 'f': max(95, 105) = 105 @@ -61,6 +64,7 @@ GROUP BY timeslot; └─────────────────────┴──────────────────────────────────────┘ ``` + ## См. также {#see-also} - [`max`](/sql-reference/aggregate-functions/reference/max) - [`Комбинатор Map`](/sql-reference/aggregate-functions/combinators#-map) diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md index 13effaa6a57..290c9ae61c5 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md @@ -7,18 +7,24 @@ sidebar_label: 'quantilesTimingArrayIf' doc_type: 'reference' --- + + # quantilesTimingArrayIf {#quantilestimingarrayif} + + ## Описание {#description} -К комбинатору [`Array`](/sql-reference/aggregate-functions/combinators#-array) и [`If`](/sql-reference/aggregate-functions/combinators#-if) -можно применить функцию [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -для вычисления квантилей временных значений в массивах для строк, где условие истинно, -используя агрегатную функцию-комбинатор `quantilesTimingArrayIf`. +Комбинаторы [`Array`](/sql-reference/aggregate-functions/combinators#-array) и [`If`](/sql-reference/aggregate-functions/combinators#-if) +могут быть применены к агрегатной функции [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) +для вычисления квантилей значений времени в массивах для строк, где выполняется условие, +с использованием агрегатного комбинатора `quantilesTimingArrayIf`. + + ## Пример использования {#example-usage} -В этом примере мы создадим таблицу, в которой будет храниться время отклика API для разных эндпоинтов +В этом примере мы создадим таблицу, которая хранит время отклика API для различных эндпоинтов и используем `quantilesTimingArrayIf` для вычисления квантилей времени отклика для успешных запросов. ```sql title="Query" @@ -40,15 +46,15 @@ FROM api_responses GROUP BY endpoint; ``` -Функция `quantilesTimingArrayIf` вычисляет квантили только для эндпоинтов с долей успешных запросов более 95%. +Функция `quantilesTimingArrayIf` вычисляет квантили только для эндпоинтов с долей успешных запросов выше 95%. Возвращаемый массив содержит следующие квантили в следующем порядке: * 0 (минимум) * 0.25 (первый квартиль) * 0.5 (медиана) * 0.75 (третий квартиль) -* 0.95 (95-й перцентиль) -* 0.99 (99-й перцентиль) +* 0.95 (95-й процентиль) +* 0.99 (99-й процентиль) * 1.0 (максимум) ```response title="Response" @@ -59,6 +65,7 @@ GROUP BY endpoint; └──────────┴─────────────────────────────────────────────────────────────────────┘ ``` + ## См. также {#see-also} - [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -- [Комбинатор `If`](/sql-reference/aggregate-functions/combinators#-if) +- [`Комбинатор If`](/sql-reference/aggregate-functions/combinators#-if) diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md index 8fad334eb83..a0579987797 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md @@ -2,22 +2,28 @@ slug: '/examples/aggregate-function-combinators/quantilesTimingIf' title: 'quantilesTimingIf' description: 'Пример использования комбинатора quantilesTimingIf' -keywords: ['quantilesTiming', 'if', 'комбинатор', 'примеры', 'quantilesTimingIf'] +keywords: ['quantilesTiming', 'if', 'combinator', 'examples', 'quantilesTimingIf'] sidebar_label: 'quantilesTimingIf' doc_type: 'reference' --- + + # quantilesTimingIf {#quantilestimingif} + + ## Описание {#description} Комбинатор [`If`](/sql-reference/aggregate-functions/combinators#-if) может быть применён к функции [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) для вычисления квантилей значений времени для строк, для которых условие истинно, -с использованием агрегатной функции-комбинатора `quantilesTimingIf`. +с помощью агрегатной функции-комбинатора `quantilesTimingIf`. + + ## Пример использования {#example-usage} -В этом примере мы создадим таблицу, которая хранит время ответа API для различных эндпоинтов +В этом примере мы создадим таблицу, которая хранит время ответа API для разных эндпоинтов, и используем `quantilesTimingIf` для вычисления квантилей времени ответа для успешных запросов. ```sql title="Query" @@ -72,13 +78,14 @@ GROUP BY endpoint; * 1.0 (максимум) ```response title="Response" - ┌─конечная_точка─┬─квантили_времени_отклика────────────────────────────────────────┐ -1. │ заказы │ [82, 87, 92, 98, 103, 104, 105] │ -2. │ продукты │ [45, 47, 49, 51, 52, 52, 53] │ -3. │ пользователи │ [nan, nan, nan, nan, nan, nan, nan] │ - └─────────────────┴─────────────────────────────────────────────────────────────────────┘ + ┌─endpoint─┬─response_time_quantiles─────────────────────────────────────────────┐ +1. │ orders │ [82, 87, 92, 98, 103, 104, 105] │ +2. │ products │ [45, 47, 49, 51, 52, 52, 53] │ +3. │ users │ [nan, nan, nan, nan, nan, nan, nan] │ + └──────────┴─────────────────────────────────────────────────────────────────────┘ ``` + ## См. также {#see-also} - [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -- [`Комбинатор If`](/sql-reference/aggregate-functions/combinators#-if) +- [`If combinator`](/sql-reference/aggregate-functions/combinators#-if) diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md index 35f0651904b..6615a17213b 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md @@ -7,16 +7,24 @@ sidebar_label: 'sumMap' doc_type: 'reference' --- + + # sumMap {#summap} + + ## Описание {#description} Комбинатор [`Map`](/sql-reference/aggregate-functions/combinators#-map) может быть применён к функции [`sum`](/sql-reference/aggregate-functions/reference/sum) -для вычисления суммы значений в `Map` по каждому ключу с использованием агрегирующего комбинатора `sumMap`. +для вычисления суммы значений в Map по каждому ключу с использованием агрегатной функции-комбинатора `sumMap`. + + ## Пример использования {#example-usage} -В этом примере мы создадим таблицу, в которой хранятся коды статусов и их количества для различных временных интервалов, где каждая строка содержит `Map`, сопоставляющую коды статусов с соответствующими им количествами. Мы будем использовать функцию `sumMap` для вычисления общего количества для каждого кода статуса в каждом временном интервале. +В этом примере мы создадим таблицу, которая хранит коды статусов и их количества для различных временных интервалов, +где каждая строка содержит Map с соответствием кодов статусов их количествам. Мы будем использовать +`sumMap`, чтобы вычислить общее количество для каждого кода статуса в каждом временном интервале. ```sql title="Query" CREATE TABLE metrics( @@ -38,15 +46,15 @@ FROM metrics GROUP BY timeslot; ``` -Функция `sumMap` вычислит итоговое значение для каждого кода статуса в каждом временном интервале. Например: +Функция `sumMap` вычислит общую сумму для каждого кода статуса в каждом временном интервале. Например: -* Во временном интервале '2000-01-01 00:00:00': +* В интервале времени '2000-01-01 00:00:00': * Статус 'a': 15 * Статус 'b': 25 * Статус 'c': 35 + 45 = 80 * Статус 'd': 55 * Статус 'e': 65 -* Во временном интервале '2000-01-01 00:01:00': +* В интервале времени '2000-01-01 00:01:00': * Статус 'd': 75 * Статус 'e': 85 * Статус 'f': 95 + 105 = 200 @@ -59,6 +67,7 @@ GROUP BY timeslot; └─────────────────────┴──────────────────────────────────────┘ ``` + ## См. также {#see-also} - [`sum`](/sql-reference/aggregate-functions/reference/sum) - [`Комбинатор Map`](/sql-reference/aggregate-functions/combinators#-map) diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md index c4894a32410..33ab022cc9f 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md @@ -4,26 +4,28 @@ slug: /guides/sre/keeper/clickhouse-keeper sidebar_label: 'Настройка ClickHouse Keeper' sidebar_position: 10 keywords: ['Keeper', 'ZooKeeper', 'clickhouse-keeper'] -description: 'ClickHouse Keeper или clickhouse-keeper заменяет ZooKeeper и обеспечивает функции репликации и координации.' +description: 'ClickHouse Keeper (clickhouse-keeper) заменяет ZooKeeper и обеспечивает репликацию и координацию.' title: 'ClickHouse Keeper' doc_type: 'guide' --- + + # ClickHouse Keeper (clickhouse-keeper) {#clickhouse-keeper-clickhouse-keeper} import SelfManaged from '@site/i18n/ru/docusaurus-plugin-content-docs/current/_snippets/_self_managed_only_automated.md'; -ClickHouse Keeper предоставляет систему координации для [репликации](/engines/table-engines/mergetree-family/replication.md) данных и выполнения запросов [распределённого DDL](/sql-reference/distributed-ddl.md). ClickHouse Keeper совместим с ZooKeeper. +ClickHouse Keeper обеспечивает систему координации для [репликации](/engines/table-engines/mergetree-family/replication.md) данных и выполнения запросов [распределённого DDL](/sql-reference/distributed-ddl.md). ClickHouse Keeper совместим с ZooKeeper. -### Детали реализации {#implementation-details} +### Подробности реализации {#implementation-details} -ZooKeeper — одна из первых хорошо известных систем координации с открытым исходным кодом. Она реализована на Java и имеет довольно простую и мощную модель данных. Алгоритм координации ZooKeeper, ZooKeeper Atomic Broadcast (ZAB), не предоставляет гарантий линеаризуемости чтения, так как каждый узел ZooKeeper обрабатывает операции чтения локально. В отличие от ZooKeeper, ClickHouse Keeper написан на C++ и использует [алгоритм RAFT](https://raft.github.io/) в [реализации](https://github.com/eBay/NuRaft). Этот алгоритм обеспечивает линеаризуемость для операций чтения и записи и имеет несколько реализаций с открытым исходным кодом на разных языках. +ZooKeeper — одна из первых широко известных систем координации с открытым исходным кодом. Он реализован на Java и имеет простую и в то же время мощную модель данных. Алгоритм координации ZooKeeper — ZooKeeper Atomic Broadcast (ZAB) — не обеспечивает гарантии линеаризуемости чтения, поскольку каждый узел ZooKeeper обслуживает запросы чтения локально. В отличие от ZooKeeper, ClickHouse Keeper написан на C++ и использует [алгоритм RAFT](https://raft.github.io/) в [реализации](https://github.com/eBay/NuRaft). Этот алгоритм обеспечивает линеаризуемость как операций чтения, так и записи и имеет несколько реализаций с открытым исходным кодом на разных языках программирования. -По умолчанию ClickHouse Keeper предоставляет те же гарантии, что и ZooKeeper: линеаризуемые записи и нелинеаризуемые чтения. Он использует совместимый клиент-серверный протокол, поэтому любой стандартный клиент ZooKeeper можно использовать для взаимодействия с ClickHouse Keeper. Снимки и журналы имеют формат, несовместимый с ZooKeeper, но инструмент `clickhouse-keeper-converter` позволяет преобразовать данные ZooKeeper в снимки ClickHouse Keeper. Межсерверный протокол в ClickHouse Keeper также несовместим с ZooKeeper, поэтому смешанный кластер ZooKeeper / ClickHouse Keeper невозможен. +По умолчанию ClickHouse Keeper предоставляет те же гарантии, что и ZooKeeper: линеаризуемые записи и нелинеаризуемые чтения. Он использует совместимый клиент-серверный протокол, поэтому любой стандартный клиент ZooKeeper может использоваться для взаимодействия с ClickHouse Keeper. Снимки состояния и журналы имеют несовместимый с ZooKeeper формат, но инструмент `clickhouse-keeper-converter` позволяет преобразовывать данные ZooKeeper в снимки ClickHouse Keeper. Протокол межсерверного взаимодействия в ClickHouse Keeper также несовместим с ZooKeeper, поэтому смешанный кластер ZooKeeper / ClickHouse Keeper невозможен. -ClickHouse Keeper поддерживает списки контроля доступа (ACL) так же, как и [ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_ZooKeeperAccessControl). ClickHouse Keeper поддерживает тот же набор прав и имеет идентичные встроенные схемы: `world`, `auth` и `digest`. Схема аутентификации digest использует пару `username:password`, при этом пароль кодируется в Base64. +ClickHouse Keeper поддерживает списки контроля доступа (ACL) так же, как [ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_ZooKeeperAccessControl). ClickHouse Keeper поддерживает тот же набор прав доступа и имеет идентичные встроенные схемы: `world`, `auth` и `digest`. Схема аутентификации digest использует пару `username:password`, при этом пароль кодируется в Base64. :::note Внешние интеграции не поддерживаются. @@ -31,87 +33,92 @@ ClickHouse Keeper поддерживает списки контроля дос ### Конфигурация {#configuration} -ClickHouse Keeper может использоваться как самостоятельная замена ZooKeeper или как внутренняя часть сервера ClickHouse. В обоих случаях конфигурация задаётся практически одинаковым `.xml`-файлом. +ClickHouse Keeper может использоваться как самостоятельная замена ZooKeeper или как внутренняя часть сервера ClickHouse. В обоих случаях конфигурация задаётся почти одним и тем же `.xml`‑файлом. #### Параметры конфигурации Keeper {#keeper-configuration-settings} -Основной конфигурационный тег ClickHouse Keeper — `` и имеет следующие параметры: +Основной конфигурационный тег ClickHouse Keeper — ``, он имеет следующие параметры: + -| Parameter | Description | Default | +| Параметр | Описание | Значение по умолчанию | |--------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | `tcp_port` | Порт для подключения клиента. | `2181` | -| `tcp_port_secure` | Защищённый порт для SSL-подключения между клиентом и keeper-server. | - | -| `server_id` | Уникальный идентификатор сервера, каждый участник кластера ClickHouse Keeper должен иметь уникальный номер (1, 2, 3 и так далее). | - | -| `log_storage_path` | Путь к журналам координации; как и в ZooKeeper, журналы лучше хранить на незагруженных узлах. | - | -| `snapshot_storage_path` | Путь к снимкам состояния координации. | - | -| `enable_reconfiguration` | Включить динамическую переконфигурацию кластера с помощью [`reconfig`](#reconfiguration). | `False` | -| `max_memory_usage_soft_limit` | Мягкое ограничение в байтах на максимальное потребление памяти Keeper. | `max_memory_usage_soft_limit_ratio` * `physical_memory_amount` | -| `max_memory_usage_soft_limit_ratio` | Если `max_memory_usage_soft_limit` не задан или установлен в ноль, используется это значение для определения значения мягкого ограничения по умолчанию. | `0.9` | -| `cgroups_memory_observer_wait_time` | Если `max_memory_usage_soft_limit` не задан или установлен в `0`, используется этот интервал для наблюдения за объёмом физической памяти. Как только объём памяти изменится, мягкое ограничение памяти Keeper будет пересчитано по `max_memory_usage_soft_limit_ratio`. | `15` | -| `http_control` | Конфигурация интерфейса [HTTP control](#http-control). | - | -| `digest_enabled` | Включить проверку согласованности данных в режиме реального времени. | `True` | -| `create_snapshot_on_exit` | Создавать снимок состояния при завершении работы. | - | -| `hostname_checks_enabled` | Включить базовые проверки имён хостов для конфигурации кластера (например, если `localhost` используется с удалёнными конечными точками). | `True` | -| `four_letter_word_white_list` | Белый список команд 4lw. | `conf, cons, crst, envi, ruok, srst, srvr, stat, wchs, dirs, mntr, isro, rcvr, apiv, csnp, lgif, rqld, ydld` | +| `tcp_port_secure` | Защищённый порт для SSL‑подключения между клиентом и Keeper‑сервером. | - | +| `server_id` | Уникальный идентификатор сервера, каждый участник кластера ClickHouse Keeper должен иметь уникальный номер (1, 2, 3 и так далее). | - | +| `log_storage_path` | Путь к журналам координации; как и в ZooKeeper, журналы лучше хранить на мало нагруженных узлах. | - | +| `snapshot_storage_path` | Путь к снимкам координации (snapshot). | - | +| `enable_reconfiguration` | Включить динамическую переконфигурацию кластера через [`reconfig`](#reconfiguration). | `False` | +| `max_memory_usage_soft_limit` | Мягкий лимит (в байтах) на максимальное потребление памяти Keeper. | `max_memory_usage_soft_limit_ratio` * `physical_memory_amount` | +| `max_memory_usage_soft_limit_ratio` | Если `max_memory_usage_soft_limit` не задан или равен нулю, это значение используется для определения значения мягкого лимита по умолчанию. | `0.9` | +| `cgroups_memory_observer_wait_time` | Если `max_memory_usage_soft_limit` не задан или равен `0`, этот интервал используется для отслеживания объёма физической памяти. Как только объём памяти изменится, мягкий лимит памяти Keeper будет пересчитан по `max_memory_usage_soft_limit_ratio`. | `15` | +| `http_control` | Конфигурация интерфейса [HTTP control](#http-control). | - | +| `digest_enabled` | Включить проверку согласованности данных в реальном времени. | `True` | +| `create_snapshot_on_exit` | Создавать snapshot при завершении работы. | - | +| `hostname_checks_enabled` | Включить проверки корректности имён хостов для конфигурации кластера (например, если `localhost` используется с удалёнными конечными точками). | `True` | +| `four_letter_word_white_list` | Белый список 4lw‑команд. | `conf, cons, crst, envi, ruok, srst, srvr, stat, wchs, dirs, mntr, isro, rcvr, apiv, csnp, lgif, rqld, ydld` | |`enable_ipv6`| Включить поддержку IPv6 | `True`| Другие общие параметры наследуются из конфигурации сервера ClickHouse (`listen_host`, `logger` и так далее). -#### Internal coordination settings {#internal-coordination-settings} - -Внутренние настройки координации находятся в секции `.` и включают следующие параметры: - -| Параметр | Описание | Значение по умолчанию | -|-----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------| -| `operation_timeout_ms` | Таймаут для одной клиентской операции (мс) | `10000` | -| `min_session_timeout_ms` | Минимальный таймаут для клиентской сессии (мс) | `10000` | -| `session_timeout_ms` | Максимальный таймаут для клиентской сессии (мс) | `100000` | -| `dead_session_check_period_ms` | Как часто ClickHouse Keeper проверяет «мертвые» сессии и удаляет их (мс) | `500` | -| `heart_beat_interval_ms` | Как часто лидер ClickHouse Keeper отправляет heartbeat-сообщения последователям (мс) | `500` | -| `election_timeout_lower_bound_ms` | Если в течение этого интервала последователь не получает heartbeat от лидера, он может инициировать выборы лидера. Значение должно быть меньше или равно `election_timeout_upper_bound_ms`. В идеале они не должны быть равны. | `1000` | -| `election_timeout_upper_bound_ms` | Если в течение этого интервала последователь не получает heartbeat от лидера, он обязан инициировать выборы лидера. | `2000` | -| `rotate_log_storage_interval` | Сколько записей лога хранить в одном файле. | `100000` | -| `reserved_log_items` | Сколько записей журнала координации хранить до выполнения компакции. | `100000` | -| `snapshot_distance` | Как часто ClickHouse Keeper будет создавать новые снапшоты (в количестве записей в логах). | `100000` | -| `snapshots_to_keep` | Сколько снапшотов хранить. | `3` | -| `stale_log_gap` | Порог, при котором лидер считает последователя устаревшим и отправляет ему снапшот вместо логов. | `10000` | -| `fresh_log_gap` | Условие, при котором узел считается «свежим». | `200` | -| `max_requests_batch_size` | Максимальный размер батча по количеству запросов перед отправкой в RAFT. | `100` | -| `force_sync` | Вызывать `fsync` при каждой записи в журнал координации. | `true` | -| `quorum_reads` | Выполнять запросы на чтение как операции записи, проходящие через весь консенсус RAFT, с сопоставимой скоростью. | `false` | -| `raft_logs_level` | Уровень текстового логирования о координации (trace, debug и т. д.). | `system default` | -| `auto_forwarding` | Разрешить перенаправление запросов на запись от последователей к лидеру. | `true` | -| `shutdown_timeout` | Ожидание завершения внутренних соединений и остановки (мс). | `5000` | -| `startup_timeout` | Если сервер не подключается к другим участникам кворума в заданный таймаут, он завершает работу (мс). | `30000` | -| `async_replication` | Включить асинхронную репликацию. Все гарантии записи и чтения сохраняются при повышенной производительности. Настройка отключена по умолчанию, чтобы не нарушать обратную совместимость. | `false` | -| `latest_logs_cache_size_threshold`| Максимальный общий размер кэша в памяти для последних записей лога | `1GiB` | -| `commit_logs_cache_size_threshold`| Максимальный общий размер кэша в памяти для записей лога, необходимых для следующего подтверждения | `500MiB` | -| `disk_move_retries_wait_ms` | Время ожидания между повторами после сбоя, произошедшего при перемещении файла между дисками | `1000` | -| `disk_move_retries_during_init` | Количество повторных попыток после сбоя, произошедшего при перемещении файла между дисками во время инициализации | `100` | -| `experimental_use_rocksdb` | Использовать RocksDB как бэкенд-хранилище | `0` | - -Конфигурация кворума находится в секции `.` и содержит описание серверов. - -Единственный параметр для всего кворума — `secure`, который включает зашифрованное соединение для взаимодействия между участниками кворума. Параметр может быть установлен в `true`, если для внутреннего обмена между узлами требуется SSL-соединение, или оставлен не заданным в противном случае. +#### Внутренние настройки координации {#internal-coordination-settings} + +Внутренние настройки координации задаются в разделе `.` и включают следующие параметры: + + + +| Параметр | Описание | Значение по умолчанию | +|-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| +| `operation_timeout_ms` | Таймаут для одной операции клиента (мс) | `10000` | +| `min_session_timeout_ms` | Минимальный таймаут для сессии клиента (мс) | `10000` | +| `session_timeout_ms` | Максимальный таймаут для сессии клиента (мс) | `100000` | +| `dead_session_check_period_ms` | Как часто ClickHouse Keeper проверяет «мертвые» сессии и удаляет их (мс) | `500` | +| `heart_beat_interval_ms` | Как часто лидер ClickHouse Keeper будет отправлять heartbeat-сообщения фолловерам (мс) | `500` | +| `election_timeout_lower_bound_ms` | Если фолловер не получает heartbeat от лидера в течение этого интервала, он может инициировать выборы лидера. Значение должно быть меньше или равно `election_timeout_upper_bound_ms`. Желательно, чтобы они не совпадали. | `1000` | +| `election_timeout_upper_bound_ms` | Если фолловер не получает heartbeat от лидера в течение этого интервала, он обязан инициировать выборы лидера. | `2000` | +| `rotate_log_storage_interval` | Сколько записей лога хранить в одном файле. | `100000` | +| `reserved_log_items` | Сколько координационных записей лога хранить до выполнения сжатия. | `100000` | +| `snapshot_distance` | Как часто ClickHouse Keeper будет создавать новые снапшоты (по количеству записей в логах). | `100000` | +| `snapshots_to_keep` | Сколько снапшотов хранить. | `3` | +| `stale_log_gap` | Порог, при котором лидер считает фолловера устаревшим и отправляет ему снапшот вместо логов. | `10000` | +| `fresh_log_gap` | Порог, после которого узел считается «свежим». | `200` | +| `max_requests_batch_size` | Максимальный размер пакета (по количеству запросов) перед отправкой в RAFT. | `100` | +| `force_sync` | Вызывать `fsync` при каждой записи в координационный лог. | `true` | +| `quorum_reads` | Выполнять запросы на чтение как записи через весь консенсус RAFT с сопоставимой скоростью. | `false` | +| `raft_logs_level` | Уровень текстового логирования координации (trace, debug и т. д.). | `system default` | +| `auto_forwarding` | Разрешить пересылку запросов на запись от фолловеров лидеру. | `true` | +| `shutdown_timeout` | Ожидание завершения внутренних соединений и остановки (мс). | `5000` | +| `startup_timeout` | Если сервер не подключается к другим участникам кворума за указанный таймаут, он завершает работу (мс). | `30000` | +| `async_replication` | Включить асинхронную репликацию. Все гарантии записи и чтения сохраняются, при этом достигается более высокая производительность. Настройка по умолчанию отключена, чтобы не нарушать обратную совместимость | `false` | +| `latest_logs_cache_size_threshold` | Максимальный общий размер кэша в памяти для последних записей лога | `1GiB` | +| `commit_logs_cache_size_threshold` | Максимальный общий размер кэша в памяти для записей лога, необходимых для следующей фиксации | `500MiB` | +| `disk_move_retries_wait_ms` | Время ожидания между повторными попытками после сбоя, произошедшего при перемещении файла между дисками | `1000` | +| `disk_move_retries_during_init` | Количество повторных попыток после сбоя, произошедшего при перемещении файла между дисками во время инициализации | `100` | +| `experimental_use_rocksdb` | Использовать RocksDB как бекенд-хранилище | `0` | + +Конфигурация кворума находится в разделе `.` и содержит описание серверов. + +Единственный параметр для всего кворума — `secure`, который включает зашифрованное соединение для обмена данными между участниками кворума. Параметр можно установить в `true`, если требуется SSL-соединение для внутреннего обмена между узлами, или оставить не заданным в противном случае. Основные параметры для каждого ``: -* `id` — Идентификатор сервера в кворуме. -* `hostname` — Имя хоста, на котором размещён этот сервер. -* `port` — Порт, на котором этот сервер принимает подключения. -* `can_become_leader` — Установите в `false`, чтобы настроить сервер как `learner`. Если параметр не указан, по умолчанию используется значение `true`. + + +* `id` — идентификатор сервера в кворуме. +* `hostname` — имя хоста, на котором размещён этот сервер. +* `port` — порт, на котором этот сервер принимает подключения. +* `can_become_leader` — установите в `false`, чтобы настроить сервер как `learner`. Если параметр опущен, значение по умолчанию — `true`. :::note -В случае изменения топологии вашего кластера ClickHouse Keeper (например, при замене сервера) обязательно сохраняйте соответствие между `server_id` и `hostname` и избегайте перестановок или повторного использования уже существующего `server_id` для других серверов (например, это может произойти, если вы полагаетесь на скрипты автоматизации для развертывания ClickHouse Keeper). +В случае изменения топологии вашего кластера ClickHouse Keeper (например, при замене сервера) обязательно сохраняйте соответствие между `server_id` и `hostname` и избегайте перестановок или повторного использования существующего `server_id` для других серверов (это, например, может произойти, если вы полагаетесь на скрипты автоматизации для развертывания ClickHouse Keeper). -Если хост экземпляра Keeper может меняться, мы рекомендуем использовать `hostname` вместо «сырых» IP-адресов. Изменение `hostname` эквивалентно удалению сервера и повторному добавлению его в кластер, что в некоторых случаях может быть невозможно (например, недостаточно экземпляров Keeper для кворума). +Если хост экземпляра ClickHouse Keeper может измениться, мы рекомендуем определять и использовать `hostname` вместо «сырых» IP-адресов. Изменение `hostname` эквивалентно удалению сервера и повторному его добавлению, что в некоторых случаях может быть невозможно (например, если экземпляров Keeper недостаточно для кворума). ::: :::note -`async_replication` по умолчанию отключена, чтобы не нарушать обратную совместимость. Если все ваши экземпляры Keeper в кластере работают на версии, которая поддерживает `async_replication` (v23.9+), мы рекомендуем включить её, так как это может улучшить производительность без каких-либо недостатков. +`async_replication` по умолчанию отключён, чтобы не нарушать обратную совместимость. Если все экземпляры ClickHouse Keeper в вашем кластере работают на версии, поддерживающей `async_replication` (v23.9+), мы рекомендуем включить её, так как это может улучшить производительность без каких-либо недостатков. ::: -Примеры конфигураций кворума с тремя узлами можно найти в [интеграционных тестах](https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration) с префиксом `test_keeper_`. Пример конфигурации для сервера № 1: +Примеры конфигурации для кворума с тремя узлами можно найти в [интеграционных тестах](https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration) с префиксом `test_keeper_`. Пример конфигурации для сервера № 1: ```xml @@ -148,7 +155,7 @@ ClickHouse Keeper может использоваться как самосто ### Как запустить {#how-to-run} -ClickHouse Keeper входит в пакет сервера ClickHouse: просто добавьте конфигурацию `` в `/etc/your_path_to_config/clickhouse-server/config.xml` и запустите сервер ClickHouse как обычно. Если вы хотите запустить ClickHouse Keeper как отдельный компонент, вы можете запустить его аналогичным образом: +ClickHouse Keeper входит в состав пакета сервера ClickHouse, просто добавьте конфигурацию `` в `/etc/your_path_to_config/clickhouse-server/config.xml` и запустите сервер ClickHouse как обычно. Если вы хотите запустить ClickHouse Keeper как отдельный процесс, вы можете запустить его аналогичным образом: ```bash clickhouse-keeper --config /etc/your_path_to_config/config.xml @@ -157,29 +164,30 @@ clickhouse-keeper --config /etc/your_path_to_config/config.xml Если у вас нет символической ссылки (`clickhouse-keeper`), вы можете создать её или указать `keeper` в качестве аргумента для `clickhouse`: ```bash -clickhouse keeper --config /etc/путь_к_вашему_конфигу/config.xml +clickhouse keeper --config /etc/your_path_to_config/config.xml ``` -### Команды из четырёх букв {#four-letter-word-commands} +### Четырехбуквенные команды {#four-letter-word-commands} -ClickHouse Keeper также предоставляет команды 4lw, которые почти идентичны командам в ZooKeeper. Каждая команда состоит из четырёх букв, таких как `mntr`, `stat` и т. д. Есть несколько более интересных команд: `stat` предоставляет общую информацию о сервере и подключённых клиентах, тогда как `srvr` и `cons` выдают расширенные сведения о сервере и соединениях соответственно. +ClickHouse Keeper также предоставляет четырехбуквенные команды (4lw), которые почти полностью совпадают с командами Zookeeper. Каждая команда состоит из четырех букв, например `mntr`, `stat` и т. д. Есть несколько более интересных команд: `stat` выводит общую информацию о сервере и подключенных клиентах, тогда как `srvr` и `cons` предоставляют расширенные сведения о сервере и подключениях соответственно. -Для 4lw-команд существует конфигурационный параметр белого списка `four_letter_word_white_list`, который по умолчанию имеет значение `conf,cons,crst,envi,ruok,srst,srvr,stat,wchs,dirs,mntr,isro,rcvr,apiv,csnp,lgif,rqld,ydld`. +Для четырехбуквенных команд существует настройка белого списка `four_letter_word_white_list`, которая по умолчанию имеет значение `conf,cons,crst,envi,ruok,srst,srvr,stat,wchs,dirs,mntr,isro,rcvr,apiv,csnp,lgif,rqld,ydld`. -Вы можете отправлять команды ClickHouse Keeper через telnet или nc, подключаясь к клиентскому порту. +Вы можете отправлять команды ClickHouse Keeper через telnet или nc на клиентский порт. ```bash echo mntr | nc localhost 9181 ``` -Ниже подробно описаны команды 4lw: +Ниже приведены подробные команды 4lw: -* `ruok`: Проверяет, работает ли сервер без ошибок. Сервер ответит `imok`, если он запущен. В противном случае он не ответит вовсе. Ответ `imok` не обязательно означает, что сервер вошёл в кворум, а лишь то, что серверный процесс активен и привязан к указанному клиентскому порту. Для получения подробной информации о состоянии в контексте кворума и сведений о клиентских подключениях используйте команду «stat». +* `ruok`: Проверяет, работает ли сервер в безошибочном состоянии. Если сервер запущен, он ответит `imok`. В противном случае он не ответит вовсе. Ответ `imok` не обязательно означает, что сервер присоединился к кворуму, а лишь то, что процесс сервера активен и привязан к указанному клиентскому порту. Для получения сведений о состоянии с точки зрения кворума и информации о клиентских подключениях используйте команду `stat`. ```response imok ``` + * `mntr`: Выводит список переменных, которые можно использовать для мониторинга работоспособности кластера. ```response @@ -202,44 +210,44 @@ zk_followers 0 zk_synced_followers 0 ``` -* `srvr`: Отображает полную информацию о сервере. +* `srvr`: Выводит подробные сведения о сервере. ```response -Версия ClickHouse Keeper: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 -Задержка мин/сред/макс: 0/0/0 -Получено: 2 -Отправлено: 2 -Подключений: 1 -Необработанных: 0 +ClickHouse Keeper version: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 +Latency min/avg/max: 0/0/0 +Received: 2 +Sent : 2 +Connections: 1 +Outstanding: 0 Zxid: 34 -Режим: leader -Количество узлов: 4 +Mode: leader +Node count: 4 ``` -* `stat`: Выводит краткую информацию о сервере и подключенных клиентах. +* `stat`: Выводит краткую информацию о сервере и подключённых клиентах. ```response -Версия ClickHouse Keeper: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 -Клиенты: +ClickHouse Keeper version: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 +Clients: 192.168.1.1:52852(recved=0,sent=0) 192.168.1.1:52042(recved=24,sent=48) -Задержка мин/сред/макс: 0/0/0 -Получено: 4 -Отправлено: 4 -Подключений: 1 -Необработанных: 0 +Latency min/avg/max: 0/0/0 +Received: 4 +Sent : 4 +Connections: 1 +Outstanding: 0 Zxid: 36 -Режим: leader -Количество узлов: 4 +Mode: leader +Node count: 4 ``` -* `srst`: Сбрасывает статистику сервера. Команда повлияет на результаты `srvr`, `mntr` и `stat`. +* `srst`: Сбрасывает статистику сервера. Команда влияет на результаты команд `srvr`, `mntr` и `stat`. ```response -Статистика сервера сброшена. +Server stats reset. ``` -* `conf`: Вывести подробные сведения о конфигурации сервиса. +* `conf`: вывести подробную информацию о текущей конфигурации. ```response server_id=1 @@ -272,20 +280,21 @@ compress_snapshots_with_zstd_format=true configuration_change_tries_count=20 ``` -* `cons`: Выводит полные сведения о соединениях/сеансах для всех клиентов, подключённых к этому серверу. Включает информацию о количестве полученных/отправленных пакетов, идентификаторе сеанса, задержках выполнения операций, последней выполненной операции и т. д. +* `cons`: Выводит полную информацию о соединениях/сеансах для всех клиентов, подключённых к этому серверу. Включает сведения о количестве полученных и отправленных пакетов, идентификаторе сеанса, задержках операций, последней выполненной операции и т. д. ```response 192.168.1.1:52163(recved=0,sent=0,sid=0xffffffffffffffff,lop=NA,est=1636454787393,to=30000,lzxid=0xffffffffffffffff,lresp=0,llat=0,minlat=0,avglat=0,maxlat=0) 192.168.1.1:52042(recved=9,sent=18,sid=0x0000000000000001,lop=List,est=1636454739887,to=30000,lcxid=0x0000000000000005,lzxid=0x0000000000000005,lresp=1636454739892,llat=0,minlat=0,avglat=0,maxlat=0) ``` -* `crst`: Сбросить статистику соединений/сеансов для всех подключений. +* `crst`: Сбрасывает статистику соединений/сеансов для всех подключений. ```response -Статистика подключений сброшена. +Connection stats reset. ``` -* `envi`: Вывести сведения о рабочем окружении сервиса +* `envi`: Выводит сведения о рабочем окружении сервера + ```response Environment: @@ -301,58 +310,58 @@ user.dir=/Users/JackyWoo/project/jd/clickhouse/cmake-build-debug/programs/ user.tmp=/var/folders/b4/smbq5mfj7578f2jzwn602tt40000gn/T/ ``` -* `dirs`: Показывает общий размер файлов снапшотов и логов в байтах +* `dirs`: Отображает общий размер файлов снимков и логов в байтах ```response snapshot_dir_size: 0 log_dir_size: 3875 ``` -* `isro`: Проверяет, работает ли сервер в режиме только для чтения. Сервер ответит `ro`, если он в режиме только для чтения, или `rw`, если режим только для чтения не включён. +* `isro`: Проверяет, работает ли сервер в режиме только для чтения. Сервер ответит `ro`, если работает в режиме только для чтения, или `rw` в противном случае. ```response rw ``` -* `wchs`: Выводит краткую сводную информацию о наблюдениях на сервере. +* `wchs`: Выводит краткую информацию о наблюдениях на сервере. ```response -1 соединение отслеживает 1 путь -Всего отслеживаемых объектов: 1 +1 connections watching 1 paths +Total watches:1 ``` -* `wchc`: Выводит подробную информацию о наблюдениях (watches) на сервере, сгруппированную по сессиям. Возвращает список сессий (подключений) с соответствующими наблюдениями (путями). Обратите внимание: в зависимости от количества наблюдений эта операция может быть ресурсоёмкой (влиять на производительность сервера), поэтому используйте её с осторожностью. +* `wchc`: Выводит подробную информацию о вотчах сервера по сеансам. Вывод содержит список сеансов (подключений) с соответствующими вотчами (путями). Учтите, что в зависимости от количества вотчей эта операция может быть ресурсоёмкой (влиять на производительность сервера), поэтому используйте её осторожно. ```response 0x0000000000000001 /clickhouse/task_queue/ddl ``` -* `wchp`: Выводит подробную информацию о наблюдениях (watches) для сервера по путям. Результатом является список путей (znode-узлов) с соответствующими сессиями. Обратите внимание: в зависимости от количества наблюдений эта операция может быть ресурсоёмкой (то есть влиять на производительность сервера), используйте её с осторожностью. +* `wchp`: Выводит подробную информацию о наблюдениях (watches) на сервере по путям. Выводит список путей (znode) с соответствующими сессиями. Учтите, что в зависимости от количества наблюдений эта операция может быть ресурсоёмкой (то есть влиять на производительность сервера), поэтому используйте её с осторожностью. ```response /clickhouse/task_queue/ddl 0x0000000000000001 ``` -* `dump`: Выводит список незавершённых сессий и эфемерных узлов. Работает только на лидере. +* `dump`: выводит список активных сессий и эфемерных узлов. Работает только на лидере. ```response -Дамп сессий (2): +Sessions dump (2): 0x0000000000000001 0x0000000000000002 -Сессии с эфемерными узлами (1): +Sessions with Ephemerals (1): 0x0000000000000001 /clickhouse/task_queue/ddl ``` -* `csnp`: Планирует задачу создания снапшота. Возвращает индекс последнего зафиксированного журнала запланированного снапшота в случае успеха или `Failed to schedule snapshot creation task.` в случае ошибки. Обратите внимание, что команда `lgif` может помочь определить, завершено ли создание снапшота. +* `csnp`: Планирует задачу создания snapshot. В случае успеха возвращает индекс последней зафиксированной записи журнала для запланированного snapshot, в случае ошибки — `Failed to schedule snapshot creation task.`. Обратите внимание, что команда `lgif` может помочь определить, завершено ли создание snapshot. ```response 100 ``` -* `lgif`: Информация о логе Keeper. `first_log_idx` : мой первый индекс лога в хранилище логов; `first_log_term` : мой первый терм лога; `last_log_idx` : мой последний индекс лога в хранилище логов; `last_log_term` : мой последний терм лога; `last_committed_log_idx` : мой последний зафиксированный индекс лога в машине состояний; `leader_committed_log_idx` : зафиксированный индекс лога лидера в моём представлении; `target_committed_log_idx` : целевой индекс лога, который должен быть зафиксирован; `last_snapshot_idx` : максимальный зафиксированный индекс лога в последнем снапшоте. +* `lgif`: Информация журнала Keeper. `first_log_idx` : мой первый индекс журнала в хранилище журнала; `first_log_term` : мой первый термин журнала; `last_log_idx` : мой последний индекс журнала в хранилище журнала; `last_log_term` : мой последний термин журнала; `last_committed_log_idx` : мой последний зафиксированный индекс журнала в машине состояний; `leader_committed_log_idx` : зафиксированный индекс журнала лидера с моей точки зрения; `target_committed_log_idx` : целевой индекс журнала, который должен быть зафиксирован; `last_snapshot_idx` : максимальный зафиксированный индекс журнала в последнем снимке состояния. ```response first_log_idx 1 @@ -365,13 +374,13 @@ target_committed_log_idx 101 last_snapshot_idx 50 ``` -* `rqld`: Запрос на избрание новым лидером. Возвращает `Sent leadership request to leader.` если запрос отправлен, или `Failed to send leadership request to leader.` если запрос не отправлен. Обратите внимание, что если узел уже является лидером, результат будет таким же, как и при успешной отправке запроса. +* `rqld`: Запрос на назначение новым лидером. Возвращает `Sent leadership request to leader.` если запрос отправлен или `Failed to send leadership request to leader.` если запрос не отправлен. Обратите внимание: если узел уже является лидером, результат будет таким же, как если бы запрос был отправлен. ```response -Запрос на лидерство отправлен лидеру. +Sent leadership request to leader. ``` -* `ftfl`: Отображает список всех feature-флагов и показывает, включены ли они для экземпляра Keeper. +* `ftfl`: Выводит список всех feature-флагов и показывает, включены ли они для экземпляра Keeper. ```response filtered_list 1 @@ -379,40 +388,41 @@ multi_read 1 check_not_exists 0 ``` -* `ydld`: Запрос на передачу лидерства и переход в состояние последователя. Если сервер, получающий запрос, является лидером, он сначала приостановит операции записи, затем дождётся, пока преемник (текущий лидер никогда не может быть преемником) не завершит догон по последним записям журнала, и после этого откажется от лидерства. Преемник будет выбран автоматически. Будет возвращено `Sent yield leadership request to leader.` если запрос отправлен, или `Failed to send yield leadership request to leader.` если запрос не был отправлен. Обратите внимание, что если узел уже является последователем, результат будет таким же, как если бы запрос был отправлен. +* `ydld`: Запрос уступить лидерство и перейти в состояние follower. Если сервер, получивший запрос, является лидером, он сначала приостановит операции записи, подождёт, пока преемник (текущий лидер никогда не может быть преемником) не догонит его по последнему журналу, а затем откажется от лидерства. Преемник будет выбран автоматически. Возвращает `Sent yield leadership request to leader.` если запрос отправлен, или `Failed to send yield leadership request to leader.` если запрос не отправлен. Обратите внимание, что если узел уже является follower, результат будет таким же, как если бы запрос был отправлен. ```response -Отправлен запрос на передачу лидерства лидеру. +Sent yield leadership request to leader. ``` * `pfev`: Возвращает значения для всех собранных событий. Для каждого события возвращает его имя, значение и описание. + ```response -FileOpen 62 Количество открытых файлов. -Seek 4 Количество вызовов функции 'lseek'. -ReadBufferFromFileDescriptorRead 126 Количество операций чтения (read/pread) из файлового дескриптора. Не включает сокеты. -ReadBufferFromFileDescriptorReadFailed 0 Количество неудачных попыток чтения (read/pread) из файлового дескриптора. -ReadBufferFromFileDescriptorReadBytes 178846 Количество байтов, прочитанных из файловых дескрипторов. Если файл сжат, отображается размер сжатых данных. -WriteBufferFromFileDescriptorWrite 7 Количество операций записи (write/pwrite) в файловый дескриптор. Не включает сокеты. -WriteBufferFromFileDescriptorWriteFailed 0 Количество неудачных попыток записи (write/pwrite) в файловый дескриптор. -WriteBufferFromFileDescriptorWriteBytes 153 Количество байтов, записанных в файловые дескрипторы. Если файл сжат, отображается размер сжатых данных. -FileSync 2 Количество вызовов функции F_FULLFSYNC/fsync/fdatasync для файлов. -DirectorySync 0 Количество вызовов функции F_FULLFSYNC/fsync/fdatasync для каталогов. -FileSyncElapsedMicroseconds 12756 Общее время ожидания системного вызова F_FULLFSYNC/fsync/fdatasync для файлов. -DirectorySyncElapsedMicroseconds 0 Общее время ожидания системного вызова F_FULLFSYNC/fsync/fdatasync для каталогов. -ReadCompressedBytes 0 Количество байтов (до декомпрессии), прочитанных из сжатых источников (файлы, сеть). -CompressedReadBufferBlocks 0 Количество сжатых блоков (блоков данных, сжатых независимо друг от друга), прочитанных из сжатых источников (файлы, сеть). -CompressedReadBufferBytes 0 Количество несжатых байтов (после декомпрессии), прочитанных из сжатых источников (файлы, сеть). -AIOWrite 0 Количество операций записи через интерфейс AIO в Linux или FreeBSD -AIOWriteBytes 0 Количество байтов, записанных через интерфейс AIO в Linux или FreeBSD +FileOpen 62 Number of files opened. +Seek 4 Number of times the 'lseek' function was called. +ReadBufferFromFileDescriptorRead 126 Number of reads (read/pread) from a file descriptor. Does not include sockets. +ReadBufferFromFileDescriptorReadFailed 0 Number of times the read (read/pread) from a file descriptor have failed. +ReadBufferFromFileDescriptorReadBytes 178846 Number of bytes read from file descriptors. If the file is compressed, this will show the compressed data size. +WriteBufferFromFileDescriptorWrite 7 Number of writes (write/pwrite) to a file descriptor. Does not include sockets. +WriteBufferFromFileDescriptorWriteFailed 0 Number of times the write (write/pwrite) to a file descriptor have failed. +WriteBufferFromFileDescriptorWriteBytes 153 Number of bytes written to file descriptors. If the file is compressed, this will show compressed data size. +FileSync 2 Number of times the F_FULLFSYNC/fsync/fdatasync function was called for files. +DirectorySync 0 Number of times the F_FULLFSYNC/fsync/fdatasync function was called for directories. +FileSyncElapsedMicroseconds 12756 Total time spent waiting for F_FULLFSYNC/fsync/fdatasync syscall for files. +DirectorySyncElapsedMicroseconds 0 Total time spent waiting for F_FULLFSYNC/fsync/fdatasync syscall for directories. +ReadCompressedBytes 0 Number of bytes (the number of bytes before decompression) read from compressed sources (files, network). +CompressedReadBufferBlocks 0 Number of compressed blocks (the blocks of data that are compressed independent of each other) read from compressed sources (files, network). +CompressedReadBufferBytes 0 Number of uncompressed bytes (the number of bytes after decompression) read from compressed sources (files, network). +AIOWrite 0 Number of writes with Linux or FreeBSD AIO interface +AIOWriteBytes 0 Number of bytes written with Linux or FreeBSD AIO interface ... ``` ### HTTP-контроль {#http-control} -ClickHouse Keeper предоставляет HTTP-интерфейс для проверки готовности реплики к приему трафика. Он может использоваться в облачных средах, таких как [Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes). +ClickHouse Keeper предоставляет HTTP-интерфейс для проверки того, готова ли реплика принимать трафик. Его можно использовать в облачных средах, таких как [Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes). -Пример конфигурации, которая включает конечную точку `/ready`: +Пример конфигурации, которая включает HTTP-эндпоинт `/ready`: ```xml @@ -429,10 +439,10 @@ ClickHouse Keeper предоставляет HTTP-интерфейс для пр ### Флаги возможностей {#feature-flags} -Keeper полностью совместим с ZooKeeper и его клиентами, но также добавляет несколько уникальных возможностей и типов запросов, которые могут использоваться клиентом ClickHouse. -Поскольку эти возможности могут вносить изменения, несовместимые с предыдущими версиями, большинство из них по умолчанию отключено и может быть включено с помощью параметра конфигурации `keeper_server.feature_flags`. -Все возможности могут быть явно отключены. -Если вы хотите включить новую возможность для кластера Keeper, мы рекомендуем сначала обновить все экземпляры Keeper в кластере до версии, которая поддерживает эту возможность, а затем включить саму возможность. +Keeper полностью совместим с ZooKeeper и его клиентами, но также добавляет некоторые уникальные возможности и типы запросов, которые могут использоваться клиентом ClickHouse. +Поскольку эти возможности могут приводить к обратно несовместимым изменениям, большинство из них по умолчанию отключено и может быть включено с помощью параметра конфигурации `keeper_server.feature_flags`. +Все возможности можно явно отключить. +Если вы хотите включить новую возможность для кластера Keeper, мы рекомендуем сначала обновить все экземпляры Keeper в кластере до версии, которая поддерживает эту возможность, а затем включить её. Пример конфигурации флагов возможностей, которая отключает `multi_read` и включает `check_not_exists`: @@ -449,26 +459,27 @@ Keeper полностью совместим с ZooKeeper и его клиент Доступны следующие возможности: -| Feature | Description | Default | -| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | -| `multi_read` | Поддержка запроса множественного чтения (`read multi`) | `1` | -| `filtered_list` | Поддержка запроса `list`, который фильтрует результаты по типу узла (эфемерный или постоянный) | `1` | -| `check_not_exists` | Поддержка запроса `CheckNotExists`, который проверяет, что узел не существует | `1` | -| `create_if_not_exists` | Поддержка запроса `CreateIfNotExists`, который пытается создать узел, если он не существует. Если он уже существует, изменения не применяются и возвращается `ZOK` | `1` | -| `remove_recursive` | Поддержка запроса `RemoveRecursive`, который удаляет узел вместе с его поддеревом | `1` | +| Feature | Description | Default | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `multi_read` | Поддержка запроса на множественное чтение | `1` | +| `filtered_list` | Поддержка запроса `list`, который фильтрует результаты по типу узла (эфемерный или постоянный) | `1` | +| `check_not_exists` | Поддержка запроса `CheckNotExists`, который проверяет, что узел не существует | `1` | +| `create_if_not_exists` | Поддержка запроса `CreateIfNotExists`, который пытается создать узел, если он не существует. Если узел существует, изменения не применяются и возвращается `ZOK` | `1` | +| `remove_recursive` | Поддержка запроса `RemoveRecursive`, который удаляет узел вместе с его поддеревом | `1` | :::note -Начиная с версии 25.7 некоторые флаги функций включены по умолчанию.\ +Некоторые флаги функций по умолчанию включены начиная с версии 25.7. Рекомендуемый способ обновления Keeper до версии 25.7+ — сначала обновиться до версии 24.9+. ::: + ### Миграция с ZooKeeper {#migration-from-zookeeper} -Бесшовная миграция с ZooKeeper на ClickHouse Keeper невозможна. Необходимо остановить кластер ZooKeeper, преобразовать данные и запустить ClickHouse Keeper. Утилита `clickhouse-keeper-converter` позволяет преобразовать журналы и снимки состояния ZooKeeper в снимок состояния ClickHouse Keeper. Она работает только с ZooKeeper > 3.4. Шаги миграции: +Бесшовная миграция с ZooKeeper на ClickHouse Keeper невозможна. Необходимо остановить кластер ZooKeeper, преобразовать данные и запустить ClickHouse Keeper. Инструмент `clickhouse-keeper-converter` позволяет преобразовывать логи и снапшоты ZooKeeper в снапшот ClickHouse Keeper. Он поддерживает только ZooKeeper версии старше 3.4. Порядок миграции: 1. Остановите все узлы ZooKeeper. -2. Необязательно, но рекомендуется: найдите ведущий (leader) узел ZooKeeper, запустите и снова остановите его. Это заставит ZooKeeper создать согласованный снимок состояния. +2. Необязательный, но рекомендованный шаг: найдите ведущий (leader) узел ZooKeeper, перезапустите его (запустите и снова остановите). Это заставит ZooKeeper создать консистентный снапшот. 3. Запустите `clickhouse-keeper-converter` на ведущем узле, например: @@ -476,49 +487,50 @@ Keeper полностью совместим с ZooKeeper и его клиент clickhouse-keeper-converter --zookeeper-logs-dir /var/lib/zookeeper/version-2 --zookeeper-snapshots-dir /var/lib/zookeeper/version-2 --output-dir /path/to/clickhouse/keeper/snapshots ``` -4. Скопируйте снимок (snapshot) на серверные узлы ClickHouse с настроенным `keeper` или запустите ClickHouse Keeper вместо ZooKeeper. Снимок должен храниться на всех узлах, иначе пустые узлы могут работать быстрее, и один из них может стать лидером. +4. Скопируйте snapshot на серверные узлы ClickHouse с настроенным `keeper` или запустите ClickHouse Keeper вместо ZooKeeper. Snapshot должен храниться на всех узлах, иначе пустые узлы могут запуститься быстрее, и один из них может стать лидером. :::note -Инструмент `keeper-converter` недоступен в отдельном бинарнике Keeper. -Если у вас установлен ClickHouse, вы можете использовать этот бинарник напрямую: +Инструмент `keeper-converter` недоступен в отдельном исполняемом файле Keeper. +Если у вас установлен ClickHouse, вы можете использовать его исполняемый файл напрямую: ```bash clickhouse keeper-converter ... ``` -В противном случае вы можете [скачать исполняемый файл](/getting-started/quick-start/oss#download-the-binary) и запустить инструмент, как описано выше, без установки ClickHouse. +Otherwise, you can [download the binary](/getting-started/quick-start/oss#download-the-binary) and run the tool as described above without installing ClickHouse. ::: ### Восстановление после потери кворума {#recovering-after-losing-quorum} -Поскольку ClickHouse Keeper использует Raft, он может выдерживать определённое количество сбоев узлов в зависимости от размера кластера. \ -Например, в кластере из 3 узлов он будет продолжать корректную работу, если выйдет из строя только 1 узел. +Поскольку ClickHouse Keeper использует Raft, он может выдерживать определённое количество отказов узлов в зависимости от размера кластера. +Например, для кластера из 3 узлов он будет продолжать корректно работать, если выйдет из строя только 1 узел. -Конфигурацию кластера можно динамически изменять, но есть некоторые ограничения. Переконфигурация также опирается на Raft, -поэтому для добавления или удаления узла из кластера необходим кворум. Если вы потеряете слишком много узлов кластера одновременно и не сможете +Конфигурацию кластера можно динамически изменять, но есть некоторые ограничения. Переконфигурирование также полагается на Raft, +поэтому для добавления/удаления узла из кластера вам необходим кворум. Если вы потеряете слишком много узлов в кластере одновременно и не сможете запустить их снова, Raft перестанет работать и не позволит вам переконфигурировать кластер обычным способом. -Тем не менее, в ClickHouse Keeper есть режим восстановления, который позволяет принудительно переконфигурировать кластер, используя только один узел. -К этому следует прибегать только в самом крайнем случае, если вы не можете заново запустить узлы или развернуть новый экземпляр на том же endpoint. +Тем не менее, в ClickHouse Keeper есть режим восстановления, который позволяет принудительно переконфигурировать кластер, имея всего 1 узел. +Это следует использовать только в крайнем случае, если вы не можете заново запустить свои узлы или запустить новый экземпляр на том же сетевом адресе. -Важные замечания перед продолжением: +Важные моменты, которые нужно учесть перед продолжением: -* Убедитесь, что вышедшие из строя узлы не смогут снова подключиться к кластеру. -* Не запускайте ни один из новых узлов, пока это не будет явно указано в шагах. +* Убедитесь, что вышедшие из строя узлы больше не смогут подключиться к кластеру. +* Не запускайте никакие новые узлы, пока это явно не указано в шагах. -После того как вы убедились, что вышеперечисленные условия соблюдены, выполните следующие действия: +После того как вы убедились, что вышеуказанное верно, необходимо выполнить следующее: -1. Выберите один узел Keeper в качестве нового лидера. Имейте в виду, что данные этого узла будут использоваться для всего кластера, поэтому рекомендуется выбирать узел с наиболее актуальным состоянием. -2. Прежде чем что-либо делать, создайте резервную копию каталогов `log_storage_path` и `snapshot_storage_path` выбранного узла. +1. Выберите один узел Keeper, который станет новым лидером. Имейте в виду, что данные этого узла будут использованы для всего кластера, поэтому рекомендуется выбрать узел с наиболее актуальным состоянием. +2. Прежде чем делать что-либо ещё, создайте резервную копию каталогов `log_storage_path` и `snapshot_storage_path` выбранного узла. 3. Переконфигурируйте кластер на всех узлах, которые вы планируете использовать. -4. Отправьте четырёхбуквенную команду `rcvr` на выбранный узел, что переведёт его в режим восстановления, ИЛИ остановите экземпляр Keeper на выбранном узле и запустите его снова с аргументом `--force-recovery`. -5. По одному запускайте экземпляры Keeper на новых узлах, убеждаясь, что `mntr` возвращает `follower` в поле `zk_server_state` перед запуском следующего. -6. В режиме восстановления ведущий (лидирующий) узел будет возвращать сообщение об ошибке на команду `mntr` до тех пор, пока не достигнет кворума с новыми узлами, и будет отклонять любые запросы от клиента и ведомых узлов. -7. После достижения кворума ведущий узел вернётся в нормальный режим работы и начнёт принимать все запросы через Raft — проверьте это с помощью `mntr`, который должен вернуть `leader` в поле `zk_server_state`. +4. Отправьте четырёхбуквенную команду `rcvr` на выбранный узел, чтобы перевести его в режим восстановления, ИЛИ остановите экземпляр Keeper на выбранном узле и запустите его снова с аргументом `--force-recovery`. +5. По одному запускайте экземпляры Keeper на новых узлах, удостоверяясь, что команда `mntr` возвращает `follower` в поле `zk_server_state` перед запуском следующего узла. +6. В режиме восстановления узел-лидер будет возвращать сообщение об ошибке на команду `mntr` до тех пор, пока не достигнет кворума с новыми узлами, и будет отклонять любые запросы от клиента и фолловеров. +7. После достижения кворума узел-лидер вернётся в нормальный режим работы и будет принимать все запросы, используя Raft — проверьте это с помощью `mntr`, которая должна возвращать `leader` в поле `zk_server_state`. + ## Использование дисков с Keeper {#using-disks-with-keeper} -Keeper поддерживает ограниченный набор [внешних дисков](/operations/storing-data.md) для хранения снимков, файлов журнала и файла состояния. +Keeper поддерживает подмножество [внешних дисков](/operations/storing-data.md) для хранения снимков, файлов журнала и файла состояния. Поддерживаемые типы дисков: @@ -526,7 +538,7 @@ Keeper поддерживает ограниченный набор [внешн * s3 * local -Ниже приведён пример описаний дисков в файле конфигурации. +Ниже приведён пример определения дисков в конфигурационном файле. ```xml @@ -563,22 +575,22 @@ Keeper поддерживает ограниченный набор [внешн ``` -Чтобы использовать диск для логов, параметр конфигурации `keeper_server.log_storage_disk` должен содержать имя диска. -Чтобы использовать диск для снимков (snapshots), параметр конфигурации `keeper_server.snapshot_storage_disk` должен содержать имя диска. -Дополнительно для последних логов и снимков могут использоваться разные диски с помощью параметров `keeper_server.latest_log_storage_disk` и `keeper_server.latest_snapshot_storage_disk` соответственно. +Чтобы использовать диск для логов, конфигурационный параметр `keeper_server.log_storage_disk` должен быть установлен в значение имени диска. +Чтобы использовать диск для снимков, конфигурационный параметр `keeper_server.snapshot_storage_disk` должен быть установлен в значение имени диска. +Дополнительно, для последних логов или снимков могут использоваться разные диски с помощью параметров `keeper_server.latest_log_storage_disk` и `keeper_server.latest_snapshot_storage_disk` соответственно. В этом случае Keeper будет автоматически перемещать файлы на соответствующие диски при создании новых логов или снимков. -Чтобы использовать диск для файла состояния, параметр конфигурации `keeper_server.state_storage_disk` должен содержать имя диска. +Чтобы использовать диск для файла состояния, конфигурационный параметр `keeper_server.state_storage_disk` должен быть установлен в значение имени диска. -Перемещение файлов между дисками безопасно, и нет риска потери данных, даже если Keeper остановится посреди передачи. -Пока файл не будет полностью перенесён на новый диск, он не удаляется со старого. +Перемещение файлов между дисками безопасно, и нет риска потери данных, если Keeper остановится в середине переноса. +Пока файл не будет полностью перемещён на новый диск, он не удаляется со старого. -Keeper с параметром `keeper_server.coordination_settings.force_sync`, установленным в `true` (`true` по умолчанию), не может обеспечить некоторые гарантии для всех типов дисков. -В данный момент только диски типа `local` поддерживают надёжный sync на диск. -Если используется `force_sync`, `log_storage_disk` должен быть диском типа `local`, если `latest_log_storage_disk` не используется. -Если используется `latest_log_storage_disk`, он всегда должен быть диском типа `local`. -Если `force_sync` отключён, диски любых типов могут использоваться в любой конфигурации. +Keeper с параметром `keeper_server.coordination_settings.force_sync`, установленным в `true` (`true` по умолчанию), не может обеспечить определённые гарантии для всех типов дисков. +На данный момент только диски типа `local` поддерживают персистентный sync. +Если используется `force_sync`, `log_storage_disk` должен быть диском `local`, если `latest_log_storage_disk` не используется. +Если используется `latest_log_storage_disk`, он всегда должен быть диском `local`. +Если `force_sync` отключён, диски всех типов могут использоваться в любой конфигурации. -Возможная конфигурация хранилища для экземпляра Keeper может выглядеть следующим образом: +Возможная настройка хранилища для экземпляра Keeper может выглядеть следующим образом: ```xml @@ -592,22 +604,23 @@ Keeper с параметром `keeper_server.coordination_settings.force_sync`, ``` -Этот экземпляр будет хранить все логи, кроме последних, на диске `log_s3_plain`, а последние логи — на диске `log_local`. -Такая же логика применяется к снапшотам: все, кроме последних снапшотов, будут храниться на `snapshot_s3_plain`, а последний снапшот — на диске `snapshot_local`. +Этот экземпляр будет хранить все журналы, кроме последних, на диске `log_s3_plain`, а последний журнал — на диске `log_local`. +Та же логика применяется к снапшотам: все, кроме последних снапшотов, будут храниться на `snapshot_s3_plain`, а последний снапшот — на диске `snapshot_local`. ### Изменение конфигурации дисков {#changing-disk-setup} :::important -Перед применением новой конфигурации дисков вручную создайте резервную копию всех логов и снапшотов Keeper. +Перед применением новой конфигурации дисков вручную создайте резервную копию всех журналов и снапшотов Keeper. ::: -Если настроена многоуровневая конфигурация дисков (используются отдельные диски для последних файлов), Keeper попытается автоматически переместить файлы на нужные диски при запуске. -Гарантии остаются такими же, как и раньше: пока файл полностью не перенесён на новый диск, он не удаляется со старого, поэтому можно безопасно выполнять несколько перезапусков. +Если настроена многоуровневая схема дисков (с использованием отдельных дисков для последних файлов), Keeper попытается автоматически переместить файлы на нужные диски при запуске. +Гарантии остаются такими же, как и раньше: пока файл полностью не перемещён на новый диск, он не удаляется со старого, поэтому можно безопасно выполнять несколько перезапусков. -Если необходимо перенести файлы на полностью новый диск (или перейти с конфигурации с двумя дисками на конфигурацию с одним диском), можно использовать несколько определений параметров `keeper_server.old_snapshot_storage_disk` и `keeper_server.old_log_storage_disk`. +Если необходимо переместить файлы на полностью новый диск (или перейти с конфигурации с двумя дисками на конфигурацию с одним диском), можно использовать несколько заданий параметров `keeper_server.old_snapshot_storage_disk` и `keeper_server.old_log_storage_disk`. Следующая конфигурация показывает, как можно перейти с предыдущей конфигурации с двумя дисками на полностью новую конфигурацию с одним диском: + ```xml @@ -622,35 +635,38 @@ Keeper с параметром `keeper_server.coordination_settings.force_sync`, ``` -При запуске все файлы журналов будут перемещены с дисков `log_local` и `log_s3_plain` на диск `log_local2`. -Кроме того, все файлы снимков состояния будут перемещены с дисков `snapshot_local` и `snapshot_s3_plain` на диск `snapshot_local2`. +При запуске все файлы журнала будут перенесены с `log_local` и `log_s3_plain` на диск `log_local2`. +Также все файлы снимков состояния будут перенесены с `snapshot_local` и `snapshot_s3_plain` на диск `snapshot_local2`. + -## Настройка кэша логов {#configuring-logs-cache} +## Настройка кэша журналов {#configuring-logs-cache} -Чтобы минимизировать объём данных, читаемых с диска, Keeper кэширует записи журнала в памяти. -Если запросы большие, журнальные записи будут занимать слишком много памяти, поэтому объём кэшируемых логов ограничен. -Этот предел настраивается с помощью следующих двух конфигурационных параметров: -- `latest_logs_cache_size_threshold` — общий размер последних логов, хранящихся в кэше -- `commit_logs_cache_size_threshold` — общий размер следующих по порядку логов, которые предстоит закоммитить +Чтобы минимизировать объем данных, считываемых с диска, Keeper кэширует записи журнала в памяти. +Если запросы крупные, записи журнала будут занимать слишком много памяти, поэтому объем кэшируемых журналов ограничен. +Этот лимит контролируется двумя конфигурационными параметрами: +- `latest_logs_cache_size_threshold` — общий объем последних журналов, хранящихся в кэше +- `commit_logs_cache_size_threshold` — общий объем последующих журналов, которые должны быть зафиксированы (committed) следующими -Если значения по умолчанию слишком велики, вы можете сократить потребление памяти, уменьшив значения этих двух параметров. +Если значения по умолчанию слишком велики, вы можете уменьшить использование памяти, снизив значения этих двух параметров. :::note -Вы можете использовать команду `pfev`, чтобы проверить объём логов, прочитанных из каждого кэша и из файла. -Также вы можете использовать метрики с эндпоинта Prometheus для отслеживания текущего размера обоих кэшей. +Вы можете использовать команду `pfev`, чтобы проверить объем журналов, считываемых из каждого кэша и из файла. +Также вы можете использовать метрики с endpoint Prometheus для отслеживания текущего размера обоих кэшей. ::: + + ## Prometheus {#prometheus} -Keeper может предоставлять метрики для сбора с помощью [Prometheus](https://prometheus.io). +Keeper может предоставлять данные метрик для опроса из [Prometheus](https://prometheus.io). Настройки: * `endpoint` – HTTP-эндпоинт для сбора метрик сервером Prometheus. Должен начинаться с '/'. * `port` – Порт для `endpoint`. -* `metrics` – Флаг, включающий экспорт метрик из таблицы [system.metrics](/operations/system-tables/metrics). -* `events` – Флаг, включающий экспорт метрик из таблицы [system.events](/operations/system-tables/events). -* `asynchronous_metrics` – Флаг, включающий экспорт текущих значений метрик из таблицы [system.asynchronous_metrics](/operations/system-tables/asynchronous_metrics). +* `metrics` – Флаг, который включает экспорт метрик из таблицы [system.metrics](/operations/system-tables/metrics). +* `events` – Флаг, который включает экспорт метрик из таблицы [system.events](/operations/system-tables/events). +* `asynchronous_metrics` – Флаг, который включает экспорт текущих значений метрик из таблицы [system.asynchronous_metrics](/operations/system-tables/asynchronous_metrics). **Пример** @@ -671,28 +687,29 @@ Keeper может предоставлять метрики для сбора с ``` -Проверьте (замените `127.0.0.1` на IP-адрес или имя хоста сервера ClickHouse): +Проверьте (подставьте вместо `127.0.0.1` IP-адрес или имя хоста вашего сервера ClickHouse): ```bash curl 127.0.0.1:9363/metrics ``` -См. также раздел ClickHouse Cloud [Интеграция с Prometheus](/integrations/prometheus). +См. также раздел [Интеграция с Prometheus](/integrations/prometheus) в ClickHouse Cloud. + ## Руководство пользователя ClickHouse Keeper {#clickhouse-keeper-user-guide} -В этом руководстве приведены простые и минимальные настройки для конфигурации ClickHouse Keeper с примером проверки распределённых операций. Пример выполняется с использованием 3 узлов под управлением Linux. +В этом руководстве приведены простые и минимальные настройки для конфигурирования ClickHouse Keeper, а также пример проверки распределённых операций. Пример выполняется на 3 узлах под управлением Linux. ### 1. Настройка узлов с параметрами Keeper {#1-configure-nodes-with-keeper-settings} -1. Установите 3 экземпляра ClickHouse на 3 хоста (`chnode1`, `chnode2`, `chnode3`). (См. раздел [Быстрый старт](/getting-started/install/install.mdx) для получения подробной информации по установке ClickHouse.) +1. Установите 3 экземпляра ClickHouse на 3 хоста (`chnode1`, `chnode2`, `chnode3`). (Подробности по установке ClickHouse см. в разделе [Quick Start](/getting-started/install/install.mdx).) -2. На каждом узле добавьте следующую запись, чтобы разрешить внешние подключения через сетевой интерфейс. +2. На каждом узле добавьте следующую запись, чтобы разрешить внешнее взаимодействие через сетевой интерфейс. ```xml 0.0.0.0 ``` -3. Добавьте следующую конфигурацию ClickHouse Keeper на все три сервера, обновив параметр `` для каждого сервера; для `chnode1` он будет `1`, для `chnode2` — `2` и т. д. +3. Добавьте следующую конфигурацию ClickHouse Keeper на все три сервера, обновив параметр `` для каждого сервера; для `chnode1` это будет `1`, для `chnode2` — `2` и т. д. ```xml 9181 @@ -730,13 +747,13 @@ curl 127.0.0.1:9363/metrics |Parameter |Description |Example | |----------|------------------------------|---------------------| - |tcp_port |порт, используемый клиентами Keeper|9181 — значение по умолчанию, аналогичное 2181 в ZooKeeper| + |tcp_port |порт, используемый клиентами Keeper|9181 — значение по умолчанию, эквивалент 2181 в Zookeeper| |server_id| идентификатор для каждого сервера ClickHouse Keeper, используемый в конфигурации Raft| 1| - |coordination_settings| секция с параметрами, такими как тайм-ауты| тайм-ауты: 10000, уровень логирования: trace| - |server |определение сервера-участника|список определений каждого сервера| + |coordination_settings| раздел с параметрами, такими как таймауты| таймауты: 10000, уровень логирования: trace| + |server |описание сервера-участника|список описаний каждого сервера| |raft_configuration| настройки для каждого сервера в кластере Keeper| сервер и настройки для каждого| |id |числовой идентификатор сервера для сервисов Keeper|1| - |hostname |имя хоста (hostname), IP-адрес или FQDN каждого сервера в кластере Keeper|`chnode1.domain.com`| + |hostname |имя хоста, IP или FQDN каждого сервера в кластере Keeper|`chnode1.domain.com`| |port|порт для прослушивания межсерверных подключений Keeper|9234| 4. Включите компонент Zookeeper. Он будет использовать движок ClickHouse Keeper: @@ -762,23 +779,25 @@ curl 127.0.0.1:9363/metrics |Parameter |Description |Example | |----------|------------------------------|---------------------| |node |список узлов для подключений ClickHouse Keeper|запись настроек для каждого сервера| - |host|имя хоста (hostname), IP-адрес или FQDN каждого узла ClickHouse Keeper| `chnode1.domain.com`| + |host|имя хоста, IP или FQDN каждого узла ClickHouse Keeper| `chnode1.domain.com`| |port|клиентский порт ClickHouse Keeper| 9181| -5. Перезапустите ClickHouse и убедитесь, что каждый экземпляр Keeper запущен. Выполните следующую команду на каждом сервере. Команда `ruok` возвращает `imok`, если Keeper запущен и находится в исправном состоянии: +5. Перезапустите ClickHouse и убедитесь, что каждый экземпляр Keeper запущен. Выполните следующую команду на каждом сервере. Команда `ruok` вернёт `imok`, если Keeper запущен и находится в исправном состоянии: ```bash # echo ruok | nc localhost 9181; echo imok ``` -6. В базе данных `system` есть таблица с именем `zookeeper`, которая содержит сведения о ваших экземплярах ClickHouse Keeper. Посмотрим содержимое таблицы: +6. В базе данных `system` есть таблица с именем `zookeeper`, которая содержит сведения о ваших экземплярах ClickHouse Keeper. Просмотрим эту таблицу: ```sql SELECT * FROM system.zookeeper WHERE path IN ('/', '/clickhouse') ``` -Таблица выглядит так: + + +Таблица имеет следующий вид: ```response ┌─name───────┬─value─┬─czxid─┬─mzxid─┬───────────────ctime─┬───────────────mtime─┬─version─┬─cversion─┬─aversion─┬─ephemeralOwner─┬─dataLength─┬─numChildren─┬─pzxid─┬─path────────┐ @@ -788,9 +807,9 @@ curl 127.0.0.1:9363/metrics └────────────┴───────┴───────┴───────┴─────────────────────┴─────────────────────┴─────────┴──────────┴──────────┴────────────────┴────────────┴─────────────┴───────┴─────────────┘ ``` -### 2. Настройте кластер в ClickHouse {#2--configure-a-cluster-in-clickhouse} +### 2. Настройка кластера в ClickHouse {#2--configure-a-cluster-in-clickhouse} -1. Настроим простой кластер с 2 шардами и только одной репликой на 2 из узлов. Третий узел будет использоваться для достижения кворума, требуемого в ClickHouse Keeper. Обновите конфигурацию на `chnode1` и `chnode2`. Следующий кластер определяет по 1 шарду на каждом узле, всего 2 шарда без репликации. В этом примере часть данных будет находиться на одном узле, а часть — на другом: +1. Настройте простой кластер с 2 сегментами и только одной репликой на 2 узлах. Третий узел будет использоваться для достижения кворума, требуемого в ClickHouse Keeper. Обновите конфигурацию на `chnode1` и `chnode2`. Следующий кластер определяет 1 сегмент на каждом узле, в сумме 2 сегмента без репликации. В этом примере часть данных будет на одном узле, а часть — на другом: ```xml @@ -815,14 +834,14 @@ curl 127.0.0.1:9363/metrics ``` - | Parameter | Description | Example | - | --------- | ---------------------------------------------------------------------------------------- | ---------------------------------- | - | shard | список реплик в определении кластера | список реплик для каждого шарда | - | replica | список настроек для каждой реплики | записи настроек для каждой реплики | - | host | hostname, IP или FQDN сервера, на котором будет размещаться реплика шарда | `chnode1.domain.com` | - | port | порт, используемый для связи через нативный tcp‑протокол | 9000 | - | user | имя пользователя, которое будет использоваться для аутентификации в экземплярах кластера | default | - | password | пароль для пользователя, определённого для разрешения подключений к экземплярам кластера | `ClickHouse123!` | + | Параметр | Описание | Пример | + | -------- | ---------------------------------------------------------------------------------------- | ---------------------------------- | + | shard | список реплик в определении кластера | список реплик для каждого сегмента | + | replica | список настроек для каждой реплики | записи настроек для каждой реплики | + | host | hostname, IP или FQDN сервера, который будет размещать реплику сегмента | `chnode1.domain.com` | + | port | порт, используемый для связи с использованием нативного протокола TCP | 9000 | + | user | имя пользователя, которое будет использоваться для аутентификации к экземплярам кластера | default | + | password | пароль для пользователя, определённого для разрешения подключений к экземплярам кластера | `ClickHouse123!` | 2. Перезапустите ClickHouse и убедитесь, что кластер был создан: @@ -830,7 +849,7 @@ curl 127.0.0.1:9363/metrics SHOW clusters; ``` - Вы должны увидеть свой кластер: + Должен отобразиться ваш кластер: ```response ┌─cluster───────┐ @@ -838,13 +857,14 @@ curl 127.0.0.1:9363/metrics └───────────────┘ ``` -### 3. Создайте и протестируйте распределённую таблицу {#3-create-and-test-distributed-table} +### 3. Создание и тестирование distributed таблицы {#3-create-and-test-distributed-table} -1. Создайте новую базу данных на новом кластере, используя ClickHouse client на `chnode1`. Оператор `ON CLUSTER` автоматически создаёт базу данных на обоих узлах. +1. Создайте новую базу данных на новом кластере, используя клиент ClickHouse на `chnode1`. Конструкция `ON CLUSTER` автоматически создаёт базу данных на обоих узлах. ```sql CREATE DATABASE db1 ON CLUSTER 'cluster_2S_1R'; ``` + 2. Создайте новую таблицу в базе данных `db1`. Как и раньше, `ON CLUSTER` создаёт таблицу на обоих узлах. ```sql CREATE TABLE db1.table1 on cluster 'cluster_2S_1R' @@ -874,7 +894,7 @@ curl 127.0.0.1:9363/metrics (4, 'jkl') ``` -5. Обратите внимание, что выполнение запроса `SELECT` на каждом узле показывает только данные, находящиеся на этом узле. Например, на `chnode1`: +5. Обратите внимание, что выполнение запроса `SELECT` на каждом узле показывает только данные на этом узле. Например, на `chnode1`: ```sql SELECT * FROM db1.table1 @@ -907,7 +927,7 @@ curl 127.0.0.1:9363/metrics └────┴─────────┘ ``` -6. Вы можете создать таблицу `Distributed`, которая будет представлять данные на двух шардах. Таблицы с движком `Distributed` не хранят собственные данные, но обеспечивают распределённую обработку запросов по нескольким серверам. Чтения выполняются по всем шардам, а записи могут распределяться между шардами. Выполните следующий запрос на `chnode1`: +6. Вы можете создать distributed таблицу, чтобы получить объединённое представление данных на двух сегментах. Таблицы с движком `Distributed` не хранят собственные данные, но позволяют выполнять распределённую обработку запросов на нескольких серверах. При чтении происходит обращение ко всем сегментам, а запись может быть распределена по сегментам. Выполните следующий запрос на `chnode1`: ```sql CREATE TABLE db1.dist_table ( id UInt64, @@ -916,7 +936,7 @@ curl 127.0.0.1:9363/metrics ENGINE = Distributed(cluster_2S_1R,db1,table1) ``` -7. Обратите внимание, что запрос к `dist_table` возвращает все четыре строки данных с двух шардов: +7. Обратите внимание, что запрос к `dist_table` возвращает все четыре строки данных с двух сегментов: ```sql SELECT * FROM db1.dist_table @@ -939,7 +959,9 @@ curl 127.0.0.1:9363/metrics ### Итоги {#summary} -В этом руководстве показано, как настроить кластер с использованием ClickHouse Keeper. С ClickHouse Keeper вы можете настраивать кластеры и создавать распределённые таблицы, которые могут реплицироваться по шардам. +В этом руководстве показано, как настроить кластер с использованием ClickHouse Keeper. С помощью ClickHouse Keeper вы можете настраивать кластеры и определять distributed таблицы, которые могут реплицироваться между сегментами. + + ## Настройка ClickHouse Keeper с уникальными путями {#configuring-clickhouse-keeper-with-unique-paths} @@ -947,19 +969,19 @@ curl 127.0.0.1:9363/metrics ### Описание {#description} -В этой статье описывается, как использовать встроенную настройку макроса `{uuid}` +В этой статье описано, как использовать встроенный макрос `{uuid}` для создания уникальных записей в ClickHouse Keeper или ZooKeeper. Уникальные -пути полезны при частом создании и удалении таблиц, поскольку это позволяет -избежать ожидания в течение нескольких минут, пока сборщик мусора Keeper -удалит записи путей: каждый раз при создании пути в нём используется новый `uuid`, +пути полезны при частом создании и удалении таблиц, поскольку это +позволяет не дожидаться нескольких минут, пока сборщик мусора Keeper +удалит записи путей: каждый раз при создании пути для него используется новый `uuid`, пути никогда не переиспользуются. ### Пример окружения {#example-environment} -Кластер из трёх узлов, который будет настроен таким образом, что ClickHouse Keeper -будет работать на всех трёх узлах, а ClickHouse — на двух из этих узлов. Это -обеспечивает три узла для ClickHouse Keeper (включая узел-арбитр) и один шард -ClickHouse, состоящий из двух реплик. +Кластер из трёх узлов, который будет настроен таким образом, чтобы ClickHouse Keeper +работал на всех трёх узлах, а ClickHouse — на двух узлах. Это обеспечивает +ClickHouse Keeper три узла (включая узел-арбитр) и +один сегмент ClickHouse, состоящий из двух реплик. | node | description | | ----------------------- | ------------------------------------- | @@ -992,10 +1014,10 @@ ClickHouse, состоящий из двух реплик.
``` -### Процедуры по настройке таблиц для использования `{uuid}` {#procedures-to-set-up-tables-to-use-uuid} +### Порядок настройки таблиц для использования `{uuid}` {#procedures-to-set-up-tables-to-use-uuid} -1. Настройте макросы на каждом сервере\ - пример для сервера 1: +1. Настройте макросы на каждом сервере, + например для сервера 1: ```xml @@ -1005,7 +1027,7 @@ ClickHouse, состоящий из двух реплик. ``` :::note -Обратите внимание, что мы определяем макросы для `shard` и `replica`, но `{uuid}` здесь не определён — это встроенный параметр, и его не нужно задавать вручную. +Обратите внимание, что мы определяем макросы для `shard` и `replica`, но `{uuid}` здесь не определён — он встроен, поэтому нет необходимости его определять. ::: 2. Создайте базу данных @@ -1020,7 +1042,7 @@ CREATE DATABASE db_uuid CREATE DATABASE db_uuid ON CLUSTER cluster_1S_2R ENGINE = Atomic -ID запроса: 07fb7e65-beb4-4c30-b3ef-bd303e5c42b5 +Query id: 07fb7e65-beb4-4c30-b3ef-bd303e5c42b5 ┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ chnode2.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ @@ -1052,14 +1074,15 @@ ORDER BY id Query id: 8f542664-4548-4a02-bd2a-6f2c973d0dc4 ``` -┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ -│ chnode1.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ -│ chnode2.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ -└───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ + +┌─хост──────────────────┬─порт─┬─статус─┬─ошибка─┬─оставшихся_хостов─┬─активных_хостов─┐ +│ chnode1.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ +│ chnode2.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ +└───────────────────────┴──────┴────────┴────────┴─────────────────────┴──────────────────┘ ```` -4. Создайте распределённую таблицу +4. Create a distributed table ```sql CREATE TABLE db_uuid.dist_uuid_table1 ON CLUSTER 'cluster_1S_2R' @@ -1088,7 +1111,7 @@ Query id: 3bc7f339-ab74-4c7d-a752-1ffe54219c0e ### Тестирование {#testing} -1. Добавьте данные на первый узел (например, `chnode1`) +1. Вставьте данные в первый узел (например, `chnode1`) ```sql INSERT INTO db_uuid.uuid_table1 @@ -1100,14 +1123,14 @@ INSERT INTO db_uuid.uuid_table1 ```response INSERT INTO db_uuid.uuid_table1 (id, column1) FORMAT Values -Идентификатор запроса: 0f178db7-50a6-48e2-9a1b-52ed14e6e0f9 +Query id: 0f178db7-50a6-48e2-9a1b-52ed14e6e0f9 -ОК. +Ok. -Обработана 1 строка. Время выполнения: 0.033 сек. +1 row in set. Elapsed: 0.033 sec. ``` -2. Запишите данные на второй узел (например, `chnode2`) +2. Добавьте данные на второй узел (например, `chnode2`) ```sql INSERT INTO db_uuid.uuid_table1 @@ -1123,10 +1146,10 @@ Query id: edc6f999-3e7d-40a0-8a29-3137e97e3607 Ok. -Обработана 1 строка. Затрачено: 0.529 сек. +1 row in set. Elapsed: 0.529 sec. ``` -3. Просмотр записей через распределённую таблицу +3. Просмотр записей в distributed таблице ```sql SELECT * FROM db_uuid.dist_uuid_table1; @@ -1145,14 +1168,14 @@ Query id: 6cbab449-9e7f-40fe-b8c2-62d46ba9f5c8 │ 2 │ def │ └────┴─────────┘ -2 строки в наборе. Затрачено: 0.007 сек. +2 rows in set. Elapsed: 0.007 sec. ``` -### Альтернативы {#alternatives} +### Альтернативные варианты {#alternatives} -Путь репликации по умолчанию можно заранее задать с помощью макросов, включая `{uuid}`. +Путь репликации по умолчанию можно заранее задать с помощью макросов и `{uuid}` -1. Задать значение по умолчанию для таблиц на каждом узле +1. Установите значение по умолчанию для таблиц на каждом узле ```xml /clickhouse/tables/{shard}/db_uuid/{uuid} @@ -1160,7 +1183,7 @@ Query id: 6cbab449-9e7f-40fe-b8c2-62d46ba9f5c8 ``` :::tip -Вы также можете задать макрос `{database}` на каждом узле, если отдельные узлы используются для конкретных баз данных. +Вы также можете определить макрос `{database}` на каждом узле, если узлы используются для конкретных баз данных. ::: 2. Создайте таблицу без явных параметров: @@ -1185,18 +1208,19 @@ ENGINE = ReplicatedMergeTree ORDER BY id ``` -ID запроса: ab68cda9-ae41-4d6d-8d3b-20d8255774ee -┌─хост──────────────────┬─порт─┬─статус─┬─ошибка─┬─число_оставшихся_хостов─┬─число_активных_хостов─┐ -│ chnode2.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ -│ chnode1.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ -└───────────────────────┴──────┴────────┴────────┴───────────────────────────────┴──────────────────────────────┘ +Query id: ab68cda9-ae41-4d6d-8d3b-20d8255774ee + +┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ +│ chnode2.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ +│ chnode1.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ +└───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ 2 строки в наборе. Время выполнения: 1.175 сек. ```` -3. Убедитесь, что использованы настройки из конфигурации по умолчанию +3. Verify it used the settings used in default config ```sql SHOW CREATE TABLE db_uuid.uuid_table1; ```` @@ -1212,19 +1236,19 @@ CREATE TABLE db_uuid.uuid_table1 ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/db_uuid/{uuid}', '{replica}') ORDER BY id -Получена 1 строка. Прошло: 0.003 сек. +1 row in set. Elapsed: 0.003 sec. ``` -### Устранение неполадок {#troubleshooting} +### Диагностика неполадок {#troubleshooting} -Пример команды для получения информации о таблице и UUID: +Пример команды для вывода информации о таблице и её UUID: ```sql SELECT * FROM system.tables WHERE database = 'db_uuid' AND name = 'uuid_table1'; ``` -Пример команды для получения информации о таблице в ZooKeeper, содержащей UUID таблицы, указанной выше +Пример команды для получения информации о таблице в ZooKeeper по UUID таблицы, указанной выше ```sql SELECT * FROM system.zookeeper @@ -1232,11 +1256,11 @@ WHERE path = '/clickhouse/tables/1/db_uuid/9e8a3cc2-0dec-4438-81a7-c3e63ce2a1cf/ ``` :::note -База данных должна быть типа `Atomic`. Если вы выполняете обновление с предыдущей версии, то +База данных должна быть типа `Atomic`. Если вы обновляетесь с предыдущей версии, то база данных `default`, скорее всего, имеет тип `Ordinary`. ::: -Чтобы проверить: +Чтобы это проверить: Например, @@ -1257,9 +1281,10 @@ Query id: b047d459-a1d2-4016-bcf9-3e97e30e49c2 │ db_uuid │ Atomic │ └─────────┴────────┘ -Результат: 1 строка. Затрачено: 0.004 сек. +1 row in set. Elapsed: 0.004 sec. ``` + ## Динамическая переконфигурация ClickHouse Keeper {#reconfiguration} @@ -1267,12 +1292,12 @@ Query id: b047d459-a1d2-4016-bcf9-3e97e30e49c2 ### Описание {#description-1} ClickHouse Keeper частично поддерживает команду ZooKeeper [`reconfig`](https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_modifying) -для динамической переконфигурации кластера, если параметр `keeper_server.enable_reconfiguration` включён. +для динамической переконфигурации кластера, если включён параметр `keeper_server.enable_reconfiguration`. :::note -Если этот параметр выключен, вы можете переконфигурировать кластер, вручную изменив секцию `raft_configuration` +Если этот параметр отключён, кластер можно переконфигурировать вручную, изменив секцию `raft_configuration` реплики. Убедитесь, что вы редактируете файлы на всех репликах, так как только лидер применит изменения. -В качестве альтернативы вы можете отправить запрос `reconfig` через любой клиент, совместимый с ZooKeeper. +Либо вы можете отправить запрос `reconfig` через любой клиент, совместимый с ZooKeeper. ::: Виртуальный узел `/keeper/config` содержит последнюю зафиксированную конфигурацию кластера в следующем формате: @@ -1283,9 +1308,9 @@ server.id2 = ... ... ``` -* Каждая запись о сервере располагается на отдельной строке. -* `server_type` может иметь значение `participant` или `learner` ([learner](https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md) не участвует в выборах лидера). -* `server_priority` — неотрицательное целое число, определяющее, [какие узлы должны иметь приоритет на выборах лидера](https://github.com/eBay/NuRaft/blob/master/docs/leader_election_priority.md). +* Каждая запись о сервере отделяется новой строкой. +* `server_type` может быть `participant` или `learner` ([learner](https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md) не участвует в выборах лидера). +* `server_priority` — это неотрицательное целое число, определяющее, [какие узлы должны иметь приоритет при выборах лидера](https://github.com/eBay/NuRaft/blob/master/docs/leader_election_priority.md). Приоритет 0 означает, что сервер никогда не станет лидером. Пример: @@ -1297,84 +1322,91 @@ server.2=zoo2:9234;participant;1 server.3=zoo3:9234;participant;1 ``` -Вы можете использовать команду `reconfig`, чтобы добавлять новые серверы, удалять существующие и изменять их приоритеты. Ниже приведены примеры (с использованием `clickhouse-keeper-client`): +Вы можете использовать команду `reconfig` для добавления новых серверов, удаления существующих и изменения приоритетов уже существующих серверов — ниже приведены примеры (с использованием `clickhouse-keeper-client`): + ```bash -# Добавление двух новых серверов {#add-two-new-servers} +# Add two new servers reconfig add "server.5=localhost:123,server.6=localhost:234;learner" -# Удаление двух других серверов {#remove-two-other-servers} +# Remove two other servers reconfig remove "3,4" -# Изменение приоритета существующего сервера на 8 {#change-existing-server-priority-to-8} +# Change existing server priority to 8 reconfig add "server.5=localhost:5123;participant;8" ``` -Вот несколько примеров для `kazoo`: +А вот примеры для `kazoo`: + ```python -# Добавление двух новых серверов и удаление двух других серверов {#add-two-new-servers-remove-two-other-servers} +# Add two new servers, remove two other servers reconfig(joining="server.5=localhost:123,server.6=localhost:234;learner", leaving="3,4") ``` -# Изменить приоритет существующего сервера на 8 {#change-existing-server-priority-to-8} + +# Изменение приоритета существующего сервера на 8 reconfig(joining="server.5=localhost:5123;participant;8", leaving=None) ``` -Серверы в `joining` должны быть указаны в формате сервера, описанном выше. Записи серверов должны разделяться запятыми. -При добавлении новых серверов можно опустить `server_priority` (значение по умолчанию — 1) и `server_type` (значение по умолчанию — `participant`). +Servers in `joining` should be in server format described above. Server entries should be delimited by commas. +While adding new servers, you can omit `server_priority` (default value is 1) and `server_type` (default value +is `participant`). -Если требуется изменить приоритет существующего сервера, добавьте его в `joining` с целевым приоритетом. -Хост, порт и тип сервера должны совпадать с существующей конфигурацией сервера. +If you want to change existing server priority, add it to `joining` with target priority. +Server host, port, and type must be equal to existing server configuration. -Серверы добавляются и удаляются в порядке их появления в `joining` и `leaving`. -Все обновления из `joining` обрабатываются перед обновлениями из `leaving`. +Servers are added and removed in order of appearance in `joining` and `leaving`. +All updates from `joining` are processed before updates from `leaving`. -В реализации переконфигурации Keeper существуют некоторые ограничения: +There are some caveats in Keeper reconfiguration implementation: -- Поддерживается только инкрементальная переконфигурация. Запросы с непустым `new_members` отклоняются. +- Only incremental reconfiguration is supported. Requests with non-empty `new_members` are declined. - Реализация ClickHouse Keeper использует API NuRaft для динамического изменения состава участников. NuRaft позволяет - добавлять или удалять только один сервер за раз. Это означает, что каждое изменение конфигурации - (каждая часть `joining`, каждая часть `leaving`) должно обрабатываться отдельно. Таким образом, массовая - переконфигурация недоступна, так как это могло бы ввести конечных пользователей в заблуждение. + ClickHouse Keeper implementation relies on NuRaft API to change membership dynamically. NuRaft has a way to + add a single server or remove a single server, one at a time. This means each change to configuration + (each part of `joining`, each part of `leaving`) must be decided on separately. Thus there is no bulk + reconfiguration available as it would be misleading for end users. - Изменение типа сервера (participant/learner) также невозможно, поскольку это не поддерживается NuRaft, и - единственным способом было бы удаление и добавление сервера, что опять же могло бы ввести в заблуждение. + Changing server type (participant/learner) isn't possible either as it's not supported by NuRaft, and + the only way would be to remove and add server, which again would be misleading. -- Невозможно использовать возвращаемое значение `znodestat`. -- Поле `from_version` не используется. Все запросы с установленным `from_version` отклоняются. - Это связано с тем, что `/keeper/config` является виртуальным узлом, то есть он не хранится в - постоянном хранилище, а генерируется на лету с указанной конфигурацией узла для каждого запроса. - Это решение было принято, чтобы не дублировать данные, поскольку NuRaft уже хранит эту конфигурацию. -- В отличие от ZooKeeper, отсутствует возможность ожидания переконфигурации кластера путем отправки команды `sync`. - Новая конфигурация будет _в конечном итоге_ применена, но без гарантий по времени. -- Команда `reconfig` может завершиться неудачей по различным причинам. Можно проверить состояние кластера и убедиться, что обновление - было применено. +- You cannot use the returned `znodestat` value. +- The `from_version` field is not used. All requests with set `from_version` are declined. + This is due to the fact `/keeper/config` is a virtual node, which means it is not stored in + persistent storage, but rather generated on-the-fly with the specified node config for every request. + This decision was made as to not duplicate data as NuRaft already stores this config. +- Unlike ZooKeeper, there is no way to wait on cluster reconfiguration by submitting a `sync` command. + New config will be _eventually_ applied but with no time guarantees. +- `reconfig` command may fail for various reasons. You can check cluster's state and see whether the update + was applied. ``` -## Преобразование одиночного узла Keeper в кластер {#converting-a-single-node-keeper-into-a-cluster} -Иногда требуется расширить экспериментальный узел Keeper до полноценного кластера. Ниже приведена пошаговая схема, как это сделать для кластера из 3 узлов: +## Преобразование одноузлового keeper в кластер {#converting-a-single-node-keeper-into-a-cluster} + +Иногда возникает необходимость расширить экспериментальный узел keeper до кластера. Ниже приведена схема пошагового превращения его в кластер из 3 узлов: -- **ВАЖНО**: новые узлы необходимо добавлять партиями, меньшими, чем текущий кворум, иначе они смогут выбрать лидера среди себя. В этом примере узлы добавляются по одному. -- Для существующего узла Keeper должен быть включён конфигурационный параметр `keeper_server.enable_reconfiguration`. -- Запустите второй узел с полной новой конфигурацией кластера Keeper. -- После его запуска добавьте его к узлу 1 с помощью [`reconfig`](#reconfiguration). +- **ВАЖНО**: новые узлы должны добавляться партиями, размер которых меньше текущего кворума, иначе среди них будет выбран лидер. В этом примере — по одному. +- На существующем узле keeper должен быть включён конфигурационный параметр `keeper_server.enable_reconfiguration`. +- Запустите второй узел с полной новой конфигурацией кластера keeper. +- После его запуска добавьте его на узел 1 с помощью [`reconfig`](#reconfiguration). - Теперь запустите третий узел и добавьте его с помощью [`reconfig`](#reconfiguration). -- Обновите конфигурацию `clickhouse-server`, добавив туда новый узел Keeper, и перезапустите сервер для применения изменений. -- Обновите конфигурацию Raft на узле 1 и, при необходимости, перезапустите его. +- Обновите конфигурацию `clickhouse-server`, добавив в неё новый узел keeper, и перезапустите сервер для применения изменений. +- Обновите конфигурацию raft на узле 1 и при необходимости перезапустите его. + +Чтобы лучше разобраться с процессом, воспользуйтесь [репозиторием-песочницей](https://github.com/ClickHouse/keeper-extend-cluster). + -Чтобы лучше освоить этот процесс, можно воспользоваться [репозиторием-песочницей](https://github.com/ClickHouse/keeper-extend-cluster). ## Неподдерживаемые функции {#unsupported-features} -Хотя ClickHouse Keeper стремится быть полностью совместимым с ZooKeeper, есть несколько функций, которые в настоящее время не реализованы (разработка продолжается): +Хотя ClickHouse Keeper нацелен на полную совместимость с ZooKeeper, есть несколько возможностей, которые пока не реализованы (их разработка продолжается): - [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) не поддерживает возврат объекта `Stat` - [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) не поддерживает [TTL](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/CreateMode.html#PERSISTENT_WITH_TTL) -- [`addWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#addWatch(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.AddWatchMode)) не работает с постоянными наблюдениями [`PERSISTENT`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/AddWatchMode.html#PERSISTENT) +- [`addWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#addWatch(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.AddWatchMode)) не работает с наблюдениями [`PERSISTENT`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/AddWatchMode.html#PERSISTENT) - [`removeWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeWatches(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.Watcher.WatcherType,boolean)) и [`removeAllWatches`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeAllWatches(java.lang.String,org.apache.zookeeper.Watcher.WatcherType,boolean)) не поддерживаются - `setWatches` не поддерживается -- Создание узлов znode типа [`CONTAINER`](https://zookeeper.apache.org/doc/r3.5.1-alpha/api/org/apache/zookeeper/CreateMode.html) не поддерживается +- Создание znode типа [`CONTAINER`](https://zookeeper.apache.org/doc/r3.5.1-alpha/api/org/apache/zookeeper/CreateMode.html) не поддерживается - Аутентификация по [`SASL`](https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zookeeper+and+SASL) не поддерживается diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md b/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md index 1255bb1d9c7..054921a2b69 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md @@ -8,65 +8,69 @@ description: 'Описывает контроль доступа и управл doc_type: 'guide' --- + + # Создание пользователей и ролей в ClickHouse {#creating-users-and-roles-in-clickhouse} ClickHouse поддерживает управление доступом на основе подхода [RBAC](https://en.wikipedia.org/wiki/Role-based_access_control). Объекты управления доступом в ClickHouse: - [Учетная запись пользователя](#user-account-management) -- [Роль](#role-management) -- [Политика строк (Row Policy)](#row-policy-management) -- [Профиль настроек (Settings Profile)](#settings-profiles-management) -- [Квота](#quotas-management) +- [Role](#role-management) +- [Row Policy](#row-policy-management) +- [Settings Profile](#settings-profiles-management) +- [Quota](#quotas-management) -Вы можете настраивать объекты доступа с помощью: +Вы можете настраивать объекты управления доступом с помощью: -- SQL-ориентированного подхода. +- SQL-управляемого рабочего процесса. Для этого необходимо [включить](#enabling-access-control) эту функциональность. -- [Конфигурационных файлов](/operations/configuration-files.md) сервера `users.xml` и `config.xml`. +- [Файлов конфигурации](/operations/configuration-files.md) сервера `users.xml` и `config.xml`. -Мы рекомендуем использовать SQL-ориентированный подход. Оба метода конфигурации работают одновременно, поэтому, если вы используете конфигурационные файлы сервера для управления учетными записями и правами доступа, вы можете безболезненно перейти на подход, основанный на SQL. +Мы рекомендуем использовать SQL-управляемый рабочий процесс. Оба метода конфигурации работают одновременно, поэтому, если вы используете файлы конфигурации сервера для управления учетными записями и правами доступа, вы можете без проблем перейти на SQL-управляемый рабочий процесс. :::note -Нельзя управлять одной и той же сущностью доступа одновременно с помощью обоих методов конфигурации. +Нельзя управлять одной и той же сущностью доступа одновременно обоими методами конфигурации. ::: :::note Если вы хотите управлять пользователями консоли ClickHouse Cloud, обратитесь к этой [странице](/cloud/security/manage-cloud-users) ::: -Чтобы просмотреть всех пользователей, роли, профили и т. д., а также все их выдачи (grants), используйте оператор [`SHOW ACCESS`](/sql-reference/statements/show#show-access). +Чтобы посмотреть всех пользователей, роли, профили и т. д., а также все их права, используйте команду [`SHOW ACCESS`](/sql-reference/statements/show#show-access). + + ## Обзор {#access-control-usage} -По умолчанию сервер ClickHouse предоставляет учетную запись `default`, для которой нельзя использовать управление доступом и учетными записями на основе SQL, но которая имеет все права и разрешения. Учетная запись `default` используется во всех случаях, когда имя пользователя не определено, например, при входе с клиента или в распределенных запросах. При обработке распределенного запроса учетная запись `default` используется, если в конфигурации сервера или кластера не указаны свойства [user и password](/engines/table-engines/special/distributed.md). +По умолчанию сервер ClickHouse предоставляет учетную запись пользователя `default`, для которой не допускается использование управления доступом и учетными записями на основе SQL, но которая обладает всеми правами и разрешениями. Учетная запись пользователя `default` используется во всех случаях, когда имя пользователя не определено, например, при подключении клиента или в распределённых запросах. При распределённой обработке запросов используется учетная запись пользователя `default`, если в конфигурации сервера или кластера не указаны свойства [user and password](/engines/table-engines/special/distributed.md). -Если вы только начали использовать ClickHouse, рассмотрите следующий сценарий: +Если вы только начинаете использовать ClickHouse, рассмотрите следующий сценарий: 1. [Включите](#enabling-access-control) управление доступом и учетными записями на основе SQL для пользователя `default`. -2. Войдите под учетной записью `default` и создайте всех необходимых пользователей. Не забудьте создать учетную запись администратора (`GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION`). +2. Войдите под учетной записью пользователя `default` и создайте всех необходимых пользователей. Не забудьте создать учетную запись администратора (`GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION`). 3. [Ограничьте права](/operations/settings/permissions-for-queries) для пользователя `default` и отключите для него управление доступом и учетными записями на основе SQL. ### Свойства текущего решения {#access-control-properties} -- Вы можете выдавать права на базы данных и таблицы, даже если они еще не существуют. -- Если таблица удалена, все привилегии, соответствующие этой таблице, не отзываются. Это означает, что даже если позже вы создадите новую таблицу с тем же именем, все привилегии останутся действительными. Чтобы отозвать привилегии, соответствующие удаленной таблице, нужно выполнить, например, запрос `REVOKE ALL PRIVILEGES ON db.table FROM ALL`. -- Для привилегий не задаются сроки действия. +- Вы можете выдавать права для баз данных и таблиц, даже если они ещё не существуют. +- Если таблица удалена, все привилегии, которые соответствуют этой таблице, не отзываются. Это означает, что даже если позже вы создадите новую таблицу с тем же именем, все привилегии останутся действительными. Чтобы отозвать привилегии, соответствующие удалённой таблице, необходимо выполнить, например, запрос `REVOKE ALL PRIVILEGES ON db.table FROM ALL`. +- Для привилегий не заданы параметры времени жизни. ### Учетная запись пользователя {#user-account-management} -Учетная запись пользователя — это объект управления доступом, который используется для аутентификации в ClickHouse. Учетная запись пользователя содержит: +Учетная запись пользователя — это сущность доступа, которая позволяет авторизовать кого-либо в ClickHouse. Учетная запись пользователя содержит: - Идентификационную информацию. -- [Привилегии](/sql-reference/statements/grant.md#privileges), которые определяют область запросов, которые пользователь может выполнять. -- Хосты, с которых разрешено подключение к серверу ClickHouse. -- Назначенные роли и роли по умолчанию. +- [Привилегии](/sql-reference/statements/grant.md#privileges), определяющие набор запросов, которые пользователь может выполнять. +- Хосты, с которых разрешено подключаться к серверу ClickHouse. +- Назначенные и используемые по умолчанию роли. - Настройки с их ограничениями, применяемые по умолчанию при входе пользователя. - Назначенные профили настроек. -Привилегии могут быть выданы учетной записи пользователя с помощью запроса [GRANT](/sql-reference/statements/grant.md) или путем назначения [ролей](#role-management). Для отзыва привилегий у пользователя в ClickHouse предусмотрен запрос [REVOKE](/sql-reference/statements/revoke.md). Чтобы вывести список привилегий пользователя, используйте оператор [SHOW GRANTS](/sql-reference/statements/show#show-grants). +Привилегии могут быть выданы учетной записи пользователя с помощью запроса [GRANT](/sql-reference/statements/grant.md) или путём назначения [ролей](#role-management). Для отзыва привилегий у пользователя ClickHouse предоставляет запрос [REVOKE](/sql-reference/statements/revoke.md). Чтобы вывести список привилегий для пользователя, используйте команду [SHOW GRANTS](/sql-reference/statements/show#show-grants). Запросы управления: @@ -78,16 +82,16 @@ ClickHouse поддерживает управление доступом на ### Применение настроек {#access-control-settings-applying} -Настройки могут быть заданы по-разному: для учетной записи пользователя, в назначенных ей ролях и в профилях настроек. При входе пользователя, если одна и та же настройка задана для разных объектов управления доступом, ее значение и ограничения применяются в следующем порядке (от более высокого приоритета к более низкому): +Настройки могут быть сконфигурированы по-разному: для учетной записи пользователя, в её назначенных ролях и в профилях настроек. При входе пользователя, если одна и та же настройка задана для разных сущностей доступа, значение и ограничения этой настройки применяются следующим образом (от более высокого приоритета к более низкому): 1. Настройки учетной записи пользователя. -2. Настройки для ролей по умолчанию учетной записи пользователя. Если настройка задана в нескольких ролях, порядок ее применения не определен. -3. Настройки из профилей настроек, назначенных пользователю или его ролям по умолчанию. Если настройка задана в нескольких профилях, порядок ее применения не определен. -4. Настройки, применяемые ко всему серверу по умолчанию или из [профиля по умолчанию](/operations/server-configuration-parameters/settings#default_profile). +2. Настройки для ролей по умолчанию учетной записи пользователя. Если настройка задана в нескольких ролях, порядок применения настройки не определён. +3. Настройки из профилей настроек, назначенных пользователю или его ролям по умолчанию. Если настройка задана в нескольких профилях, порядок применения настройки не определён. +4. Настройки, применяемые ко всему серверу по умолчанию или из [default profile](/operations/server-configuration-parameters/settings#default_profile). ### Роль {#role-management} -Роль — это контейнер для объектов управления доступом, который может быть назначен учетной записи пользователя. +Роль — это контейнер для сущностей доступа, который может быть назначен учетной записи пользователя. Роль содержит: @@ -105,17 +109,19 @@ ClickHouse поддерживает управление доступом на - [SHOW CREATE ROLE](/sql-reference/statements/show#show-create-role) - [SHOW ROLES](/sql-reference/statements/show#show-roles) -Привилегии могут быть выданы роли с помощью запроса [GRANT](/sql-reference/statements/grant.md). Для отзыва привилегий у роли в ClickHouse предусмотрен запрос [REVOKE](/sql-reference/statements/revoke.md). +Привилегии могут быть выданы роли с помощью запроса [GRANT](/sql-reference/statements/grant.md). Для отзыва привилегий у роли, ClickHouse предоставляет запрос [REVOKE](/sql-reference/statements/revoke.md). -#### Политика строк {#row-policy-management} +#### Политика по строкам {#row-policy-management} -Политика строк — это фильтр, который определяет, какие строки доступны пользователю или роли. Политика строк содержит фильтры для одной конкретной таблицы, а также список ролей и/или пользователей, к которым применяется эта политика строк. + + +Row policy — это фильтр, который определяет, какие из строк доступны пользователю или роли. Row policy содержит фильтры для одной конкретной таблицы, а также список ролей и/или пользователей, к которым должна применяться эта row policy. :::note -Политики строк имеют смысл только для пользователей с доступом `readonly`. Если пользователи могут изменять таблицу или копировать партиции между таблицами, это сводит на нет ограничения политик строк. +Row policies применимы только для пользователей с доступом только на чтение (readonly). Если пользователи могут изменять таблицу или копировать партиции между таблицами, это сводит на нет ограничения row policies. ::: -Запросы управления: +Управляющие запросы: - [CREATE ROW POLICY](/sql-reference/statements/create/row-policy) - [ALTER ROW POLICY](/sql-reference/statements/alter/row-policy) @@ -123,11 +129,11 @@ ClickHouse поддерживает управление доступом на - [SHOW CREATE ROW POLICY](/sql-reference/statements/show#show-create-row-policy) - [SHOW POLICIES](/sql-reference/statements/show#show-policies) -### Профиль настроек {#settings-profiles-management} +### Settings profile {#settings-profiles-management} -Профиль настроек — это набор [настроек](/operations/settings/index.md). Профиль настроек содержит параметры и ограничения, а также список ролей и/или пользователей, к которым применяется этот профиль. +Settings profile — это набор [настроек](/operations/settings/index.md). Settings profile содержит настройки и ограничения, а также список ролей и/или пользователей, к которым применяется этот профиль. -Запросы управления: +Управляющие запросы: - [CREATE SETTINGS PROFILE](/sql-reference/statements/create/settings-profile) - [ALTER SETTINGS PROFILE](/sql-reference/statements/alter/settings-profile) @@ -135,13 +141,13 @@ ClickHouse поддерживает управление доступом на - [SHOW CREATE SETTINGS PROFILE](/sql-reference/statements/show#show-create-settings-profile) - [SHOW PROFILES](/sql-reference/statements/show#show-profiles) -### Квота {#quotas-management} +### Quota {#quotas-management} -Квота ограничивает использование ресурсов. См. [Quotas](/operations/quotas.md). +Quota ограничивает использование ресурсов. См. [Quotas](/operations/quotas.md). -Квота содержит набор ограничений для некоторых интервалов времени, а также список ролей и/или пользователей, к которым применяется эта квота. +Quota содержит набор лимитов для различных интервалов времени, а также список ролей и/или пользователей, для которых действует эта quota. -Запросы управления: +Управляющие запросы: - [CREATE QUOTA](/sql-reference/statements/create/quota) - [ALTER QUOTA](/sql-reference/statements/alter/quota) @@ -150,23 +156,25 @@ ClickHouse поддерживает управление доступом на - [SHOW QUOTA](/sql-reference/statements/show#show-quota) - [SHOW QUOTAS](/sql-reference/statements/show#show-quotas) -### Включение управления доступом и учетными записями на основе SQL {#enabling-access-control} +### Enabling SQL-driven access control and account management {#enabling-access-control} - Настройте каталог для хранения конфигураций. - ClickHouse хранит конфигурации объектов управления доступом в каталоге, заданном параметром конфигурации сервера [access_control_path](/operations/server-configuration-parameters/settings.md#access_control_path). + ClickHouse хранит конфигурации объектов контроля доступа в каталоге, указанном в параметре конфигурации сервера [access_control_path](/operations/server-configuration-parameters/settings.md#access_control_path). - Включите управление доступом и учетными записями на основе SQL как минимум для одной учетной записи пользователя. По умолчанию управление доступом и учетными записями на основе SQL отключено для всех пользователей. Необходимо настроить как минимум одного пользователя в конфигурационном файле `users.xml` и установить значения настроек [`access_management`](/operations/settings/settings-users.md#access_management-user-setting), `named_collection_control`, `show_named_collections` и `show_named_collections_secrets` равными 1. + + ## Определение SQL-пользователей и ролей {#defining-sql-users-and-roles} :::tip -Если вы работаете в ClickHouse Cloud, см. раздел [Управление доступом в Cloud](/cloud/security/console-roles). +Если вы работаете в ClickHouse Cloud, см. раздел [Cloud access management](/cloud/security/console-roles). ::: -В этой статье рассматриваются основы определения SQL-пользователей и ролей, а также применения соответствующих прав и разрешений к базам данных, таблицам, строкам и столбцам. +В этой статье рассматриваются основы определения SQL-пользователей и ролей, а также применения соответствующих привилегий и разрешений к базам данных, таблицам, строкам и столбцам. ### Включение режима SQL-пользователей {#enabling-sql-user-mode} @@ -179,9 +187,9 @@ ClickHouse поддерживает управление доступом на ``` :::note - Пользователь `default` — единственный пользователь, который создаётся при новой установке, и по умолчанию он также используется для межузлового взаимодействия. + Пользователь `default` — единственный пользователь, который создается при новой установке, и по умолчанию это также учетная запись, используемая для межузлового взаимодействия. - В продуктивной среде рекомендуется отключить этого пользователя после того, как межузловое взаимодействие будет настроено с использованием SQL-администратора, а для межузловых коммуникаций будут заданы ``, учётные данные кластера и/или учётные данные межузловых HTTP- и транспортных протоколов, поскольку учётная запись `default` используется для межузлового взаимодействия. + В продуктивной среде рекомендуется отключить этого пользователя после того, как межузловое взаимодействие будет настроено с использованием SQL-учетной записи администратора, а также будут заданы параметры межузлового взаимодействия с помощью ``, учетных данных кластера и/или учетных данных для межузловых HTTP- и транспортных протоколов, поскольку учетная запись `default` используется для межузлового взаимодействия. ::: 2. Перезапустите узлы, чтобы применить изменения. @@ -192,7 +200,7 @@ ClickHouse поддерживает управление доступом на ``` ### Определение пользователей {#defining-users} -1. Создайте учётную запись SQL-администратора: +1. Создайте учетную запись SQL-администратора: ```sql CREATE USER clickhouse_admin IDENTIFIED BY 'password'; ``` @@ -201,15 +209,17 @@ ClickHouse поддерживает управление доступом на GRANT ALL ON *.* TO clickhouse_admin WITH GRANT OPTION; ``` + + ## Изменение прав доступа {#alter-permissions} -Эта статья предназначена для того, чтобы помочь вам лучше понять, как определять права доступа и как они работают при использовании операторов `ALTER` для привилегированных пользователей. +Эта статья предназначена для того, чтобы помочь вам лучше понять, как определять права доступа и как они работают при использовании команд `ALTER` для привилегированных пользователей. -Операторы `ALTER` разделены на несколько категорий, некоторые из них образуют иерархию, а некоторые — нет и должны быть заданы явно. +Команды `ALTER` разделены на несколько категорий, некоторые из которых являются иерархическими, а некоторые — нет и должны быть явно определены. **Пример конфигурации БД, таблицы и пользователя** -1. Под учетной записью администратора создайте тестового пользователя +1. Работая под учетной записью администратора, создайте тестового пользователя ```sql CREATE USER my_user IDENTIFIED BY 'password'; @@ -221,7 +231,7 @@ CREATE USER my_user IDENTIFIED BY 'password'; CREATE DATABASE my_db; ``` -3. Создайте демонстрационную таблицу +3. Создайте примерную таблицу ```sql CREATE TABLE my_db.my_table (id UInt64, column1 String) ENGINE = MergeTree() ORDER BY id; @@ -234,14 +244,14 @@ CREATE USER my_alter_admin IDENTIFIED BY 'password'; ``` :::note -Чтобы предоставить или отозвать права, пользователь с правами администратора должен иметь привилегию `WITH GRANT OPTION`. +Чтобы предоставить или отозвать привилегии, пользователь с правами администратора должен иметь привилегию `WITH GRANT OPTION`. Например: ```sql GRANT ALTER ON my_db.* WITH GRANT OPTION ``` -Чтобы выполнить `GRANT` или `REVOKE` привилегий, пользователь должен сначала сам обладать этими привилегиями. +Чтобы выдать (`GRANT`) или отозвать (`REVOKE`) привилегии, пользователь должен предварительно сам обладать этими привилегиями. ::: **Предоставление или отзыв привилегий** @@ -249,7 +259,7 @@ GRANT ALTER ON my_db.* WITH GRANT OPTION Иерархия `ALTER`: ```response -├── ALTER (только для таблиц и представлений)/ +├── ALTER (only for table and view)/ │ ├── ALTER TABLE/ │ │ ├── ALTER UPDATE │ │ ├── ALTER DELETE @@ -289,7 +299,7 @@ GRANT ALTER ON my_db.* WITH GRANT OPTION 1. Предоставление привилегий `ALTER` пользователю или роли -Использование `GRANT ALTER on *.* TO my_user` повлияет только на верхнеуровневые операции `ALTER TABLE` и `ALTER VIEW`, остальные операторы `ALTER` должны предоставляться или отзываться по отдельности. +Использование команды `GRANT ALTER on *.* TO my_user` повлияет только на верхнеуровневые операции `ALTER TABLE` и `ALTER VIEW`, остальные команды `ALTER` должны предоставляться или отзыватьcя отдельно. Например, предоставление базовой привилегии `ALTER`: @@ -297,7 +307,7 @@ GRANT ALTER ON my_db.* WITH GRANT OPTION GRANT ALTER ON my_db.my_table TO my_user; ``` -Итоговый набор привилегий: +Итоговый набор прав: ```sql SHOW GRANTS FOR my_user; @@ -313,9 +323,9 @@ Query id: 706befbc-525e-4ec1-a1a2-ba2508cc09e3 └──────────────────────────────────────────────────────────────┘ ``` -Это предоставит все привилегии, подпадающие под `ALTER TABLE` и `ALTER VIEW` в приведённом выше примере, однако не предоставит некоторые другие привилегии `ALTER`, такие как `ALTER ROW POLICY` (обратитесь к иерархии, и вы увидите, что `ALTER ROW POLICY` не является дочерним элементом `ALTER TABLE` или `ALTER VIEW`). Эти привилегии должны быть явно выданы или отозваны. +Это предоставит все привилегии из `ALTER TABLE` и `ALTER VIEW` из приведённого выше примера, однако не предоставит некоторые другие привилегии `ALTER`, такие как `ALTER ROW POLICY` (обратитесь к иерархии, и вы увидите, что `ALTER ROW POLICY` не является дочерней привилегией `ALTER TABLE` или `ALTER VIEW`). Такие привилегии должны быть явно выданы или отозваны. -Если требуется только подмножество привилегий `ALTER`, каждую из них можно выдать отдельно; если у этой привилегии есть подпривилегии, они также будут автоматически выданы. +Если требуется только подмножество привилегий `ALTER`, то каждую из них можно выдать отдельно; если у этой привилегии есть подпривилегии, то они также будут автоматически выданы. Например: @@ -323,25 +333,26 @@ Query id: 706befbc-525e-4ec1-a1a2-ba2508cc09e3 GRANT ALTER COLUMN ON my_db.my_table TO my_user; ``` -Права доступа будут настроены следующим образом: +Права можно настроить следующим образом: ```sql SHOW GRANTS FOR my_user; ``` + ```response SHOW GRANTS FOR my_user -ID запроса: 47b3d03f-46ac-4385-91ec-41119010e4e2 +Query id: 47b3d03f-46ac-4385-91ec-41119010e4e2 ┌─GRANTS FOR my_user────────────────────────────────┐ │ GRANT ALTER COLUMN ON default.my_table TO my_user │ └───────────────────────────────────────────────────┘ -Получена 1 строка. Время выполнения: 0.004 сек. +1 row in set. Elapsed: 0.004 sec. ``` -Это также предоставляет следующие подпривилегии: +При этом также предоставляются следующие дополнительные привилегии: ```sql ALTER ADD COLUMN @@ -371,7 +382,7 @@ Query id: 61fe0fdc-1442-4cd6-b2f3-e8f2a853c739 Ok. -Получено 0 строк. Время выполнения: 0.002 сек. +0 rows in set. Elapsed: 0.002 sec. ``` ```sql @@ -388,13 +399,13 @@ Query id: 27791226-a18f-46c8-b2b4-a9e64baeb683 └─────────────────────────────────────────────────────┘ ``` -Привилегию можно отозвать по отдельности: +Привилегию можно отозвать отдельно: ```sql REVOKE ALTER ADD COLUMN ON my_db.my_table FROM my_user; ``` -Или их можно отозвать на любом из вышестоящих уровней (отозвать все подпривилегии на уровне COLUMN): +Или их можно отозвать на любом из вышестоящих уровней (отозвать все подпривилегии для COLUMN): ```response REVOKE ALTER COLUMN ON my_db.my_table FROM my_user; @@ -407,7 +418,7 @@ Query id: b882ba1b-90fb-45b9-b10f-3cda251e2ccc Ok. -0 строк в наборе. Затрачено: 0.002 сек. +0 rows in set. Elapsed: 0.002 sec. ``` ```sql @@ -426,32 +437,32 @@ Ok. **Дополнительно** -Привилегии должны быть выданы пользователем, который не только имеет `WITH GRANT OPTION`, но и обладает самими этими привилегиями. +Привилегии должен предоставлять пользователь, который не только имеет `WITH GRANT OPTION`, но и обладает самими этими привилегиями. -1. Чтобы выдать администратору привилегию и также предоставить ему возможность управлять набором привилегий\ +1. Чтобы выдать пользователю-администратору привилегию и также позволить ему управлять набором привилегий Ниже приведён пример: ```sql GRANT SELECT, ALTER COLUMN ON my_db.my_table TO my_alter_admin WITH GRANT OPTION; ``` -Теперь пользователь может выдавать или отзывать привилегию `ALTER COLUMN` и все её подпривилегии. +Теперь пользователь может предоставлять или отзывать право `ALTER COLUMN` и все его подпривилегии. **Тестирование** -1. Добавьте привилегию `SELECT` +1. Добавьте право `SELECT` ```sql GRANT SELECT ON my_db.my_table TO my_user; ``` -2. Добавьте пользователю право на добавление столбцов +2. Предоставьте пользователю привилегию на добавление столбца ```sql GRANT ADD COLUMN ON my_db.my_table TO my_user; ``` -3. Войдите в систему под учетной записью пользователя с ограниченными правами +3. Войдите под пользователем с ограниченными правами ```bash clickhouse-client --user my_user --password password --port 9000 --host @@ -484,15 +495,16 @@ DESCRIBE TABLE my_db.my_table Query id: ab9cb2d0-5b1a-42e1-bc9c-c7ff351cb272 ``` -┌─имя─────┬─тип────┬─тип_по_умолчанию─┬─выражение_по_умолчанию─┬─комментарий─┬─выражение_кодека─┬─выражение_TTL─┐ -│ id │ UInt64 │ │ │ │ │ │ -│ column1 │ String │ │ │ │ │ │ -│ column2 │ String │ │ │ │ │ │ -└─────────┴────────┴─────────────────────┴────────────────────────────┴─────────────┴──────────────────┴──────────────────┘ + +┌─name────┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐ +│ id │ UInt64 │ │ │ │ │ │ +│ column1 │ String │ │ │ │ │ │ +│ column2 │ String │ │ │ │ │ │ +└─────────┴────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘ ```` -4. Тестирование удаления столбца +4. Test deleting a column ```sql ALTER TABLE my_db.my_table DROP COLUMN column2; ```` @@ -505,23 +517,23 @@ Query id: 50ad5f6b-f64b-4c96-8f5f-ace87cea6c47 0 rows in set. Elapsed: 0.004 sec. -Получено исключение от сервера (версия 22.5.1): -Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_user: Недостаточно прав. Для выполнения этого запроса необходима привилегия ALTER DROP COLUMN(column2) ON my_db.my_table. (ACCESS_DENIED) +Received exception from server (version 22.5.1): +Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_user: Not enough privileges. To execute this query it's necessary to have grant ALTER DROP COLUMN(column2) ON my_db.my_table. (ACCESS_DENIED) ``` -5. Проверка привилегии `ALTER ADMIN` путём выдачи соответствующих прав +5. Проверьте роль alter_admin, выдав ей это разрешение ```sql GRANT SELECT, ALTER COLUMN ON my_db.my_table TO my_alter_admin WITH GRANT OPTION; ``` -6. Войдите в систему под пользователем alter admin +6. Войдите в систему пользователем alter admin ```bash clickhouse-client --user my_alter_admin --password password --port 9000 --host ``` -7. Предоставить подпривилегию +7. Предоставьте подпривилегию ```sql GRANT ALTER ADD COLUMN ON my_db.my_table TO my_user; @@ -535,7 +547,7 @@ Query id: 1c7622fa-9df1-4c54-9fc3-f984c716aeba Ok. ``` -8. Проверьте, что выдаваемая привилегия, которой у пользователя alter admin нет, не рассматривается как подпривилегия уже выданных этому администратору привилегий. +8. Проверьте попытку выдать привилегию, которой у пользователя alter admin нет и которая не является подпривилегией привилегий пользователя admin. ```sql GRANT ALTER UPDATE ON my_db.my_table TO my_user; @@ -544,13 +556,13 @@ GRANT ALTER UPDATE ON my_db.my_table TO my_user; ```response GRANT ALTER UPDATE ON my_db.my_table TO my_user -Идентификатор запроса: 191690dc-55a6-4625-8fee-abc3d14a5545 +Query id: 191690dc-55a6-4625-8fee-abc3d14a5545 -Возвращено строк: 0. Затрачено: 0.004 сек. +0 rows in set. Elapsed: 0.004 sec. -Получено исключение от сервера (версия 22.5.1): -Код: 497. DB::Exception: Получено от chnode1.marsnet.local:9440. DB::Exception: my_alter_admin: Недостаточно привилегий. Для выполнения этого запроса необходима привилегия ALTER UPDATE ON my_db.my_table WITH GRANT OPTION. (ACCESS_DENIED) +Received exception from server (version 22.5.1): +Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_alter_admin: Not enough privileges. To execute this query it's necessary to have grant ALTER UPDATE ON my_db.my_table WITH GRANT OPTION. (ACCESS_DENIED) ``` **Краткое содержание** -Привилегии `ALTER` имеют иерархическую структуру для операций `ALTER` над таблицами и представлениями, но не для других операторов `ALTER`. Права могут задаваться на детализированном уровне или в виде групп привилегий, а также аналогичным образом отзыватьcя. Пользователь, выдающий или отзывающий права, должен иметь `WITH GRANT OPTION`, чтобы назначать привилегии пользователям, включая себя как действующего пользователя, и при этом уже обладать соответствующей привилегией. Действующий пользователь не может отозвать собственные привилегии, если сам не обладает привилегией `GRANT OPTION`. +Привилегии `ALTER` имеют иерархическую структуру для операций `ALTER` над таблицами и представлениями, но не для других команд `ALTER`. Права могут назначаться как по отдельности, так и группами, и аналогичным образом отзываться. Пользователь, выдающий или отзывающий права, должен иметь `WITH GRANT OPTION`, чтобы назначать привилегии пользователям, включая самого себя, и уже должен обладать соответствующей привилегией. Действующий пользователь не может отозвать собственные привилегии, если он сам не обладает для них привилегией `WITH GRANT OPTION`. diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/interfaces/formats.md b/i18n/ru/docusaurus-plugin-content-docs/current/interfaces/formats.md index 3a210c21ffb..22b58d7b60e 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/interfaces/formats.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/interfaces/formats.md @@ -9,13 +9,10 @@ doc_type: 'reference' import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; - # Форматы входных и выходных данных {#formats-for-input-and-output-data} ClickHouse поддерживает большинство известных текстовых и бинарных форматов данных. Это обеспечивает простую интеграцию практически в любой существующий конвейер данных и позволяет в полной мере использовать преимущества ClickHouse. - - ## Форматы ввода {#input-formats} Форматы ввода используются для: @@ -33,22 +30,16 @@ ClickHouse поддерживает большинство известных т Для детального разбора результатов и рекомендаций по лучшим практикам ознакомьтесь с полной [аналитикой бенчмарка](https://www.clickhouse.com/blog/clickhouse-input-format-matchup-which-is-fastest-most-efficient). Все результаты тестов доступны в онлайн-дашборде [FastFormats](https://fastformats.clickhouse.com/). - - ## Форматы вывода {#output-formats} Поддерживаемые форматы вывода используются для: - Представления результатов запроса `SELECT` - Выполнения операций `INSERT` в таблицы с файловой поддержкой - - ## Обзор форматов {#formats-overview} Поддерживаемые форматы: - - | Формат | Ввод | Вывод | | ---------------------------------------------------------------------------------------------------------- | ---- | ----- | | [TabSeparated](./formats/TabSeparated/TabSeparated.md) | ✔ | ✔ | @@ -138,12 +129,8 @@ ClickHouse поддерживает большинство известных т | [Markdown](./formats/Markdown.md) | ✗ | ✔ | | [Форма](./formats/Form.md) | ✔ | ✗ | - - Вы можете управлять некоторыми параметрами обработки форматов с помощью настроек ClickHouse. Подробнее см. раздел [Настройки](/operations/settings/settings-formats.md). - - ## Схема формата {#formatschema} Имя файла, содержащего схему формата, задаётся настройкой `format_schema`. @@ -161,8 +148,6 @@ ClickHouse поддерживает большинство известных т должно находиться в каталоге, указанном в [format_schema_path](/operations/server-configuration-parameters/settings.md/#format_schema_path) в конфигурации сервера. - - ## Пропуск ошибок {#skippingerrors} Некоторые форматы, такие как `CSV`, `TabSeparated`, `TSKV`, `JSONEachRow`, `Template`, `CustomSeparated` и `Protobuf`, могут пропускать некорректную строку при возникновении ошибки парсинга и продолжать разбор начиная со следующей строки. См. настройки [input_format_allow_errors_num](/operations/settings/settings-formats.md/#input_format_allow_errors_num) и diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/operations/settings/settings.md b/i18n/ru/docusaurus-plugin-content-docs/current/operations/settings/settings.md index fd927627c92..a1bce4e9be4 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/operations/settings/settings.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/operations/settings/settings.md @@ -10123,6 +10123,15 @@ FORMAT Null; Минимальный размер части при многочастичной загрузке в S3. +## s3_path_filter_limit {#s3_path_filter_limit} + + + + + +Максимальное количество значений `_path`, которое может быть извлечено из фильтров запроса и использовано для итерации по файлам +вместо перечисления файлов по glob-шаблону. Значение 0 означает, что настройка отключена. + ## s3_request_timeout_ms {#s3_request_timeout_ms} @@ -10687,7 +10696,8 @@ SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2) -Разрешает выполнение прямого запроса SELECT для движков Kafka, RabbitMQ, FileLog, Redis Streams и NATS. При наличии подключённых materialized views выполнение запроса SELECT запрещено, даже если этот параметр включён. +Разрешает выполнение прямого запроса SELECT для движков Kafka, RabbitMQ, FileLog, Redis Streams, S3Queue, AzureQueue и NATS. При наличии подключённых materialized views выполнение запроса SELECT запрещено, даже если этот параметр включён. +Если нет подключённых materialized views, включение этого параметра позволяет читать данные. Имейте в виду, что обычно прочитанные данные удаляются из очереди. Чтобы избежать удаления прочитанных данных, соответствующие настройки движка должны быть настроены должным образом. ## stream_like_engine_insert_queue {#stream_like_engine_insert_queue} diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md index 581b3f88ae6..b1951097a60 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md @@ -86,7 +86,6 @@ SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, en 3. Входная таблица: - ```text ┌─id─┬──────start─┬────────end─┐ │ a │ 2020-01-01 │ 2020-01-04 │ diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md index 6e26c075936..650ca2bd848 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md @@ -10,6 +10,8 @@ doc_type: 'reference' import SelfManaged from '@site/i18n/ru/docusaurus-plugin-content-docs/current/_snippets/_self_managed_only_no_roadmap.md'; import CloudDetails from '@site/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/_snippet_dictionary_in_cloud.md'; import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; +import ExperimentalBadge from '@theme/badges/ExperimentalBadge'; + # Словари {#dictionaries} @@ -1055,7 +1057,7 @@ SOURCE(CLICKHOUSE(... update_field 'added_time' update_lag 15)) ... - + ... @@ -1069,7 +1071,7 @@ SOURCE(CLICKHOUSE(... update_field 'added_time' update_lag 15)) ```sql CREATE DICTIONARY dict_name (...) ... -SOURCE(SOURCE_TYPE(param1 val1 ... paramN valN)) -- Конфигурация источника +SOURCE(SOURCE_TYPE(param1 val1 ... paramN valN)) -- Source configuration ... ``` @@ -1111,6 +1113,8 @@ SETTINGS(format_csv_allow_single_quotes = 0) * [Redis](#redis) * [Cassandra](#cassandra) * [PostgreSQL](#postgresql) + * [YTsaurus](#ytsaurus) + ### Локальный файл {#local-file} @@ -1895,6 +1899,48 @@ SOURCE(POSTGRESQL( Поля `table` или `where` не могут использоваться вместе с полем `query`. При этом одно из полей `table` или `query` должно быть задано. ::: +### YTsaurus {#ytsaurus} + + + + + +:::info +Это экспериментальная функция, которая может измениться в будущих релизах с нарушением обратной совместимости. +Чтобы включить использование источника словаря YTsaurus, +используйте настройку [`allow_experimental_ytsaurus_dictionary_source`](/operations/settings/settings#allow_experimental_ytsaurus_dictionary_source). +::: + +Пример настройки: + +```xml + + + http://localhost:8000 + //tmp/test + password + 1 + + +``` + +или + +```sql +SOURCE(YTSAURUS( + http_proxy_urls 'http://localhost:8000' + cypress_path '//tmp/test' + oauth_token 'password' +)) +``` + +Поля конфигурации: + +* `http_proxy_urls` – URL HTTP-прокси YTsaurus. +* `cypress_path` – путь Cypress к таблице-источнику. +* `oauth_token` – OAuth-токен. + + ### Null {#null} Специальный источник, который можно использовать для создания фиктивных (пустых) словарей. Такие словари могут быть полезны для тестов или в конфигурациях с разделением узлов данных и запросов, на узлах с distributed таблицами. diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md index ea22ea3e517..b26a1ec9277 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md @@ -6,27 +6,30 @@ title: 'Функции массивов' doc_type: 'reference' --- -# Функции для работы с массивами {#array-functions} + + +# Функции массивов {#array-functions} {/* - Внутреннее содержимое тегов ниже при сборке фреймворка документации - заменяется документацией, сгенерированной из system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. + Внутреннее содержимое расположенных ниже тегов при сборке фреймворка документации + заменяется документацией, сгенерированной на основе system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. См.: https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } -{/*AUTOGENERATED_START*/ } + +{/*АВТОГЕНЕРАЦИЯ_НАЧАЛО*/ } ## array {#array} -Появилась в версии: v1.1 +Введена в версии: v1.1 Создаёт массив из аргументов функции. -Аргументы должны быть константами и иметь типы, для которых существует общий супертип. +Аргументы должны быть константами и иметь типы, которые имеют общий супертип. Должен быть передан как минимум один аргумент, иначе будет непонятно, какой тип массива создавать. Это означает, что вы не можете использовать эту функцию для создания пустого массива. Для этого используйте функцию `emptyArray*`. -Для получения того же результата используйте оператор `[ ]`. +Для той же функциональности используйте оператор `[ ]`. **Синтаксис** @@ -36,12 +39,11 @@ array(x1 [, x2, ..., xN]) **Аргументы** -* `x1` — константное значение любого типа T. Если указан только этот аргумент, массив будет иметь тип T. -* `[, x2, ..., xN]` — дополнительные N константных значений с общим надтипом с `x1` +* `x1` — константное значение любого типа T. Если указан только этот аргумент, массив будет иметь тип T. - `[, x2, ..., xN]` — дополнительные N константных значений с общим надтипом с `x1` **Возвращаемое значение** -Возвращает массив, где 'T' — наименьший общий тип среди переданных аргументов. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, где 'T' — это наименьший общий тип среди переданных аргументов. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -57,27 +59,28 @@ SELECT array(toInt32(1), toUInt16(2), toInt8(3)) AS a, toTypeName(a) └─────────┴───────────────┘ ``` -**Неверное использование** +**Недопустимое использование** ```sql title=Query SELECT array(toInt32(5), toDateTime('1998-06-16'), toInt8(5)) AS a, toTypeName(a) ``` ```response title=Response -Получено исключение от сервера (версия 25.4.3): -Код: 386. DB::Exception: Получено от localhost:9000. DB::Exception: -Отсутствует общий супертип для типов Int32, DateTime, Int8 ... +Received exception from server (version 25.4.3): +Code: 386. DB::Exception: Received from localhost:9000. DB::Exception: +There is no supertype for types Int32, DateTime, Int8 ... ``` + ## arrayAUCPR {#arrayAUCPR} Добавлена в: v20.4 -Вычисляет площадь под кривой «точность–полнота» (precision–recall, PR). -Кривая точность–полнота строится путём отображения точности по оси Y и полноты по оси X для всех порогов. -Полученное значение лежит в диапазоне от 0 до 1, при этом большее значение соответствует более высокой эффективности модели. -PR AUC особенно полезна для несбалансированных наборов данных, обеспечивая более наглядное сравнение качества модели по сравнению с ROC AUC в таких случаях. -Для получения дополнительной информации смотрите [здесь](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve), [здесь](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1) и [здесь](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve). +Вычисляет площадь под кривой точность–полнота («точность–полнота», PR). +Кривая точность–полнота строится путём откладывания значений точности по оси y и полноты по оси x для всех порогов. +Получаемое значение лежит в диапазоне от 0 до 1, при этом большее значение указывает на лучшую производительность модели. +PR AUC особенно полезна для несбалансированных наборов данных, обеспечивая более наглядное сравнение производительности по сравнению с ROC AUC в таких случаях. +Подробнее см. [здесь](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve), [здесь](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1) и [здесь](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve). **Синтаксис** @@ -89,17 +92,17 @@ arrayAUCPR(scores, labels[, partial_offsets]) **Аргументы** -* `cores` — Оценки, которые выдаёт модель предсказания. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Array(Float*)`](/sql-reference/data-types/array) -* `labels` — Метки объектов, обычно 1 для положительного и 0 для отрицательного примера. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Array(Enum)`](/sql-reference/data-types/array) +* `cores` — Оценки, которые возвращает модель. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Array(Float*)`](/sql-reference/data-types/array) +* `labels` — Метки объектов, обычно 1 для положительного и 0 для отрицательного объекта. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Array(Enum)`](/sql-reference/data-types/array) * `partial_offsets` — -* Необязательный аргумент. [`Array(T)`](/sql-reference/data-types/array) из трёх неотрицательных целых чисел для вычисления частичной площади под PR-кривой (эквивалент вертикальной полосе в PR-пространстве) вместо полной AUC. Этот параметр полезен для распределённого вычисления PR AUC. Массив должен содержать следующие элементы [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`]. +* Необязательный аргумент. [`Array(T)`](/sql-reference/data-types/array) из трёх неотрицательных целых чисел для вычисления частичной площади под PR-кривой (что эквивалентно вертикальной полосе в PR-пространстве) вместо полной AUC. Эта опция полезна для распределённого вычисления PR AUC. Массив должен содержать следующие элементы [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`]. * `higher_partitions_tp`: Количество положительных меток в партициях с более высокими оценками. * `higher_partitions_fp`: Количество отрицательных меток в партициях с более высокими оценками. - * `total_positives`: Общее количество положительных примеров во всём наборе данных. + * `total_positives`: Общее количество положительных объектов во всём наборе данных. :::note -Когда используется `arr_partial_offsets`, `arr_scores` и `arr_labels` должны представлять только одну партицию всего набора данных, содержащую некоторый интервал оценок. -Набор данных должен быть разделён на смежные партиции, где каждая партиция содержит подмножество данных, оценки которого попадают в определённый диапазон. +Когда используется `arr_partial_offsets`, `arr_scores` и `arr_labels` должны представлять только одну партицию всего набора данных, содержащую интервал значений оценок. +Набор данных должен быть разделён на смежные партиции, где каждая партиция содержит подмножество данных, чьи оценки попадают в определённый диапазон. Например: * Одна партиция может содержать все оценки в диапазоне [0, 0.5). @@ -124,11 +127,12 @@ SELECT arrayAUCPR([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); └─────────────────────────────────────────────────┘ ``` + ## arrayAll {#arrayAll} -Добавлена в версии: v1.1 +Введена в версии: v1.1 -Возвращает `1`, если лямбда-выражение `func(x [, y1, y2, ... yN])` возвращает `true` для всех элементов. В противном случае возвращает `0`. +Возвращает `1`, если лямбда-функция `func(x [, y1, y2, ... yN])` возвращает true для всех элементов массива. В противном случае возвращает `0`. **Синтаксис** @@ -138,17 +142,17 @@ arrayAll(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [Лямбда-функция](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) * `cond1_arr, ...` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает `1`, если лямбда-функция возвращает true для всех элементов, в противном случае — `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если лямбда-функция возвращает true для всех элементов, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** -**Все элементы соответствуют условию** +**Все элементы соответствуют** ```sql title=Query SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 2, 3]) @@ -158,7 +162,7 @@ SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 2, 3]) 1 ``` -**Не все элементы совпадают** +**Не все элементы соответствуют условию** ```sql title=Query SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 1, 1]) @@ -168,13 +172,14 @@ SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 1, 1]) 0 ``` + ## arrayAvg {#arrayAvg} -Введена в версии v21.1 +Впервые представлена в: v21.1 Возвращает среднее значение элементов исходного массива. -Если указана лямбда-функция `func`, возвращает среднее значение результатов её применения к элементам массива. +Если задана лямбда-функция `func`, возвращает среднее значение элементов результатов лямбда-функции. **Синтаксис** @@ -184,9 +189,9 @@ arrayAvg([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — Необязательный параметр. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — Необязательный аргумент. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — Исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — Необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -194,7 +199,7 @@ arrayAvg([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **Примеры** -**Простой пример** +**Базовый пример** ```sql title=Query SELECT arrayAvg([1, 2, 3, 4]); @@ -204,7 +209,7 @@ SELECT arrayAvg([1, 2, 3, 4]); 2.5 ``` -**Использование с лямбда-функцией** +**Использование лямбда-функции** ```sql title=Query SELECT arrayAvg(x, y -> x*y, [2, 3], [2, 3]) AS res; @@ -214,9 +219,10 @@ SELECT arrayAvg(x, y -> x*y, [2, 3], [2, 3]) AS res; 6.5 ``` + ## arrayCompact {#arrayCompact} -Впервые представлена в версии v20.1 +Введена в версии: v20.1 Удаляет последовательные дублирующиеся элементы из массива, включая значения `null`. Порядок значений в результирующем массиве определяется порядком в исходном массиве. @@ -246,9 +252,10 @@ SELECT arrayCompact([1, 1, nan, nan, 2, 3, 3, 3]); [1,nan,2,3] ``` + ## arrayConcat {#arrayConcat} -Введён в версии: v1.1 +Введена в версии: v1.1 Объединяет массивы, переданные в качестве аргументов. @@ -260,11 +267,11 @@ arrayConcat(arr1 [, arr2, ... , arrN]) **Аргументы** -* `arr1 [, arr2, ... , arrN]` — N массивов для конкатенации. [`Array(T)`](/sql-reference/data-types/array) +* `arr1 [, arr2, ... , arrN]` — N массивов, которые нужно конкатенировать. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает один объединённый массив из переданных массивов. [`Array(T)`](/sql-reference/data-types/array) +Возвращает один массив, полученный объединением переданных аргументов-массивов. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -278,12 +285,13 @@ SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res [1, 2, 3, 4, 5, 6] ``` + ## arrayCount {#arrayCount} Появилась в версии: v1.1 Возвращает количество элементов, для которых `func(arr1[i], ..., arrN[i])` возвращает true. -Если `func` не задана, возвращает количество ненулевых элементов в массиве. +Если `func` не указана, возвращает количество ненулевых элементов в массиве. `arrayCount` — это [функция высшего порядка](/sql-reference/functions/overview#higher-order-functions). @@ -295,12 +303,12 @@ arrayCount([func, ] arr1, ...) **Аргументы** -* `func` — Необязательный параметр. Функция, применяемая к каждому элементу массива/массивов. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — Необязательный аргумент. Функция, применяемая к каждому элементу массива (массивов). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1, ..., arrN` — N массивов. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает количество элементов, для которых `func` возвращает значение `true`. В противном случае возвращает количество ненулевых элементов в массиве. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает число элементов, для которых `func` возвращает true. В противном случае возвращает число ненулевых элементов в массиве. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -314,11 +322,12 @@ SELECT arrayCount(x -> (x % 2), groupArray(number)) FROM numbers(10) 5 ``` + ## arrayCumSum {#arrayCumSum} Введена в версии: v1.1 -Возвращает массив частичных (нарастающих) сумм элементов исходного массива. Если указана лямбда-функция, сумма вычисляется как сумма результатов применения лямбды к элементам массива в каждой позиции. +Возвращает массив частичных (накопительных) сумм элементов исходного массива. Если указана лямбда‑функция, сумма вычисляется на основе применения лямбда‑функции к элементам массива на каждой позиции. **Синтаксис** @@ -328,9 +337,9 @@ arrayCumSum([func,] arr1[, arr2, ... , arrN]) **Аргументы** -* `func` — необязательный параметр. Лямбда-функция, применяемая к элементам массива для каждой позиции. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr1` — исходный массив числовых значений. [`Array(T)`](/sql-reference/data-types/array) -* `[arr2, ..., arrN]` — необязательные параметры. Дополнительные массивы того же размера, передаваемые в лямбда-функцию в качестве аргументов, если она указана. [`Array(T)`](/sql-reference/data-types/array) +* `func` — Необязательный. Лямбда-функция, применяемая к элементам массива в каждой позиции. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr1` — Исходный массив числовых значений. [`Array(T)`](/sql-reference/data-types/array) +* `[arr2, ..., arrN]` — Необязательно. Дополнительные массивы того же размера, которые передаются в качестве аргументов лямбда-функции, если она указана. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -348,7 +357,7 @@ SELECT arrayCumSum([1, 1, 1, 1]) AS res [1, 2, 3, 4] ``` -**С лямбда-функцией** +**С Lambda** ```sql title=Query SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res @@ -358,11 +367,12 @@ SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res [2, 6, 12] ``` + ## arrayCumSumNonNegative {#arrayCumSumNonNegative} -Введена в версии: v18.12 +Добавлено в версии v18.12 -Возвращает массив частичных (накопительных) сумм элементов исходного массива, при этом любая промежуточная отрицательная сумма заменяется на ноль. Если указана лямбда-функция, сумма вычисляется на основе результата применения лямбды к элементам массива в каждой позиции. +Возвращает массив частичных (накопительных) сумм элементов исходного массива, заменяя любую отрицательную накопительную сумму на ноль. Если задана лямбда-функция, сумма вычисляется как результат её применения к элементам массива на каждой позиции. **Синтаксис** @@ -372,13 +382,13 @@ arrayCumSumNonNegative([func,] arr1[, arr2, ... , arrN]) **Аргументы** -* `func` — Необязательный параметр. Лямбда-функция, применяемая к элементам массива для каждой позиции. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — Необязательный аргумент. Лямбда-функция, которая применяется к элементам массива в каждой позиции. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1` — Исходный массив числовых значений. [`Array(T)`](/sql-reference/data-types/array) -* `[arr2, ..., arrN]` — Необязательные. Дополнительные массивы того же размера, передаваемые как аргументы лямбда-функции, если она указана. [`Array(T)`](/sql-reference/data-types/array) +* `[arr2, ..., arrN]` — Необязательно. Дополнительные массивы того же размера, передаваемые в качестве аргументов лямбда-функции, если она задана. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив частичных сумм элементов исходного массива, при этом любое отрицательное значение накопленной суммы заменяется на ноль. Тип результата соответствует числовому типу входного массива. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив частичных сумм элементов исходного массива, при этом любые отрицательные значения накопленной суммы заменяются на ноль. Тип результата соответствует числовому типу входного массива. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -392,7 +402,7 @@ SELECT arrayCumSumNonNegative([1, 1, -4, 1]) AS res [1, 2, 0, 1] ``` -**С лямбдой** +**С лямбда-функцией** ```sql title=Query SELECT arrayCumSumNonNegative(x -> x * 2, [1, -2, 3]) AS res @@ -402,12 +412,13 @@ SELECT arrayCumSumNonNegative(x -> x * 2, [1, -2, 3]) AS res [2, 0, 6] ``` + ## arrayDifference {#arrayDifference} -Функция появилась в версии v1.1. +Добавлена в: v1.1 Вычисляет массив разностей между соседними элементами массива. -Первый элемент результирующего массива будет 0, второй — `arr[1] - arr[0]`, третий — `arr[2] - arr[1]` и т. д. +Первый элемент результирующего массива будет равен 0, второй — `arr[1] - arr[0]`, третий — `arr[2] - arr[1]` и т. д. Тип элементов результирующего массива определяется правилами вывода типа для операции вычитания (например, `UInt8` - `UInt8` = `Int16`). **Синтаксис** @@ -418,11 +429,11 @@ arrayDifference(arr) **Аргументы** -* `arr` — Массив, для которого вычисляют разности между соседними элементами. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — массив, для которого нужно вычислить разности между соседними элементами. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив разностей между соседними элементами массива [`UInt*`](/sql-reference/data-types/int-uint) +Возвращает массив разностей между соседними элементами массива типа [`UInt*`](/sql-reference/data-types/int-uint) **Примеры** @@ -448,6 +459,7 @@ SELECT arrayDifference([0, 10000000000000000000]); └────────────────────────────────────────────┘ ``` + ## arrayDistinct {#arrayDistinct} Введена в версии: v1.1 @@ -462,11 +474,11 @@ arrayDistinct(arr) **Аргументы** -* `arr` — Массив, из которого нужно извлечь различные элементы. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — Массив, из которого необходимо получить элементы без дубликатов значений. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив, содержащий различные элементы [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив без дубликатов значений [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -480,14 +492,15 @@ SELECT arrayDistinct([1, 2, 2, 3, 1]); [1,2,3] ``` + ## arrayDotProduct {#arrayDotProduct} -Добавлена в версии: v23.5 +Добавлено в версии v23.5 Возвращает скалярное произведение двух массивов. :::note -Размеры двух векторов должны быть равны. Массивы и кортежи (Tuples) также могут содержать элементы разных типов. +Размеры двух векторов должны быть равны. Массивы и Tuples также могут содержать элементы разных типов. ::: **Синтаксис** @@ -498,22 +511,22 @@ arrayDotProduct(v1, v2) **Аргументы** -* `v1` — первый вектор. [`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) или [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) -* `v2` — второй вектор. [`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) или [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) +* `v1` — Первый вектор. [`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) или [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) +* `v2` — Второй вектор. [`Array((U)Int* | Float* | Decimal)`](/sql-reference/data-types/array) или [`Tuple((U)Int* | Float* | Decimal)`](/sql-reference/data-types/tuple) **Возвращаемое значение** Скалярное произведение двух векторов. :::note -Тип возвращаемого значения определяется типом аргументов. Если `Array` или `Tuple` содержат элементы разных типов, тип результата — их супертип. +Тип возвращаемого значения определяется типом аргументов. Если `Array` или `Tuple` содержат элементы смешанных типов, то тип результата — супертип. ::: [`(U)Int*`](/sql-reference/data-types/int-uint) или [`Float*`](/sql-reference/data-types/float) или [`Decimal`](/sql-reference/data-types/decimal) **Примеры** -**Пример для Array** +**Пример с массивом** ```sql title=Query SELECT arrayDotProduct([1, 2, 3], [4, 5, 6]) AS res, toTypeName(res); @@ -533,21 +546,22 @@ SELECT dotProduct((1::UInt16, 2::UInt8, 3::Float32),(4::Int16, 5::Float32, 6::UI 32 Float64 ``` + ## arrayElement {#arrayElement} -Впервые появился в версии: v1.1 +Появилась в версии: v1.1 Возвращает элемент переданного массива с индексом `n`, где `n` может быть целым числом любого типа. -Если индекс выходит за границы массива, возвращается значение по умолчанию (0 для чисел, пустая строка для строк и т. д.), -за исключением случаев, когда аргументом является неконстантный массив, а индекс — константа 0. В этом случае будет выдана ошибка `Array indices are 1-based`. +Если индекс выходит за пределы массива, функция возвращает значение по умолчанию (0 для чисел, пустую строку для строк и т. д.), +за исключением случая неконстантного массива и константного индекса 0. В этом случае будет ошибка `Array indices are 1-based`. :::note Массивы в ClickHouse индексируются с единицы. ::: -Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, нумерация которого ведётся с конца. Например, `arr[-1]` — это последний элемент массива. +Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент с номером, отсчитываемым с конца массива. Например, `arr[-1]` — это последний элемент массива. -Оператор `[n]` обладает той же функциональностью. +Оператор `[n]` предоставляет ту же функциональность. **Синтаксис** @@ -557,11 +571,11 @@ arrayElement(arr, n) **Аргументы** -* `arr` — массив для поиска. [`Array(T)`](/sql-reference/data-types/array). - `n` — позиция извлекаемого элемента. [`(U)Int*`](/sql-reference/data-types/int-uint). +* `arr` — Массив, в котором выполняется поиск. [`Array(T)`](/sql-reference/data-types/array). - `n` — Позиция элемента, который нужно получить. [`(U)Int*`](/sql-reference/data-types/int-uint). **Возвращаемое значение** -Возвращает один объединённый массив из переданных аргументов-массивов [`Array(T)`](/sql-reference/data-types/array). +Возвращает один объединённый массив, полученный из переданных массивов-аргументов. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -585,7 +599,7 @@ SELECT arrayElement(arr, -1) FROM (SELECT [1, 2, 3] AS arr) 3 ``` -**Использование обозначения [n]** +**Использование нотации [n]** ```sql title=Query SELECT arr[2] FROM (SELECT [1, 2, 3] AS arr) @@ -605,18 +619,19 @@ SELECT arrayElement(arr, 4) FROM (SELECT [1, 2, 3] AS arr) 0 ``` + ## arrayElementOrNull {#arrayElementOrNull} -Впервые появилась в версии v1.1 +Появилась в версии: v1.1 -Возвращает элемент указанного массива с индексом `n`, где `n` может быть значением любого целочисленного типа. +Возвращает элемент переданного массива с индексом `n`, где `n` может быть целым числом любого типа. Если индекс выходит за границы массива, вместо значения по умолчанию возвращается `NULL`. :::note Массивы в ClickHouse индексируются с единицы. ::: -Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, отсчитываемый с конца массива. Например, `arr[-1]` — это последний элемент массива. +Поддерживаются отрицательные индексы. В этом случае выбирается соответствующий элемент, нумеруемый с конца. Например, `arr[-1]` — последний элемент массива. **Синтаксис** @@ -630,7 +645,7 @@ arrayElementOrNull(arrays) **Возвращаемое значение** -Возвращает один объединённый массив из переданных массивов. [`Array(T)`](/sql-reference/data-types/array) +Возвращает один объединённый массив из переданных аргументов-массивов. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -654,7 +669,7 @@ SELECT arrayElementOrNull(arr, -1) FROM (SELECT [1, 2, 3] AS arr) 3 ``` -**Индекс выходит за пределы массива** +**Выход индекса за границы массива** ```sql title=Query SELECT arrayElementOrNull(arr, 4) FROM (SELECT [1, 2, 3] AS arr) @@ -664,15 +679,15 @@ SELECT arrayElementOrNull(arr, 4) FROM (SELECT [1, 2, 3] AS arr) NULL ``` + ## arrayEnumerate {#arrayEnumerate} -Введена в версии: v1.1 +Появилась в версии: v1.1 -Возвращает массив `[1, 2, 3, ..., length(arr)]` +Возвращает массив `[1, 2, 3, ..., length (arr)]` -Эта функция обычно используется вместе с предложением [`ARRAY JOIN`](/sql-reference/statements/select/array-join). Она позволяет посчитать что-либо только -один раз для каждого массива после применения `ARRAY JOIN`. -Эту функцию также можно использовать во функциях высшего порядка. Например, вы можете использовать её, чтобы получить индексы элементов массива, которые удовлетворяют условию. +Эта функция обычно используется с оператором [`ARRAY JOIN`](/sql-reference/statements/select/array-join). Она позволяет учесть что‑то один раз для каждого массива после применения `ARRAY JOIN`. +Эту функцию также можно использовать в функциях высшего порядка. Например, можно использовать её, чтобы получить индексы элементов массива, которые удовлетворяют условию. **Синтаксис** @@ -682,15 +697,15 @@ arrayEnumerate(arr) **Аргументы** -* `arr` — массив, который требуется пронумеровать. [`Array`](/sql-reference/data-types/array) +* `arr` — массив, который нужно пронумеровать. [`Array`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив `[1, 2, 3, ..., length(arr)]`. [`Array(UInt32)`](/sql-reference/data-types/array) +Возвращает массив вида `[1, 2, 3, ..., length(arr)]`. [`Array(UInt32)`](/sql-reference/data-types/array) **Примеры** -**Простейший пример с ARRAY JOIN** +**Базовый пример с ARRAY JOIN** ```sql title=Query CREATE TABLE test @@ -724,11 +739,12 @@ ARRAY JOIN └────┴────────────────┴─────────────┴─────┘ ``` + ## arrayEnumerateDense {#arrayEnumerateDense} -Появилась в версии: v18.12 +Добавлена в версии: v18.12 -Возвращает массив того же размера, что и исходный, показывающий позицию первого вхождения каждого элемента в исходный массив. +Возвращает массив той же длины, что и исходный массив, указывающий позицию первого вхождения каждого элемента в исходном массиве. **Синтаксис** @@ -738,11 +754,11 @@ arrayEnumerateDense(arr) **Аргументы** -* `arr` — массив для перебора. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — Массив, для которого выполняется нумерация. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив того же размера, что и `arr`, в котором указано, где каждый элемент впервые встречается в исходном массиве. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив того же размера, что и `arr`, элементы которого указывают позицию первого вхождения соответствующего элемента в исходный массив. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -756,11 +772,12 @@ SELECT arrayEnumerateDense([10, 20, 10, 30]) [1,2,1,3] ``` + ## arrayEnumerateDenseRanked {#arrayEnumerateDenseRanked} -Добавлено в версии: v20.1 +Введена в версии: v20.1 -Возвращает массив того же размера, что и исходный, элементы которого указывают, в каком месте каждый элемент впервые встречается в исходном массиве. Позволяет выполнять нумерацию многомерного массива с возможностью указать глубину обхода массива. +Возвращает массив той же длины, что и исходный массив, значения которого указывают позицию, в которой каждый элемент впервые встречается в исходном массиве. Позволяет перебирать многомерный массив с возможностью задать глубину просмотра внутри массива. **Синтаксис** @@ -770,20 +787,20 @@ arrayEnumerateDenseRanked(clear_depth, arr, max_array_depth) **Аргументы** -* `clear_depth` — перечислять элементы на указанном уровне отдельно. Должен быть меньше или равен `max_arr_depth`. [`UInt*`](/sql-reference/data-types/int-uint) -* `arr` — N-мерный массив для перечисления. [`Array(T)`](/sql-reference/data-types/array) -* `max_array_depth` — максимальная эффективная глубина. Должна быть меньше или равна глубине `arr`. [`UInt*`](/sql-reference/data-types/int-uint) +* `clear_depth` — Перечисляет элементы на указанном уровне отдельно. Должен быть меньше или равен значению `max_arr_depth`. [`UInt*`](/sql-reference/data-types/int-uint) +* `arr` — N-мерный массив для нумерации. [`Array(T)`](/sql-reference/data-types/array) +* `max_array_depth` — Максимальная рабочая глубина. Должна быть меньше или равна глубине `arr`. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает массив, который указывает, где каждый элемент впервые появляется в исходном массиве. [`Array`](/sql-reference/data-types/array) +Возвращает массив, указывающий, где каждый элемент впервые встречается в исходном массиве [`Array`](/sql-reference/data-types/array) **Примеры** **Базовое использование** ```sql title=Query --- При clear_depth=1 и max_array_depth=1 результат идентичен результату функции arrayEnumerateDense. +-- With clear_depth=1 and max_array_depth=1, the result is identical to what arrayEnumerateDense would give. SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1); ``` @@ -795,14 +812,14 @@ SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1); **Использование с многомерным массивом** ```sql title=Query --- В этом примере arrayEnumerateDenseRanked используется для получения массива, который показывает для каждого элемента --- многомерного массива его порядковый номер среди элементов с одинаковым значением. --- Для первой строки переданного массива [10, 10, 30, 20] соответствующая первая строка результата — [1, 1, 2, 3], --- что означает: 10 — это первое встреченное число в позициях 1 и 2, 30 — второе встреченное число в позиции 3, --- а 20 — третье встреченное число в позиции 4. --- Для второй строки [40, 50, 10, 30] соответствующая вторая строка результата — [4,5,1,2], что означает: 40 --- и 50 — это четвёртое и пятое встреченные числа в позициях 1 и 2 этой строки, ещё одно 10 --- (первое встреченное число) находится в позиции 3, а 30 (второе встреченное число) — в последней позиции. +-- In this example, arrayEnumerateDenseRanked is used to obtain an array indicating, for each element of the +-- multidimensional array, what its position is among elements of the same value. +-- For the first row of the passed array, [10, 10, 30, 20], the corresponding first row of the result is [1, 1, 2, 3], +-- indicating that 10 is the first number encountered in position 1 and 2, 30 the second number encountered in position 3 +-- and 20 is the third number encountered in position 4. +-- For the second row, [40, 50, 10, 30], the corresponding second row of the result is [4,5,1,2], indicating that 40 +-- and 50 are the fourth and fifth numbers encountered in position 1 and 2 of that row, that another 10 +-- (the first encountered number) is in position 3 and 30 (the second number encountered) is in the last position. SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2); ``` @@ -811,10 +828,10 @@ SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2); [[1,1,2,3],[4,5,1,2]] ``` -**Пример с повышенным значением clear_depth** +**Пример для повышенного clear_depth** ```sql title=Query --- Изменение clear_depth=2 приводит к тому, что перечисление выполняется отдельно для каждой строки заново. +-- Changing clear_depth=2 results in the enumeration occurring separately for each row anew. SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2); ``` @@ -823,15 +840,16 @@ SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2); [[1, 1, 2, 3], [1, 2, 3, 4]] ``` + ## arrayEnumerateUniq {#arrayEnumerateUniq} -Появилась в версии: v1.1 +Введена в версии: v1.1 -Возвращает массив того же размера, что и исходный массив, указывая для каждого элемента его порядковый номер среди элементов с тем же значением. +Возвращает массив того же размера, что и исходный массив, в котором для каждого элемента указано, каким по счёту он является среди элементов с тем же значением. Эта функция полезна при использовании `ARRAY JOIN` и агрегации элементов массива. -Функция может принимать в качестве аргументов несколько массивов одинакового размера. В этом случае уникальность определяется для кортежей элементов, находящихся на одинаковых позициях во всех массивах. +Функция может принимать несколько массивов одинакового размера в качестве аргументов. В этом случае уникальность определяется для кортежей элементов, находящихся на одних и тех же позициях во всех массивах. **Синтаксис** @@ -842,11 +860,11 @@ arrayEnumerateUniq(arr1[, arr2, ... , arrN]) **Аргументы** * `arr1` — Первый массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `arr2, ...` — Необязательный параметр. Дополнительные массивы того же размера для обеспечения уникальности кортежей. [`Array(UInt32)`](/sql-reference/data-types/array) +* `arr2, ...` — Необязательно. Дополнительные массивы того же размера для обеспечения уникальности кортежей. [`Array(UInt32)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив, в котором каждый элемент — это позиция среди элементов с тем же значением или кортежем. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, в котором каждый элемент — позиция среди элементов с тем же значением или тем же кортежем. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -873,10 +891,10 @@ SELECT arrayEnumerateUniq([1, 1, 1, 2, 2, 2], [1, 1, 2, 1, 1, 2]); **Агрегация с ARRAY JOIN** ```sql title=Query --- Для каждого идентификатора цели вычисляется количество конверсий (каждый элемент во вложенной структуре данных Goals представляет собой достигнутую цель, которую мы называем конверсией) --- и количество сессий. Без ARRAY JOIN количество сессий подсчитывалось бы как sum(Sign). Однако в данном случае --- строки умножаются на вложенную структуру Goals, поэтому для подсчёта каждой сессии только один раз применяется условие на --- значение функции arrayEnumerateUniq(Goals.ID). +-- Each goal ID has a calculation of the number of conversions (each element in the Goals nested data structure is a goal that was reached, which we refer to as a conversion) +-- and the number of sessions. Without ARRAY JOIN, we would have counted the number of sessions as sum(Sign). But in this particular case, +-- the rows were multiplied by the nested Goals structure, so in order to count each session one time after this, we apply a condition to the +-- value of the arrayEnumerateUniq(Goals.ID) function. SELECT Goals.ID AS GoalID, @@ -907,13 +925,14 @@ LIMIT 10 └─────────┴─────────┴────────┘ ``` + ## arrayEnumerateUniqRanked {#arrayEnumerateUniqRanked} -Впервые появилась в версии: v20.1 +Введена в: v20.1 Возвращает массив (или многомерный массив) с теми же размерами, что и исходный массив, -указывая для каждого элемента, какую позицию он занимает среди элементов с тем же значением. -Позволяет выполнять перечисление многомерного массива с возможностью задать глубину просмотра массива. +в котором для каждого элемента указывается его позиция среди элементов с тем же значением. +Позволяет нумеровать многомерный массив с возможностью задать глубину просмотра массива. **Синтаксис** @@ -923,9 +942,9 @@ arrayEnumerateUniqRanked(clear_depth, arr, max_array_depth) **Аргументы** -* `clear_depth` — Перечислять элементы на указанном уровне по отдельности. Положительное целое число, меньшее или равное `max_arr_depth`. [`UInt*`](/sql-reference/data-types/int-uint) -* `arr` — N-мерный массив для перечисления. [`Array(T)`](/sql-reference/data-types/array) -* `max_array_depth` — Максимальная эффективная глубина. Положительное целое число, меньшее или равное глубине `arr`. [`UInt*`](/sql-reference/data-types/int-uint) +* `clear_depth` — Нумерует элементы на указанном уровне отдельно. Положительное целое число, меньшее либо равное `max_arr_depth`. [`UInt*`](/sql-reference/data-types/int-uint) +* `arr` — N-мерный массив для нумерации. [`Array(T)`](/sql-reference/data-types/array) +* `max_array_depth` — Максимальная эффективная глубина. Положительное целое число, меньшее либо равное глубине `arr`. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -936,8 +955,8 @@ arrayEnumerateUniqRanked(clear_depth, arr, max_array_depth) **Пример 1** ```sql title=Query --- При clear_depth=1 и max_array_depth=1 результат arrayEnumerateUniqRanked --- идентичен результату, который вернула бы функция arrayEnumerateUniq для того же массива. +-- With clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked +-- is identical to that which arrayEnumerateUniq would give for the same array. SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1); ``` @@ -949,8 +968,8 @@ SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1); **Пример 2** ```sql title=Query --- при clear_depth=1 и max_array_depth=1 результат arrayEnumerateUniqRanked --- идентичен результату, который вернула бы функция arrayEnumerateUniq для того же массива. +-- with clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked +-- is identical to that which arrayEnumerateUniqwould give for the same array. SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1], [2, 3, 2], [2]] ``` @@ -962,14 +981,14 @@ SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1 **Пример 3** ```sql title=Query --- В этом примере arrayEnumerateUniqRanked используется для получения массива, который показывает --- для каждого элемента многомерного массива его порядковый номер среди элементов --- с таким же значением. Для первой строки переданного массива [1, 2, 3] соответствующий --- результат — [1, 1, 1], что означает, что значения 1, 2 и 3 встречаются впервые. --- Для второй строки переданного массива [2, 2, 1] соответствующий результат — [2, 3, 3], --- что означает, что значение 2 встречается во второй и третий раз, а значение 1 — --- во второй раз. Аналогично, для третьей строки переданного массива [3] --- соответствующий результат — [2], что означает, что значение 3 встречается во второй раз. +-- In this example, arrayEnumerateUniqRanked is used to obtain an array indicating, +-- for each element of the multidimensional array, what its position is among elements +-- of the same value. For the first row of the passed array, [1, 2, 3], the corresponding +-- result is [1, 1, 1], indicating that this is the first time 1, 2 and 3 are encountered. +-- For the second row of the provided array, [2, 2, 1], the corresponding result is [2, 3, 3], +-- indicating that 2 is encountered for a second and third time, and 1 is encountered +-- for the second time. Likewise, for the third row of the provided array [3] the +-- corresponding result is [2] indicating that 3 is encountered for the second time. SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2); ``` @@ -981,7 +1000,7 @@ SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2); **Пример 4** ```sql title=Query --- Изменение clear_depth=2 приводит к раздельной нумерации элементов для каждой строки. +-- Changing clear_depth=2, results in elements being enumerated separately for each row. SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2); ``` @@ -989,18 +1008,19 @@ SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2); [[1, 1, 1], [1, 2, 1], [1]] ``` + ## arrayExcept {#arrayExcept} -Введена в версии v25.9 +Появилась в версии: v25.9 Возвращает массив, содержащий элементы из `source`, которые отсутствуют в `except`, при этом сохраняется исходный порядок. -Эта функция выполняет операцию разности множеств между двумя массивами. Для каждого элемента в `source` она проверяет, существует ли этот элемент в `except` (с использованием точного сравнения). Если нет, элемент включается в результат. +Эта функция выполняет операцию разности множеств между двумя массивами. Для каждого элемента в `source` проверяется, существует ли этот элемент в `except` (с использованием точного сравнения). Если нет — элемент включается в результат. Операция обладает следующими свойствами: 1. Порядок элементов из `source` сохраняется -2. Дубликаты в `source` сохраняются, если их нет в `except` +2. Дубликаты в `source` сохраняются, если они отсутствуют в `except` 3. NULL обрабатывается как отдельное значение **Синтаксис** @@ -1011,16 +1031,16 @@ arrayExcept(source, except) **Аргументы** -* `source` — исходный массив с элементами, подлежащими фильтрации. [`Array(T)`](/sql-reference/data-types/array) +* `source` — исходный массив, элементы которого нужно отфильтровать. [`Array(T)`](/sql-reference/data-types/array) * `except` — массив, содержащий элементы, которые нужно исключить из результата. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив того же типа, что и входной массив, содержащий элементы из `source`, отсутствующие в `except`. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив того же типа, что и входной массив, содержащий элементы из `source`, которые отсутствуют в `except`. [`Array(T)`](/sql-reference/data-types/array) **Примеры** -**Базовый пример** +**простой пример** ```sql title=Query SELECT arrayExcept([1, 2, 3, 2, 4], [3, 5]) @@ -1057,9 +1077,10 @@ SELECT arrayExcept(['apple', 'banana', 'cherry'], ['banana', 'date']) ``` ```response title=Response -['яблоко', 'вишня'] +['apple', 'cherry'] ``` + ## arrayExists {#arrayExists} Введена в версии: v1.1 @@ -1074,13 +1095,13 @@ arrayExists(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает `1`, если лямбда-функция возвращает значение `true` хотя бы для одного элемента, и `0` в противном случае. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если лямбда-функция возвращает true хотя бы для одного элемента, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -1094,16 +1115,17 @@ SELECT arrayExists(x, y -> x=y, [1, 2, 3], [0, 0, 0]) 0 ``` + ## arrayFill {#arrayFill} -Добавлена в: v20.1 +Функция представлена в: v20.1 -Функция `arrayFill` последовательно обрабатывает исходный массив от первого -элемента до последнего, вычисляя лямбда‑условие на каждой позиции с использованием -элементов из исходного массива и массива условий. Когда лямбда‑функция -возвращает false на позиции i, функция заменяет этот элемент элементом на позиции -i-1 из текущего состояния массива. Первый элемент всегда сохраняется -независимо от каких‑либо условий. +Функция `arrayFill` последовательно обрабатывает массив-источник от первого +до последнего элемента, вычисляя лямбда‑условие в каждой позиции, используя элементы +массива-источника и массива условий. Когда значение лямбда‑функции в позиции `i` +ложно, функция заменяет этот элемент элементом в позиции `i-1` +из текущего состояния массива. Первый элемент всегда сохраняется, +независимо от условий. **Синтаксис** @@ -1113,9 +1135,9 @@ arrayFill(func(x [, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x [, y1, ..., yN])` — лямбда-функция `func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])`, которая применяется к элементам исходного массива (`x`) и массивов-условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — исходный массив для обработки. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `[, cond1_arr, ... , condN_arr]` — Необязательные. N массивов-условий, которые передаются как дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `func(x [, y1, ..., yN])` — Лямбда-функция `func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])`, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — Исходный массив для обработки. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -1133,7 +1155,7 @@ SELECT arrayFill(x -> not isNull(x), [1, null, 2, null]) AS res [1, 1, 2, 2] ``` -**Пример с двумя массивами** +**Пример для двух массивов** ```sql title=Query SELECT arrayFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res @@ -1143,11 +1165,12 @@ SELECT arrayFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, [5, 5, 6, 6] ``` + ## arrayFilter {#arrayFilter} -Появился в версии: v1.1 +Появилась в версии: v1.1 -Возвращает массив, содержащий только те элементы исходного массива, для которых лямбда‑функция возвращает `true`. +Возвращает массив, содержащий только элементы исходного массива, для которых лямбда-функция возвращает true. **Синтаксис** @@ -1157,13 +1180,13 @@ arrayFilter(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])] **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает подмассив исходного массива [`Array(T)`](/sql-reference/data-types/array) +Возвращает подмножество исходного массива [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -1192,11 +1215,12 @@ SELECT [2] ``` + ## arrayFirst {#arrayFirst} -Впервые появилось в версии v1.1 +Появилась в версии: v1.1 -Возвращает первый элемент исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает true, иначе возвращает значение по умолчанию. +Возвращает первый элемент исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает значение `true`, в противном случае возвращает значение по умолчанию. **Синтаксис** @@ -1206,7 +1230,7 @@ arrayFirst(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая работает с элементами исходного массива (`x`) и массивов условий (`y`). [Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов условий, передающих дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [Лямбда-функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** @@ -1234,11 +1258,12 @@ SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) 0 UInt8 ``` + ## arrayFirstIndex {#arrayFirstIndex} Появилась в версии: v1.1 -Возвращает индекс первого элемента исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает `true`, в противном случае возвращает `0`. +Возвращает индекс первого элемента исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает значение `true`, в противном случае возвращает '0'. **Синтаксис** @@ -1248,11 +1273,11 @@ arrayFirstIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr] **Аргументы** -* `func(x[, y1, ..., yN])` — lambda‑функция, которая работает с элементами исходного массива (`x`) и массивов условий (`y`). [Лямбда‑функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — необязательные N массивов условий, передающих дополнительные аргументы в lambda‑функцию. [`Array(T)`](/sql-reference/data-types/array). +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [Лямбда-функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** -Возвращает индекс первого элемента исходного массива, для которого `func` возвращает `true`, в противном случае возвращает `0` [`UInt32`](/sql-reference/data-types/int-uint). +Возвращает индекс первого элемента исходного массива, для которого `func` возвращает `true`, в противном случае возвращает `0` [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -1266,7 +1291,7 @@ SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['c', 'b', 'a']) 2 ``` -**Совпадений не найдено** +**Нет совпадений** ```sql title=Query SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']) @@ -1276,11 +1301,12 @@ SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']) 0 ``` + ## arrayFirstOrNull {#arrayFirstOrNull} -Введена в версии: v1.1 +Появилась в версии: v1.1 -Возвращает первый элемент исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает `true`, в противном случае — `NULL`. +Возвращает первый элемент исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает `true`; в противном случае — `NULL`. **Синтаксис** @@ -1290,13 +1316,13 @@ arrayFirstOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов-условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов-условий, предоставляющих дополнительные аргументы для лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает первый элемент исходного массива, для которого `func` возвращает истину, иначе возвращает `NULL`. +Возвращает первый элемент исходного массива, для которого `func` возвращает `true`, в противном случае возвращает `NULL`. **Примеры** @@ -1320,9 +1346,10 @@ SELECT arrayFirstOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(re NULL Nullable(UInt8) ``` + ## arrayFlatten {#arrayFlatten} -Введена в версии: v20.1 +Появилась в версии: v20.1 Преобразует массив массивов в плоский массив. @@ -1347,7 +1374,7 @@ arrayFlatten(arr) **Возвращаемое значение** -Возвращает плоский массив, полученный из многомерного массива [`Array(T)`](/sql-reference/data-types/array) +Возвращает одномерный массив, полученный из многомерного массива [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -1361,11 +1388,12 @@ SELECT arrayFlatten([[[1]], [[2], [3]]]); [1, 2, 3] ``` + ## arrayFold {#arrayFold} -Появилась в версии: v23.10 +Введена в версии: v23.10 -Применяет лямбда-функцию к одному или нескольким массивам одинаковой длины и накапливает результат в аккумуляторе. +Применяет лямбда-функцию к одному или нескольким массивам одинакового размера и сохраняет результат в аккумуляторе. **Синтаксис** @@ -1375,13 +1403,13 @@ arrayFold(λ(acc, x1 [, x2, x3, ... xN]), arr1 [, arr2, arr3, ... arrN], acc) **Аргументы** -* `λ(x, x1 [, x2, x3, ... xN])` — лямбда-функция `λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])`, где `F` — операция, применяемая к `acc` и значениям массива `x` с последующим переиспользованием результата `acc`. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `λ(x, x1 [, x2, x3, ... xN])` — Лямбда-функция `λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])`, где `F` — операция, применяемая к `acc` и значениям массива `x` с повторным использованием результата `acc`. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1 [, arr2, arr3, ... arrN]` — N массивов, над которыми выполняется операция. [`Array(T)`](/sql-reference/data-types/array) -* `acc` — аккумулятор, значение того же типа, что и тип возвращаемого значения лямбда-функции. +* `acc` — Значение аккумулятора того же типа, что и возвращаемый тип лямбда-функции. **Возвращаемое значение** -Возвращает конечное значение `acc`. +Возвращает итоговое значение `acc`. **Примеры** @@ -1416,7 +1444,7 @@ SELECT arrayFold(acc, x -> (acc.2, acc.2 + acc.1),range(number),(1::Int64, 0::In └───────────┘ ``` -**Пример с несколькими массивами** +**Пример для нескольких массивов** ```sql title=Query SELECT arrayFold( @@ -1431,9 +1459,10 @@ SELECT arrayFold( 300 ``` + ## arrayIntersect {#arrayIntersect} -Появилась в версии: v1.1 +Впервые представлена в версии: v1.1 Принимает несколько массивов и возвращает массив с элементами, которые присутствуют во всех исходных массивах. Результат содержит только уникальные значения. @@ -1445,11 +1474,11 @@ arrayIntersect(arr, arr1, ..., arrN) **Аргументы** -* `arrN` — N массивов, из которых создаётся новый массив. [`Array(T)`](/sql-reference/data-types/array). +* `arrN` — N массивов, из которых формируется новый массив. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** -Возвращает массив, содержащий уникальные элементы, присутствующие во всех N массивах. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив уникальных элементов, присутствующих во всех N массивах [`Array(T)`](/sql-reference/data-types/array). **Примеры** @@ -1467,11 +1496,12 @@ arrayIntersect([1, 2], [1, 3], [1, 4]) AS non_empty_intersection └────────────────────────┴────────────────────┘ ``` + ## arrayJaccardIndex {#arrayJaccardIndex} -Впервые появилась в версии v23.7 +Функция появилась в: v23.7 -Возвращает [индекс Жаккара](https://en.wikipedia.org/wiki/Jaccard_index) двух массивов. +Возвращает [индекс Жаккара](https://en.wikipedia.org/wiki/Jaccard_index) для двух массивов. **Синтаксис** @@ -1481,12 +1511,12 @@ arrayJaccardIndex(arr_x, arr_y) **Аргументы** -* `arr_x` — первый массив. [`Array(T)`](/sql-reference/data-types/array) -* `arr_y` — второй массив. [`Array(T)`](/sql-reference/data-types/array) +* `arr_x` — Первый массив. [`Array(T)`](/sql-reference/data-types/array) +* `arr_y` — Второй массив. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает индекс Жаккара для массивов `arr_x` и `arr_y` [`Float64`](/sql-reference/data-types/float) +Возвращает индекс Жаккара для `arr_x` и `arr_y` типа [`Float64`](/sql-reference/data-types/float) **Примеры** @@ -1500,14 +1530,15 @@ SELECT arrayJaccardIndex([1, 2], [2, 3]) AS res 0.3333333333333333 ``` + ## arrayJoin {#arrayJoin} -Впервые представлено в: v1.1 +Появилась в версии: v1.1 -Функция `arrayJoin` принимает строку, содержащую массив, и разворачивает этот массив, создавая несколько строк — по одной для каждого элемента массива. -В отличие от обычных функций в ClickHouse, которые преобразуют входные значения в выходные в пределах одной строки, -агрегатные функции принимают группу строк и «сжимают» или «сводят» их в одну сводную строку -(или в одно значение в сводной строке, если используются с `GROUP BY`). +Функция `arrayJoin` принимает строку, содержащую массив, и разворачивает его, генерируя несколько строк — по одной для каждого элемента массива. +Это отличается от обычных функций в ClickHouse, которые отображают входные значения в выходные в пределах одной строки, +и агрегатных функций, которые принимают группу строк и «сжимают» или сводят их в одну итоговую строку +(или в одно значение внутри итоговой строки, если используются с `GROUP BY`). Все значения в столбцах просто копируются, за исключением значений в столбце, к которому применяется эта функция; они заменяются соответствующим значением из массива. @@ -1520,7 +1551,7 @@ arrayJoin(arr) **Аргументы** -* `arr` — Массив для разворачивания. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — массив, который нужно развернуть. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -1542,10 +1573,10 @@ SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src └─────┴───────────┴─────────┘ ``` -**arrayJoin влияет на все части запроса** +**arrayJoin затрагивает все части запроса** ```sql title=Query --- Функция arrayJoin влияет на все секции запроса, включая секцию WHERE. Обратите внимание на результат 2, хотя подзапрос вернул 1 строку. +-- The arrayJoin function affects all sections of the query, including the WHERE section. Notice the result 2, even though the subquery returned 1 row. SELECT sum(1) AS impressions FROM @@ -1561,10 +1592,10 @@ WHERE arrayJoin(cities) IN ['Istanbul', 'Berlin']; └─────────────┘ ``` -**Использование нескольких функций arrayJoin** +**Использование разных функций arrayJoin** ```sql title=Query -- Запрос может использовать несколько функций arrayJoin. В этом случае преобразование выполняется многократно, и количество строк увеличивается соответственно. +- A query can use multiple arrayJoin functions. In this case, the transformation is performed multiple times and the rows are multiplied. SELECT sum(1) AS impressions, @@ -1595,21 +1626,22 @@ GROUP BY **Неожиданные результаты из-за оптимизаций** ```sql title=Query --- Использование нескольких arrayJoin с одинаковым выражением может не дать ожидаемого результата из-за оптимизаций. --- В таких случаях рекомендуется модифицировать повторяющееся выражение массива дополнительными операциями, не влияющими на результат объединения. -- например: arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, [])) +-- Using multiple arrayJoin with the same expression may not produce the expected result due to optimizations. +-- For these cases, consider modifying the repeated array expression with extra operations that do not affect join result. +- e.g. arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, [])) SELECT arrayJoin(dice) as first_throw, - /* arrayJoin(dice) as second_throw */ -- технически корректно, но приведёт к уничтожению набора результатов - arrayJoin(arrayConcat(dice, [])) as second_throw -- выражение намеренно изменено для принудительного повторного вычисления + /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set + arrayJoin(arrayConcat(dice, [])) as second_throw -- intentionally changed expression to force re-evaluation FROM ( SELECT [1, 2, 3, 4, 5, 6] as dice ); ``` + ```response title=Response -┌─первый_бросок─┬─второй_бросок─┐ +┌─first_throw─┬─second_throw─┐ │ 1 │ 1 │ │ 1 │ 2 │ │ 1 │ 3 │ @@ -1646,14 +1678,14 @@ FROM ( │ 6 │ 4 │ │ 6 │ 5 │ │ 6 │ 6 │ -└───────────────┴───────────────┘ +└─────────────┴──────────────┘ ``` **Использование синтаксиса ARRAY JOIN** ```sql title=Query --- Обратите внимание на синтаксис ARRAY JOIN в запросе `SELECT` ниже — он предоставляет более широкие возможности. --- ARRAY JOIN позволяет одновременно преобразовывать несколько массивов с одинаковым количеством элементов. +-- Note the ARRAY JOIN syntax in the `SELECT` query below, which provides broader possibilities. +-- ARRAY JOIN allows you to convert multiple arrays with the same number of elements at a time. SELECT sum(1) AS impressions, @@ -1681,10 +1713,10 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -**Использование типа Tuple** +**Использование кортежа (Tuple)** ```sql title=Query --- Также можно использовать кортеж (Tuple) +-- You can also use Tuple SELECT sum(1) AS impressions, @@ -1709,11 +1741,12 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` + ## arrayLast {#arrayLast} -Добавлена в версии: v1.1 +Введена в версии: v1.1 -Возвращает последний элемент исходного массива, для которого лямбда-функция `func(x [, y1, y2, ... yN])` возвращает `true`, в противном случае возвращает значение по умолчанию. +Возвращает последний элемент исходного массива, для которого лямбда `func(x [, y1, y2, ... yN])` возвращает `true`; если такого элемента нет, возвращает значение по умолчанию. **Синтаксис** @@ -1723,11 +1756,11 @@ arrayLast(func(x[, y1, ..., yN]), source[, cond1, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, применяемая к элементам исходного массива (`x`) и массивам условий (`y`). [Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1, ... , condN]` — необязательный параметр. N массивов условий, передающих дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам-условиям (`y`). [Лямбда-функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1, ... , condN]` — Необязательно. N массивов-условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** -Возвращает последний элемент исходного массива, для которого `func` возвращает `true`, иначе возвращает значение по умолчанию типа `T`. +Возвращает последний элемент исходного массива, для которого `func` возвращает true, иначе возвращает значение по умолчанию типа `T`. **Примеры** @@ -1751,11 +1784,12 @@ SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) 0 UInt8 ``` + ## arrayLastIndex {#arrayLastIndex} -Добавлена в версии: v1.1 +Добавлена в: v1.1 -Возвращает индекс последнего элемента в исходном массиве, для которого `func(x[, y1, y2, ... yN])` возвращает true, в противном случае возвращает '0'. +Возвращает индекс последнего элемента исходного массива, для которого `func(x[, y1, y2, ... yN])` возвращает значение true; в противном случае — '0'. **Синтаксис** @@ -1765,13 +1799,13 @@ arrayLastIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, применяемая к элементам исходного массива (`x`) и массивов-условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов-условий, передающих дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает индекс последнего элемента исходного массива, для которого `func` возвращает `true`, в противном случае возвращает `0` [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает индекс последнего элемента исходного массива, для которого `func` возвращает true, в противном случае возвращает `0` [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -1785,7 +1819,7 @@ SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c']); 3 ``` -**Совпадений не найдено** +**Совпадений нет** ```sql title=Query SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']); @@ -1795,11 +1829,12 @@ SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']); 0 ``` + ## arrayLastOrNull {#arrayLastOrNull} -Добавлена в версии v1.1 +Введена в версии: v1.1 -Возвращает последний элемент исходного массива, для которого лямбда `func(x [, y1, y2, ... yN])` возвращает true, в противном случае возвращает `NULL`. +Возвращает последний элемент исходного массива, для которого лямбда-выражение `func(x [, y1, y2, ... yN])` возвращает `true`; в противном случае возвращает `NULL`. **Синтаксис** @@ -1809,14 +1844,11 @@ arrayLastOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr] **Аргументы** -* `func(x [, y1, ..., yN])` — лямбда-функция, которая обрабатывает элементы исходного массива (`x`) и массивов условий (`y`). [Лямбда‑функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - -- `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). -- `[, cond1_arr, ... , condN_arr]` — необязательно. N массивов условий, предоставляющих дополнительные аргументы лямбда‑функции. [`Array(T)`](/sql-reference/data-types/array). +* `func(x [, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [Лямбда-функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** -Возвращает последний элемент исходного массива, для которого значение `λ` ложно, иначе возвращает `NULL`. +Возвращает последний элемент исходного массива, для которого результат `λ` не равен `true`, в противном случае возвращает `NULL`. **Примеры** @@ -1840,11 +1872,12 @@ SELECT arrayLastOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res NULL Nullable(UInt8) ``` + ## arrayLevenshteinDistance {#arrayLevenshteinDistance} -Добавлена в версии: v25.4 +Введена в версии: v25.4 -Вычисляет расстояние Левенштейна между двумя массивами. +Функция вычисляет расстояние Левенштейна между двумя массивами. **Синтаксис** @@ -1872,12 +1905,13 @@ SELECT arrayLevenshteinDistance([1, 2, 4], [1, 2, 3]) 1 ``` + ## arrayLevenshteinDistanceWeighted {#arrayLevenshteinDistanceWeighted} Введена в версии: v25.4 -Вычисляет расстояние Левенштейна для двух массивов с настраиваемыми весами для каждого элемента. -Число элементов в массиве и число весов должно совпадать. +Вычисляет расстояние Левенштейна для двух массивов с пользовательскими весами для каждого элемента. +Количество элементов массива и соответствующих весов должно совпадать. **Синтаксис** @@ -1887,12 +1921,12 @@ arrayLevenshteinDistanceWeighted(from, to, from_weights, to_weights) **Аргументы** -* `from` — первый массив. [`Array(T)`](/sql-reference/data-types/array). - `to` — второй массив. [`Array(T)`](/sql-reference/data-types/array). - `from_weights` — веса элементов первого массива. [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) -* `to_weights` — веса элементов второго массива. [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `from` — первый массив. [`Array(T)`](/sql-reference/data-types/array). - `to` — второй массив. [`Array(T)`](/sql-reference/data-types/array). - `from_weights` — веса для первого массива. [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `to_weights` — веса для второго массива. [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) **Возвращаемое значение** -Расстояние Левенштейна между первым и вторым массивами с пользовательскими весами для каждого элемента типа [`Float64`](/sql-reference/data-types/float) +Расстояние Левенштейна между первым и вторым массивами с заданными для каждого элемента весами, возвращаемое значение имеет тип [`Float64`](/sql-reference/data-types/float) **Примеры** @@ -1906,9 +1940,10 @@ SELECT arrayLevenshteinDistanceWeighted(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 14 ``` + ## arrayMap {#arrayMap} -Введена в версии: v1.1 +Впервые представлена в версии: v1.1 Возвращает массив, полученный из исходных массивов путём применения лямбда-функции к каждому элементу. @@ -1920,12 +1955,12 @@ arrayMap(func, arr) **Аргументы** -* `func` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов-условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr` — N массивов для обработки. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив из результатов выполнения лямбда-функции [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив с результатами лямбда-функции [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -1939,7 +1974,7 @@ SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res; [3, 4, 5] ``` -**Создание кортежа из элементов разных массивов** +**Создание tuple из разных массивов** ```sql title=Query SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res @@ -1949,13 +1984,14 @@ SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res [(1, 4),(2, 5),(3, 6)] ``` + ## arrayMax {#arrayMax} -Добавлена в: v21.1 +Появилась в версии: v21.1 Возвращает максимальный элемент исходного массива. -Если указана лямбда-функция `func`, возвращает максимальный элемент среди результатов её применения. +Если указана лямбда-функция `func`, возвращает максимальный элемент среди результатов её выполнения. **Синтаксис** @@ -1965,13 +2001,13 @@ arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — Необязательный параметр. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — Необязательный аргумент. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — Исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — Необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает максимальный элемент исходного массива или максимальный элемент среди результатов лямбда-функции, если она задана. +Возвращает максимальный элемент в исходном массиве или максимальный элемент среди результатов лямбда-функции, если она используется. **Примеры** @@ -1985,7 +2021,7 @@ SELECT arrayMax([5, 3, 2, 7]); 7 ``` -**Использование с лямбда-функцией** +**Использование лямбда-функции** ```sql title=Query SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); @@ -1995,13 +2031,14 @@ SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); 12 ``` + ## arrayMin {#arrayMin} -Впервые появилась в версии: v21.1 +Введена в версии: v21.1 Возвращает минимальный элемент исходного массива. -Если указана лямбда-функция `func`, возвращает минимальный элемент среди результатов этой функции. +Если указана лямбда-функция `func`, возвращает минимальный элемент среди результатов её применения. **Синтаксис** @@ -2011,13 +2048,13 @@ arrayMin([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — Необязательный параметр. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — Необязательно. Функция-лямбда, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — Исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `cond1_arr, ...` — Необязательные параметры. N массивов условий, предоставляющих дополнительные аргументы для лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `cond1_arr, ...` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает минимальный элемент исходного массива или минимальный элемент среди результатов лямбда-функции, если она задана. +Возвращает минимальный элемент исходного массива или минимальный элемент среди результатов функции-лямбды, если она используется. **Примеры** @@ -2041,9 +2078,10 @@ SELECT arrayMin(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); 4 ``` + ## arrayNormalizedGini {#arrayNormalizedGini} -Введена в версии: v25.1 +Добавлено в версии: v25.1 Вычисляет нормированный коэффициент Джини. @@ -2060,7 +2098,7 @@ arrayNormalizedGini(predicted, label) **Возвращаемое значение** -Кортеж, содержащий коэффициент Джини для предсказанных значений, коэффициент Джини для нормализованных значений и нормализованный коэффициент Джини (= отношение первых двух указанных коэффициентов Джини) [`Tuple(Float64, Float64, Float64)`](/sql-reference/data-types/tuple) +Кортеж, содержащий коэффициент Джини для предсказанных значений, коэффициент Джини для нормализованных значений и нормализованный коэффициент Джини (равный отношению первых двух коэффициентов Джини) [`Tuple(Float64, Float64, Float64)`](/sql-reference/data-types/tuple) **Примеры** @@ -2074,11 +2112,12 @@ SELECT arrayNormalizedGini([0.9, 0.3, 0.8, 0.7],[6, 1, 0, 2]); (0.18055555555555558, 0.2638888888888889, 0.6842105263157896) ``` + ## arrayPartialReverseSort {#arrayPartialReverseSort} Появилась в версии: v23.2 -Эта функция аналогична `arrayReverseSort`, но с дополнительным аргументом `limit`, который позволяет выполнять частичную сортировку. +Эта функция аналогична `arrayReverseSort`, но с дополнительным аргументом `limit`, позволяющим выполнять частичную сортировку. :::tip Чтобы сохранить только отсортированные элементы, используйте `arrayResize`. @@ -2092,15 +2131,15 @@ arrayPartialReverseSort([f,] arr [, arr1, ... ,arrN], limit) **Аргументы** -* `f(arr[, arr1, ... ,arrN])` — lambda-функция, применяемая к элементам массива `arr`. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr` — Массив, который необходимо отсортировать. [`Array(T)`](/sql-reference/data-types/array) -* `arr1, ... ,arrN` — N дополнительных массивов в случае, если `f` принимает несколько аргументов. [`Array(T)`](/sql-reference/data-types/array) -* `limit` — Значение индекса, до которого будет выполняться сортировка. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `f(arr[, arr1, ... ,arrN])` — лямбда-функция, применяемая к элементам массива `x`. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr` — массив, который нужно отсортировать. [`Array(T)`](/sql-reference/data-types/array) +* `arr1, ... ,arrN` — N дополнительных массивов, если `f` принимает несколько аргументов. [`Array(T)`](/sql-reference/data-types/array) +* `limit` — значение индекса, до которого будет выполняться сортировка. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** Возвращает массив того же размера, что и исходный массив, в котором элементы в диапазоне `[1..limit]` отсортированы -по убыванию. Оставшиеся элементы `(limit..N]` находятся в произвольном порядке. +по убыванию. Оставшиеся элементы `(limit..N]` находятся в неопределённом порядке. **Примеры** @@ -2154,16 +2193,15 @@ SELECT arrayPartialReverseSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res [0, 1, 2] ``` + ## arrayPartialShuffle {#arrayPartialShuffle} -Введено в версии: v23.2 +Добавлена в: v23.2 -Возвращает массив того же размера, что и исходный, в котором элементы в диапазоне `[1..limit]` представляют собой случайное -подмножество исходного массива. Оставшиеся элементы `(limit..n]` должны содержать элементы, не вошедшие в диапазон `[1..limit]`, в неопределённом порядке. -Значение `limit` должно быть в диапазоне `[1..n]`. Значения вне этого диапазона эквивалентны выполнению полного `arrayShuffle`: +Возвращает массив того же размера, что и исходный массив, где элементы в диапазоне `[1..limit]` представляют собой случайное подмножество элементов исходного массива. Оставшаяся часть диапазона `(limit..n]` должна содержать элементы, не попавшие в диапазон `[1..limit]`, в произвольном порядке. Значение `limit` должно быть в диапазоне `[1..n]`. Значения вне этого диапазона эквивалентны выполнению полного `arrayShuffle`: :::note -Эта функция не материализует константы. +Эта функция не будет материализовывать константы. Значение `limit` должно быть в диапазоне `[1..N]`. Значения вне этого диапазона эквивалентны выполнению полного [`arrayShuffle`](#arrayShuffle). ::: @@ -2176,9 +2214,9 @@ arrayPartialShuffle(arr [, limit[, seed]]) **Аргументы** -* `arr` — Массив, который нужно случайным образом перемешать. [`Array(T)`](/sql-reference/data-types/array) -* `seed` — Необязательный параметр. Инициализирующее значение (seed) для генератора случайных чисел. Если не задан, используется случайное значение. [`(U)Int*`](/sql-reference/data-types/int-uint) -* `limit` — Необязательный параметр. Число, ограничивающее количество перестановок элементов, в диапазоне `[1..N]`. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — Массив, который нужно перемешать. [`Array(T)`](/sql-reference/data-types/array) +* `seed` — Необязательный аргумент. Начальное значение (seed), используемое для генерации случайных чисел. Если не задан, используется случайное значение. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `limit` — Необязательный аргумент. Число, ограничивающее количество перестановок элементов, в диапазоне `[1..N]`. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -2247,11 +2285,12 @@ SELECT arrayPartialShuffle(materialize([1, 2, 3, 4]), 2, 42), arrayPartialShuffl └──────────────────────────┴──────────────────────────┘ ``` + ## arrayPartialSort {#arrayPartialSort} -Добавлена в версии: v23.2 +Введена в версии: v23.2 -Эта функция аналогична `arraySort`, но с дополнительным аргументом `limit`, который позволяет выполнять частичную сортировку. +Эта функция аналогична `arraySort`, но имеет дополнительный аргумент `limit`, который позволяет выполнять частичную сортировку. :::tip Чтобы оставить только отсортированные элементы, используйте `arrayResize`. @@ -2265,15 +2304,15 @@ arrayPartialSort([f,] arr [, arr1, ... ,arrN], limit) **Аргументы** -* `f(arr[, arr1, ... ,arrN])` — Лямбда-функция, применяемая к элементам массива `x`. [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr` — Массив, который нужно отсортировать. [`Array(T)`](/sql-reference/data-types/array) -* `arr1, ... ,arrN` — N дополнительных массивов, если `f` принимает несколько аргументов. [`Array(T)`](/sql-reference/data-types/array) -* `limit` — Значение индекса, до которого (включительно) будет выполняться сортировка. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `f(arr[, arr1, ... ,arrN])` — Лямбда-функция, применяемая к элементам массива `x`. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr` — Массив, подлежащий сортировке. [`Array(T)`](/sql-reference/data-types/array) +* `arr1, ... ,arrN` — N дополнительных массивов, когда `f` принимает несколько аргументов. [`Array(T)`](/sql-reference/data-types/array) +* `limit` — Значение индекса, до которого будет выполняться сортировка. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** Возвращает массив того же размера, что и исходный массив, в котором элементы в диапазоне `[1..limit]` отсортированы -по возрастанию. Оставшиеся элементы `(limit..N]` находятся в неопределённом порядке. +по возрастанию. Оставшиеся элементы в диапазоне `(limit..N]` могут быть в произвольном порядке. **Примеры** @@ -2327,11 +2366,12 @@ SELECT arrayPartialSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res [2, 1, 0] ``` + ## arrayPopBack {#arrayPopBack} -Добавлена в версии: v1.1 +Введена в версии: v1.1 -Удаляет последний элемент из массива. +Удаляет последний элемент массива. **Синтаксис** @@ -2341,11 +2381,11 @@ arrayPopBack(arr) **Аргументы** -* `arr` — массив, у которого нужно удалить последний элемент. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — массив, из которого нужно удалить последний элемент. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив, идентичный `arr`, но без его последнего элемента. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, совпадающий с `arr`, но без его последнего элемента. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2359,11 +2399,12 @@ SELECT arrayPopBack([1, 2, 3]) AS res; [1, 2] ``` + ## arrayPopFront {#arrayPopFront} -Впервые появилась в версии: v1.1 +Добавлена в версии: v1.1 -Удаляет первый элемент из массива. +Удаляет первый элемент массива. **Синтаксис** @@ -2377,7 +2418,7 @@ arrayPopFront(arr) **Возвращаемое значение** -Возвращает массив [`Array(T)`](/sql-reference/data-types/array), идентичный `arr`, но без его первого элемента. +Возвращает массив, идентичный `arr`, но без первого элемента `arr`. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2391,13 +2432,14 @@ SELECT arrayPopFront([1, 2, 3]) AS res; [2, 3] ``` + ## arrayProduct {#arrayProduct} Введена в версии: v21.1 Возвращает произведение элементов исходного массива. -Если указана лямбда-функция `func`, возвращает произведение элементов результатов выполнения этой лямбда-функции. +Если указана лямбда-функция `func`, возвращает произведение элементов, полученных в результате её применения. **Синтаксис** @@ -2407,17 +2449,17 @@ arrayProduct([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — Необязательный параметр. Лямбда‑функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — Необязательный. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — Исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — Необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы лямбда‑функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает произведение элементов исходного массива или произведение элементов, возвращённых лямбда‑функцией, если она указана. [`Float64`](/sql-reference/data-types/float) +Возвращает произведение элементов исходного массива или произведение элементов результатов лямбда-функции, если она указана. [`Float64`](/sql-reference/data-types/float) **Примеры** -**Простой пример** +**Базовый пример** ```sql title=Query SELECT arrayProduct([1, 2, 3, 4]); @@ -2427,7 +2469,7 @@ SELECT arrayProduct([1, 2, 3, 4]); 24 ``` -**Использование с функцией Lambda** +**Использование с лямбда-функцией** ```sql title=Query SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res; @@ -2437,6 +2479,7 @@ SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res; 16 ``` + ## arrayPushBack {#arrayPushBack} Добавлена в версии: v1.1 @@ -2451,22 +2494,22 @@ arrayPushBack(arr, x) **Аргументы** -* `arr` — массив, в конец которого нужно добавить значение `x`. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — массив, к которому в конец добавляется значение `x`. [`Array(T)`](/sql-reference/data-types/array) * `x` — -* Отдельное значение, которое нужно добавить в конец массива. [`Array(T)`](/sql-reference/data-types/array). +* Отдельное значение, добавляемое в конец массива. [`Array(T)`](/sql-reference/data-types/array). :::note -* В массив с числами можно добавлять только числа, а в массив со строками — только строки. -* При добавлении чисел ClickHouse автоматически приводит тип `x` к типу данных массива. -* Может быть `NULL`. Функция добавляет элемент `NULL` в массив, а тип элементов массива преобразуется в `Nullable`. +* В массив с числами можно добавлять только числа, а в массив строк — только строки. +* При добавлении чисел ClickHouse автоматически устанавливает тип `x` в соответствии с типом элементов массива. +* Может быть `NULL`. Функция добавляет элемент `NULL` в массив, и тип элементов массива преобразуется в `Nullable`. -Для получения дополнительной информации о типах данных в ClickHouse см. раздел [Data types](/sql-reference/data-types). +Подробнее о типах данных в ClickHouse см. раздел [Data types](/sql-reference/data-types). ::: **Возвращаемое значение** -Возвращает массив, идентичный `arr`, но с добавленным в конец массива значением `x` [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, идентичный `arr`, но с дополнительным значением `x` в конце массива. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2480,9 +2523,10 @@ SELECT arrayPushBack(['a'], 'b') AS res; ['a','b'] ``` + ## arrayPushFront {#arrayPushFront} -Впервые появилась в версии: v1.1 +Введено в версии: v1.1 Добавляет один элемент в начало массива. @@ -2494,7 +2538,7 @@ arrayPushFront(arr, x) **Аргументы** -* `arr` — Массив, к концу которого нужно добавить значение `x`. [`Array(T)`](/sql-reference/data-types/array). - `x` — +* `arr` — Массив, в который необходимо добавить значение `x` в начало. [`Array(T)`](/sql-reference/data-types/array). - `x` — * Одно значение, которое нужно добавить в начало массива. [`Array(T)`](/sql-reference/data-types/array). :::note @@ -2503,12 +2547,12 @@ arrayPushFront(arr, x) * При добавлении чисел ClickHouse автоматически приводит тип `x` к типу данных массива. * Может быть `NULL`. Функция добавляет элемент `NULL` в массив, и тип элементов массива преобразуется в `Nullable`. -Дополнительную информацию о типах данных в ClickHouse см. в разделе [Типы данных](/sql-reference/data-types). +Дополнительные сведения о типах данных в ClickHouse см. в разделе [Типы данных](/sql-reference/data-types). ::: **Возвращаемое значение** -Возвращает массив, идентичный `arr`, но с дополнительным значением `x` в начале массива [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, идентичный `arr`, но с дополнительным значением `x` в начале массива [`Array(T)`](/sql-reference/data-types/array). **Примеры** @@ -2522,16 +2566,17 @@ SELECT arrayPushFront(['b'], 'a') AS res; ['a','b'] ``` + ## arrayROCAUC {#arrayROCAUC} -Появилась в версии: v20.4 +Введена в версии: v20.4 -Вычисляет площадь под ROC-кривой (Receiver Operating Characteristic). -ROC-кривая строится путем отображения True Positive Rate (TPR) по оси y и False Positive Rate (FPR) по оси x для всех порогов. -Получаемое значение лежит в диапазоне от нуля до единицы, при этом большее значение указывает на лучшую производительность модели. +Вычисляет площадь под ROC-кривой (receiver operating characteristic). +ROC-кривая строится путём откладывания доли истинно положительных (True Positive Rate, TPR) по оси Y и доли ложно положительных (False Positive Rate, FPR) по оси X для всех пороговых значений. +Получаемое значение лежит в диапазоне от нуля до единицы, причём большее значение указывает на более высокое качество модели. -ROC AUC (также просто AUC) — это понятие в машинном обучении. -Подробнее см. [здесь](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve), [здесь](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1) и [здесь](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve). +ROC AUC (также просто AUC) — это понятие из области машинного обучения. +Для получения дополнительной информации см. [здесь](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve), [здесь](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1) и [здесь](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve). **Синтаксис** @@ -2543,23 +2588,23 @@ arrayROCAUC(scores, labels[, scale[, partial_offsets]]) **Аргументы** -* `scores` — оценки (скоры), которые возвращает модель предсказания. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Array(Float*)`](/sql-reference/data-types/array) -* `labels` — метки объектов, обычно 1 для положительного примера и 0 для отрицательного. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Enum`](/sql-reference/data-types/enum) -* `scale` — необязательный параметр. Определяет, нужно ли возвращать нормированную площадь. Если false, вместо этого возвращает площадь под кривой TP (true positives, истинно положительные) × FP (false positives, ложно положительные). Значение по умолчанию: true. [`Bool`](/sql-reference/data-types/boolean) +* `scores` — Оценки, которые возвращает модель предсказаний. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Array(Float*)`](/sql-reference/data-types/array) +* `labels` — Метки выборок, обычно 1 для положительной и 0 для отрицательной выборки. [`Array((U)Int*)`](/sql-reference/data-types/array) или [`Enum`](/sql-reference/data-types/enum) +* `scale` — Необязательный аргумент. Определяет, нужно ли возвращать нормированную площадь. Если значение false, возвращается площадь под кривой TP (true positives) x FP (false positives). Значение по умолчанию: true. [`Bool`](/sql-reference/data-types/boolean) * `partial_offsets` — -* Массив из четырёх неотрицательных целых чисел для вычисления частичной площади под ROC-кривой (что эквивалентно вертикальной полосе в ROC-пространстве) вместо полного AUC. Эта опция полезна для распределённого вычисления ROC AUC. Массив должен содержать следующие элементы [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`, `total_negatives`]. [Array](/sql-reference/data-types/array) из неотрицательных [Integers](../data-types/int-uint.md). Необязательный параметр. - * `higher_partitions_tp`: количество положительных меток в разбиениях с более высокими значениями оценок. - * `higher_partitions_fp`: количество отрицательных меток в разбиениях с более высокими значениями оценок. - * `total_positives`: общее количество положительных примеров во всём наборе данных. - * `total_negatives`: общее количество отрицательных примеров во всём наборе данных. +* Массив из четырёх неотрицательных целых чисел для вычисления частичной площади под ROC-кривой (эквивалентно вертикальной полосе в ROC-пространстве) вместо полной AUC. Эта опция полезна для распределённых вычислений ROC AUC. Массив должен содержать следующие элементы: [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`, `total_negatives`]. [Array](/sql-reference/data-types/array) неотрицательных [Integers](../data-types/int-uint.md). Необязательный аргумент. + * `higher_partitions_tp`: Число положительных меток в партициях с более высокими оценками. + * `higher_partitions_fp`: Число отрицательных меток в партициях с более высокими оценками. + * `total_positives`: Общее количество положительных выборок во всём наборе данных. + * `total_negatives`: Общее количество отрицательных выборок во всём наборе данных. :::note -Когда используется `arr_partial_offsets`, `arr_scores` и `arr_labels` должны содержать только часть всего набора данных, соответствующую некоторому интервалу значений оценок. -Набор данных должен быть разделён на смежные разбиения, где каждое разбиение содержит подмножество данных с оценками, попадающими в определённый диапазон. +Когда используется `arr_partial_offsets`, `arr_scores` и `arr_labels` должны представлять только одну партицию всего набора данных, содержащую определённый интервал оценок. +Набор данных должен быть разделён на смежные партиции, где каждая партиция содержит подмножество данных с оценками, попадающими в определённый диапазон. Например: -* Одно разбиение может содержать все оценки в диапазоне [0, 0.5). -* Другое разбиение может содержать оценки в диапазоне [0.5, 1.0]. +* Одна партиция может содержать все оценки в диапазоне [0, 0.5). +* Другая партиция может содержать оценки в диапазоне [0.5, 1.0]. ::: **Возвращаемое значение** @@ -2578,11 +2623,12 @@ SELECT arrayROCAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); 0.75 ``` + ## arrayRandomSample {#arrayRandomSample} -Появилась в: v23.10 +Функция представлена в: v23.10 -Возвращает подмножество из `samples` случайных элементов входного массива. Если значение `samples` превышает размер входного массива, размер выборки ограничивается размером массива, то есть возвращаются все элементы массива, но их порядок не гарантируется. Функция может работать как с плоскими, так и с вложенными массивами. +Возвращает подмножество из `samples` случайных элементов входного массива. Если `samples` превышает размер входного массива, размер выборки ограничивается размером массива, то есть возвращаются все элементы массива, но их порядок не гарантируется. Функция может работать как с плоскими массивами, так и с вложенными массивами. **Синтаксис** @@ -2592,12 +2638,12 @@ arrayRandomSample(arr, samples) **Аргументы** -* `arr` — Входной массив или многомерный массив, из которого выбираются элементы. [`Array(T)`](/sql-reference/data-types/array) -* `samples` — Количество элементов в случайной выборке. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — Входной массив или многомерный массив, из которого отбираются элементы. [`Array(T)`](/sql-reference/data-types/array) +* `samples` — Количество элементов, которые включаются в случайную выборку. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Массив, содержащий случайную выборку элементов из входного массива. [`Array(T)`](/sql-reference/data-types/array) +Массив, содержащий случайную выборку элементов из входного массива [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2611,7 +2657,7 @@ SELECT arrayRandomSample(['apple', 'banana', 'cherry', 'date'], 2) as res; ['cherry','apple'] ``` -**Использование многомерных массивов** +**Использование с многомерным массивом** ```sql title=Query SELECT arrayRandomSample([[1, 2], [3, 4], [5, 6]], 2) as res; @@ -2621,13 +2667,14 @@ SELECT arrayRandomSample([[1, 2], [3, 4], [5, 6]], 2) as res; [[3,4],[5,6]] ``` + ## arrayReduce {#arrayReduce} Введена в версии: v1.1 Применяет агрегатную функцию к элементам массива и возвращает её результат. -Имя агрегатной функции передаётся в виде строки в одинарных кавычках: `'max'`, `'sum'`. -При использовании параметрических агрегатных функций параметр указывается после имени функции в круглых скобках: `'uniqUpTo(6)'`. +Имя агрегатной функции передаётся как строка в одинарных кавычках `'max'`, `'sum'`. +При использовании параметрических агрегатных функций параметр указывается после имени функции в скобках `'uniqUpTo(6)'`. **Синтаксис** @@ -2637,12 +2684,12 @@ arrayReduce(agg_f, arr1 [, arr2, ... , arrN)]) **Аргументы** -* `agg_f` — имя агрегатной функции, которое должно быть константой. [`String`](/sql-reference/data-types/string) -* `arr1 [, arr2, ... , arrN)]` — N массивов, соответствующих аргументам функции `agg_f`. [`Array(T)`](/sql-reference/data-types/array) +* `agg_f` — Имя агрегатной функции, значение которой должно быть константой. [`String`](/sql-reference/data-types/string) +* `arr1 [, arr2, ... , arrN)]` — N массивов, соответствующих аргументам `agg_f`. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает результат агрегатной функции. +Возвращает результат агрегатной функции **Примеры** @@ -2658,10 +2705,10 @@ SELECT arrayReduce('max', [1, 2, 3]); └───────────────────────────────┘ ``` -**Пример агрегатной функции с несколькими аргументами** +**Пример агрегатной функции с несколькими параметрами** ```sql title=Query ---Если агрегатная функция принимает несколько аргументов, то она должна применяться к нескольким массивам одинакового размера. +--If an aggregate function takes multiple arguments, then this function must be applied to multiple arrays of the same size. SELECT arrayReduce('maxIf', [3, 5], [1, 0]); ``` @@ -2684,12 +2731,13 @@ SELECT arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); └─────────────────────────────────────────────────────────────┘ ``` + ## arrayReduceInRanges {#arrayReduceInRanges} -Появилась в версии: v20.4 +Введена в версии: v20.4 -Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив с результатом для каждого диапазона. -Функция возвращает тот же результат, что и несколько вызовов `arrayReduce(agg_func, arraySlice(arr1, index, length), ...)`. +Применяет агрегатную функцию к элементам массива в заданных диапазонах и возвращает массив, содержащий результат, соответствующий каждому диапазону. +Функция вернёт тот же результат, что и несколько вызовов `arrayReduce(agg_func, arraySlice(arr1, index, length), ...)`. **Синтаксис** @@ -2699,13 +2747,13 @@ arrayReduceInRanges(agg_f, ranges, arr1 [, arr2, ... ,arrN)]) **Аргументы** -* `agg_f` — имя агрегатной функции, которую следует использовать. [`String`](/sql-reference/data-types/string) -* `ranges` — диапазоны, по которым выполняется агрегация. Массив кортежей `(i, r)`, содержащих индекс `i`, с которого нужно начать, и диапазон `r`, по которому выполняется агрегация. [`Array(T)`](/sql-reference/data-types/array) или [`Tuple(T)`](/sql-reference/data-types/tuple) +* `agg_f` — имя агрегатной функции, которую нужно использовать. [`String`](/sql-reference/data-types/string) +* `ranges` — массив кортежей `(i, r)`, задающий диапазоны, по которым выполняется агрегация. Каждый кортеж содержит индекс `i`, с которого нужно начать, и диапазон `r`, по которому выполняется агрегация. [`Array(T)`](/sql-reference/data-types/array) или [`Tuple(T)`](/sql-reference/data-types/tuple) * `arr1 [, arr2, ... ,arrN)]` — N массивов в качестве аргументов агрегатной функции. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив с результатами работы агрегатной функции по заданным диапазонам — [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив с результатами работы агрегатной функции на указанных диапазонах [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2725,9 +2773,10 @@ SELECT arrayReduceInRanges( └─────────────────────────────┘ ``` + ## arrayRemove {#arrayRemove} -Добавлено в версии v25.11 +Добавлена в версии: v25.11 Удаляет из массива все элементы, равные заданному значению. Значения NULL считаются равными. @@ -2742,11 +2791,11 @@ arrayRemove(arr, elem) **Аргументы** -* `arr` — Array(T) - `elem` — T +* `arr` — Array(T), `elem` — T **Возвращаемое значение** -Возвращает подмножество исходного массива типа [`Array(T)`](/sql-reference/data-types/array) +Возвращает подмножество массива [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2770,6 +2819,7 @@ SELECT arrayRemove(['a', NULL, 'b', NULL], NULL) ['a', 'b'] ``` + ## arrayResize {#arrayResize} Появилась в версии: v1.1 @@ -2786,9 +2836,9 @@ arrayResize(arr, size[, extender]) * `arr` — Массив, размер которого нужно изменить. [`Array(T)`](/sql-reference/data-types/array) * `size` — - * Новая длина массива. - Если `size` меньше исходного размера массива, массив усекается справа. - Если `size` больше исходного размера массива, массив расширяется справа значениями `extender` или значениями по умолчанию для типа данных элементов массива. + * Новый размер массива. + Если `size` меньше исходной длины массива, массив усекается справа. + Если `size` больше исходной длины массива, массив расширяется справа значениями `extender` или значениями по умолчанию для типа данных элементов массива. * `extender` — Значение, используемое для расширения массива. Может быть `NULL`. **Возвращаемое значение** @@ -2817,15 +2867,16 @@ SELECT arrayResize([1], 3, NULL); [1,NULL,NULL] ``` + ## arrayReverse {#arrayReverse} -Добавлена в версии: v1.1 +Появилась в версии: v1.1 -Меняет порядок элементов в заданном массиве на обратный. +Меняет порядок элементов заданного массива на противоположный. :::note -Функция `reverse(arr)` выполняет ту же функцию, но работает и с другими типами данных, -а не только с массивами. +Функция `reverse(arr)` выполняет ту же функцию, но работает также с другими типами данных, +помимо массивов. ::: **Синтаксис** @@ -2836,11 +2887,11 @@ arrayReverse(arr) **Аргументы** -* `arr` — Массив, который нужно развернуть. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — массив, который нужно развернуть. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив того же размера, что и исходный массив, с элементами в обратном порядке [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив того же размера, что и исходный массив, с элементами в обратном порядке. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2854,15 +2905,16 @@ SELECT arrayReverse([1, 2, 3]) [3,2,1] ``` + ## arrayReverseFill {#arrayReverseFill} -Впервые введена в версии: v20.1 +Появилась в версии: v20.1 -Функция `arrayReverseFill` последовательно обрабатывает исходный массив от -последнего элемента к первому, вычисляя лямбда-условие в каждой позиции с -использованием элементов из исходного массива и массива условий. Когда условие -оказывается ложным на позиции i, функция заменяет этот элемент элементом на -позиции i+1 из текущего состояния массива. Последний элемент всегда сохраняется, +Функция `arrayReverseFill` последовательно обрабатывает исходный массив в обратном порядке — от +последнего элемента к первому, на каждой позиции вычисляя лямбда-условие с использованием элементов +исходного и условного массивов. Когда на позиции i условие оказывается ложным (`false`), +функция заменяет этот элемент элементом на позиции i+1 +из текущего состояния массива. Последний элемент всегда сохраняется, независимо от условия. **Синтаксис** @@ -2873,13 +2925,13 @@ arrayReverseFill(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `source_arr` — исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — Необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `func(x[, y1, ..., yN])` — Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `source_arr` — Исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив, в котором элементы исходного массива заменены результатами применения лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, в котором элементы исходного массива заменены результатами выполнения лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -2893,7 +2945,7 @@ SELECT arrayReverseFill(x -> not isNull(x), [1, null, 2, null]) AS res [1, 2, 2, NULL] ``` -**Пример с двумя массивами** +**Пример для двух массивов** ```sql title=Query SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res; @@ -2903,15 +2955,16 @@ SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [5, 6, 6, 2] ``` + ## arrayReverseSort {#arrayReverseSort} -Введена в версии v1.1 +Появилась в версии: v1.1 Сортирует элементы массива в порядке убывания. Если указана функция `f`, переданный массив сортируется в соответствии с результатом -функции, применённой к элементам массива, после чего отсортированный массив переворачивается. -Если `f` принимает несколько аргументов, в функцию `arrayReverseSort` передаются несколько массивов, -которые будут соответствовать аргументам `f`. +применения этой функции к элементам массива, после чего отсортированный массив переворачивается. +Если `f` принимает несколько аргументов, функции `arrayReverseSort` передаётся несколько массивов, +которые соответствуют аргументам `func`. Если сортируемый массив содержит `-Inf`, `NULL`, `NaN` или `Inf`, они будут отсортированы в следующем порядке: @@ -2931,13 +2984,14 @@ arrayReverseSort([f,] arr [, arr1, ... ,arrN) **Аргументы** * `f(y1[, y2 ... yN])` — лямбда-функция, которая применяется к элементам массива `x`. -* `arr` — массив, который нужно отсортировать. [`Array(T)`](/sql-reference/data-types/array) -* `arr1, ..., yN` — необязательные N дополнительных массивов, используемых, если `f` принимает несколько аргументов. + +- `arr` — массив для сортировки. [`Array(T)`](/sql-reference/data-types/array) +- `arr1, ..., yN` — необязательно. N дополнительных массивов, если `f` принимает несколько аргументов. **Возвращаемое значение** -Возвращает массив `x`, отсортированный по убыванию, если лямбда-функция не задана; в противном случае -возвращает массив, отсортированный в соответствии с логикой переданной лямбда-функции, после чего порядок элементов в нём инвертируется. [`Array(T)`](/sql-reference/data-types/array). +Возвращает массив `x`, отсортированный по убыванию, если лямбда-функция не задана, в противном случае +возвращает массив, отсортированный в соответствии с логикой переданной лямбда-функции и затем обращённый. [`Array(T)`](/sql-reference/data-types/array). **Примеры** @@ -2961,11 +3015,12 @@ SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res; [4,3,5] ``` + ## arrayReverseSplit {#arrayReverseSplit} -Появилась в версии: v20.1 +Функция представлена в: v20.1 -Разбивает исходный массив на несколько массивов. Когда `func(x[, y1, ..., yN])` возвращает ненулевое значение, массив будет разделён сразу после этого элемента. После последнего элемента массив не разделяется. +Разбивает исходный массив на несколько массивов. Когда `func(x[, y1, ..., yN])` возвращает значение, отличное от нуля, массив разделяется справа от этого элемента. Массив не разделяется после последнего элемента. **Синтаксис** @@ -2975,9 +3030,9 @@ arrayReverseSplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_ar **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — исходный массив для обработки. [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов условий, передающих дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -2995,11 +3050,12 @@ SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res [[1], [2, 3, 4], [5]] ``` + ## arrayRotateLeft {#arrayRotateLeft} -Введена в версии: v23.8 +Функция представлена в версии v23.8. -Выполняет циклический сдвиг элементов массива влево на заданное количество позиций. Отрицательные значения `n` рассматриваются как сдвиг вправо на абсолютное значение параметра. +Циклически сдвигает массив влево на указанное количество элементов. Отрицательные значения `n` интерпретируются как циклический сдвиг вправо на абсолютное значение величины сдвига. **Синтаксис** @@ -3009,12 +3065,11 @@ arrayRotateLeft(arr, n) **Аргументы** -* `arr` — массив, элементы которого нужно циклически сдвинуть. [`Array(T)`](/sql-reference/data-types/array). -* `n` — количество элементов для сдвига. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint). +* `arr` — массив, элементы которого нужно сдвинуть. [`Array(T)`](/sql-reference/data-types/array). - `n` — число элементов, на которое выполняется сдвиг. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint). **Возвращаемое значение** -Массив, циклически сдвинутый влево на указанное число элементов. [`Array(T)`](/sql-reference/data-types/array) +Массив, сдвинутый влево на указанное количество элементов. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3038,11 +3093,12 @@ SELECT arrayRotateLeft([1,2,3,4,5,6], -2) as res; [5,6,1,2,3,4] ``` + ## arrayRotateRight {#arrayRotateRight} -Введена в версии v23.8 +Введена в версии: v23.8 -Выполняет циклический сдвиг массива вправо на указанное количество элементов. Отрицательные значения `n` интерпретируются как циклический сдвиг влево на абсолютное значение величины сдвига. +Циклически сдвигает массив вправо на указанное число элементов. Отрицательные значения `n` рассматриваются как сдвиг влево на величину, равную модулю значения `n`. **Синтаксис** @@ -3052,8 +3108,7 @@ arrayRotateRight(arr, n) **Аргументы** -* `arr` — массив, для которого выполняется циклический сдвиг элементов. [`Array(T)`](/sql-reference/data-types/array) -* `n` — количество элементов для сдвига. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) +* `arr` — массив, элементы которого нужно циклически сдвинуть. [`Array(T)`](/sql-reference/data-types/array). - `n` — количество элементов для сдвига. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint). **Возвращаемое значение** @@ -3081,13 +3136,14 @@ SELECT arrayRotateRight([1,2,3,4,5,6], -2) as res; [3,4,5,6,1,2] ``` + ## arrayShiftLeft {#arrayShiftLeft} -Появилась в версии: v23.8 +Функция представлена в версии v23.8. -Сдвигает массив влево на заданное количество элементов. -Новые элементы заполняются переданным аргументом или значением по умолчанию для типа элемента массива. -Если указанное количество элементов отрицательное, массив сдвигается вправо. +Сдвигает массив влево на указанное количество элементов. +Новые элементы заполняются переданным аргументом или значением по умолчанию для типа элементов массива. +Если количество элементов отрицательное, массив сдвигается вправо. **Синтаксис** @@ -3097,7 +3153,7 @@ arrayShiftLeft(arr, n[, default]) **Аргументы** -* `arr` — массив, элементы которого необходимо сдвинуть. [`Array(T)`](/sql-reference/data-types/array). - `n` — количество элементов для сдвига. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint). - `default` — необязательный параметр. Значение по умолчанию для новых элементов. +* `arr` — Массив, элементы которого необходимо сдвинуть. [`Array(T)`](/sql-reference/data-types/array). - `n` — Количество элементов для сдвига. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint). - `default` — Необязательный аргумент. Значение по умолчанию для новых элементов. **Возвращаемое значение** @@ -3115,7 +3171,7 @@ SELECT arrayShiftLeft([1,2,3,4,5,6], 2) as res; [3,4,5,6,0,0] ``` -**Отрицательное значение n** +**Отрицательное значение параметра n** ```sql title=Query SELECT arrayShiftLeft([1,2,3,4,5,6], -2) as res; @@ -3135,13 +3191,14 @@ SELECT arrayShiftLeft([1,2,3,4,5,6], 2, 42) as res; [3,4,5,6,42,42] ``` + ## arrayShiftRight {#arrayShiftRight} -Появилась в версии v23.8 +Функция представлена в: v23.8 Сдвигает массив вправо на указанное количество элементов. Новые элементы заполняются переданным аргументом или значением по умолчанию для типа элементов массива. -Если количество элементов отрицательно, массив сдвигается влево. +Если количество элементов отрицательное, массив сдвигается влево. **Синтаксис** @@ -3151,13 +3208,13 @@ arrayShiftRight(arr, n[, default]) **Аргументы** -* `arr` — Массив, элементы которого сдвигаются. [`Array(T)`](/sql-reference/data-types/array) -* `n` — Число элементов, на которое выполняется сдвиг. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) -* `default` — Необязательный параметр. Значение по умолчанию для новых элементов. +* `arr` — Массив, элементы которого необходимо сдвинуть. [`Array(T)`](/sql-reference/data-types/array) +* `n` — Количество элементов для сдвига. [`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) +* `default` — Необязательный аргумент. Значение по умолчанию для новых элементов. **Возвращаемое значение** -Массив, сдвинутый вправо на указанное число элементов. [`Array(T)`](/sql-reference/data-types/array) +Массив, сдвинутый вправо на указанное количество элементов. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3191,11 +3248,12 @@ SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2, 42) as res; [42, 42, 1, 2, 3, 4] ``` + ## arrayShingles {#arrayShingles} -Добавлена в версии v24.1 +Функция представлена в версии v24.1. -Генерирует массив шинглов (аналогов n-грамм для строк), то есть последовательных подмассивов входного массива заданной длины. +Генерирует массив шинглов (по аналогии с n-граммами для строк), то есть последовательных подмассивов заданной длины входного массива. **Синтаксис** @@ -3205,7 +3263,7 @@ arrayShingles(arr, l) **Аргументы** -* `arr` — Массив, для которого генерируется массив шинглов. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — Массив, для которого нужно сгенерировать массив шинглов. [`Array(T)`](/sql-reference/data-types/array) * `l` — Длина каждого шингла. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -3224,11 +3282,12 @@ SELECT arrayShingles([1, 2, 3, 4], 3) as res; [[1, 2, 3], [2, 3, 4]] ``` + ## arrayShuffle {#arrayShuffle} -Добавлена в версии: v23.2 +Введена в версии v23.2 -Возвращает массив того же размера, что и исходный массив, содержащий элементы в перемешанном порядке. +Возвращает массив того же размера, что и исходный массив, содержащий элементы в случайном порядке. Элементы переставляются таким образом, что каждая возможная перестановка этих элементов имеет равную вероятность появления. :::note @@ -3244,15 +3303,15 @@ arrayShuffle(arr [, seed]) **Аргументы** * `arr` — Массив для перемешивания. [`Array(T)`](/sql-reference/data-types/array) -* `seed (optional)` — Необязательный параметр. Начальное значение (seed), используемое для генерации случайных чисел. Если не указано, используется случайное значение. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `seed (optional)` — Необязательный аргумент. Значение seed, используемое при генерации случайных чисел. Если не указано, используется случайное значение. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Массив с перемешанными элементами. [`Array(T)`](/sql-reference/data-types/array) +Массив с перемешанными элементами [`Array(T)`](/sql-reference/data-types/array) **Примеры** -**Пример без seed (недетерминированные результаты)** +**Пример без seed (нестабильные результаты)** ```sql title=Query SELECT arrayShuffle([1, 2, 3, 4]); @@ -3262,7 +3321,7 @@ SELECT arrayShuffle([1, 2, 3, 4]); [1,4,2,3] ``` -**Пример без заданного seed (стабильные результаты)** +**Пример без seed (стабильный результат)** ```sql title=Query SELECT arrayShuffle([1, 2, 3, 4], 41); @@ -3272,11 +3331,12 @@ SELECT arrayShuffle([1, 2, 3, 4], 41); [3,2,1,4] ``` + ## arraySimilarity {#arraySimilarity} -Появилась в версии: v25.4 +Функция представлена в: v25.4 -Вычисляет меру сходства двух массивов от `0` до `1` на основе взвешенного расстояния Левенштейна. +Вычисляет схожесть двух массивов в диапазоне от `0` до `1` на основе взвешенного расстояния Левенштейна. **Синтаксис** @@ -3293,7 +3353,7 @@ arraySimilarity(from, to, from_weights, to_weights) **Возвращаемое значение** -Возвращает меру сходства в диапазоне от `0` до `1` для двух массивов на основе взвешенного расстояния Левенштейна [`Float64`](/sql-reference/data-types/float) +Возвращает значение степени сходства в диапазоне от `0` до `1` для двух массивов на основе взвешенного расстояния Левенштейна [`Float64`](/sql-reference/data-types/float) **Примеры** @@ -3307,9 +3367,10 @@ SELECT arraySimilarity(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 2, 3], [3.0, 4, 5 0.2222222222222222 ``` + ## arraySlice {#arraySlice} -Введена в версии: v1.1 +Появилась в версии: v1.1 Возвращает срез массива, включая элементы `NULL`. @@ -3322,12 +3383,12 @@ arraySlice(arr, offset [, length]) **Аргументы** * `arr` — Массив, из которого берётся срез. [`Array(T)`](/sql-reference/data-types/array) -* `offset` — Смещение относительно края массива. Положительное значение задаёт смещение слева, отрицательное — смещение справа. Нумерация элементов массива начинается с `1`. [`(U)Int*`](/sql-reference/data-types/int-uint) -* `length` — Длина требуемого среза. Если указать отрицательное значение, функция вернёт открытый срез `[offset, array_length - length]`. Если параметр не указан, функция вернёт срез `[offset, the_end_of_array]`. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `offset` — Смещение от края массива. Положительное значение указывает смещение слева, отрицательное — смещение справа. Нумерация элементов массива начинается с `1`. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `length` — Длина требуемого среза. Если указано отрицательное значение, функция возвращает открытый срез `[offset, array_length - length]`. Если значение опущено, функция возвращает срез `[offset, the_end_of_array]`. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает срез массива из `length` элементов, начиная с указанного `offset` [`Array(T)`](/sql-reference/data-types/array) +Возвращает срез массива длиной `length` элементов, начиная с указанного `offset` [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3341,15 +3402,16 @@ SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res; [2, NULL, 4] ``` + ## arraySort {#arraySort} -Введена в версии: v1.1 +Добавлена в: v1.1 -Сортирует элементы переданного массива по возрастанию. -Если указана лямбда-функция `f`, порядок сортировки определяется результатом -применения лямбды к каждому элементу массива. +Сортирует элементы переданного массива в порядке возрастания. +Если задана лямбда-функция `f`, порядок сортировки определяется результатом +применения лямбда-функции к каждому элементу массива. Если лямбда принимает несколько аргументов, функции `arraySort` передаётся несколько -массивов, элементам которых будут соответствовать аргументы `f`. +массивов, которые соответствуют аргументам `f`. Если сортируемый массив содержит `-Inf`, `NULL`, `NaN` или `Inf`, они будут отсортированы в следующем порядке: @@ -3358,7 +3420,7 @@ SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res; 3. `NaN` 4. `NULL` -`arraySort` — это [функция высшего порядка](/sql-reference/functions/overview#higher-order-functions). +`arraySort` — [функция высшего порядка](/sql-reference/functions/overview#higher-order-functions). **Синтаксис** @@ -3368,14 +3430,11 @@ arraySort([f,] arr [, arr1, ... ,arrN]) **Аргументы** -* `f(y1[, y2 ... yN])` — лямбда-функция, применяемая к элементам массива `x`. -* `arr` — массив, который нужно отсортировать. [`Array(T)`](/sql-reference/data-types/array) -* `arr1, ..., yN` — необязательные аргументы. N дополнительных массивов, если `f` принимает несколько аргументов. +* `f(y1[, y2 ... yN])` — лямбда-функция, которую нужно применить к элементам массива `x`. - `arr` — массив, который нужно отсортировать. [`Array(T)`](/sql-reference/data-types/array) - `arr1, ..., yN` — необязательно. N дополнительных массивов, если `f` принимает несколько аргументов. **Возвращаемое значение** -Возвращает массив `arr`, отсортированный по возрастанию, если лямбда-функция не задана, в противном случае -возвращает массив, отсортированный в соответствии с логикой, реализованной в переданной лямбда-функции. [`Array(T)`](/sql-reference/data-types/array). +Возвращает массив `arr`, отсортированный по возрастанию, если лямбда-функция не задана; в противном случае возвращает массив, отсортированный в соответствии с логикой переданной лямбда-функции. [`Array(T)`](/sql-reference/data-types/array). **Примеры** @@ -3409,11 +3468,12 @@ SELECT arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]); [-inf,-4,1,2,3,inf,nan,nan,NULL,NULL] ``` + ## arraySplit {#arraySplit} -Добавлена в версии: v20.1 +Введена в: v20.1 -Разбивает исходный массив на несколько массивов. Когда `func(x [, y1, ..., yN])` возвращает значение, отличное от нуля, массив будет разделён слева от этого элемента. Массив не будет разделён перед первым элементом. +Разделяет исходный массив на несколько массивов. Когда `func(x [, y1, ..., yN])` возвращает значение, отличное от нуля, массив будет разделён слева от элемента. Массив не будет разделён перед первым элементом. **Синтаксис** @@ -3423,9 +3483,7 @@ arraySplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — лямбда-функция, которая обрабатывает элементы исходного массива (`x`) и массивов условий (`y`). [Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda). -* `source_arr` — исходный массив для разбиения [`Array(T)`](/sql-reference/data-types/array). -* `[, cond1_arr, ... , condN_arr]` — необязательный параметр. N массивов условий, передающих дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). +* `func(x[, y1, ..., yN])` — лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивам условий (`y`). [Лямбда-функция](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — исходный массив, который нужно разделить [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** @@ -3443,13 +3501,14 @@ SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res [[1, 2, 3], [4, 5]] ``` + ## arraySum {#arraySum} -Введена в: v21.1 +Впервые представлен в версии: v21.1 Возвращает сумму элементов исходного массива. -Если указана лямбда-функция `func`, возвращает сумму элементов, полученных в результате её применения. +Если задана лямбда-функция `func`, возвращает сумму значений, полученных при её применении. **Синтаксис** @@ -3459,13 +3518,13 @@ arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **Аргументы** -* `func(x[, y1, ..., yN])` — Необязательный параметр. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — Необязательно. Лямбда-функция, которая применяется к элементам исходного массива (`x`) и массивов условий (`y`). [`Лямбда-функция`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — Исходный массив для обработки. [`Array(T)`](/sql-reference/data-types/array) -* `, cond1_arr, ... , condN_arr]` — Необязательный параметр. N массивов условий, предоставляющих дополнительные аргументы лямбда-функции. [`Array(T)`](/sql-reference/data-types/array) +* `, cond1_arr, ... , condN_arr]` — Необязательно. N массивов условий, которые передают дополнительные аргументы в лямбда-функцию. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает сумму элементов исходного массива или сумму элементов, полученных в результате применения лямбда-функции, если она задана. +Возвращает сумму элементов исходного массива или сумму элементов результата лямбда-функции, если она задана. **Примеры** @@ -3479,7 +3538,7 @@ SELECT arraySum([1, 2, 3, 4]); 10 ``` -**Использование с функцией Lambda** +**Использование лямбда-функции** ```sql title=Query SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]); @@ -3489,16 +3548,17 @@ SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]); 8 ``` + ## arraySymmetricDifference {#arraySymmetricDifference} -Добавлено в: v25.4 +Введена в версии: v25.4 -Принимает несколько массивов и возвращает массив с элементами, которые отсутствуют хотя бы в одном из исходных массивов. Результат содержит только уникальные значения. +Принимает несколько массивов и возвращает массив с элементами, которые присутствуют не во всех исходных массивах. Результат содержит только уникальные значения. :::note Симметрическая разность *более чем двух множеств* [математически определяется](https://en.wikipedia.org/wiki/Symmetric_difference#n-ary_symmetric_difference) как множество всех входных элементов, которые встречаются в нечётном числе входных множеств. -В отличие от этого определения, функция `arraySymmetricDifference` просто возвращает множество входных элементов, которые отсутствуют во всех входных множествах одновременно. +В отличие от этого определения, функция `arraySymmetricDifference` просто возвращает множество входных элементов, которые не встречаются во всех входных множествах. ::: **Синтаксис** @@ -3509,11 +3569,11 @@ arraySymmetricDifference(arr1, arr2, ... , arrN) **Аргументы** -* `arrN` — N массивов, из которых создаётся новый массив. [`Array(T)`](/sql-reference/data-types/array). +* `arrN` — N массивов, из которых формируется новый массив. [`Array(T)`](/sql-reference/data-types/array). **Возвращаемое значение** -Возвращает массив различных элементов, которые не присутствуют во всех исходных массивах [`Array(T)`](/sql-reference/data-types/array). +Возвращает массив уникальных элементов, которые не присутствуют во всех исходных массивах [`Array(T)`](/sql-reference/data-types/array). **Примеры** @@ -3531,11 +3591,12 @@ arraySymmetricDifference([1, 2], [1, 2], [1, 3]) AS non_empty_symmetric_differen └────────────────────────────┴────────────────────────────────┘ ``` + ## arrayUnion {#arrayUnion} -Добавлена в: v24.10 +Появилась в версии: v24.10 -Функция принимает несколько массивов и возвращает массив, содержащий все элементы, присутствующие хотя бы в одном из исходных массивов. В результате остаются только уникальные значения. +Принимает несколько массивов и возвращает массив, который содержит все элементы, присутствующие хотя бы в одном из исходных массивов. Результат содержит только уникальные значения. **Синтаксис** @@ -3549,7 +3610,7 @@ arrayUnion(arr1, arr2, ..., arrN) **Возвращаемое значение** -Возвращает массив, содержащий уникальные элементы исходных массивов [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив без дубликатов значений из исходных массивов [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3568,24 +3629,25 @@ arrayUnion([1, 3, NULL], [2, 3, NULL]) as null_example └─────────────┴────────────────┴──────────────┘ ``` + ## arrayUniq {#arrayUniq} Появилась в версии: v1.1 -При передаче одного аргумента считает количество различных элементов в массиве. -При передаче нескольких аргументов считает количество различных **кортежей**, составленных из элементов на соответствующих позициях в нескольких массивах. +Если передан один аргумент, функция считает количество различных элементов в массиве. +Если передано несколько аргументов, функция считает количество различных **кортежей**, составленных из элементов на одинаковых позициях в нескольких массивах. Например, `SELECT arrayUniq([1,2], [3,4], [5,6])` сформирует следующие кортежи: * Позиция 1: (1,3,5) * Позиция 2: (2,4,6) -Затем будет подсчитано количество уникальных кортежей. В данном случае `2`. +Затем будет посчитано количество уникальных кортежей. В данном случае — `2`. Все переданные массивы должны иметь одинаковую длину. :::tip -Если нужно получить список уникальных элементов в массиве, используйте `arrayReduce('groupUniqArray', arr)`. +Если требуется получить список уникальных элементов в массиве, можно использовать `arrayReduce('groupUniqArray', arr)`. ::: **Синтаксис** @@ -3596,12 +3658,14 @@ arrayUniq(arr1[, arr2, ..., arrN]) **Аргументы** -* `arr1` — Массив, для которого нужно посчитать количество уникальных элементов. [`Array(T)`](/sql-reference/data-types/array) -* `[, arr2, ..., arrN]` — Необязательные аргументы. Дополнительные массивы, используемые для подсчёта количества уникальных кортежей элементов на соответствующих позициях в нескольких массивах. [`Array(T)`](/sql-reference/data-types/array) +* `arr1` — Массив, для которого считается количество уникальных элементов. [`Array(T)`](/sql-reference/data-types/array) +* `[, arr2, ..., arrN]` — Необязательный аргумент. Дополнительные массивы, по которым считается количество уникальных кортежей элементов, стоящих на соответствующих позициях в нескольких массивах. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Для одного аргумента возвращает количество уникальных элементов. Для нескольких аргументов возвращает количество уникальных кортежей, составленных из элементов на соответствующих позициях в массивах. +Для одного аргумента возвращает количество уникальных +элементов. Для нескольких аргументов возвращает количество уникальных кортежей, составленных из +элементов на соответствующих позициях во всех массивах. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -3626,9 +3690,10 @@ SELECT arrayUniq([1, 2, 3, 1], [4, 5, 6, 4]) 3 ``` + ## arrayWithConstant {#arrayWithConstant} -Появилась в версии: v20.1 +Введена в версии: v20.1 Создаёт массив длины `length`, заполненный константой `x`. @@ -3640,12 +3705,12 @@ arrayWithConstant(N, x) **Аргументы** -* `length` — количество элементов в массиве. [`(U)Int*`](/sql-reference/data-types/int-uint) -* `x` — значение `N` элементов в массиве, произвольного типа. +* `length` — Количество элементов в массиве. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `x` — Значение для `N` элементов массива, любого типа. **Возвращаемое значение** -Возвращает массив из `N` элементов со значением `x`. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив из `N` элементов, каждый со значением `x`. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3659,11 +3724,12 @@ SELECT arrayWithConstant(3, 1) [1, 1, 1] ``` + ## arrayZip {#arrayZip} -Появилась в версии: v20.1 +Введена в: v20.1 -Объединяет несколько массивов в один массив. Полученный массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов. +Объединяет несколько массивов в один. Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке аргументов. **Синтаксис** @@ -3677,7 +3743,7 @@ arrayZip(arr1, arr2, ... , arrN) **Возвращаемое значение** -Возвращает массив с элементами исходных массивов, сгруппированными в кортежи. Типы данных в кортеже совпадают с типами входных массивов и следуют в том же порядке, в котором массивы передаются. [`Array(T)`](/sql-reference/data-types/array) +Возвращает массив, элементы которого представляют собой кортежи, сформированные из исходных массивов. Типы данных в кортеже совпадают с типами входных массивов и расположены в том же порядке, в котором массивы передаются в функцию. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3691,11 +3757,12 @@ SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1]); [('a', 5), ('b', 2), ('c', 1)] ``` + ## arrayZipUnaligned {#arrayZipUnaligned} -Впервые добавлена в: v20.1 +Введена в: v20.1 -Объединяет несколько массивов в один, позволяя использовать невыравненные массивы (массивы разной длины). Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в перечисленном порядке аргументов. +Объединяет несколько массивов в один, при этом допускаются невыравненные массивы (массивы разной длины). Результирующий массив содержит соответствующие элементы исходных массивов, сгруппированные в кортежи в указанном порядке. **Синтаксис** @@ -3705,11 +3772,11 @@ arrayZipUnaligned(arr1, arr2, ..., arrN) **Аргументы** -* `arr1, arr2, ..., arrN` — N массивов, которые нужно объединить в один массив. [`Array(T)`](/sql-reference/data-types/array) +* `arr1, arr2, ..., arrN` — N массивов, которые требуется объединить в один массив. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает массив с элементами из исходных массивов, сгруппированными в кортежи. Типы данных в кортеже совпадают с типами входных массивов и следуют в том же порядке, в каком переданы массивы. [`Array(T)`](/sql-reference/data-types/array) или [`Tuple(T1, T2, ...)`](/sql-reference/data-types/tuple) +Возвращает массив, элементы которого представляют собой кортежи, сформированные из элементов исходных массивов. Типы данных в кортеже совпадают с типами входных массивов и располагаются в том же порядке, в котором массивы были переданы. [`Array(T)`](/sql-reference/data-types/array) или [`Tuple(T1, T2, ...)`](/sql-reference/data-types/tuple) **Примеры** @@ -3723,13 +3790,14 @@ SELECT arrayZipUnaligned(['a'], [1, 2, 3]); [('a', 1),(NULL, 2),(NULL, 3)] ``` + ## countEqual {#countEqual} -Появилась в версии: v1.1 +Функция появилась в версии: v1.1 -Возвращает количество элементов массива, равных `x`. Эквивалентно `arrayCount(elem -> elem = x, arr)`. +Возвращает количество элементов в массиве, равных `x`. Эквивалентно `arrayCount(elem -> elem = x, arr)`. -Элементы `NULL` рассматриваются как отдельные значения. +Элементы `NULL` обрабатываются как отдельные значения. **Синтаксис** @@ -3739,12 +3807,12 @@ countEqual(arr, x) **Аргументы** -* `arr` — Массив, в котором выполняется поиск. [`Array(T)`](/sql-reference/data-types/array) +* `arr` — Массив, в котором ведётся поиск. [`Array(T)`](/sql-reference/data-types/array) * `x` — Значение в массиве, количество вхождений которого нужно посчитать. Любой тип. **Возвращаемое значение** -Возвращает количество элементов в массиве, равных `x` [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает количество элементов массива, равных `x`. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -3758,19 +3826,20 @@ SELECT countEqual([1, 2, NULL, NULL], NULL) 2 ``` + ## empty {#empty} -Добавлена в версии: v1.1 +Появилась в версии: v1.1 Проверяет, является ли входной массив пустым. Массив считается пустым, если он не содержит ни одного элемента. :::note -Выполнение запроса можно оптимизировать, включив [настройку `optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns). При `optimize_functions_to_subcolumns = 1` функция читает только подстолбец [size0](/sql-reference/data-types/array#array-size) вместо чтения и обработки всего столбца с массивами. Запрос `SELECT empty(arr) FROM TABLE;` преобразуется в `SELECT arr.size0 = 0 FROM TABLE;`. +Её работу можно оптимизировать, включив настройку [`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns). При `optimize_functions_to_subcolumns = 1` функция читает только подстолбец [size0](/sql-reference/data-types/array#array-size) вместо чтения и обработки всего столбца массива. Запрос `SELECT empty(arr) FROM TABLE;` преобразуется в `SELECT arr.size0 = 0 FROM TABLE;`. ::: -Функция также работает со строками (String) и UUID. +Функция также работает для значений типов String или UUID. **Синтаксис** @@ -3780,11 +3849,11 @@ empty(arr) **Аргументы** -* `arr` — входной массив типа [`Array(T)`](/sql-reference/data-types/array) +* `arr` — входной массив. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает `1` для пустого массива и `0` для непустого массива типа [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1` для пустого массива или `0` для непустого массива [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -3798,6 +3867,7 @@ SELECT empty([]); 1 ``` + ## emptyArrayDate {#emptyArrayDate} Введена в версии: v1.1 @@ -3812,11 +3882,11 @@ emptyArrayDate() **Аргументы** -* Нет. +* Отсутствуют. **Возвращаемое значение** -Пустой массив типа Date. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив значений типа Date. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3830,11 +3900,12 @@ SELECT emptyArrayDate [] ``` + ## emptyArrayDateTime {#emptyArrayDateTime} -Впервые представлена в версии v1.1 +Введена в версии: v1.1 -Возвращает пустой массив значений типа DateTime +Возвращает пустой массив типа DateTime **Синтаксис** @@ -3844,7 +3915,7 @@ emptyArrayDateTime() **Аргументы** -* Отсутствуют. +* Нет. **Возвращаемое значение** @@ -3862,6 +3933,7 @@ SELECT emptyArrayDateTime [] ``` + ## emptyArrayFloat32 {#emptyArrayFloat32} Появилась в версии: v1.1 @@ -3876,7 +3948,7 @@ emptyArrayFloat32() **Аргументы** -* Отсутствуют. +* Нет. **Возвращаемое значение** @@ -3894,9 +3966,10 @@ SELECT emptyArrayFloat32 [] ``` + ## emptyArrayFloat64 {#emptyArrayFloat64} -Добавлена в: v1.1 +Появилась в версии: v1.1 Возвращает пустой массив типа Float64 @@ -3908,7 +3981,7 @@ emptyArrayFloat64() **Аргументы** -* Отсутствуют. +* Нет аргументов. **Возвращаемое значение** @@ -3926,11 +3999,12 @@ SELECT emptyArrayFloat64 [] ``` + ## emptyArrayInt16 {#emptyArrayInt16} -Добавлена в версии: v1.1 +Введён в версии: v1.1 -Возвращает пустой массив типа Int16 +Возвращает пустой массив Int16 **Синтаксис** @@ -3958,9 +4032,10 @@ SELECT emptyArrayInt16 [] ``` + ## emptyArrayInt32 {#emptyArrayInt32} -Введена в: v1.1 +Появилась в версии: v1.1 Возвращает пустой массив типа Int32 @@ -3972,11 +4047,11 @@ emptyArrayInt32() **Аргументы** -* Нет. +* Отсутствуют. **Возвращаемое значение** -Пустой массив Int32. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив типа Int32. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -3990,9 +4065,10 @@ SELECT emptyArrayInt32 [] ``` + ## emptyArrayInt64 {#emptyArrayInt64} -Впервые появилось в: v1.1 +Функция появилась в версии: v1.1 Возвращает пустой массив Int64 @@ -4004,7 +4080,7 @@ emptyArrayInt64() **Аргументы** -* Отсутствуют. +* Нет. **Возвращаемое значение** @@ -4022,9 +4098,10 @@ SELECT emptyArrayInt64 [] ``` + ## emptyArrayInt8 {#emptyArrayInt8} -Добавлена в версии: v1.1 +Появилась в версии: v1.1 Возвращает пустой массив типа Int8 @@ -4036,11 +4113,11 @@ emptyArrayInt8() **Аргументы** -* Отсутствуют. +* Нет. **Возвращаемое значение** -Пустой массив типа Int8. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив Int8. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -4054,9 +4131,10 @@ SELECT emptyArrayInt8 [] ``` + ## emptyArrayString {#emptyArrayString} -Добавлена в версии: v1.1 +Появилась в версии: v1.1 Возвращает пустой массив типа String @@ -4068,11 +4146,11 @@ emptyArrayString() **Аргументы** -* Нет. +* Отсутствуют. **Возвращаемое значение** -Пустой массив строк. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив типа String. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -4086,11 +4164,12 @@ SELECT emptyArrayString [] ``` + ## emptyArrayToSingle {#emptyArrayToSingle} -Добавлено в: v1.1 +Появилась в версии: v1.1 -Принимает пустой массив и возвращает одноэлементный массив, содержащий значение по умолчанию. +Принимает пустой массив и возвращает массив с одним элементом, равным значению по умолчанию. **Синтаксис** @@ -4104,11 +4183,11 @@ emptyArrayToSingle(arr) **Возвращаемое значение** -Массив с одним значением типа по умолчанию для массива. [`Array(T)`](/sql-reference/data-types/array) +Массив с одним значением типа по умолчанию для `Array`. [`Array(T)`](/sql-reference/data-types/array) **Примеры** -**Простой пример** +**Базовый пример** ```sql title=Query CREATE TABLE test ( @@ -4130,9 +4209,10 @@ SELECT emptyArrayToSingle(a), emptyArrayToSingle(b), emptyArrayToSingle(c) FROM └───────────────────────┴───────────────────────┴─────────────────────────┘ ``` + ## emptyArrayUInt16 {#emptyArrayUInt16} -Добавлена в: v1.1 +Введена в версии: v1.1 Возвращает пустой массив UInt16 @@ -4148,7 +4228,7 @@ emptyArrayUInt16() **Возвращаемое значение** -Пустой массив UInt16. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив типа UInt16. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -4162,11 +4242,12 @@ SELECT emptyArrayUInt16 [] ``` + ## emptyArrayUInt32 {#emptyArrayUInt32} -Введено в версии: v1.1 +Введена в версии: v1.1 -Возвращает пустой массив типа UInt32 +Возвращает пустой массив UInt32 **Синтаксис** @@ -4176,11 +4257,11 @@ emptyArrayUInt32() **Аргументы** -* Нет аргументов. +* Нет. **Возвращаемое значение** -Пустой массив UInt32. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив типа UInt32. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -4194,9 +4275,10 @@ SELECT emptyArrayUInt32 [] ``` + ## emptyArrayUInt64 {#emptyArrayUInt64} -Добавлена в: v1.1 +Функция появилась в версии: v1.1 Возвращает пустой массив UInt64 @@ -4208,11 +4290,11 @@ emptyArrayUInt64() **Аргументы** -* Отсутствуют. +* Нет. **Возвращаемое значение** -Пустой массив типа UInt64. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив UInt64. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -4226,9 +4308,10 @@ SELECT emptyArrayUInt64 [] ``` + ## emptyArrayUInt8 {#emptyArrayUInt8} -Добавлена в версии v1.1 +Введена в версии: v1.1 Возвращает пустой массив типа UInt8 @@ -4240,11 +4323,11 @@ emptyArrayUInt8() **Аргументы** -* Отсутствуют. +* Нет. **Возвращаемое значение** -Пустой массив типа UInt8. [`Array(T)`](/sql-reference/data-types/array) +Пустой массив UInt8. [`Array(T)`](/sql-reference/data-types/array) **Примеры** @@ -4258,9 +4341,10 @@ SELECT emptyArrayUInt8 [] ``` + ## has {#has} -Добавлена в: v1.1 +Появилась в версии: v1.1 Возвращает, содержит ли массив указанный элемент. @@ -4301,9 +4385,10 @@ SELECT has([1, 2, 3], 4) 0 ``` + ## hasAll {#hasAll} -Добавлена в версии: v1.1 +Появилась в версии: v1.1 Проверяет, является ли один массив подмножеством другого. @@ -4320,14 +4405,14 @@ hasAll(set, subset) **Аргументы** * `set` — массив любого типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) -* `subset` — массив любого типа, который имеет общий супертип с `set` и содержит элементы, проверяемые на то, что они образуют подмножество `set`. [`Array(T)`](/sql-reference/data-types/array) +* `subset` — массив любого типа, имеющий с `set` общий супертип и содержащий элементы, для которых нужно проверить, все ли они содержатся в `set`. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** * `1`, если `set` содержит все элементы из `subset`. -* `0` — в противном случае. +* `0`, в противном случае. -Генерируется исключение `NO_COMMON_TYPE`, если элементы множества и подмножества не имеют общего супертипа. +Вызывается исключение `NO_COMMON_TYPE`, если элементы `set` и `subset` не имеют общего супертипа. **Примеры** @@ -4341,7 +4426,7 @@ SELECT hasAll([], []) 1 ``` -**Массивы, содержащие значения NULL** +**Массивы, содержащие NULL** ```sql title=Query SELECT hasAll([1, Null], [Null]) @@ -4351,7 +4436,7 @@ SELECT hasAll([1, Null], [Null]) 1 ``` -**Массивы, содержащие значения разных типов** +**Массивы, содержащие элементы другого типа** ```sql title=Query SELECT hasAll([1.0, 2, 3, 4], [1, 3]) @@ -4361,7 +4446,7 @@ SELECT hasAll([1.0, 2, 3, 4], [1, 3]) 1 ``` -**Массивы, содержащие значения типа String** +**Массивы, содержащие значения String** ```sql title=Query SELECT hasAll(['a', 'b'], ['a']) @@ -4371,14 +4456,14 @@ SELECT hasAll(['a', 'b'], ['a']) 1 ``` -**Массивы без общего типа данных** +**Массивы без единого типа** ```sql title=Query SELECT hasAll([1], ['a']) ``` ```response title=Response -Вызывает исключение NO_COMMON_TYPE +Raises a NO_COMMON_TYPE exception ``` **Массив массивов** @@ -4391,14 +4476,15 @@ SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]]) 0 ``` + ## hasAny {#hasAny} -Добавлена в версии: v1.1 +Появилась в версии: v1.1 -Проверяет, имеют ли два массива пересечение хотя бы по одному элементу. +Проверяет, имеют ли два массива общие элементы. * `Null` обрабатывается как значение. -* Порядок значений в обоих массивах не важен. +* Порядок значений в обоих массивах не имеет значения. **Синтаксис** @@ -4408,19 +4494,19 @@ hasAny(arr_x, arr_y) **Аргументы** -* `arr_x` — массив любого типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) -* `arr_y` — массив любого типа, имеющий общий супертип с массивом `arr_x`. [`Array(T)`](/sql-reference/data-types/array) +* `arr_x` — массив произвольного типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) +* `arr_y` — массив произвольного типа, имеющий общий супертиип с массивом `arr_x`. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -* `1`, если `arr_x` и `arr_y` имеют по крайней мере один общий элемент. -* `0` — в противном случае. +* `1`, если `arr_x` и `arr_y` имеют хотя бы один общий элемент. +* `0`, в противном случае. -Выбрасывает исключение `NO_COMMON_TYPE`, если какие-либо элементы двух массивов не имеют общего супертипа. +Вызывает исключение `NO_COMMON_TYPE`, если какие-либо элементы двух массивов не имеют общего супертиипа. **Примеры** -**Один массив пустой** +**Один из массивов пустой** ```sql title=Query SELECT hasAny([1], []) @@ -4430,7 +4516,7 @@ SELECT hasAny([1], []) 0 ``` -**Массивы, содержащие значения NULL** +**Массивы, содержащие NULL** ```sql title=Query SELECT hasAny([Null], [Null, 1]) @@ -4440,7 +4526,7 @@ SELECT hasAny([Null], [Null, 1]) 1 ``` -**Массивы, содержащие значения иного типа** +**Массивы, содержащие значения другого типа** ```sql title=Query SELECT hasAny([-128, 1., 512], [1]) @@ -4450,14 +4536,14 @@ SELECT hasAny([-128, 1., 512], [1]) 1 ``` -**Массивы без общего типа** +**Массивы без общего типа элементов** ```sql title=Query SELECT hasAny([[1, 2], [3, 4]], ['a', 'c']) ``` ```response title=Response -Вызывает исключение `NO_COMMON_TYPE` +Raises a `NO_COMMON_TYPE` exception ``` **Массив массивов** @@ -4470,17 +4556,18 @@ SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]]) 1 ``` + ## hasSubstr {#hasSubstr} -Введена в версии: v20.6 +Появилась в версии: v20.6 -Проверяет, встречаются ли все элементы массива array2 в массиве array1 в точно таком же порядке. -Соответственно, функция вернёт `1` тогда и только тогда, когда array1 = prefix + array2 + suffix. +Проверяет, появляются ли все элементы `array2` в `array1` в точно таком же порядке. +Следовательно, функция вернёт `1` тогда и только тогда, когда array1 = prefix + array2 + suffix. -Другими словами, функция проверяет, содержатся ли все элементы массива array2 в массиве array1, аналогично функции `hasAll`. -Кроме того, она проверяет, что элементы расположены в одном и том же порядке в обоих массивах array1 и array2. +Другими словами, функция проверяет, что все элементы `array2` содержатся в `array1`, как функция `hasAll`. +Кроме того, она проверяет, что элементы встречаются в одном и том же порядке и в array1, и в array2. -* Функция вернёт `1`, если array2 пустой. +* Функция вернёт `1`, если array2 пуст. * `Null` обрабатывается как значение. Другими словами, `hasSubstr([1, 2, NULL, 3, 4], [2,3])` вернёт `0`. Однако `hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])` вернёт `1`. * Порядок значений в обоих массивах имеет значение. @@ -4494,8 +4581,8 @@ hasSubstr(arr1, arr2) **Аргументы** -* `arr1` — Массив произвольного типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) -* `arr2` — Массив произвольного типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) +* `arr1` — массив любого типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) +* `arr2` — массив любого типа с набором элементов. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -4513,7 +4600,7 @@ SELECT hasSubstr([], []) 1 ``` -**Массивы, содержащие значения NULL** +**Массивы, содержащие NULL-значения** ```sql title=Query SELECT hasSubstr([1, Null], [Null]) @@ -4533,7 +4620,7 @@ SELECT hasSubstr([1.0, 2, 3, 4], [1, 3]) 0 ``` -**Массивы строк** +**Массивы, содержащие строки** ```sql title=Query SELECT hasSubstr(['a', 'b'], ['a']) @@ -4573,21 +4660,22 @@ SELECT hasSubstr([[1, 2], [3, 4], [5, 6]], [[1, 2], [3, 4]]) 1 ``` -**Массивы без единого типа** +**Массивы без общего типа элементов** ```sql title=Query SELECT hasSubstr([1, 2, NULL, 3, 4], ['a']) ``` ```response title=Response -Вызывает исключение `NO_COMMON_TYPE` +Raises a `NO_COMMON_TYPE` exception ``` + ## indexOf {#indexOf} -Добавлена в версии: v1.1 +Введена в версии: v1.1 -Функция возвращает индекс первого элемента со значением 'x' (начиная с 1), если он есть в массиве. +Возвращает индекс первого элемента со значением 'x' (начиная с 1), если он присутствует в массиве. Если массив не содержит искомого значения, функция возвращает `0`. Элементы со значением `NULL` обрабатываются как обычные значения. @@ -4601,15 +4689,15 @@ indexOf(arr, x) **Аргументы** * `arr` — Массив, в котором выполняется поиск значения `x`. [`Array(T)`](/sql-reference/data-types/array) -* `x` — Значение первого совпадающего элемента в `arr`, индекс которого требуется вернуть. [`UInt64`](/sql-reference/data-types/int-uint) +* `x` — Значение первого совпадающего элемента в `arr`, индекс которого нужно вернуть. [`UInt64`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает индекс (отсчёт от единицы) первого вхождения `x` в `arr`, если такое значение существует. В противном случае возвращает `0`. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает индекс (нумерация начинается с единицы) первого вхождения `x` в `arr`, если такой элемент существует. В противном случае возвращает `0`. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** -**Простой пример** +**Базовый пример** ```sql title=Query SELECT indexOf([5, 4, 1, 3], 3) @@ -4629,16 +4717,17 @@ SELECT indexOf([1, 3, NULL, NULL], NULL) 3 ``` + ## indexOfAssumeSorted {#indexOfAssumeSorted} -Добавлено в: v24.12 +Введена в версии: v24.12 -Возвращает индекс первого элемента со значением 'x' (начиная с `1`), если он есть в массиве. +Возвращает индекс первого элемента со значением `x` (начиная с `1`), если он присутствует в массиве. Если массив не содержит искомого значения, функция возвращает `0`. :::note В отличие от функции `indexOf`, эта функция предполагает, что массив отсортирован -по возрастанию. Если массив не отсортирован, результаты не определены. +по возрастанию. Если массив не отсортирован, результат не определён. ::: **Синтаксис** @@ -4649,16 +4738,16 @@ indexOfAssumeSorted(arr, x) **Аргументы** -* `arr` — отсортированный массив для поиска. [`Array(T)`](/sql-reference/data-types/array) -* `x` — значение первого совпадающего элемента в отсортированном массиве `arr`, индекс которого нужно вернуть. [`UInt64`](/sql-reference/data-types/int-uint) +* `arr` — Отсортированный массив, в котором выполняется поиск. [`Array(T)`](/sql-reference/data-types/array) +* `x` — Значение первого совпадающего элемента в отсортированном `arr`, индекс которого нужно вернуть. [`UInt64`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает индекс (нумерация с единицы) первого `x` в `arr`, если такой элемент существует. В противном случае возвращает `0`. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает индекс (нумерация начинается с единицы) первого `x` в `arr`, если такой элемент существует. В противном случае возвращает `0`. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** -**Простой пример** +**Базовый пример** ```sql title=Query SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) @@ -4668,9 +4757,10 @@ SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) 5 ``` + ## length {#length} -Добавлена в: v1.1 +Появилась в версии: v1.1 Вычисляет длину строки или массива. @@ -4678,11 +4768,11 @@ SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) * Для аргументов типа Array: вычисляет количество элементов в массиве. * При применении к аргументу типа FixedString функция является константным выражением. -Обратите внимание, что количество байт в строке не совпадает с количеством -Unicode "code points" (кодовых точек) и не совпадает с количеством Unicode "grapheme clusters" -(того, что мы обычно называем "символами"), и не совпадает с видимой шириной строки. +Обратите внимание, что количество байт в строке отличается от количества +Unicode "кодовых точек", количества Unicode "графемных кластеров" +(того, что мы обычно называем "символами"), а также от видимой ширины строки. -В строках допустимо наличие нулевых байтов (ASCII NULL), и они также будут учитываться. +В строках могут присутствовать байты ASCII NULL — они также будут учитываться. **Синтаксис** @@ -4694,15 +4784,15 @@ length(x) **Аргументы** -* `x` — значение, для которого вычисляется количество байт (для String/FixedString) или элементов (для Array). [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) или [`Array(T)`](/sql-reference/data-types/array) +* `x` — Значение, для которого нужно вычислить количество байт (для String/FixedString) или элементов (для Array). [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) или [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** -Возвращает количество байт в String/FixedString `x` или количество элементов в массиве `x`. Тип: [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает количество байт в String/FixedString `x` или количество элементов в массиве `x`. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** -**Пример для строки String** +**Пример для String** ```sql title=Query SELECT length('Hello, world!') @@ -4752,7 +4842,7 @@ SELECT 'ёлка' AS str1, length(str1), lengthUTF8(str1), normalizeUTF8NFKD(str └──────┴──────────────┴──────────────────┴──────┴──────────────┴──────────────────┘ ``` -**пример ascii_vs_utf8** +**Пример ascii_vs_utf8** ```sql title=Query SELECT 'ábc' AS str, length(str), lengthUTF8(str) @@ -4764,19 +4854,20 @@ SELECT 'ábc' AS str, length(str), lengthUTF8(str) └─────┴──────────────┴─────────────────┘ ``` + ## notEmpty {#notEmpty} -Добавлена в: v1.1 +Впервые представлена в версии: v1.1 Проверяет, является ли входной массив непустым. Массив считается непустым, если он содержит по крайней мере один элемент. :::note -Её работу можно оптимизировать, включив настройку [`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns). При `optimize_functions_to_subcolumns = 1` функция читает только подстолбец [size0](/sql-reference/data-types/array#array-size) вместо чтения и обработки всего столбца-массива. Запрос `SELECT notEmpty(arr) FROM table` преобразуется в `SELECT arr.size0 != 0 FROM TABLE`. +Может быть оптимизирована путём включения параметра [`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns). При `optimize_functions_to_subcolumns = 1` функция читает только подстолбец [size0](/sql-reference/data-types/array#array-size) вместо чтения и обработки всего столбца массива. Запрос `SELECT notEmpty(arr) FROM table` преобразуется в `SELECT arr.size0 != 0 FROM TABLE`. ::: -Функцию также можно применять к значениям типов `String` и `UUID`. +Функция также работает для типов String и UUID. **Синтаксис** @@ -4790,7 +4881,7 @@ notEmpty(arr) **Возвращаемое значение** -Возвращает `1` для непустого массива или `0` для пустого массива. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1` для непустого массива или `0` для пустого массива, значение типа [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -4804,9 +4895,10 @@ SELECT notEmpty([1,2]); 1 ``` + ## range {#range} -Введена в версии: v1.1 +Введён в версии: v1.1 Возвращает массив чисел от `start` до `end - 1` с шагом `step`. @@ -4816,11 +4908,11 @@ SELECT notEmpty([1,2]); * `Int8/16/32/64` -* Все аргументы `start`, `end`, `step` должны быть одним из указанных выше поддерживаемых типов. Элементы возвращаемого массива будут иметь тип — общий супертип аргументов. +* Все аргументы `start`, `end`, `step` должны быть одним из перечисленных выше поддерживаемых типов. Элементы возвращаемого массива будут супертипом этих аргументов. -* Генерируется исключение, если функция возвращает массив с общей длиной больше числа элементов, указанного настройкой [`function_range_max_elements_in_block`](../../operations/settings/settings.md#function_range_max_elements_in_block). +* Генерируется исключение, если функция возвращает массив с общей длиной, превышающей число элементов, заданное настройкой [`function_range_max_elements_in_block`](../../operations/settings/settings.md#function_range_max_elements_in_block). -* Возвращает `NULL`, если какой-либо аргумент имеет тип Nullable(Nothing). Генерируется исключение, если какой-либо аргумент имеет значение `NULL` (тип Nullable(T)). +* Возвращает `NULL`, если какой-либо аргумент имеет тип `Nullable(nothing)`. Генерируется исключение, если какой-либо аргумент имеет значение `NULL` (тип `Nullable(T)`). **Синтаксис** @@ -4830,7 +4922,7 @@ range([start, ] end [, step]) **Аргументы** -* `start` — Необязательный параметр. Первый элемент массива. Обязателен, если используется `step`. Значение по умолчанию: `0`. - `end` — Обязательный параметр. Число, до которого (не включительно) строится массив. - `step` — Необязательный параметр. Определяет шаг между элементами массива. Значение по умолчанию: `1`. +* `start` — Необязательный аргумент. Первый элемент массива. Обязателен, если используется `step`. Значение по умолчанию: `0`. - `end` — Обязательный аргумент. Число, до которого (не включая его) строится массив. - `step` — Необязательный аргумент. Определяет шаг между элементами массива. Значение по умолчанию: `1`. **Возвращаемое значение** @@ -4850,11 +4942,12 @@ SELECT range(5), range(1, 5), range(1, 5, 2), range(-1, 5, 2); └─────────────┴─────────────┴────────────────┴─────────────────┘ ``` + ## replicate {#replicate} -Добавлено в: v1.1 +Появилась в версии: v1.1 -Создаёт массив, содержащий одно значение. +Создаёт массив с одним значением. **Синтаксис** @@ -4864,8 +4957,8 @@ replicate(x, arr) **Аргументы** -* `x` — значение, которым заполняется результирующий массив. [`Any`](/sql-reference/data-types) -* `arr` — массив. [`Array(T)`](/sql-reference/data-types/array) +* `x` — Значение, которым заполняется результирующий массив. [`Any`](/sql-reference/data-types) +* `arr` — Массив. [`Array(T)`](/sql-reference/data-types/array) **Возвращаемое значение** @@ -4885,11 +4978,12 @@ SELECT replicate(1, ['a', 'b', 'c']); └─────────────────────────────────┘ ``` + ## reverse {#reverse} -Добавлена в версии v1.1 +Представлена в версии: v1.1 -Меняет порядок следования элементов во входном массиве или символов во входной строке на обратный. +Меняет порядок элементов во входном массиве или символов во входной строке на обратный. **Синтаксис** @@ -4899,15 +4993,15 @@ reverse(arr | str) **Аргументы** -* `arr | str` — Исходный массив или строка. [`Array(T)`](/sql-reference/data-types/array) или [`String`](/sql-reference/data-types/string) +* `arr | str` — исходный массив или строка. [`Array(T)`](/sql-reference/data-types/array) или [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает массив или строку, в которой элементы или символы расположены в обратном порядке. +Возвращает массив или строку с элементами или символами в обратном порядке. **Примеры** -**Массив в обратном порядке** +**Обратный порядок элементов массива** ```sql title=Query SELECT reverse([1, 2, 3, 4]); @@ -4917,7 +5011,7 @@ SELECT reverse([1, 2, 3, 4]); [4, 3, 2, 1] ``` -**Реверс строки** +**Обращение строки** ```sql title=Query SELECT reverse('abcd'); @@ -4929,6 +5023,7 @@ SELECT reverse('abcd'); {/*AUTOGENERATED_END*/ } -## Функции расстояния {#distance-functions} -Все поддерживаемые функции описаны в [документации по функциям расстояния](../../sql-reference/functions/distance-functions.md). +## Функции расстояний {#distance-functions} + +Все поддерживаемые функции описаны в [документации по функциям расстояний](../../sql-reference/functions/distance-functions.md). diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md index 0bf65835d4c..3580176e329 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md @@ -1,5 +1,5 @@ --- -description: 'Документация по функции arrayJoin' +description: 'Справочная документация по функции arrayJoin' sidebar_label: 'arrayJoin' slug: /sql-reference/functions/array-join title: 'Функция arrayJoin' @@ -15,11 +15,11 @@ doc_type: 'reference' Функция `arrayJoin` берёт каждую строку и порождает из неё набор строк (unfold). Эта функция принимает массив в качестве аргумента и разворачивает исходную строку в несколько строк в количестве, равном числу элементов в массиве. -Все значения в столбцах просто копируются, за исключением значения в столбце, к которому применяется эта функция; оно заменяется соответствующим значением из массива. +Все значения в столбцах лишь копируются, за исключением значений в столбце, к которому применяется эта функция; они заменяются соответствующими значениями массива. :::note -Если массив пустой, `arrayJoin` не возвращает ни одной строки. -Чтобы вернуть одну строку, содержащую значение по умолчанию для типа массива, можно обернуть его в [emptyArrayToSingle](./array-functions.md#emptyArrayToSingle), например: `arrayJoin(emptyArrayToSingle(...))`. +Если массив пуст, `arrayJoin` не возвращает ни одной строки. +Чтобы вернуть одну строку, содержащую значение по умолчанию для типа массива, можно обернуть массив функцией [emptyArrayToSingle](./array-functions.md#emptyArrayToSingle), например: `arrayJoin(emptyArrayToSingle(...))`. ::: Например: @@ -36,7 +36,7 @@ SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src └─────┴───────────┴─────────┘ ``` -Функция `arrayJoin` влияет на все части запроса, включая раздел `WHERE`. Обратите внимание, что результат запроса ниже равен `2`, несмотря на то что подзапрос вернул одну строку. +Функция `arrayJoin` влияет на все разделы запроса, включая раздел `WHERE`. Обратите внимание, что результат запроса ниже равен `2`, хотя подзапрос вернул 1 строку. ```sql title="Query" SELECT sum(1) AS impressions @@ -53,7 +53,7 @@ WHERE arrayJoin(cities) IN ['Istanbul', 'Berlin']; └─────────────┘ ``` -Запрос может использовать несколько функций `arrayJoin`. В этом случае преобразование выполняется несколько раз, в результате чего умножается число строк. +В запросе можно использовать несколько функций `arrayJoin`. В этом случае преобразование выполняется несколько раз, и умножается число строк. Например: ```sql title="Query" @@ -74,34 +74,34 @@ GROUP BY ```text title="Response" ┌─impressions─┬─city─────┬─browser─┐ -│ 2 │ Стамбул │ Chrome │ -│ 1 │ Стамбул │ Firefox │ -│ 2 │ Берлин │ Chrome │ -│ 1 │ Берлин │ Firefox │ -│ 2 │ Бобруйск │ Chrome │ -│ 1 │ Бобруйск │ Firefox │ +│ 2 │ Istanbul │ Chrome │ +│ 1 │ Istanbul │ Firefox │ +│ 2 │ Berlin │ Chrome │ +│ 1 │ Berlin │ Firefox │ +│ 2 │ Babruysk │ Chrome │ +│ 1 │ Babruysk │ Firefox │ └─────────────┴──────────┴─────────┘ ``` ### Рекомендации по использованию {#important-note} -Использование нескольких `arrayJoin` с одним и тем же выражением может привести к неожиданным результатам из-за устранения общих подвыражений. -В таких случаях имеет смысл модифицировать повторяющиеся выражения с массивами с помощью дополнительных операций, которые не влияют на результат операции `join`. Например, `arrayJoin(arraySort(arr))`, `arrayJoin(arrayConcat(arr, []))` +Использование нескольких вызовов `arrayJoin` с одним и тем же выражением может не дать ожидаемых результатов из‑за устранения общих подвыражений. +В таких случаях рассмотрите возможность модифицировать повторяющиеся выражения массивов, добавив дополнительные операции, которые не влияют на результат соединения. Например, `arrayJoin(arraySort(arr))`, `arrayJoin(arrayConcat(arr, []))` Пример: ```sql SELECT arrayJoin(dice) AS first_throw, - /* arrayJoin(dice) as second_throw */ -- технически корректно, но приведет к пустому результату - arrayJoin(arrayConcat(dice, [])) AS second_throw -- выражение намеренно изменено для принудительного пересчета + /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set + arrayJoin(arrayConcat(dice, [])) AS second_throw -- intentionally changed expression to force re-evaluation FROM ( SELECT [1, 2, 3, 4, 5, 6] AS dice ); ``` Обратите внимание на синтаксис [`ARRAY JOIN`](../statements/select/array-join.md) в запросе SELECT, который даёт более широкие возможности. -`ARRAY JOIN` позволяет преобразовывать несколько массивов с одинаковым количеством элементов за один раз. +`ARRAY JOIN` позволяет за один раз преобразовывать несколько массивов с одинаковым числом элементов. Пример: @@ -132,7 +132,7 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -Также можно использовать [`Tuple`](../data-types/tuple.md) +Или можно использовать [`Tuple`](../data-types/tuple.md) Пример: @@ -160,4 +160,4 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -Название функции `arrayJoin` в ClickHouse связано с её концептуальным сходством с операцией JOIN, но применяемой к массивам в пределах одной строки. В то время как традиционные JOIN объединяют строки из разных таблиц, `arrayJoin` как бы «соединяет» каждый элемент массива в строке, порождая несколько строк — по одной для каждого элемента массива — при этом дублируя значения остальных столбцов. В ClickHouse также доступен синтаксис предложения [`ARRAY JOIN`](/sql-reference/statements/select/array-join), который делает эту связь с традиционными операциями JOIN ещё более очевидной за счёт использования привычной терминологии SQL JOIN. Этот процесс также называют «разворачиванием» массива, но термин «join» используется и в названии функции, и в предложении, потому что операция напоминает присоединение таблицы к элементам массива, фактически расширяя набор данных способом, аналогичным операции JOIN. +Название функции `arrayJoin` в ClickHouse обусловлено её концептуальным сходством с операцией JOIN, но применённой к массивам внутри одной строки. В то время как традиционные операции JOIN объединяют строки из разных таблиц, `arrayJoin` «соединяет» каждый элемент массива в строке, порождая несколько строк — по одной на каждый элемент массива — при этом дублируя значения остальных столбцов. ClickHouse также предоставляет синтаксис предложения [`ARRAY JOIN`](/sql-reference/statements/select/array-join), который делает эту связь с традиционными операциями JOIN ещё более явной за счёт использования привычной терминологии SQL JOIN. Этот процесс также называют «разворачиванием» массива, но термин «join» используется и в названии функции, и в предложении, потому что он напоминает соединение таблицы с элементами массива, фактически расширяя набор данных способом, похожим на операцию JOIN. diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md index 988e3a6b684..f4759b238d9 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md @@ -1,8 +1,8 @@ --- -description: 'Документация по хеш-функциям' +description: 'Документация по функциям хеширования' sidebar_label: 'Хеш' slug: /sql-reference/functions/hash-functions -title: 'Хеш-функции' +title: 'Функции хеширования' doc_type: 'reference' --- @@ -15,7 +15,7 @@ Simhash — это хеш-функция, которая возвращает б Большинство хеш-функций принимают любое количество аргументов любых типов. :::note -Хеш от NULL равен NULL. Чтобы получить хеш Nullable-столбца, отличный от NULL, оберните его в tuple: +Хеш от NULL равен NULL. Чтобы получить значение хеша, отличное от NULL, для столбца типа Nullable, оберните его в кортеж: ```sql SELECT cityHash64(tuple(NULL)) @@ -24,12 +24,12 @@ SELECT cityHash64(tuple(NULL)) ::: :::note -Для вычисления хеша всего содержимого таблицы используйте `sum(cityHash64(tuple(*)))` (или другую хеш-функцию). `tuple` обеспечивает, что строки со значениями NULL не будут пропущены. `sum` обеспечивает, что порядок строк не имеет значения. +Чтобы вычислить хеш всего содержимого таблицы, используйте `sum(cityHash64(tuple(*)))` (или другую хеш-функцию). `tuple` гарантирует, что строки со значениями NULL не будут пропущены. `sum` гарантирует, что порядок строк не влияет на результат. ::: {/* - Содержимое тегов ниже заменяется при сборке фреймворка документации - документацией, сгенерированной на основе system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. + Содержимое тегов ниже во время сборки фреймворка документации + заменяется документацией, сгенерированной из system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. См.: https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } @@ -37,12 +37,12 @@ SELECT cityHash64(tuple(NULL)) ## BLAKE3 {#BLAKE3} -Введено в: v22.10 +Введена в версии v22.10. -Вычисляет хеш-строку BLAKE3 и возвращает полученный набор байт в виде FixedString. -Эта криптографическая хеш-функция реализована в ClickHouse с использованием библиотеки BLAKE3 на Rust. -Функция достаточно быстрая и демонстрирует примерно в два раза более высокую производительность по сравнению с SHA-2, при этом генерирует хеши той же длины, что и SHA-256. -Она возвращает хеш BLAKE3 в виде массива байт типа FixedString(32). +Вычисляет хеш-строку BLAKE3 и возвращает полученную последовательность байтов в виде FixedString. +Эта криптографическая хеш-функция интегрирована в ClickHouse с использованием Rust-библиотеки BLAKE3. +Функция достаточно быстрая и демонстрирует примерно в два раза более высокую производительность по сравнению с SHA-2, при этом генерируя хеши той же длины, что и SHA-256. +Она возвращает хеш BLAKE3 в виде массива байтов типа FixedString(32). **Синтаксис** @@ -52,11 +52,11 @@ BLAKE3(message) **Аргументы** -* `message` — входная строка для хеширования. [`String`](/sql-reference/data-types/string) +* `message` — Исходная строка для хеширования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает 32-байтовый хеш BLAKE3 входной строки в виде строки фиксированной длины. [`FixedString(32)`](/sql-reference/data-types/fixedstring) +Возвращает 32-байтовый хеш BLAKE3 от исходной строки в виде строки фиксированной длины. [`FixedString(32)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -74,9 +74,9 @@ SELECT hex(BLAKE3('ABC')) ## MD4 {#MD4} -Добавлено в: v21.11 +Появилась в версии: v21.11 -Вычисляет хеш MD4 для заданной строки. +Вычисляет хэш MD4 для указанной строки. **Синтаксис** @@ -90,7 +90,7 @@ MD4(s) **Возвращаемое значение** -Возвращает хеш MD4 для заданной входной строки в виде строки фиксированной длины. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает хэш MD4 переданной входной строки в виде строки фиксированной длины. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -108,9 +108,9 @@ SELECT HEX(MD4('abc')); ## MD5 {#MD5} -Появилось в версии: v1.1 +Добавлена в версии v1.1. -Вычисляет хэш MD5 для заданной строки. +Вычисляет MD5-хэш заданной строки. **Синтаксис** @@ -120,11 +120,11 @@ MD5(s) **Аргументы** -* `s` — входная строка для хеширования. [`String`](/sql-reference/data-types/string) +* `s` — входная строка для вычисления хэша. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает MD5-хеш заданной входной строки в виде строки фиксированной длины. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает хэш MD5 для заданной входной строки как строку фиксированной длины. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -144,7 +144,7 @@ SELECT HEX(MD5('abc')); Появилась в версии: v24.10 -Вычисляет хэш RIPEMD-160 для заданной строки. +Вычисляет хеш RIPEMD-160 для заданной строки. **Синтаксис** @@ -154,18 +154,18 @@ RIPEMD160(s) **Аргументы** -* `s` — Входная строка для хеширования. [`String`](/sql-reference/data-types/string) +* `s` — входная строка для хеширования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает хеш RIPEMD160 для заданной строки в виде строки фиксированной длины. [`FixedString(20)`](/sql-reference/data-types/fixedstring) +Возвращает хеш RIPEMD160 для указанной входной строки в виде строки фиксированной длины. [`FixedString(20)`](/sql-reference/data-types/fixedstring) **Примеры** **Пример использования** ```sql title=Query -SELECT HEX(RIPEMD160('Быстрая коричневая лиса перепрыгивает через ленивую собаку')); +SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog')); ``` ```response title=Response @@ -176,9 +176,9 @@ SELECT HEX(RIPEMD160('Быстрая коричневая лиса перепр ## SHA1 {#SHA1} -Появилось в версии v1.1 +Добавлена в версии: v1.1 -Вычисляет хэш SHA1 для заданной строки. +Вычисляет хеш SHA1 для указанной строки. **Синтаксис** @@ -192,7 +192,7 @@ SHA1(s) **Возвращаемое значение** -Возвращает SHA1-хеш заданной входной строки в виде строки фиксированной длины. [`FixedString(20)`](/sql-reference/data-types/fixedstring) +Возвращает хеш SHA1 для заданной входной строки в виде строки фиксированной длины. [`FixedString(20)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -210,9 +210,9 @@ SELECT HEX(SHA1('abc')); ## SHA224 {#SHA224} -Добавлена в версии: v1.1 +Добавлена в версии v1.1. -Вычисляет хэш SHA224 для указанной строки. +Вычисляет хэш SHA224 указанной строки. **Синтаксис** @@ -222,11 +222,11 @@ SHA224(s) **Аргументы** -* `s` — Входное значение для хеширования. [`String`](/sql-reference/data-types/string) +* `s` — входное значение для хеширования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает хеш SHA224 для указанной входной строки в виде строки фиксированной длины. [`FixedString(28)`](/sql-reference/data-types/fixedstring) +Возвращает хеш SHA-224 для указанной входной строки в виде строки фиксированной длины. [`FixedString(28)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -244,9 +244,9 @@ SELECT HEX(SHA224('abc')); ## SHA256 {#SHA256} -Добавлено в версии: v1.1 +Добавлено в: v1.1 -Вычисляет хеш SHA256 для заданной строки. +Вычисляет хеш SHA256 для указанной строки. **Синтаксис** @@ -278,9 +278,9 @@ SELECT HEX(SHA256('abc')); ## SHA384 {#SHA384} -Добавлено в версии: v1.1 +Добавлено в версии v1.1 -Вычисляет хеш SHA384 для указанной строки. +Вычисляет хэш SHA384 для указанной строки. **Синтаксис** @@ -294,7 +294,7 @@ SHA384(s) **Возвращаемое значение** -Возвращает хеш SHA384 для заданной входной строки в виде строки фиксированной длины. [`FixedString(48)`](/sql-reference/data-types/fixedstring) +Возвращает хеш SHA384 от заданной входной строки в виде строки фиксированной длины. [`FixedString(48)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -312,9 +312,9 @@ SELECT HEX(SHA384('abc')); ## SHA512 {#SHA512} -Добавлено в версии v1.1 +Добавлена в версии: v1.1 -Вычисляет хеш SHA512 для указанной строки. +Вычисляет хэш SHA512 для заданной строки. **Синтаксис** @@ -324,11 +324,11 @@ SHA512(s) **Аргументы** -* `s` — входная строка для хеширования [`String`](/sql-reference/data-types/string) +* `s` — исходная строка для хеширования [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает SHA512-хеш переданной входной строки в виде строки фиксированной длины [`FixedString(64)`](/sql-reference/data-types/fixedstring). +Возвращает хеш SHA512 от заданной строки в виде строки фиксированной длины. [`FixedString(64)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -348,7 +348,7 @@ SELECT HEX(SHA512('abc')); Появилось в версии: v1.1 -Вычисляет хэш SHA512_256 для заданной строки. +Вычисляет хеш SHA512_256 для указанной строки. **Синтаксис** @@ -358,11 +358,11 @@ SHA512_256(s) **Аргументы** -* `s` — входная строка для хеширования. [`String`](/sql-reference/data-types/string) +* `s` — входная строка для хэширования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает хеш-значение SHA512_256 для указанной входной строки в виде строки фиксированной длины. [`FixedString(32)`](/sql-reference/data-types/fixedstring) +Возвращает хэш SHA512_256 для указанной входной строки в виде строки фиксированной длины. [`FixedString(32)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -380,16 +380,16 @@ SELECT HEX(SHA512_256('abc')); ## URLHash {#URLHash} -Введена в: v1.1 +Введена в версии v1.1 -Быстрая, достаточно качественная некриптографическая хеш‑функция для строки, полученной из URL с использованием некоторого вида нормализации. +Быстрая некриптографическая хеш-функция достаточно высокого качества для строки, полученной из URL с использованием некоторого вида нормализации. -Эта хеш‑функция имеет два режима: +Эта хеш-функция поддерживает два режима: -| Mode | Description | -| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `URLHash(url)` | Вычисляет хеш из строки без одного из завершающих символов `/`, `?` или `#` в конце, если такой символ присутствует. | -| `URLHash(url, N)` | Вычисляет хеш из строки до N‑го уровня в иерархии URL, без одного из завершающих символов `/`, `?` или `#` в конце, если такой символ присутствует. Уровни такие же, как в `URLHierarchy`. | +| Режим | Описание | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `URLHash(url)` | Вычисляет хеш строки без одного из конечных символов `/`, `?` или `#` на конце, если он присутствует. | +| `URLHash(url, N)` | Вычисляет хеш строки до уровня N в иерархии URL, без одного из конечных символов `/`, `?` или `#` на конце, если он присутствует. Уровни аналогичны тем, что используются в `URLHierarchy`. | **Синтаксис** @@ -400,11 +400,11 @@ URLHash(url[, N]) **Аргументы** * `url` — строка URL для хеширования. [`String`](/sql-reference/data-types/string) -* `N` — Необязательный. Уровень в иерархии URL. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `N` — необязательный параметр. Уровень в иерархии URL. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленное хеш-значение `url`. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное хеш-значение для `url`. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -420,7 +420,7 @@ SELECT URLHash('https://www.clickhouse.com') └──────────────────────────┘ ``` -**Хэш URL с заданным уровнем** +**Хеш URL с указанным уровнем** ```sql title=Query SELECT URLHash('https://www.clickhouse.com/docs', 0); @@ -428,11 +428,11 @@ SELECT URLHash('https://www.clickhouse.com/docs', 1); ``` ```response title=Response --- хеш https://www.clickhouse.com +-- hash of https://www.clickhouse.com ┌─URLHash('htt⋯m/docs', 0)─┐ │ 13614512636072854701 │ └──────────────────────────┘ --- хеш https://www.clickhouse.com/docs +-- hash of https://www.clickhouse.com/docs ┌─URLHash('htt⋯m/docs', 1)─┐ │ 13167253331440520598 │ └──────────────────────────┘ @@ -440,23 +440,23 @@ SELECT URLHash('https://www.clickhouse.com/docs', 1); ## cityHash64 {#cityHash64} -Добавлено в: v1.1 +Введена в версии: v1.1 Возвращает 64-битное хеш-значение [CityHash](https://github.com/google/cityhash). Это быстрая некриптографическая хеш-функция. -Она использует алгоритм CityHash для строковых параметров и зависящую от реализации некриптографическую хеш-функцию для параметров с другими типами данных. -Функция использует комбинатор CityHash для получения итогового результата. +Она использует алгоритм CityHash для строковых параметров и зависящую от реализации быструю некриптографическую хеш-функцию для параметров с другими типами данных. +Функция использует комбинатор CityHash для получения окончательного результата. :::info -Google изменил алгоритм CityHash после того, как он был добавлен в ClickHouse. -Другими словами, cityHash64 в ClickHouse и исходный CityHash от Google теперь выдают разные результаты. -cityHash64 в ClickHouse соответствует CityHash v1.0.2. +Google изменила алгоритм CityHash после того, как он был добавлен в ClickHouse. +Другими словами, функция cityHash64 в ClickHouse и исходный CityHash от Google теперь возвращают разные результаты. +cityHash64 в ClickHouse соответствует CityHash версии v1.0.2. ::: :::note Вычисленные хеш-значения могут совпадать для одинаковых входных значений аргументов разных типов. -Это затрагивает, например, целочисленные типы разного размера, именованный и безымянный `Tuple` с одинаковыми данными, `Map` и соответствующий тип `Array(Tuple(key, value))` с одинаковыми данными. +Это касается, например, целочисленных типов разного размера, именованного и неименованного `Tuple` с одинаковыми данными, `Map` и соответствующего типа `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -467,11 +467,11 @@ cityHash64(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Переменное количество входных аргументов, для которых вычисляется хэш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Произвольное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленный хэш входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает хеш, вычисленный по входным аргументам. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -487,7 +487,7 @@ SELECT cityHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:0 └──────────────────────┴────────┘ ``` -**Вычисление контрольной суммы всей таблицы с учетом порядка строк** +**Вычисление контрольной суммы всей таблицы с точностью до порядка строк** ```sql title=Query CREATE TABLE users ( @@ -515,17 +515,17 @@ SELECT groupBitXor(cityHash64(*)) FROM users; ## farmFingerprint64 {#farmFingerprint64} -Добавлена в версии: v20.12 +Впервые появилась в: v20.12 Возвращает 64-битное значение [FarmHash](https://github.com/google/farmhash) с использованием метода `Fingerprint64`. :::tip -Для получения стабильного и переносимого значения рекомендуется использовать `farmFingerprint64` вместо [`farmHash64`](#farmHash64). +`farmFingerprint64` предпочтительнее для получения стабильного и переносимого значения по сравнению с [`farmHash64`](#farmHash64). ::: :::note -Получаемые значения хеша могут совпадать для одинаковых входных значений разных типов аргументов. -Это касается, например, целочисленных типов разного размера, именованных и неименованных `Tuple` с одинаковыми данными, `Map` и соответствующего типа `Array(Tuple(key, value))` с одинаковыми данными. +Вычисленные хеш-значения могут совпадать для одинаковых входных значений разных типов аргументов. +Это относится, например, к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, типу `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -558,17 +558,17 @@ SELECT farmFingerprint64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 ## farmHash64 {#farmHash64} -Появилось в версии v1.1 +Появился в версии v1.1. -Вычисляет 64-битный [FarmHash](https://github.com/google/farmhash) с использованием метода `Hash64`. +Возвращает 64-битный [FarmHash](https://github.com/google/farmhash), используя метод `Hash64`. :::tip -Для получения стабильного и переносимого значения предпочтительно использовать [`farmFingerprint64`](#farmFingerprint64). +[`farmFingerprint64`](#farmFingerprint64) предпочтителен для получения стабильного и переносимого значения. ::: :::note -Вычисленные хеш-значения могут совпадать для одинаковых входных значений при разных типах аргументов. -Это касается, например, целочисленных типов разного размера, именованного и неименованного `Tuple` с одинаковыми данными, `Map` и соответствующего типа `Array(Tuple(key, value))` с одинаковыми данными. +Вычисленные хэш-значения могут совпадать для одинаковых входных значений аргументов разных типов. +Это относится, например, к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, а также к `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -579,7 +579,7 @@ farmHash64(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Произвольное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** @@ -601,11 +601,11 @@ SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:0 ## gccMurmurHash {#gccMurmurHash} -Добавлена в версии v20.1. +Добавлена в: v20.1 -Вычисляет 64-битный хэш [MurmurHash2](https://github.com/aappleby/smhasher) для входного значения, используя то же начальное значение (seed), что и в [GCC](https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191). +Вычисляет 64-битный хеш [MurmurHash2](https://github.com/aappleby/smhasher) для входного значения, используя тот же seed, что и в [GCC](https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191). -Переносима между сборками Clang и GCC. +Является переносимой между сборками Clang и GCC. **Синтаксис** @@ -615,7 +615,7 @@ gccMurmurHash(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Произвольное количество аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное количество аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** @@ -642,15 +642,15 @@ SELECT Введена в версии v1.1 [Интерпретирует](/sql-reference/functions/type-conversion-functions#reinterpretasstring) все входные -параметры как строки и вычисляет MD5-хэш для каждого из них. Затем объединяет хэши, берёт первые 8 байт хэша -полученной строки и интерпретирует их как [UInt64](/sql-reference/data-types/int-uint) в порядке байтов big-endian. Функция +параметры как строки и вычисляет значение хэша MD5 для каждого из них. Затем объединяет хэши, берёт первые 8 байт хэша +результирующей строки и интерпретирует их как [UInt64](/sql-reference/data-types/int-uint) в байтовом порядке big-endian. Функция работает относительно медленно (5 миллионов коротких строк в секунду на одно ядро процессора). -Рекомендуется рассмотреть использование функции [`sipHash64`](#sipHash64). +Рекомендуется вместо неё использовать функцию [`sipHash64`](#sipHash64). Функция принимает переменное количество входных параметров. Аргументы могут иметь любой из поддерживаемых типов данных. -Для некоторых типов данных вычисленное значение хэш-функции может совпадать для одинаковых значений, даже если типы аргументов различаются (например, целые числа разного размера, именованный и неименованный Tuple с одинаковыми данными, Map и соответствующий тип Array(Tuple(key, value)) с одинаковыми данными). +Для некоторых типов данных вычисленное значение хеш-функции может совпадать для одинаковых значений, даже если типы аргументов различаются (целые числа разного размера, именованный и неименованный Tuple с одинаковыми данными, Map и соответствующий тип Array(Tuple(key, value)) с одинаковыми данными). **Синтаксис** @@ -660,11 +660,11 @@ halfMD5(arg1[, arg2, ..., argN]) **Аргументы** -* `arg1[, arg2, ..., argN]` — Переменное число аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ..., argN]` — Переменное число аргументов, для которых вычисляется хэш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленную половину MD5-хеша переданных входных параметров, представленную как `UInt64` в порядке байтов big-endian. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленный half MD5-хеш переданных входных параметров в виде значения типа `UInt64` в порядке байт big-endian. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -682,14 +682,14 @@ SELECT HEX(halfMD5('abc', 'cde', 'fgh')); ## hiveHash {#hiveHash} -Впервые появилась в: v20.1 +Введена в версии: v20.1 -Вычисляет «HiveHash» для строки. -Это просто [`JavaHash`](#javaHash) с обнулёнными битами знака. +Вычисляет «HiveHash» из строки. +Это просто [`JavaHash`](#javaHash) с обнулёнными знаковыми битами. Эта функция используется в [Apache Hive](https://en.wikipedia.org/wiki/Apache_Hive) в версиях до 3.0. :::caution -Эта хэш-функция малопроизводительна. +Эта хеш-функция малопроизводительна. Используйте её только в том случае, если этот алгоритм уже применяется в другой системе и вам нужно получить тот же результат. ::: @@ -705,7 +705,7 @@ hiveHash(arg) **Возвращаемое значение** -Возвращает вычисленное значение «hive hash» для входной строки. [`Int32`](/sql-reference/data-types/int-uint) +Вычисляет «hive hash» для входной строки. [`Int32`](/sql-reference/data-types/int-uint) **Примеры** @@ -723,9 +723,9 @@ SELECT hiveHash('Hello, world!'); ## icebergHash {#icebergHash} -Впервые представлена в: v25.5 +Добавлена в версии: v25.5 -Реализует логику [хеш‑преобразования](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements) Iceberg +Реализует логику [хеширующего преобразования](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements) Iceberg **Синтаксис** @@ -735,11 +735,11 @@ icebergHash(value) **Аргументы** -* `value` — исходное значение, для которого вычисляется хеш: [`Integer`](/sql-reference/data-types/int-uint), [`Bool`](/sql-reference/data-types/boolean), [`Decimal`](/sql-reference/data-types/decimal), [`Float*`](/sql-reference/data-types/float), [`String`](/sql-reference/data-types/string), [`FixedString`](/sql-reference/data-types/fixedstring), [`UUID`](/sql-reference/data-types/uuid), [`Date`](/sql-reference/data-types/date), [`Time`](/sql-reference/data-types/time) или [`DateTime`](/sql-reference/data-types/datetime) +* `value` — исходное значение, для которого вычисляется хеш: [`Integer`](/sql-reference/data-types/int-uint) или [`Bool`](/sql-reference/data-types/boolean) или [`Decimal`](/sql-reference/data-types/decimal) или [`Float*`](/sql-reference/data-types/float) или [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) или [`UUID`](/sql-reference/data-types/uuid) или [`Date`](/sql-reference/data-types/date) или [`Time`](/sql-reference/data-types/time) или [`DateTime`](/sql-reference/data-types/datetime) **Возвращаемое значение** -Возвращает 32-битный хеш Murmur3, вариант x86, с начальным значением (seed) 0 типа [`Int32`](/sql-reference/data-types/int-uint) +Возвращает 32-битный хеш Murmur3, вариант x86, с начальными данными (seed) 0 типа [`Int32`](/sql-reference/data-types/int-uint) **Примеры** @@ -755,11 +755,11 @@ SELECT icebergHash(1.0 :: Float32) ## intHash32 {#intHash32} -Появилась в версии: v1.1 +Введена в версии v1.1. Вычисляет 32-битный хеш целого числа. -Функция хеширования относительно быстрая, но не является криптографической хеш-функцией. +Функция хеширования достаточно быстрая, но не является криптографической. **Синтаксис** @@ -769,11 +769,11 @@ intHash32(arg) **Аргументы** -* `arg` — целое число, которое нужно хешировать. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `arg` — целое число для хеширования. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленный 32-битный хеш-код входного целого числа типа [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает вычисленный 32-битный хеш-код исходного целого числа [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -791,11 +791,11 @@ SELECT intHash32(42); ## intHash64 {#intHash64} -Введена в версии: v1.1 +Введена в версии v1.1. Вычисляет 64-битный хеш целого числа. -Функция хеширования достаточно быстрая (даже быстрее, чем [`intHash32`](#intHash32)), но не является криптографической хеш-функцией. +Эта хеш-функция относительно быстрая (даже быстрее, чем [`intHash32`](#intHash32)), но не является криптографической хеш-функцией. **Синтаксис** @@ -827,7 +827,7 @@ SELECT intHash64(42); ## javaHash {#javaHash} -Впервые появилась в: v20.1 +Введена в версии: v20.1 Вычисляет JavaHash для: @@ -844,7 +844,7 @@ SELECT intHash64(42); :::note Java поддерживает вычисление хеша только для знаковых целых чисел, -поэтому, если вы хотите вычислить хеш беззнаковых целых чисел, вы должны привести их к соответствующим знаковым типам ClickHouse. +поэтому, если вы хотите вычислить хеш от беззнаковых целых, их необходимо привести к соответствующим знаковым типам ClickHouse. ::: **Синтаксис** @@ -859,7 +859,7 @@ javaHash(arg) **Возвращаемое значение** -Возвращает вычисленный хеш значения `arg`. [`Int32`](/sql-reference/data-types/int-uint) +Возвращает вычисленный хеш-значение `arg`. [`Int32`](/sql-reference/data-types/int-uint) **Примеры** @@ -889,9 +889,9 @@ SELECT javaHash('Hello, world!'); ## javaHashUTF16LE {#javaHashUTF16LE} -Добавлено в версии v20.1 +Появилась в версии: v20.1 -Вычисляет [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452) для строки, предполагая, что она содержит байты, представляющие строку в кодировке UTF-16LE. +Вычисляет [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452) для строки, предполагая, что она содержит байты строки в кодировке UTF-16LE. **Синтаксис** @@ -905,7 +905,7 @@ javaHashUTF16LE(arg) **Возвращаемое значение** -Возвращает вычисленное хеш-значение строки в кодировке UTF-16LE. [`Int32`](/sql-reference/data-types/int-uint) +Возвращает вычисленное хэш-значение строки в кодировке UTF-16LE. [`Int32`](/sql-reference/data-types/int-uint) **Примеры** @@ -923,7 +923,7 @@ SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le')); ## jumpConsistentHash {#jumpConsistentHash} -Появилась в версии: v1.1 +Добавлена в версии v1.1 Вычисляет [jump consistent hash](https://arxiv.org/pdf/1406.2294.pdf) для целого числа. @@ -936,11 +936,11 @@ jumpConsistentHash(key, buckets) **Аргументы** * `key` — входной ключ. [`UInt64`](/sql-reference/data-types/int-uint) -* `buckets` — количество бакетов. [`Int32`](/sql-reference/data-types/int-uint) +* `buckets` — количество корзин. [`Int32`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленное значение хеша. [`Int32`](/sql-reference/data-types/int-uint) +Возвращает вычисленное хеш-значение. [`Int32`](/sql-reference/data-types/int-uint) **Примеры** @@ -960,7 +960,7 @@ SELECT jumpConsistentHash(256, 4) Добавлена в версии: v23.4 -Вычисляет 32-битный хеш [MurmurHash2](https://github.com/aappleby/smhasher) входного значения, используя тот же seed, что и в [Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482), и без старшего бита для совместимости с [Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328). +Вычисляет 32-битный хеш [MurmurHash2](https://github.com/aappleby/smhasher) для входного значения, используя тот же seed, что и в [Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482), и отбрасывая старший бит для совместимости с [Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328). **Синтаксис** @@ -970,11 +970,11 @@ kafkaMurmurHash(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Произвольное число аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное число аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное хеш-значение входных аргументов. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хеша входных аргументов. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -996,8 +996,8 @@ SELECT Введена в: v25.4 -Вычисляет криптографический хэш Keccak-256 для указанной строки. -Эта хеш-функция широко используется в блокчейн-приложениях, в частности в Ethereum. +Вычисляет криптографический хеш Keccak-256 для указанной строки. +Эта хеш-функция широко используется в блокчейн‑приложениях, в частности в Ethereum. **Синтаксис** @@ -1011,7 +1011,7 @@ keccak256(message) **Возвращаемое значение** -Возвращает 32-байтовый хэш Keccak-256 от входной строки в виде строки фиксированной длины. [`FixedString(32)`](/sql-reference/data-types/fixedstring) +Возвращает 32-байтовый хеш Keccak-256 входной строки в виде строки фиксированной длины. [`FixedString(32)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -1029,9 +1029,9 @@ SELECT hex(keccak256('hello')) ## kostikConsistentHash {#kostikConsistentHash} -Появился в версии: v22.6 +Впервые появился в версии: v22.6 -Алгоритм согласованного хеширования с постоянной временной и пространственной сложностью O(1), разработанный Konstantin «Kostik» Oblakov. +Алгоритм консистентного хеширования с постоянной сложностью по времени и памяти O(1), разработанный Konstantin 'Kostik' Oblakov. Эффективен только при `n <= 32768`. **Синтаксис** @@ -1049,7 +1049,7 @@ kostikConsistentHash(input, n) **Возвращаемое значение** -Возвращает вычисленное значение хеша. [`UInt16`](/sql-reference/data-types/int-uint) +Возвращает вычисленное хеш-значение. [`UInt16`](/sql-reference/data-types/int-uint) **Примеры** @@ -1067,13 +1067,13 @@ SELECT kostikConsistentHash(16045690984833335023, 2); ## metroHash64 {#metroHash64} -Добавлено в версии: v1.1 +Введена в версии v1.1 Возвращает 64-битное хеш-значение [MetroHash](http://www.jandrewrogers.com/2015/05/27/metrohash/). :::note -Вычисленные хеш-значения могут совпадать для одинаковых входных значений аргументов разных типов. -Это касается, например, целочисленных типов разного размера, именованных и неименованных `Tuple` с одинаковыми данными, `Map` и соответствующего типа `Array(Tuple(key, value))` с одинаковыми данными. +Вычисленные хеш-значения могут совпадать для одинаковых входных значений разных типов аргументов. +Это, например, относится к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, а также к `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -1084,7 +1084,7 @@ metroHash64(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Произвольное число входных аргументов, для которых вычисляется хэш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное число входных аргументов, для которых вычисляется хэш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** @@ -1099,20 +1099,20 @@ SELECT metroHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00: ``` ```response title=Response -┌────────────MetroHash─┬─тип────┐ +┌────────────MetroHash─┬─type───┐ │ 14235658766382344533 │ UInt64 │ └──────────────────────┴────────┘ ``` ## murmurHash2_32 {#murmurHash2_32} -Впервые представлена в: v18.5 +Добавлена в версии v18.5 -Вычисляет хеш [MurmurHash2](https://github.com/aappleby/smhasher) для входного значения. +Вычисляет хэш [MurmurHash2](https://github.com/aappleby/smhasher) от входного значения. :::note -Вычисленные хеш-значения могут совпадать для одинаковых входных значений разных типов аргументов. -Это касается, например, целочисленных типов разного размера, именованных и неименованных `Tuple` с одинаковыми данными, `Map` и соответствующего типа `Array(Tuple(key, value))` с одинаковыми данными. +Вычисленные значения хэша могут совпадать для одинаковых входных данных разных типов аргументов. +Это относится, например, к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -1123,11 +1123,11 @@ murmurHash2_32(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Произвольное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное значение хеша входных аргументов. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хеша для входных аргументов. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -1138,20 +1138,20 @@ SELECT murmurHash2_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ``` ```response title=Response -┌─MurmurHash2─┬─тип────┐ +┌─MurmurHash2─┬─type───┐ │ 3681770635 │ UInt32 │ └─────────────┴────────┘ ``` ## murmurHash2_64 {#murmurHash2_64} -Введено в версии: v18.10 +Введена в версии: v18.10 -Вычисляет хеш [MurmurHash2](https://github.com/aappleby/smhasher) для входного значения. +Вычисляет хеш от входного значения с помощью [MurmurHash2](https://github.com/aappleby/smhasher). :::note -Вычисленные хеш-значения могут совпадать для одинаковых входных значений разных типов аргументов. -Это относится, например, к целочисленным типам разной разрядности, именованным и неименованным `Tuple` с одинаковыми данными, а также к `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. +Вычисленные хеш-значения могут совпадать для одинаковых входных значений различных типов аргументов. +Это относится, например, к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -1162,11 +1162,11 @@ murmurHash2_64(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Произвольное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Произвольное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленный хеш входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленный хеш от входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -1177,16 +1177,16 @@ SELECT murmurHash2_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ``` ```response title=Response -┌──────────MurmurHash2─┬─тип────┐ +┌──────────MurmurHash2─┬─type───┐ │ 11832096901709403633 │ UInt64 │ └──────────────────────┴────────┘ ``` ## murmurHash3_128 {#murmurHash3_128} -Появилась в версии: v18.10 +Добавлена в: v18.10 -Вычисляет 128-битный хэш [MurmurHash3](https://github.com/aappleby/smhasher) от входного значения. +Вычисляет 128-битный хеш [MurmurHash3](https://github.com/aappleby/smhasher) от входного значения. **Синтаксис** @@ -1196,11 +1196,11 @@ murmurHash3_128(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Переменное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Произвольное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает 128-битный хеш `MurmurHash3`, вычисленный по входным аргументам. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает вычисленное 128-битное значение хеша `MurmurHash3` для входных аргументов. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -1218,13 +1218,13 @@ SELECT hex(murmurHash3_128('foo', 'foo', 'foo')); ## murmurHash3_32 {#murmurHash3_32} -Введена в версии: v18.10 +Впервые представлена в версии v18.10 -Возвращает хэш-значение [MurmurHash3](https://github.com/aappleby/smhasher). +Возвращает хеш-значение [MurmurHash3](https://github.com/aappleby/smhasher). :::note -Вычисленные хэш-значения могут совпадать для одинаковых входных значений аргументов разных типов. -Это, например, относится к целочисленным типам разного размера, именованному и неименованному `Tuple` с одинаковыми данными, `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. +Вычисленные хеш-значения могут совпадать для одних и тех же входных значений различных типов аргументов. +Это относится, например, к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -1239,7 +1239,7 @@ murmurHash3_32(arg1[, arg2, ...]) **Возвращаемое значение** -Возвращает вычисленное значение хеша входных аргументов. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хеша от входных аргументов. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -1250,19 +1250,19 @@ SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ``` ```response title=Response -┌─MurmurHash3─┬─тип────┐ +┌─MurmurHash3─┬─type───┐ │ 2152717 │ UInt32 │ └─────────────┴────────┘ ``` ## murmurHash3_64 {#murmurHash3_64} -Введена в версии v18.10 +Впервые появилась в версии v18.10 -Вычисляет хеш [MurmurHash3](https://github.com/aappleby/smhasher) для входного значения. +Вычисляет хеш входного значения с помощью [MurmurHash3](https://github.com/aappleby/smhasher). :::note -Вычисленные хеш-значения могут совпадать для одинаковых входных значений аргументов разных типов. +Вычисленные значения хеша могут совпадать для одинаковых входных значений разных типов аргументов. Это касается, например, целочисленных типов разного размера, именованных и неименованных `Tuple` с одинаковыми данными, `Map` и соответствующего типа `Array(Tuple(key, value))` с одинаковыми данными. ::: @@ -1274,11 +1274,11 @@ murmurHash3_64(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Переменное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное число входных аргументов, для которых вычисляется хэш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное значение хеша входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хэша для входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -1289,21 +1289,21 @@ SELECT murmurHash3_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ``` ```response title=Response -┌──────────MurmurHash3─┬─тип────┐ +┌──────────MurmurHash3─┬─type───┐ │ 11832096901709403633 │ UInt64 │ └──────────────────────┴────────┘ ``` ## ngramMinHash {#ngramMinHash} -Появилась в версии: v21.1 +Впервые представлена в версии v21.1 -Разбивает ASCII-строку на n-граммы длиной `ngramsize` символов, вычисляет хэш-значение для каждой n-граммы и возвращает кортеж с этими хэшами. -Использует `hashnum` минимальных хэшей для вычисления минимального хэша и `hashnum` максимальных хэшей для вычисления максимального хэша. +Разбивает ASCII-строку на n-граммы по `ngramsize` символов, вычисляет хеш-значения для каждой n-граммы и возвращает кортеж с этими хешами. +Использует `hashnum` минимальных хешей для вычисления минимального хеша и `hashnum` максимальных хешей для вычисления максимального хеша. Функция чувствительна к регистру. Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хэши совпадают для обеих строк, то эти строки считаются одинаковыми. +Для двух строк, если возвращаемые хеши совпадают для обеих, то эти строки считаются одинаковыми. **Синтаксис** @@ -1313,13 +1313,13 @@ ngramMinHash(string[, ngramsize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество хэшей минимума и максимума, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух хэшей — минимального и максимального. [`Tuple`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух хешей — минимального и максимального. [`Tuple`](/sql-reference/data-types/tuple) **Примеры** @@ -1330,33 +1330,33 @@ SELECT ngramMinHash('ClickHouse') AS Tuple; ``` ```response title=Response -┌─Кортеж─────────────────────────────────────┐ +┌─Tuple──────────────────────────────────────┐ │ (18333312859352735453,9054248444481805918) │ └────────────────────────────────────────────┘ ``` ## ngramMinHashArg {#ngramMinHashArg} -Появилась в версии v21.1 +Введена в версии v21.1 -Разбивает ASCII-строку на n-граммы из `ngramsize` символов и возвращает n-граммы с минимальным и максимальным хешами, вычисленными функцией [`ngramMinHash`](#ngramMinHash) для того же входного значения. -Чувствительна к регистру. +Разбивает ASCII-строку на n-граммы из `ngramsize` символов и возвращает n-граммы с минимальным и максимальным хешами, вычисленными функцией [`ngramMinHash`](#ngramMinHash) с теми же входными данными. +Функция чувствительна к регистру. **Синтаксис** ```sql -ngramMinHashArg(строка[, размер_нграммы, число_хешей]) +ngramMinHashArg(string[, ngramsize, hashnum]) ``` **Аргументы** * `string` — Строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) -* `ngramsize` — Необязательный параметр. Размер n-граммы, число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хэшей, используемых для вычисления результата, число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, каждый содержащий `hashnum` n-грамм. [`Tuple(String)`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, каждый из которых содержит по `hashnum` n-грамм. [`Tuple(String)`](/sql-reference/data-types/tuple) **Примеры** @@ -1374,10 +1374,10 @@ SELECT ngramMinHashArg('ClickHouse') AS Tuple; ## ngramMinHashArgCaseInsensitive {#ngramMinHashArgCaseInsensitive} -Впервые добавлена в: v21.1 +Появилась в версии: v21.1 -Разбивает ASCII-строку на n-граммы по `ngramsize` символов и возвращает n-граммы с минимальным и максимальным хэшами, вычисленными функцией [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) с теми же входными данными. -Функция нечувствительна к регистру. +Разбивает строку ASCII на n-граммы из `ngramsize` символов и возвращает n-граммы с минимальным и максимальным хешами, вычисленными функцией [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) с теми же входными данными. +Регистронезависима. **Синтаксис** @@ -1387,13 +1387,13 @@ ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) -* `ngramsize` — Необязательный параметр. Размер n-граммы, любое целое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое целое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой нужно вычислить хэш. [`String`](/sql-reference/data-types/string) +* `ngramsize` — Необязательный параметр. Размер n-граммы — любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хэшей, используемых для вычисления результата, — любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, с `hashnum` n-граммами в каждом. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, в каждом по `hashnum` n-грамм. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** @@ -1411,9 +1411,9 @@ SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple; ## ngramMinHashArgCaseInsensitiveUTF8 {#ngramMinHashArgCaseInsensitiveUTF8} -Добавлено в версии: v21.1 +Добавлена в версии v21.1 -Разбивает строку в кодировке UTF-8 на n-граммы длиной `ngramsize` символов и возвращает n-граммы с минимальным и максимальным хешами, вычисленными функцией ngramMinHashCaseInsensitiveUTF8 с теми же входными данными. +Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов и возвращает n-граммы с минимальным и максимальным значениями хэшей, вычисленных функцией ngramMinHashCaseInsensitiveUTF8 для тех же входных данных. Функция нечувствительна к регистру. **Синтаксис** @@ -1424,13 +1424,13 @@ ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой нужно вычислить хэш. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) * `hashnum` — Необязательный параметр. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей с `hashnum` n-граммами в каждом. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, в каждом по `hashnum` n-грамм. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** @@ -1448,9 +1448,9 @@ SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple; ## ngramMinHashArgUTF8 {#ngramMinHashArgUTF8} -Впервые появилась в версии: v21.1 +Начиная с версии: v21.1 -Разбивает строку в кодировке UTF-8 на n-граммы длиной `ngramsize` символов и возвращает n-граммы с минимальным и максимальным хэшами, вычисленными функцией `ngramMinHashUTF8` с теми же входными данными. +Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов и возвращает n-граммы с минимальными и максимальными хешами, вычисленными функцией `ngramMinHashUTF8` по тому же входному значению. Функция чувствительна к регистру. **Синтаксис** @@ -1461,13 +1461,13 @@ ngramMinHashArgUTF8(string[, ngramsize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) * `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, каждый с `hashnum` n-граммами. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, в каждом по `hashnum` n-грамм. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** @@ -1485,14 +1485,14 @@ SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple; ## ngramMinHashCaseInsensitive {#ngramMinHashCaseInsensitive} -Введена в версии v21.1 +Введена в версии: v21.1 -Разбивает ASCII-строку на n-граммы из `ngramsize` символов, вычисляет хэш-значения для каждой n-граммы и возвращает кортеж с этими хэшами. -Использует `hashnum` наименьших хэшей для вычисления минимального хэша и `hashnum` наибольших хэшей для вычисления максимального хэша. -Не чувствительна к регистру. +Разбивает строку в кодировке ASCII на n-граммы длиной `ngramsize` символов, вычисляет хеш-значения для каждой n-граммы и возвращает кортеж соответствующих хешей. +Использует `hashnum` наименьших хешей для вычисления минимального хеша и `hashnum` наибольших хешей для вычисления максимального хеша. +Функция регистронезависима. -Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хэши совпадают для обеих строк, то эти строки считаются одинаковыми. +Может использоваться для обнаружения частично дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). +Для двух строк, если возвращаемые хеши одинаковы для обеих строк, то эти строки считаются одинаковыми. **Синтаксис** @@ -1502,7 +1502,7 @@ ngramMinHashCaseInsensitive(string[, ngramsize, hashnum]) **Аргументы** -* `string` — Строка. [String](../data-types/string.md). - `ngramsize` — Размер n-граммы. Необязательный параметр. Возможные значения: любое число от `1` до `25`. Значение по умолчанию: `3`. [UInt8](../data-types/int-uint.md). - `hashnum` — Количество минимальных и максимальных хешей, используемых для вычисления результата. Необязательный параметр. Возможные значения: любое число от `1` до `25`. Значение по умолчанию: `6`. [UInt8](../data-types/int-uint.md). +* `string` — Строка. [String](../data-types/string.md). - `ngramsize` — Размер n-граммы. Необязательный параметр. Возможные значения: любое число от `1` до `25`. Значение по умолчанию: `3`. [UInt8](../data-types/int-uint.md). - `hashnum` — Количество минимальных и максимальных хешей, используемых при вычислении результата. Необязательный параметр. Возможные значения: любое число от `1` до `25`. Значение по умолчанию: `6`. [UInt8](../data-types/int-uint.md). **Возвращаемое значение** @@ -1524,14 +1524,14 @@ SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple; ## ngramMinHashCaseInsensitiveUTF8 {#ngramMinHashCaseInsensitiveUTF8} -Впервые появилась в версии v21.1 +Появилась в версии v21.1 -Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов, вычисляет хеш-значение для каждой n-граммы и возвращает кортеж с этими хешами. -Использует `hashnum` минимальных хешей для вычисления минимального хеша и `hashnum` максимальных хешей для вычисления максимального хеша. +Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов, вычисляет хэш-значения для каждой n-граммы и возвращает кортеж с этими хэшами. +Использует `hashnum` минимальных хэшей для вычисления минимального хэша и `hashnum` максимальных хэшей для вычисления максимального хэша. Функция нечувствительна к регистру. Может использоваться для обнаружения частично дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хеши совпадают, то эти строки идентичны. +Для двух строк, если возвращаемые хэши совпадают для обеих строк, то эти строки идентичны. **Синтаксис** @@ -1541,9 +1541,9 @@ ngramMinHashCaseInsensitiveUTF8(string [, ngramsize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество хешей (минимальных и максимальных), используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -1558,21 +1558,21 @@ SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple; ``` ```response title=Response -┌─Кортеж──────────────────────────────────────┐ +┌─Tuple───────────────────────────────────────┐ │ (12493625717655877135,13203602793651726206) │ └─────────────────────────────────────────────┘ ``` ## ngramMinHashUTF8 {#ngramMinHashUTF8} -Введена в версии: v21.1 +Появилась в: v21.1 -Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов, вычисляет значения хэшей для каждой n-граммы и возвращает кортеж с этими хэшами. -Использует `hashnum` минимальных хэшей для вычисления минимального хэша и `hashnum` максимальных хэшей для вычисления максимального хэша. +Разбивает строку в кодировке UTF-8 на n-граммы длиной `ngramsize` символов, вычисляет хеш-значения для каждой n-граммы и возвращает кортеж с этими хешами. +Использует `hashnum` минимальных хешей для вычисления минимального хеша и `hashnum` максимальных хешей для вычисления максимального хеша. Функция чувствительна к регистру. -Может использоваться для обнаружения частично дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Если для двух строк возвращаются одинаковые хэши, то эти строки совпадают. +Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). +Для двух строк, если возвращаемые хеши совпадают для обеих строк, то эти строки считаются одинаковыми. **Синтаксис** @@ -1582,13 +1582,13 @@ ngramMinHashUTF8(string[, ngramsize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, целое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хэшей, используемых при вычислении результата, целое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, целое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух хэшей — минимального и максимального. [`Tuple`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух хешей — минимального и максимального. [`Tuple`](/sql-reference/data-types/tuple) **Примеры** @@ -1599,18 +1599,18 @@ SELECT ngramMinHashUTF8('ClickHouse') AS Tuple; ``` ```response title=Response -┌─Кортеж─────────────────────────────────────┐ +┌─Tuple──────────────────────────────────────┐ │ (18333312859352735453,6742163577938632877) │ └────────────────────────────────────────────┘ ``` ## ngramSimHash {#ngramSimHash} -Введена в версии v21.1 +Добавлена в: v21.1 -Разбивает ASCII-строку на n-граммы из `ngramsize` символов и возвращает `simhash` этих n-грамм. +Разбивает ASCII-строку на n-граммы длиной `ngramsize` символов и возвращает `simhash`, вычисленный по этим n-граммам. -Может использоваться для обнаружения частично дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). +Можно использовать для обнаружения почти дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными `simhash` двух строк, тем выше вероятность, что эти строки совпадают. **Синтаксис** @@ -1621,12 +1621,12 @@ ngramSimHash(string[, ngramsize]) **Аргументы** -* `string` — Строка, для которой вычисляется регистрозависимый хэш `simhash`. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой нужно вычислить регистрозависимый `simhash`. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленный хэш входной строки. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленный хеш входной строки. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -1637,25 +1637,25 @@ SELECT ngramSimHash('ClickHouse') AS Hash; ``` ```response title=Response -┌───────Хеш─┐ +┌───────Hash─┐ │ 1627567969 │ └────────────┘ ``` ## ngramSimHashCaseInsensitive {#ngramSimHashCaseInsensitive} -Добавлено в версии: v21.1 +Появилась в версии: v21.1 -Разбивает ASCII-строку на n-граммы длиной `ngramsize` символов и возвращает `simhash` для этих n-грамм. +Разбивает строку в кодировке ASCII на n-граммы из `ngramsize` символов и возвращает значение `simhash` для этих n-грамм. Функция нечувствительна к регистру. -Может использоваться для обнаружения частично совпадающих строк с помощью [`bitHammingDistance`](/sql-reference/functions/bit-functions#bitHammingDistance). +Может использоваться для обнаружения частично дублирующихся строк совместно с [`bitHammingDistance`](/sql-reference/functions/bit-functions#bitHammingDistance). Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными `simhash` двух строк, тем выше вероятность, что эти строки совпадают. **Синтаксис** ```sql -ngramSimHashCaseInsensitive(строка[, размер_н-граммы]) +ngramSimHashCaseInsensitive(string[, ngramsize]) ``` **Аргументы** @@ -1676,19 +1676,19 @@ SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash; ``` ```response title=Response -┌──────Хэш─┐ +┌──────Hash─┐ │ 562180645 │ └───────────┘ ``` ## ngramSimHashCaseInsensitiveUTF8 {#ngramSimHashCaseInsensitiveUTF8} -Появилась в версии: v21.1 +Появилась в версии v21.1. Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов и возвращает `simhash` этих n-грамм. Функция нечувствительна к регистру. -Может использоваться для обнаружения почти совпадающих строк совместно с [bitHammingDistance](../functions/bit-functions.md/#bitHammingDistance). Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными значениями `simhash` двух строк, тем выше вероятность, что эти строки совпадают. +Может использоваться для обнаружения частично дублирующихся строк с помощью [bitHammingDistance](../functions/bit-functions.md/#bitHammingDistance). Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными `simhash` двух строк, тем выше вероятность, что эти строки совпадают. **Синтаксис** @@ -1699,7 +1699,7 @@ ngramSimHashCaseInsensitiveUTF8(string[, ngramsize]) **Аргументы** * `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) -* `ngramsize` — Необязательный параметр. Размер n-граммы — число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — Необязательный параметр. Размер n-граммы, целое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -1714,20 +1714,20 @@ SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS Hash; ``` ```response title=Response -┌──────Хэш─┐ +┌───────Hash─┐ │ 1636742693 │ └────────────┘ ``` ## ngramSimHashUTF8 {#ngramSimHashUTF8} -Добавлена в: v21.1 +Появилась в версии: v21.1 -Разбивает строку в кодировке UTF-8 на n-граммы из `ngramsize` символов и возвращает `simhash` этих n-грамм. +Разбивает строку в кодировке UTF-8 на n-граммы длиной `ngramsize` символов и возвращает `simhash` по этим n-граммам. Функция чувствительна к регистру. -Может использоваться для обнаружения частично дублирующихся строк совместно с [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). -Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными значениями `simhash` двух строк, тем выше вероятность, что эти строки совпадают. +Может использоваться для обнаружения частично дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). +Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными `simhash` двух строк, тем выше вероятность, что строки совпадают. **Синтаксис** @@ -1737,7 +1737,7 @@ ngramSimHashUTF8(string[, ngramsize]) **Аргументы** -* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) * `ngramsize` — Необязательный параметр. Размер n-граммы, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -1749,24 +1749,24 @@ ngramSimHashUTF8(string[, ngramsize]) **Пример использования** ```sql title=Query -SELECT ngramSimHashUTF8('ClickHouse') AS Хэш; +SELECT ngramSimHashUTF8('ClickHouse') AS Hash; ``` ```response title=Response -┌───────Хеш─┐ +┌───────Hash─┐ │ 1628157797 │ └────────────┘ ``` ## sipHash128 {#sipHash128} -Добавлена в версии: v1.1 +Введена в версии v1.1 -Аналог [`sipHash64`](#sipHash64), но возвращает 128-битное хеш-значение, то есть финальная xor-свёртка состояния выполняется до 128 бит. +Похожа на [`sipHash64`](#sipHash64), но возвращает 128-битное хеш-значение, то есть финальное состояние после xor-свёртки вычисляется до 128 бит. :::tip Используйте sipHash128Reference для новых проектов -Этот 128-битный вариант отличается от эталонной реализации и является более слабым. -Эта версия существует потому, что на момент её создания не было официального 128-битного расширения для SipHash. +Этот 128-битный вариант отличается от эталонной реализации и криптографически слабее. +Эта версия появилась потому, что на момент её разработки ещё не существовало официального 128-битного расширения SipHash. Для новых проектов рекомендуется использовать [`sipHash128Reference`](#sipHash128Reference). ::: @@ -1778,7 +1778,7 @@ sipHash128(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — переменное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Произвольное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** @@ -1800,14 +1800,14 @@ SELECT hex(sipHash128('foo', '\x01', 3)); ## sipHash128Keyed {#sipHash128Keyed} -Добавлена в версии v23.2 +Появился в версии v23.2 -То же, что и [`sipHash128`](#sipHash128), но дополнительно принимает явный аргумент ключа вместо использования фиксированного ключа. +То же, что [`sipHash128`](#sipHash128), но дополнительно принимает явный ключ в качестве аргумента вместо использования фиксированного ключа. -:::tip используйте sipHash128ReferenceKeyed для новых проектов +:::tip Используйте sipHash128ReferenceKeyed для новых проектов Этот 128-битный вариант отличается от эталонной реализации и является более слабым. -Эта версия существует потому что на момент её разработки не было официального 128-битного расширения для SipHash. -Для новых проектов, вероятно, следует использовать [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed). +Эта версия существует потому, что на момент её написания не было официального 128-битного расширения для SipHash. +В новых проектах, вероятно, следует использовать [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed). ::: **Синтаксис** @@ -1819,11 +1819,11 @@ sipHash128Keyed((k0, k1), [arg1, arg2, ...]) **Аргументы** * `(k0, k1)` — кортеж из двух значений типа UInt64, представляющих ключ. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[, arg2, ...]` — переменное количество входных аргументов, для которых нужно вычислить хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — переменное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -128-битное значение хеша `SipHash` типа [FixedString(16)](../data-types/fixedstring.md). [`FixedString(16)`](/sql-reference/data-types/fixedstring) +128-битный хеш `SipHash` типа [FixedString(16)](../data-types/fixedstring.md). [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -1841,9 +1841,9 @@ SELECT hex(sipHash128Keyed((506097522914230528, 1084818905618843912),'foo', '\x0 ## sipHash128Reference {#sipHash128Reference} -Добавлено в: v23.2 +Появилась в версии v23.2. -Аналог функции [`sipHash128`](/sql-reference/functions/hash-functions#sipHash128), но реализует 128-битный алгоритм, предложенный авторами SipHash. +Аналог [`sipHash128`](/sql-reference/functions/hash-functions#sipHash128), но реализует 128-битный алгоритм, описанный оригинальными авторами SipHash. **Синтаксис** @@ -1853,11 +1853,11 @@ sipHash128Reference(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Переменное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — переменное количество входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное 128-битное значение хеша `SipHash` входных аргументов. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает вычисленное 128-битное хеш-значение `SipHash` для входных аргументов. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -1875,9 +1875,9 @@ SELECT hex(sipHash128Reference('foo', '', 3)); ## sipHash128ReferenceKeyed {#sipHash128ReferenceKeyed} -Впервые появилась в: v23.2 +Появилась в версии v23.2. -Аналог функции [`sipHash128Reference`](#sipHash128Reference), но дополнительно принимает явный параметр ключа вместо использования фиксированного ключа. +То же, что [`sipHash128Reference`](#sipHash128Reference), но дополнительно принимает явный ключ в качестве аргумента вместо использования фиксированного ключа. **Синтаксис** @@ -1887,12 +1887,12 @@ sipHash128ReferenceKeyed((k0, k1), arg1[, arg2, ...]) **Аргументы** -* `(k0, k1)` — кортеж из двух значений, задающий ключ [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[, arg2, ...]` — произвольное количество входных аргументов, для которых вычисляется хэш. [`Any`](/sql-reference/data-types) +* `(k0, k1)` — кортеж из двух значений, задающих ключ. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +* `arg1[, arg2, ...]` — переменное число входных аргументов, для которых вычисляется хеш. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное 128-битное значение хэша `SipHash` для входных аргументов. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает 128-битное хеш-значение `SipHash`, вычисленное для входных аргументов. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -1910,7 +1910,7 @@ SELECT hex(sipHash128Reference('foo', '', 3)); ## sipHash64 {#sipHash64} -Впервые появилась в: v1.1 +Появилась в версии: v1.1 Возвращает 64-битное хеш-значение [SipHash](https://en.wikipedia.org/wiki/SipHash). @@ -1925,7 +1925,7 @@ SELECT hex(sipHash128Reference('foo', '', 3)); :::note Вычисленные хеш-значения могут совпадать для одинаковых входных значений аргументов разных типов. -Это, например, относится к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, а также к `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. +Это относится, например, к целочисленным типам разного размера, именованным и неименованным `Tuple` с одинаковыми данными, `Map` и соответствующему типу `Array(Tuple(key, value))` с одинаковыми данными. ::: **Синтаксис** @@ -1936,11 +1936,11 @@ sipHash64(arg1[, arg2, ...]) **Аргументы** -* `arg1[, arg2, ...]` — Переменное количество входных аргументов. [`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — Переменное число входных аргументов. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное хэш-значение входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хеша входных аргументов. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -1951,16 +1951,16 @@ SELECT sipHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00 ``` ```response title=Response -┌──────────────SipHash─┬─тип───┐ +┌──────────────SipHash─┬─type───┐ │ 11400366955626497465 │ UInt64 │ └──────────────────────┴────────┘ ``` ## sipHash64Keyed {#sipHash64Keyed} -Добавлена в версии v23.2 +Появилась в версии v23.2. -Аналогична [`sipHash64`](#sipHash64), но вместо фиксированного ключа принимает явный ключ в качестве аргумента. +Аналог [`sipHash64`](#sipHash64), но дополнительно принимает явный ключ в качестве аргумента вместо фиксированного ключа. **Синтаксис** @@ -1970,12 +1970,12 @@ sipHash64Keyed((k0, k1), arg1[,arg2, ...]) **Аргументы** -* `(k0, k1)` — кортеж из двух значений, представляющих ключ. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[,arg2, ...]` — произвольное количество входных аргументов. [`Any`](/sql-reference/data-types) +* `(k0, k1)` — кортеж из двух значений ключа. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +* `arg1[,arg2, ...]` — переменное число входных аргументов. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное хеш-значение входных данных. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленный хеш входных значений. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -1986,132 +1986,132 @@ SELECT sipHash64Keyed((506097522914230528, 1084818905618843912), array('e','x',' ``` ```response title=Response -┌─────────────SipHash─┬─Тип────┐ +┌─────────────SipHash─┬─type───┐ │ 8017656310194184311 │ UInt64 │ └─────────────────────┴────────┘ ``` ## wordShingleMinHash {#wordShingleMinHash} -Впервые появилась в версии: v21.1 +Добавлена в: v21.1 -Разбивает ASCII-строку на части (шинглы) по `shinglesize` слов, вычисляет хэш-значения для каждого шингла слов и возвращает кортеж с этими хэшами. +Разбивает ASCII-строку на части (шинглы) по `shinglesize` слов, вычисляет хэш-значения для каждого шингла и возвращает кортеж с этими хэшами. Использует `hashnum` минимальных хэшей для вычисления минимального хэша и `hashnum` максимальных хэшей для вычисления максимального хэша. -Функция чувствительна к регистру. +Чувствительна к регистру. -Может использоваться для обнаружения частично совпадающих строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хэши совпадают для обеих строк, то эти строки одинаковы. +Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). +Для двух строк, если возвращаемые хэши совпадают для обеих строк, то эти строки идентичны. **Синтаксис** ```sql -wordShingleMinHash(string[, размер_шингла, число_хешей]) +wordShingleMinHash(string[, shinglesize, hashnum]) ``` **Аргументы** -* `string` — Строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный аргумент. Размер шингла (последовательности слов), любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный аргумент. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — Необязательный параметр. Размер словесного шингла, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух хэшей — минимального и максимального. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух хеш-значений — минимального и максимального. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleMinHash('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Tuple; +SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response -┌─Кортеж─────────────────────────────────────┐ +┌─Tuple──────────────────────────────────────┐ │ (16452112859864147620,5844417301642981317) │ └────────────────────────────────────────────┘ ``` ## wordShingleMinHashArg {#wordShingleMinHashArg} -Появилась в версии v1.1 +Появилась в: v1.1 -Разбивает ASCII-строку на части (шинглы), каждая из которых содержит по `shinglesize` слов, и возвращает шинглы с минимальным и максимальным хешами слов, вычисленными функцией wordShingleMinHash с теми же входными данными. +Разбивает ASCII-строку на части (shingles) по `shinglesize` слов каждая и возвращает те из них, для которых хеши слов минимальны и максимальны, вычисленные функцией wordShingleMinHash по тем же входным данным. Функция чувствительна к регистру. **Синтаксис** ```sql -wordShingleMinHashArg(строка[, размершингла, числохешей]) +wordShingleMinHashArg(string[, shinglesize, hashnum]) ``` **Аргументы** * `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла по словам, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) * `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, каждый содержащий по `hashnum` словесных шинглов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, в каждом по `hashnum` шинглов слов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleMinHashArg('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple; +SELECT wordShingleMinHashArg('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple─────────────────────────────────────────────────────────────────┐ -│ (('OLAP','база данных','аналитическая'),('онлайн','ориентированная','обработка')) │ +│ (('OLAP','database','analytical'),('online','oriented','processing')) │ └───────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashArgCaseInsensitive {#wordShingleMinHashArgCaseInsensitive} -Добавлена в: v21.1 +Появилась в версии v21.1 -Разбивает ASCII-строку на части (шинглы) размером `shinglesize` слов каждый и возвращает шинглы с минимальным и максимальным хешами слов, вычисленными функцией [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) с теми же входными данными. -Функция нечувствительна к регистру. +Разбивает строку в кодировке ASCII на части (шинглы) по `shinglesize` слов каждая и возвращает шинглы с минимальными и максимальными хешами слов, вычисленными функцией [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) с теми же входными данными. +Функция не чувствительна к регистру. **Синтаксис** ```sql -wordShingleMinHashArgCaseInsensitive(строка[, размер_шингла, количество_хешей]) +wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum]) ``` **Аргументы** -* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых при вычислении результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — Необязательный параметр. Размер словесного шингла, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, каждый с `hashnum` шинглами слов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, каждый из которых содержит по `hashnum` словесных шинглов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple──────────────────────────────────────────────────────────────────┐ -│ (('запросы','база данных','аналитическая'),('ориентированная','обработка','СУБД')) │ +│ (('queries','database','analytical'),('oriented','processing','DBMS')) │ └────────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashArgCaseInsensitiveUTF8 {#wordShingleMinHashArgCaseInsensitiveUTF8} -Добавлена в: v21.1 +Введена в версии v21.1. -Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов каждая и возвращает шинглы с минимальными и максимальными хешами слов, вычисленными функцией [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) с тем же вводом. -Функция регистронезависима. +Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов в каждом и возвращает шинглы с минимальными и максимальными хешами слов, вычисленными функцией [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) с теми же входными данными. +Функция нечувствительна к регистру. **Синтаксис** @@ -2121,34 +2121,34 @@ wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) +* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) * `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) * `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, каждый из которых содержит по `hashnum` шинглов слов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, каждый с `hashnum` словарными шинглами. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® — колонкоориентированная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple──────────────────────────────────────────────────────────────────┐ -│ (('запросы','база данных','аналитическая'),('ориентированная','обработка','СУБД')) │ +│ (('queries','database','analytical'),('oriented','processing','DBMS')) │ └────────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashArgUTF8 {#wordShingleMinHashArgUTF8} -Введена в версии: v21.1 +Введена в версии v21.1. -Разбивает строку в кодировке UTF-8 на части (shingles), каждая содержит по `shinglesize` слов, и возвращает shingles с минимальными и максимальными хешами слов, вычисленными функцией [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) для того же ввода. -Регистрозависима. +Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов в каждом и возвращает шинглы с минимальным и максимальным хешами слов, вычисленными функцией [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) с теми же входными данными. +Функция чувствительна к регистру. **Синтаксис** @@ -2158,50 +2158,50 @@ wordShingleMinHashArgUTF8(string[, shinglesize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер словесного шингла, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — строка, для которой вычисляется хэш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — необязательный параметр. Количество минимальных и максимальных хэшей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух кортежей, каждый из которых содержит по `hashnum` словесных шинглов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух кортежей, каждый содержит по `hashnum` шинглов слов. [`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleMinHashArgUTF8('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple─────────────────────────────────────────────────────────────────┐ -│ (('OLAP','база данных','аналитическая'),('онлайн','ориентированная','обработка')) │ +│ (('OLAP','database','analytical'),('online','oriented','processing')) │ └───────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashCaseInsensitive {#wordShingleMinHashCaseInsensitive} -Впервые появилась в: v21.1 +Впервые представлена в версии v21.1. -Разбивает ASCII-строку на части (шинглы) по `shinglesize` слов, вычисляет хеш-значения для каждого шингла и возвращает кортеж с этими хешами. -Использует `hashnum` минимальных хешей для вычисления минимального значения хеша и `hashnum` максимальных хешей для вычисления максимального значения хеша. -Нечувствительна к регистру. +Разбивает ASCII-строку на части (шинглы) по `shinglesize` слов, вычисляет хеш-значения для каждого шингла слов и возвращает кортеж с этими хешами. +Использует `hashnum` минимальных хешей для вычисления минимального хеша и `hashnum` максимальных хешей для вычисления максимального хеша. +Функция нечувствительна к регистру. -Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хеши одинаковы для обеих строк, то эти строки считаются одинаковыми. +Может использоваться для обнаружения частично дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). +Для двух строк, если возвращаемые хеши совпадают для обеих строк, значит эти строки одинаковы. **Синтаксис** ```sql -wordShingleMinHashCaseInsensitive(строка[, размершингла, количествохешей]) +wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum]) ``` **Аргументы** -* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла (последовательности слов), любое значение от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое значение от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — Необязательный аргумент. Размер шингла по словам, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — Необязательный аргумент. Количество минимальных и максимальных хешей, используемых при вычислении результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -2212,7 +2212,7 @@ wordShingleMinHashCaseInsensitive(строка[, размершингла, ко **Пример использования** ```sql title=Query -SELECT wordShingleMinHashCaseInsensitive('ClickHouse® — колоночная система управления базами данных (СУБД), предназначенная для онлайн-аналитической обработки запросов (OLAP).') AS Tuple; +SELECT wordShingleMinHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2223,14 +2223,14 @@ SELECT wordShingleMinHashCaseInsensitive('ClickHouse® — колоночная ## wordShingleMinHashCaseInsensitiveUTF8 {#wordShingleMinHashCaseInsensitiveUTF8} -Введена в версии: v21.1 +Появилась в версии v21.1. -Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов, вычисляет хеш‑значения для каждого шингла и возвращает кортеж с этими хешами. -Использует `hashnum` минимальных значений хеша для вычисления минимального хеша и `hashnum` максимальных значений хеша для вычисления максимального хеша. -Функция регистронезависимая. +Разбивает строку в кодировке UTF-8 на части (шинглы) из `shinglesize` слов, вычисляет хеш-значения для каждого шингла и возвращает кортеж с этими хешами. +Использует `hashnum` минимальных хешей для вычисления минимального хеша и `hashnum` максимальных хешей для вычисления максимального хеша. +Функция нечувствительна к регистру. -Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хеши совпадают для обеих строк, эти строки считаются одинаковыми. +Может использоваться для обнаружения полудубликатов строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). +Для двух строк, если возвращаемые хеши совпадают для обеих строк, то эти строки считаются одинаковыми. **Синтаксис** @@ -2240,20 +2240,20 @@ wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum]) **Аргументы** -* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла (последовательности слов), любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) * `hashnum` — Необязательный параметр. Количество минимальных и максимальных хешей, используемых для вычисления результата, любое число от `1` до `25`. Значение по умолчанию — `6`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает кортеж из двух хешей — минимального и максимального. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух хешей: минимального и максимального. [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® — это колоночная СУБД (DBMS) для онлайн-аналитической обработки запросов (OLAP).') AS Tuple; +SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2264,19 +2264,19 @@ SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® — это колон ## wordShingleMinHashUTF8 {#wordShingleMinHashUTF8} -Введена в: v21.1 +Введена в версии v21.1 -Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов, вычисляет хеш-значения для каждого шингла и возвращает кортеж с этими хешами. -Использует `hashnum` минимальных значений хеша для вычисления минимального хеша и `hashnum` максимальных значений хеша для вычисления максимального хеша. -Функция чувствительна к регистру. +Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов, вычисляет хэш-значения для каждого шингла и возвращает кортеж с этими хэшами. +Использует `hashnum` минимальных хэшей для вычисления минимального хэша и `hashnum` максимальных хэшей для вычисления максимального хэша. +Учитывает регистр. -Может использоваться для обнаружения почти дублирующихся строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). -Для двух строк, если возвращаемые хеши одинаковы для обеих строк, то эти строки считаются одинаковыми. +Может использоваться для обнаружения частичных дубликатов строк с помощью [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance). +Для двух строк, если возвращаемые хэши совпадают для обеих строк, то строки считаются одинаковыми. **Синтаксис** ```sql -wordShingleMinHashUTF8(строка[, размер_шингла, количество_хешей]) +wordShingleMinHashUTF8(string[, shinglesize, hashnum]) ``` **Аргументы** @@ -2294,7 +2294,7 @@ wordShingleMinHashUTF8(строка[, размер_шингла, количес **Пример использования** ```sql title=Query -SELECT wordShingleMinHashUTF8('ClickHouse® — колонко-ориентированная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Tuple; +SELECT wordShingleMinHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2305,52 +2305,52 @@ SELECT wordShingleMinHashUTF8('ClickHouse® — колонко-ориентир ## wordShingleSimHash {#wordShingleSimHash} -Введена в версии: v21.1 +Появилась в: v21.1 -Разбивает ASCII-строку на части (шинглы) из `shinglesize` слов и возвращает значение `simhash` для словесного шингла. -Функция чувствительна к регистру. +Разбивает строку в кодировке ASCII на части (шинглы) по `shinglesize` слов и возвращает `simhash` словесных шинглов. +Чувствительна к регистру. -Может использоваться для обнаружения частично дублирующихся строк совместно с [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). -Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными `simhash` двух строк, тем выше вероятность, что эти строки одинаковы. +Может использоваться для обнаружения частично дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). +Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) вычисленных `simhash` для двух строк, тем выше вероятность, что эти строки совпадают. **Синтаксис** ```sql -wordShingleSimHash(строка[, размер_шингла]) +wordShingleSimHash(string[, shinglesize]) ``` **Аргументы** * `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла по словам, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленное значение хеша. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное хеш-значение. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleSimHash('ClickHouse® — это колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Hash; +SELECT wordShingleSimHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response -┌───────Хэш─┐ +┌───────Hash─┐ │ 2328277067 │ └────────────┘ ``` ## wordShingleSimHashCaseInsensitive {#wordShingleSimHashCaseInsensitive} -Добавлена в версии: v21.1 +Впервые появилась в версии v21.1. -Разбивает ASCII-строку на части (шинглы) по `shinglesize` слов и возвращает `simhash` этих шинглов. -Функция регистронезависима. +Разбивает ASCII-строку на части (шинглы) из `shinglesize` слов и возвращает `simhash` шинглов слов. +Функция нечувствительна к регистру. -Может использоваться для обнаружения частично дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). -Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) вычисленных `simhashes` для двух строк, тем более вероятно, что эти строки совпадают. +Может использоваться для обнаружения частичных дубликатов строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). +Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными значениями `simhash` двух строк, тем выше вероятность, что эти строки одинаковы. **Синтаксис** @@ -2361,35 +2361,35 @@ wordShingleSimHashCaseInsensitive(string[, shinglesize]) **Аргументы** * `string` — Строка, для которой нужно вычислить хэш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла (последовательности слов), любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — Необязательный параметр. Размер шингла слов — любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленное значение хеша. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хэша. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleSimHashCaseInsensitive('ClickHouse® — колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Hash; +SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response -┌───────Хэш─┐ +┌───────Hash─┐ │ 2194812424 │ └────────────┘ ``` ## wordShingleSimHashCaseInsensitiveUTF8 {#wordShingleSimHashCaseInsensitiveUTF8} -Введено в версии: v1.1 +Функция введена в версии v1.1. -Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов и возвращает `simhash` для словесного шингла. -Функция регистронезависима. +Разбивает строку в кодировке UTF-8 на части (шинглы) по `shinglesize` слов и возвращает `simhash` этих шинглов. +Функция нечувствительна к регистру. -Может использоваться для обнаружения частичных дубликатов строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). -Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) вычисленных `simhash`‑значений двух строк, тем выше вероятность, что эти строки совпадают. +Может использоваться для обнаружения частично дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). +Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными `simhashes` двух строк, тем выше вероятность, что эти строки совпадают. **Синтаксис** @@ -2399,36 +2399,36 @@ wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize]) **Аргументы** -* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер шингла по словам, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой нужно вычислить хэш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленный хеш. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное хэш-значение. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® — это колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Hash; +SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response -┌───────Хэш─┐ +┌───────Hash─┐ │ 2194812424 │ └────────────┘ ``` ## wordShingleSimHashUTF8 {#wordShingleSimHashUTF8} -Добавлена в версии: v21.1 +Функция появилась в версии: v21.1 -Разбивает строку в кодировке UTF-8 на части (шинглы) из `shinglesize` слов и возвращает `simhash` по шинглам слов. -Функция чувствительна к регистру. +Разбивает строку в кодировке UTF-8 на части (шинглы) из `shinglesize` слов и возвращает `simhash` словесного шингла. +Чувствительна к регистру. -Может использоваться для обнаружения почти дублирующихся строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). -Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между вычисленными значениями `simhash` двух строк, тем выше вероятность, что эти строки совпадают. +Может использоваться для обнаружения почти дубликатов строк с помощью [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance). +Чем меньше [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) вычисленных `simhash` двух строк, тем с большей вероятностью эти строки оказываются одинаковыми. **Синтаксис** @@ -2438,30 +2438,30 @@ wordShingleSimHashUTF8(string[, shinglesize]) **Аргументы** -* `string` — Строка, для которой нужно вычислить хеш. [`String`](/sql-reference/data-types/string) -* `shinglesize` — Необязательный параметр. Размер словесного шингла, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) +* `string` — Строка, для которой вычисляется хеш. [`String`](/sql-reference/data-types/string) +* `shinglesize` — Необязательный параметр. Размер шингла слов, любое число от `1` до `25`. Значение по умолчанию — `3`. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает вычисленное хеш-значение. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное значение хеша. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** **Пример использования** ```sql title=Query -SELECT wordShingleSimHashUTF8('ClickHouse® — это колоночная система управления базами данных (СУБД) для онлайн-аналитической обработки запросов (OLAP).') AS Hash; +SELECT wordShingleSimHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response -┌───────Хэш─┐ +┌───────Hash─┐ │ 2328277067 │ └────────────┘ ``` ## wyHash64 {#wyHash64} -Впервые представлен в версии: v22.7 +Добавлена в версии v22.7 Вычисляет 64-битное хеш-значение [wyHash64](https://github.com/wangyi-fudan/wyhash). @@ -2473,11 +2473,11 @@ wyHash64(arg) **Аргументы** -* `arg` — строковый аргумент, для которого нужно вычислить хеш. [`String`](/sql-reference/data-types/string) +* `arg` — строковый аргумент, для которого вычисляется хэш. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает вычисленное 64-битное значение хеша [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное 64-битное значение хэша [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -2493,9 +2493,9 @@ SELECT wyHash64('ClickHouse') AS Hash; ## xxHash32 {#xxHash32} -Введено в: v20.1 +Введена в: v20.1 -Вычисляет [xxHash](http://cyan4973.github.io/xxHash/) для строки. +Вычисляет [xxHash](http://cyan4973.github.io/xxHash/) по строке. Для 64-битной версии см. [`xxHash64`](#xxHash64) @@ -2507,11 +2507,11 @@ xxHash32(arg) **Аргументы** -* `arg` — входная строка для хеширования. [`String`](/sql-reference/data-types/string) +* `arg` — входная строка для хэширования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает вычисленный 32-битный хеш входной строки. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает вычисленный 32-битный хэш входной строки. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -2529,9 +2529,9 @@ SELECT xxHash32('Hello, world!'); ## xxHash64 {#xxHash64} -Появилась в версии: v20.1 +Появилось в: v20.1 -Вычисляет хэш [xxHash](http://cyan4973.github.io/xxHash/) для строки. +Вычисляет значение [xxHash](http://cyan4973.github.io/xxHash/) для строки. Для 32-битной версии см. [`xxHash32`](#xxHash32) @@ -2543,18 +2543,18 @@ xxHash64(arg) **Аргументы** -* `arg` — Входная строка для хэширования. [`String`](/sql-reference/data-types/string) +* `arg` — входная строка для хеширования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает 64-битный хэш входной строки. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленный 64-битный хеш входной строки. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** **Пример использования** ```sql title=Query -SELECT xxHash64('Привет, мир!'); +SELECT xxHash64('Hello, world!'); ``` ```response title=Response @@ -2565,7 +2565,7 @@ SELECT xxHash64('Привет, мир!'); ## xxh3 {#xxh3} -Появилась в версии: v22.12 +Добавлена в: v22.12 Вычисляет 64-битное хеш-значение [XXH3](https://github.com/Cyan4973/xxHash). @@ -2577,11 +2577,11 @@ xxh3(expr) **Аргументы** -* `expr` — список выражений любого типа данных. [`Any`](/sql-reference/data-types) +* `expr` — список выражений произвольного типа данных. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает вычисленное 64-битное значение хеша `xxh3` типа [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает вычисленное 64-битное хеш-значение `xxh3` типа [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md index 53d613eae4d..d0519da2108 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md @@ -6,11 +6,11 @@ title: 'Функции для работы с адресами IPv4 и IPv6' doc_type: 'reference' --- -# Функции для работы с адресами IPv4 и IPv6 {#functions-for-working-with-ipv4-and-ipv6-addresses} +# Функции для работы с IP-адресами IPv4 и IPv6 {#functions-for-working-with-ipv4-and-ipv6-addresses} {/* - Внутреннее содержимое тегов ниже при сборке фреймворка документации - заменяется документацией, генерируемой из system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. + Внутреннее содержимое приведённых ниже тегов при сборке фреймворка документации + заменяется документацией, сгенерированной из system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. См.: https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } @@ -18,9 +18,9 @@ doc_type: 'reference' ## IPv4CIDRToRange {#IPv4CIDRToRange} -Добавлена в версии: v20.1 +Функция введена в версии: v20.1 -Принимает IPv4-адрес и длину CIDR-префикса и возвращает диапазон адресов подсети в виде кортежа из двух значений IPv4: первого и последнего адресов в этой подсети. +Принимает IPv4-адрес с длиной префикса бесклассовой междоменной маршрутизации (CIDR) и возвращает диапазон адресов подсети в виде кортежа из двух значений IPv4: первого и последнего адреса в этой подсети. Версию для IPv6 см. в [`IPv6CIDRToRange`](#IPv4CIDRToRange). **Синтаксис** @@ -36,7 +36,7 @@ IPv4CIDRToRange(ipv4, cidr) **Возвращаемое значение** -Возвращает кортеж из двух IPv4-адресов, представляющих диапазон подсети. [`Tuple(IPv4, IPv4)`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух IPv4-адресов, задающих диапазон подсети. [`Tuple(IPv4, IPv4)`](/sql-reference/data-types/tuple) **Примеры** @@ -54,9 +54,9 @@ SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16); ## IPv4NumToString {#IPv4NumToString} -Добавлена в версии v1.1 +Добавлена в версии: v1.1 -Преобразует 32-битное целое число в строковое представление IPv4-адреса в точечной десятичной нотации (формат A.B.C.D). +Преобразует 32-битное целое число в строковое представление IPv4-адреса в десятичной точечной нотации (формат A.B.C.D). Интерпретирует входное значение в порядке байт big-endian. **Синтаксис** @@ -69,11 +69,11 @@ IPv4NumToString(num) **Аргументы** -* `num` — IPv4-адрес в формате числа UInt32. [`UInt32`](/sql-reference/data-types/int-uint) +* `num` — IPv4-адрес в виде числа типа UInt32. [`UInt32`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает число, представляющее MAC-адрес, или `0`, если формат некорректен. [`String`](/sql-reference/data-types/string) +Возвращает числовое представление MAC-адреса или `0`, если формат недопустим. [`String`](/sql-reference/data-types/string) **Примеры** @@ -89,10 +89,10 @@ IPv4NumToString(3232235521) ## IPv4NumToStringClassC {#IPv4NumToStringClassC} -Введена в версии: v1.1 +Добавлена в версии v1.1 -Преобразует 32-битное целое число в строковое представление IPv4-адреса в десятичной точечной записи (формат A.B.C.D), -аналогично [`IPv4NumToString`](#IPv4NumToString), но с использованием `xxx` вместо последнего октета. +Преобразует 32-битное целое число в строковое представление IPv4-адреса в точечной десятичной записи (формат A.B.C.D), +аналогично функции [`IPv4NumToString`](#IPv4NumToString), но с использованием `xxx` вместо последнего октета. **Синтаксис** @@ -102,11 +102,11 @@ IPv4NumToStringClassC(num) **Аргументы** -* `num` — IPv4-адрес в формате числа UInt32. [`UInt32`](/sql-reference/data-types/int-uint) +* `num` — IPv4-адрес в виде числа UInt32. [`UInt32`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает строку с IPv4-адресом, в которой последний октет заменён на xxx. [`String`](/sql-reference/data-types/string) +Возвращает строку IPv4-адреса, в которой последний октет заменён на xxx. [`String`](/sql-reference/data-types/string) **Примеры** @@ -139,10 +139,10 @@ LIMIT 10 ## IPv4StringToNum {#IPv4StringToNum} -Впервые появилась в версии: v1.1 +Введена в версии v1.1 -Преобразует строку с IPv4-адресом в десятичной точечной нотации (формат A.B.C.D) в соответствующее 32-битное целочисленное представление (обратная функция к [`IPv4NumToString`](#IPv4NumToString)). -Если IPv4-адрес имеет неверный формат, выбрасывается исключение. +Преобразует строку IPv4-адреса в точечно-десятичной записи (формат A.B.C.D) в соответствующее 32-битное целочисленное представление (обратная функция к [`IPv4NumToString`](#IPv4NumToString)). +При некорректном формате IPv4-адреса выбрасывается исключение. **Синтаксис** @@ -154,7 +154,7 @@ IPv4StringToNum(string) **Аргументы** -* `string` — строка IPv4-адреса. [`String`](/sql-reference/data-types/string) +* `string` — строка с IPv4-адресом. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -174,9 +174,9 @@ IPv4StringToNum('192.168.0.1') ## IPv4StringToNumOrDefault {#IPv4StringToNumOrDefault} -Добавлена в версии: v22.3 +Впервые появилась в: v22.3 -Преобразует строку IPv4-адреса в десятичной точечной нотации (формат A.B.C.D) в соответствующее 32-битное целочисленное представление. Если IPv4-адрес имеет недопустимый формат, функция возвращает `0`. +Преобразует строку IPv4-адреса в точечной десятичной нотации (формат A.B.C.D) в соответствующее 32-битное целочисленное представление; если IPv4-адрес имеет некорректный формат, возвращает `0`. **Синтаксис** @@ -190,7 +190,7 @@ IPv4StringToNumOrDefault(string) **Возвращаемое значение** -Возвращает IPv4-адрес или `0`, если адрес недопустим. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает IPv4-адрес или `0`, если адрес некорректен. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -210,14 +210,14 @@ SELECT ## IPv4StringToNumOrNull {#IPv4StringToNumOrNull} -Добавлена в версии: v22.3 +Введена в: v22.3 -Преобразует 32-битное целое число в строковое представление IPv4-адреса в десятичной точечной нотации (формат A.B.C.D), а при недопустимом формате IPv4-адреса возвращает `NULL`. +Преобразует 32-битное целое число в строковое представление IPv4-адреса в десятичной точечной записи (формат A.B.C.D), но если IPv4-адрес имеет некорректный формат, возвращает `NULL`. **Синтаксис** ```sql -IPv4StringToNumOrNull(строка) +IPv4StringToNumOrNull(string) ``` **Аргументы** @@ -226,7 +226,7 @@ IPv4StringToNumOrNull(строка) **Возвращаемое значение** -Возвращает IPv4-адрес или `NULL`, если адрес некорректен. [`Nullable(UInt32)`](/sql-reference/data-types/nullable) +Возвращает IPv4-адрес или `NULL`, если он некорректен. [`Nullable(UInt32)`](/sql-reference/data-types/nullable) **Примеры** @@ -234,21 +234,21 @@ IPv4StringToNumOrNull(строка) ```sql title=Query SELECT -IPv4StringToNumOrNull('127.0.0.1') AS валидный, -IPv4StringToNumOrNull('invalid') AS невалидный; +IPv4StringToNumOrNull('127.0.0.1') AS valid, +IPv4StringToNumOrNull('invalid') AS invalid; ``` ```response title=Response -┌──────валидный─┬─невалидный─┐ +┌──────valid─┬─invalid─┐ │ 2130706433 │ ᴺᵁᴸᴸ │ └────────────┴─────────┘ ``` ## IPv4ToIPv6 {#IPv4ToIPv6} -Впервые появилось в версии: v1.1 +Добавлено в версии v1.1 -Интерпретирует 32-битное число в порядке big endian как IPv4-адрес, который затем трактуется как соответствующий IPv6-адрес в формате `FixedString(16)`. +Интерпретирует 32-битное число в формате big endian как IPv4-адрес, который затем интерпретируется как соответствующий IPv6-адрес в формате `FixedString(16)`. **Синтаксис** @@ -262,7 +262,7 @@ IPv4ToIPv6(x) **Возвращаемое значение** -Возвращает IPv6-адрес в бинарном формате. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает IPv6-адрес в двоичном формате. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -280,10 +280,10 @@ SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr; ## IPv6CIDRToRange {#IPv6CIDRToRange} -Добавлена в версии: v20.1 +Введена в версии: v20.1 -Принимает IPv6-адрес с длиной префикса CIDR (Classless Inter-Domain Routing) и возвращает диапазон адресов подсети в виде кортежа из двух значений IPv6: минимального и максимального адресов в этой подсети. -Версию для IPv4 см. в [`IPv4CIDRToRange`](#IPv4CIDRToRange). +Принимает IPv6-адрес с длиной префикса бесклассовой маршрутизации между доменами (CIDR) и возвращает диапазон адресов подсети в виде кортежа из двух значений IPv6: минимального и максимального адресов в этой подсети. +Для версии для IPv4 см. [`IPv4CIDRToRange`](#IPv4CIDRToRange). **Синтаксис** @@ -298,7 +298,7 @@ IPv6CIDRToRange(ipv6, cidr) **Возвращаемое значение** -Возвращает кортеж из двух IPv6-адресов, представляющих диапазон подсети. [`Tuple(IPv6, IPv6)`](/sql-reference/data-types/tuple) +Возвращает кортеж из двух IPv6-адресов, задающих диапазон подсети. [`Tuple(IPv6, IPv6)`](/sql-reference/data-types/tuple) **Примеры** @@ -316,10 +316,10 @@ SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32); ## IPv6NumToString {#IPv6NumToString} -Введена в версии: v1.1 +Добавлено в версии: v1.1 Преобразует IPv6-адрес из двоичного формата (FixedString(16)) в его стандартное текстовое представление. -IPv6-адреса, сопоставленные с IPv4, отображаются в формате `::ffff:111.222.33.44`. +IPv4-адреса, сопоставленные с IPv6 (IPv4-mapped IPv6), выводятся в формате `::ffff:111.222.33.44`. **Синтаксис** @@ -331,11 +331,11 @@ IPv6NumToString(x) **Аргументы** -* `x` — IPv6-адрес в двоичном виде. [`FixedString(16)`](/sql-reference/data-types/fixedstring) или [`IPv6`](/sql-reference/data-types/ipv6) +* `x` — IPv6-адрес в двоичном формате. [`FixedString(16)`](/sql-reference/data-types/fixedstring) или [`IPv6`](/sql-reference/data-types/ipv6) **Возвращаемое значение** -Возвращает IPv6-адрес в строковом формате. [`String`](/sql-reference/data-types/string) +Возвращает IPv6-адрес в текстовом формате. [`String`](/sql-reference/data-types/string) **Примеры** @@ -379,7 +379,7 @@ LIMIT 10 └─────────────────────────────────────────┴───────┘ ``` -**IPv4-адреса в формате IPv6** +**IPv4-адреса, отображённые в IPv6** ```sql title=Query SELECT @@ -409,14 +409,14 @@ LIMIT 10 ## IPv6StringToNum {#IPv6StringToNum} -Введена в версии: v1.1 +Добавлено в версии v1.1 -Преобразует IPv6-адрес из его стандартного текстового представления в бинарный формат (`FixedString(16)`). -Поддерживает IPv4-картированные IPv6-адреса в формате `::ffff:111.222.33.44.`. -Если IPv6-адрес имеет некорректный формат, генерируется исключение. +Преобразует IPv6-адрес из стандартного текстового представления в двоичный формат (`FixedString(16)`). +Поддерживает IPv4-отображённые IPv6-адреса в формате `::ffff:111.222.33.44.`. +Если IPv6-адрес имеет недопустимый формат, генерируется исключение. -Если входная строка содержит корректный IPv4-адрес, возвращается его эквивалент в виде IPv6-адреса. -Шестнадцатеричные символы могут быть в верхнем или нижнем регистре. +Если входная строка содержит корректный IPv4-адрес, возвращается его эквивалент в формате IPv6. +HEX может быть в верхнем или нижнем регистре. **Синтаксис** @@ -428,11 +428,11 @@ IPv6StringToNum(string) **Аргументы** -* `string` — строка с IPv6-адресом. [`String`](/sql-reference/data-types/string) +* `string` — строковое представление IPv6-адреса. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает IPv6-адрес в двоичном виде. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +Возвращает IPv6-адрес в двоичном формате. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** @@ -452,11 +452,11 @@ SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '1 ## IPv6StringToNumOrDefault {#IPv6StringToNumOrDefault} -Добавлено в: v22.3 +Добавлена в версии v22.3 Преобразует IPv6-адрес из его стандартного текстового представления в двоичный формат (`FixedString(16)`). Принимает IPv4-отображённые IPv6-адреса в формате `::ffff:111.222.33.44.`. -Если формат IPv6-адреса некорректен, функция возвращает значение по умолчанию `::`. +Если IPv6-адрес имеет недопустимый формат, возвращает значение по умолчанию `::`. **Синтаксис** @@ -470,11 +470,11 @@ IPv6StringToNumOrDefault(string) **Возвращаемое значение** -IPv6-адрес в двоичном представлении или строка FixedString(16), заполненная нулями, если адрес некорректен. [`FixedString(16)`](/sql-reference/data-types/fixedstring) +IPv6-адрес в двоичном формате или строка типа FixedString(16), заполненная нулями, если адрес недопустим. [`FixedString(16)`](/sql-reference/data-types/fixedstring) **Примеры** -**Базовый пример с некорректным адресом** +**Простой пример с недопустимым адресом** ```sql title=Query SELECT @@ -490,7 +490,7 @@ SELECT ## IPv6StringToNumOrNull {#IPv6StringToNumOrNull} -Добавлено в версии: v22.3 +Введена в версии v22.3. Преобразует IPv6-адрес из его стандартного текстового представления в двоичный формат (`FixedString(16)`). Принимает IPv4-отображённые IPv6-адреса в формате `::ffff:111.222.33.44.`. @@ -528,10 +528,10 @@ SELECT ## cutIPv6 {#cutIPv6} -Впервые появилась в версии: v1.1 +Появилась в версии: v1.1 -Принимает значение типа `FixedString(16)`, содержащее IPv6-адрес в двоичном формате. -Возвращает строку, содержащую адрес с удалённым заданным числом байт, в текстовом виде. +Принимает значение типа `FixedString(16)`, представляющее IPv6-адрес в двоичном формате. +Возвращает строку с адресом, в которой указанное количество байт удалено, в текстовом формате. **Синтаксис** @@ -542,12 +542,12 @@ cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4) **Аргументы** * `x` — IPv6-адрес в двоичном формате. [`FixedString(16)`](/sql-reference/data-types/fixedstring) или [`IPv6`](/sql-reference/data-types/ipv6) -* `bytesToCutForIPv6` — Количество байт, которые нужно обрезать для IPv6-адреса. [`UInt8`](/sql-reference/data-types/int-uint) -* `bytesToCutForIPv4` — Количество байт, которые нужно обрезать для IPv4-адреса. [`UInt8`](/sql-reference/data-types/int-uint) +* `bytesToCutForIPv6` — Количество байт, которые нужно обрезать для IPv6. [`UInt8`](/sql-reference/data-types/int-uint) +* `bytesToCutForIPv4` — Количество байт, которые нужно обрезать для IPv4. [`UInt8`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает строку, содержащую IPv6-адрес в текстовом формате с удалёнными указанными байтами. [`String`](/sql-reference/data-types/string) +Возвращает строку, содержащую IPv6-адрес в текстовом формате с указанным количеством удалённых байт. [`String`](/sql-reference/data-types/string) **Примеры** @@ -570,11 +570,11 @@ SELECT ## isIPAddressInRange {#isIPAddressInRange} -Добавлена в версии: v21.4 +Функция появилась в версии v21.4. -Определяет, находится ли IP-адрес в сети, заданной в формате [Classless Inter-Domain Routing (CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). +Определяет, содержится ли IP-адрес в сети, записанной в нотации [Classless Inter-Domain Routing (CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). -Эта функция принимает как IPv4-, так и IPv6-адреса (и сети), представленные в виде строк. Она возвращает `0`, если версии IP-адреса и CIDR не совпадают. +Функция принимает IP-адреса и сети IPv4 и IPv6 в виде строк. Возвращает `0`, если версии IP-адреса и CIDR не совпадают. **Синтаксис** @@ -585,15 +585,15 @@ isIPAddressInRange(address, prefix) **Аргументы** * `address` — адрес IPv4 или IPv6. [`String`](/sql-reference/data-types/string) -* `prefix` — сетевой префикс IPv4 или IPv6 в формате CIDR. [`String`](/sql-reference/data-types/string) +* `prefix` — сетевой префикс IPv4 или IPv6 в записи CIDR. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает `1`, если версия IP-адреса и CIDR совпадают, в противном случае — `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если версия IP-адреса и префикса в CIDR совпадают, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** -**IPv4-адрес в диапазоне** +**Адрес IPv4 в диапазоне** ```sql title=Query SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8') @@ -603,7 +603,7 @@ SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8') 1 ``` -**Адрес IPv4 вне допустимого диапазона** +**IPv4-адрес вне диапазона** ```sql title=Query SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16') @@ -613,7 +613,7 @@ SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16') 0 ``` -**IPv6-адрес вне допустимого диапазона** +**IPv6‑адрес вне диапазона** ```sql title=Query SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128') @@ -625,10 +625,10 @@ SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128') ## isIPv4String {#isIPv4String} -Добавлено в версии: v21.1 +Добавлена в версии: v21.1 Определяет, является ли входная строка IPv4-адресом. -Для версии IPv6 см. [`isIPv6String`](#isIPv6String). +Для варианта для IPv6 см. [`isIPv6String`](#isIPv6String). **Синтаксис** @@ -642,7 +642,7 @@ isIPv4String(string) **Возвращаемое значение** -Возвращает `1`, если значение `string` является IPv4-адресом, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если `string` — IPv4-адрес, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -666,10 +666,10 @@ ARRAY JOIN addr; ## isIPv6String {#isIPv6String} -Введена в версии: v21.1 +Введена в версии v21.1. Определяет, является ли входная строка IPv6-адресом. -Функцию для IPv4 см. в [`isIPv4String`](#isIPv4String). +Для проверки IPv4-адресов используйте [`isIPv4String`](#isIPv4String). **Синтаксис** @@ -706,10 +706,10 @@ ARRAY JOIN addr; ## toIPv4 {#toIPv4} -Добавлена в: v20.1 +Впервые появилась в версии v20.1. -Преобразует строку или значение IPv4-адреса типа UInt32 в тип IPv4. -Похожа на функции [`IPv4StringToNum`](/sql-reference/functions/ip-address-functions#IPv4StringToNum) и [`IPv4NumToString`](/sql-reference/functions/ip-address-functions#IPv4NumToString), но поддерживает в качестве входных аргументов как строковый, так и беззнаковый целочисленный типы данных. +Преобразует строку или значение IPv4-адреса типа `UInt32` в значение типа `IPv4`. +Аналогична функциям [`IPv4StringToNum`](/sql-reference/functions/ip-address-functions#IPv4StringToNum) и [`IPv4NumToString`](/sql-reference/functions/ip-address-functions#IPv4NumToString), но поддерживает в качестве входных аргументов как строки, так и беззнаковые целые числа. **Синтаксис** @@ -719,11 +719,11 @@ toIPv4(x) **Аргументы** -* `x` — IPv4-адрес типа [`String`](/sql-reference/data-types/string) или [`UInt8/16/32`](/sql-reference/data-types/int-uint) +* `x` — IPv4-адрес в виде [`String`](/sql-reference/data-types/string) или [`UInt8/16/32`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает IPv4-адрес типа [`IPv4`](/sql-reference/data-types/ipv4). +Возвращает IPv4-адрес типа [`IPv4`](/sql-reference/data-types/ipv4) **Примеры** @@ -755,7 +755,7 @@ SELECT └───────────────────────────────────┴──────────────────────────┘ ``` -**Преобразование из целого типа** +**Преобразование из целого числа** ```sql title=Query SELECT toIPv4(2130706433); @@ -769,10 +769,10 @@ SELECT toIPv4(2130706433); ## toIPv4OrDefault {#toIPv4OrDefault} -Введена в: v22.3 +Впервые представлена в версии v22.3. -Преобразует строку или значение IPv4-адреса типа `UInt32` в тип [`IPv4`](../data-types/ipv4.md). -Если IPv4-адрес имеет некорректный формат, функция возвращает `0.0.0.0` (0 в формате IPv4) или заданное значение IPv4 по умолчанию. +Преобразует строку или значение IPv4 в формате `UInt32` в тип [`IPv4`](../data-types/ipv4.md). +Если IPv4-адрес имеет неверный формат, функция возвращает `0.0.0.0` (0 IPv4) или указанный IPv4-адрес по умолчанию. **Синтаксис** @@ -782,12 +782,12 @@ toIPv4OrDefault(string[, default]) **Аргументы** -* `string` — строка с IPv4-адресом для преобразования. [`String`](/sql-reference/data-types/string) -* `default` — необязательный параметр. Значение, которое будет возвращено, если `string` — некорректный IPv4-адрес. [`IPv4`](/sql-reference/data-types/ipv4) +* `string` — строка IP-адреса для преобразования. [`String`](/sql-reference/data-types/string) +* `default` — необязательный параметр. Значение, которое возвращается, если строка не является корректным IPv4-адресом. [`IPv4`](/sql-reference/data-types/ipv4) **Возвращаемое значение** -Возвращает строку, преобразованную в IPv4-адрес, или значение по умолчанию, если преобразование не удалось. [`IPv4`](/sql-reference/data-types/ipv4) +Возвращает строку, преобразованную в соответствующий IPv4-адрес, или значение по умолчанию, если преобразование не удалось. [`IPv4`](/sql-reference/data-types/ipv4) **Примеры** @@ -812,14 +812,14 @@ SELECT ## toIPv4OrNull {#toIPv4OrNull} -Добавлена в версии: v22.3 +Появилась в версии: v22.3 -Преобразует входное значение в тип `IPv4`, но в случае ошибки возвращает `NULL`. -Аналог функции [`toIPv4`](#toIPv4), но при ошибках преобразования вместо выбрасывания исключения возвращает `NULL`. +Преобразует входное значение в значение типа `IPv4`, но возвращает `NULL` в случае ошибки. +Аналогична [`toIPv4`](#toIPv4), но возвращает `NULL` вместо выброса исключения при ошибках преобразования. Поддерживаемые аргументы: -* Строковые представления IPv4-адресов в десятичной точечной нотации. +* Строковые представления IPv4-адресов в точечной десятичной нотации. * Целочисленные представления IPv4-адресов. Неподдерживаемые аргументы (возвращают `NULL`): @@ -827,7 +827,7 @@ SELECT * Неверные форматы IP-адресов. * IPv6-адреса. * Значения вне допустимого диапазона. -* Некорректно сформированные адреса. +* Некорректные адреса. **Синтаксис** @@ -837,11 +837,11 @@ toIPv4OrNull(x) **Аргументы** -* `x` — строковое или целочисленное представление IPv4-адреса. [`String`](/sql-reference/data-types/string) или [`Integer`](/sql-reference/data-types/int-uint) +* `x` — строковое значение или целочисленное представление IPv4-адреса. [`String`](/sql-reference/data-types/string) или [`Integer`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает IPv4-адрес при успешном преобразовании, в противном случае — `NULL`. [`IPv4`](/sql-reference/data-types/ipv4) или [`NULL`](/sql-reference/syntax#null) +Возвращает IPv4-адрес при успешном преобразовании, в противном случае `NULL`. [`IPv4`](/sql-reference/data-types/ipv4) или [`NULL`](/sql-reference/syntax#null) **Примеры** @@ -861,14 +861,14 @@ SELECT ## toIPv4OrZero {#toIPv4OrZero} -Введена в версии: v23.1 +Появилась в версии: v23.1 -Преобразует входное значение в значение типа [IPv4](../data-types/ipv4.md), но в случае ошибки возвращает нулевой IPv4-адрес. -Аналог функции [`toIPv4`](#toIPv4), но вместо генерации исключения при ошибках преобразования возвращает нулевой IPv4-адрес (`0.0.0.0`). +Преобразует входное значение в тип [IPv4](../data-types/ipv4.md), но в случае ошибки возвращает нулевой IPv4-адрес. +Аналог функции [`toIPv4`](#toIPv4), но возвращает нулевой IPv4-адрес (`0.0.0.0`) вместо генерации исключения при ошибках преобразования. Поддерживаемые аргументы: -* Строковые представления IPv4-адресов в точечной десятичной нотации. +* Строковые представления IPv4-адресов в десятичной точечной нотации. * Целочисленные представления IPv4-адресов. Неподдерживаемые аргументы (возвращается нулевой IPv4-адрес): @@ -889,7 +889,7 @@ toIPv4OrZero(x) **Возвращаемое значение** -Возвращает IPv4-адрес при успешном преобразовании, в противном случае — нулевой IPv4-адрес (`0.0.0.0`). [`IPv4`](/sql-reference/data-types/ipv4) +Возвращает IPv4-адрес при успешном выполнении, в противном случае — нулевой IPv4-адрес (`0.0.0.0`). [`IPv4`](/sql-reference/data-types/ipv4) **Примеры** @@ -909,13 +909,13 @@ SELECT ## toIPv6 {#toIPv6} -Появилась в версии: v20.1 +Добавлена в версии: v20.1 -Преобразует строку или `UInt128`-представление IPv6-адреса в тип [`IPv6`](../data-types/ipv6.md). -Для строк: если IPv6-адрес имеет некорректный формат, возвращается пустое значение. -Аналогична функциям [`IPv6StringToNum`](/sql-reference/functions/ip-address-functions#IPv6StringToNum) и [`IPv6NumToString`](/sql-reference/functions/ip-address-functions#IPv6NumToString), которые преобразуют IPv6-адрес в двоичный формат и обратно (а именно в `FixedString(16)`). +Преобразует строку или представление IPv6-адреса в виде `UInt128` в тип [`IPv6`](../data-types/ipv6.md). +Для строк, если IPv6-адрес имеет неверный формат, возвращает пустое значение. +Аналогична функциям [`IPv6StringToNum`](/sql-reference/functions/ip-address-functions#IPv6StringToNum) и [`IPv6NumToString`](/sql-reference/functions/ip-address-functions#IPv6NumToString), которые преобразуют IPv6-адрес в двоичный формат и обратно (т.е. `FixedString(16)`). -Если входная строка содержит корректный IPv4-адрес, возвращается IPv6-эквивалент этого IPv4-адреса. +Если входная строка содержит корректный IPv4-адрес, возвращается эквивалентный ему IPv6-адрес. **Синтаксис** @@ -948,7 +948,7 @@ SELECT └───────────────────────────────────┴──────────────────────────────────┘ ``` -**Отображение адресов IPv4 в IPv6** +**Преобразование IPv4 в IPv6** ```sql title=Query SELECT toIPv6('127.0.0.1'); @@ -962,10 +962,10 @@ SELECT toIPv6('127.0.0.1'); ## toIPv6OrDefault {#toIPv6OrDefault} -Впервые представлена в: v22.3 +Добавлена в версии v22.3 -Преобразует строку или целочисленное значение типа UInt128, представляющее IPv6-адрес, в тип [`IPv6`](../data-types/ipv6.md). -Если IPv6-адрес имеет неверный формат, функция возвращает `::` (нулевой IPv6) или указанный IPv6 по умолчанию. +Преобразует строку или значение IPv6-адреса в формате `UInt128` в тип [`IPv6`](../data-types/ipv6.md). +Если IPv6-адрес имеет неверный формат, функция возвращает `::` (0 IPv6) или указанный IPv6 по умолчанию. **Синтаксис** @@ -976,11 +976,11 @@ toIPv6OrDefault(string[, default]) **Аргументы** * `string` — строка с IP-адресом для преобразования. -* `default` — необязательный аргумент. Значение, которое будет возвращено, если `string` имеет некорректный формат. +* `default` — необязательный параметр. Значение, которое возвращается, если `string` имеет недопустимый формат. **Возвращаемое значение** -Возвращает IPv6-адрес. Если аргумент `string` имеет некорректный формат, возвращает `::` или переданное необязательное значение по умолчанию. [`IPv6`](/sql-reference/data-types/ipv6) +Возвращает IPv6-адрес; в противном случае — `::` или указанное необязательное значение по умолчанию, если аргумент `string` имеет недопустимый формат. [`IPv6`](/sql-reference/data-types/ipv6) **Примеры** @@ -998,30 +998,30 @@ SELECT ``` ```response title=Response -┌─допустимый────────────────────────────┬─значение_по_умолчанию─┬─заданное_значение_по_умолчанию─┐ +┌─valid──────────────────────────────────┬─default_value─┬─provided_default─┐ │ 2001:db8:85a3::8a2e:370:7334 │ :: │ ::1 │ └────────────────────────────────────────┴───────────────┴──────────────────┘ ``` ## toIPv6OrNull {#toIPv6OrNull} -Введена в версии: v22.3 +Впервые появилась в версии v22.3. -Преобразует входное значение в значение типа `IPv6`, но возвращает `NULL` в случае ошибки. +Преобразует входное значение в значение типа `IPv6`, но в случае ошибки возвращает `NULL`. Аналогична [`toIPv6`](#toIPv6), но возвращает `NULL` вместо выброса исключения при ошибках преобразования. Поддерживаемые аргументы: -* Строковые представления IPv6-адресов в стандартной записи. +* Строковые представления IPv6-адресов в стандартной нотации. * Строковые представления IPv4-адресов (преобразуются в IPv4-mapped IPv6). * Бинарные представления IPv6-адресов. Неподдерживаемые аргументы (возвращают `NULL`): -* Неверные форматы IP-адресов. +* Некорректные форматы IP-адресов. * Некорректные IPv6-адреса. * Значения вне допустимого диапазона. -* Неверная запись. +* Некорректная нотация. **Синтаксис** @@ -1035,7 +1035,7 @@ toIPv6OrNull(x) **Возвращаемое значение** -Возвращает IPv6-адрес в случае успеха, иначе `NULL`. [`IPv6`](/sql-reference/data-types/ipv6) или [`NULL`](/sql-reference/syntax#null) +Возвращает IPv6-адрес в случае успешного преобразования, в противном случае — `NULL`. [`IPv6`](/sql-reference/data-types/ipv6) или [`NULL`](/sql-reference/syntax#null) **Примеры** @@ -1055,10 +1055,10 @@ SELECT ## toIPv6OrZero {#toIPv6OrZero} -Появилась в версии: v23.1 +Добавлена в версии: v23.1 Преобразует входное значение в значение типа [IPv6](../data-types/ipv6.md), но в случае ошибки возвращает нулевой IPv6-адрес. -Аналогична [`toIPv6`](#toIPv6), но возвращает нулевой IPv6-адрес (`::`) вместо генерации исключения при ошибках преобразования. +Аналог [`toIPv6`](#toIPv6), но вместо выбрасывания исключения при ошибках преобразования возвращает нулевой IPv6-адрес (`::`). Поддерживаемые аргументы: @@ -1066,7 +1066,7 @@ SELECT * Строковые представления IPv4-адресов (преобразуются в IPv4-mapped IPv6). * Бинарные представления IPv6-адресов. -Неподдерживаемые аргументы (функция возвращает нулевой IPv6-адрес): +Неподдерживаемые аргументы (возвращают нулевой IPv6-адрес): * Неверные форматы IP-адресов. * Некорректно сформированные IPv6-адреса. @@ -1080,11 +1080,11 @@ toIPv6OrZero(x) **Аргументы** -* `x` — строковое представление IPv6- или IPv4-адреса. [`String`](/sql-reference/data-types/string) +* `x` — Строковое представление адреса IPv6 или IPv4. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает IPv6-адрес при успешном выполнении, в противном случае — нулевой IPv6-адрес (`::`). [`IPv6`](/sql-reference/data-types/ipv6) +Возвращает IPv6-адрес в случае успешного выполнения, в противном случае — нулевой IPv6-адрес (`::`). [`IPv6`](/sql-reference/data-types/ipv6) **Примеры** diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md index c0e62c922a1..f01234a5996 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md @@ -13,12 +13,12 @@ import VersionBadge from '@theme/badges/VersionBadge'; Функции для [поиска](string-search-functions.md) в строках и для [замены](string-replace-functions.md) в строках описаны отдельно. :::note -Приведённая ниже документация сгенерирована из системной таблицы `system.functions`. +Приведенная ниже документация сгенерирована из системной таблицы `system.functions`. ::: {/* - Внутреннее содержимое тегов ниже при сборке фреймворка документации - заменяется документацией, сгенерированной из system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. + Содержимое тегов ниже во время сборки фреймворка документации + заменяется на документацию, сгенерированную из system.functions. Пожалуйста, не изменяйте и не удаляйте эти теги. См.: https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } @@ -28,7 +28,7 @@ import VersionBadge from '@theme/badges/VersionBadge'; Добавлена в версии: v20.1 -Вычисляет контрольную сумму CRC32 строки, используя полином CRC-32-IEEE 802.3 и начальное значение `0xffffffff` (реализация zlib). +Вычисляет контрольную сумму CRC32 для строки с использованием полинома CRC-32-IEEE 802.3 и начального значения `0xffffffff` (реализация zlib). **Синтаксис** @@ -38,11 +38,11 @@ CRC32(s) **Аргументы** -* `s` — Строка, для которой нужно вычислить CRC32. [`String`](/sql-reference/data-types/string) +* `s` — строка, для которой рассчитывается CRC32. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает контрольную сумму CRC32 строки. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает CRC32-контрольную сумму строки. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -60,7 +60,7 @@ SELECT CRC32('ClickHouse') ## CRC32IEEE {#CRC32IEEE} -Добавлено в версии: v20.1 +Появилась в версии: v20.1 Вычисляет контрольную сумму CRC32 для строки с использованием полинома CRC-32-IEEE 802.3. @@ -72,11 +72,11 @@ CRC32IEEE(s) **Аргументы** -* `s` — строка, для которой нужно вычислить CRC32. [`String`](/sql-reference/data-types/string) +* `s` — Строка, для которой нужно вычислить CRC32. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает CRC32-контрольную сумму строки. [`UInt32`](/sql-reference/data-types/int-uint) +Возвращает контрольную сумму CRC32 для строки. [`UInt32`](/sql-reference/data-types/int-uint) **Примеры** @@ -94,9 +94,9 @@ SELECT CRC32IEEE('ClickHouse'); ## CRC64 {#CRC64} -Добавлена в версии: v20.1 +Добавлена в версии v20.1 -Вычисляет контрольную сумму CRC64 строки с использованием полинома CRC-64-ECMA. +Вычисляет контрольную сумму CRC64 для строки с использованием полинома CRC-64-ECMA. **Синтаксис** @@ -106,11 +106,11 @@ CRC64(s) **Аргументы** -* `s` — строка, для которой вычисляется CRC64. [`String`](/sql-reference/data-types/string) +* `s` — Строка, для которой вычисляется CRC64. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает контрольную сумму CRC64 строки. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает контрольную сумму CRC64 для строки. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -128,9 +128,9 @@ SELECT CRC64('ClickHouse'); ## appendTrailingCharIfAbsent {#appendTrailingCharIfAbsent} -Появилась в версии v1.1 +Впервые представлена в версии v1.1 -Добавляет символ `c` к строке `s`, если `s` не пуста и не оканчивается символом `c`. +Добавляет символ `c` к строке `s`, если строка `s` не пустая и не заканчивается символом `c`. **Синтаксис** @@ -141,7 +141,7 @@ appendTrailingCharIfAbsent(s, c) **Аргументы** * `s` — входная строка. [`String`](/sql-reference/data-types/string) -* `c` — символ, который добавляется при отсутствии. [`String`](/sql-reference/data-types/string) +* `c` — символ, добавляемый при отсутствии в конце строки. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -163,9 +163,9 @@ SELECT appendTrailingCharIfAbsent('https://example.com', '/'); ## ascii {#ascii} -Появилась в версии: v22.11 +Появилась в версии v22.11 -Возвращает код символа ASCII первого символа строки `s` в виде `Int32`. +Возвращает кодовую точку ASCII первого символа строки `s` как `Int32`. **Синтаксис** @@ -175,11 +175,11 @@ ascii(s) **Аргументы** -* `s` — Строковый аргумент. [`String`](/sql-reference/data-types/string) +* `s` — входная строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает кодовую точку ASCII первого символа. Если `s` пустая, результат равен `0`. Если первый символ не является ASCII-символом или не входит в диапазон дополнения Latin-1 в UTF-16, результат не определён. [`Int32`](/sql-reference/data-types/int-uint) +Возвращает кодовую точку ASCII первого символа. Если `s` пустая, результат равен `0`. Если первый символ не является символом ASCII или не входит в диапазон дополнения Latin-1 в UTF-16, результат неопределён. [`Int32`](/sql-reference/data-types/int-uint) **Примеры** @@ -197,10 +197,10 @@ SELECT ascii('234') ## base32Decode {#base32Decode} -Появилась в версии: v25.6 +Добавлена в версии: v25.6 -Декодирует строку, закодированную в формате [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) (RFC 4648). -Если строка не является корректной Base32-кодировкой, будет выброшено исключение. +Декодирует строку [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) (RFC 4648). +Если строка не является корректной строкой в кодировке Base32, генерируется исключение. **Синтаксис** @@ -210,11 +210,11 @@ base32Decode(encoded) **Аргументы** -* `encoded` — столбец типа String или константа. [`String`](/sql-reference/data-types/string) +* `encoded` — строковый столбец или константа. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку с декодированным значением аргумента. [`String`](/sql-reference/data-types/string) +Возвращает строку, содержащую декодированное значение аргумента. [`String`](/sql-reference/data-types/string) **Примеры** @@ -226,13 +226,13 @@ SELECT base32Decode('IVXGG33EMVSA===='); ```response title=Response ┌─base32Decode('IVXGG33EMVSA====')─┐ -│ Закодировано │ +│ Encoded │ └──────────────────────────────────┘ ``` ## base32Encode {#base32Encode} -Появилась в версии: v25.6 +Появилась в версии v25.6 Кодирует строку с использованием [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6). @@ -244,7 +244,7 @@ base32Encode(plaintext) **Аргументы** -* `plaintext` — Текст в открытом виде для кодирования. [`String`](/sql-reference/data-types/string) +* `plaintext` — Исходный текст для кодирования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -266,10 +266,10 @@ SELECT base32Encode('Encoded') ## base58Decode {#base58Decode} -Добавлено в версии: v22.7 +Введена в: v22.7 -Декодирует строку, закодированную в формате [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3). -Если строка не является корректной Base58-последовательностью, выбрасывается исключение. +Декодирует строку в формате [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3). +Если строка не является корректной Base58-строкой, генерируется исключение. **Синтаксис** @@ -279,7 +279,7 @@ base58Decode(encoded) **Аргументы** -* `encoded` — Столбец типа String или константа для декодирования. [`String`](/sql-reference/data-types/string) +* `encoded` — столбец типа `String` или константа для декодирования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -301,7 +301,7 @@ SELECT base58Decode('JxF12TrwUP45BMd'); ## base58Encode {#base58Encode} -Добавлена в версии v22.7 +Добавлена в версии: v22.7 Кодирует строку в кодировке [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html). @@ -317,7 +317,7 @@ base58Encode(plaintext) **Возвращаемое значение** -Возвращает строку с закодированным значением аргумента. [`String`](/sql-reference/data-types/string) +Возвращает строку, содержащую закодированное значение аргумента. [`String`](/sql-reference/data-types/string) **Примеры** @@ -335,10 +335,10 @@ SELECT base58Encode('ClickHouse'); ## base64Decode {#base64Decode} -Появилась в: v18.16 +Введена в: v18.16 -Декодирует строку из представления [Base64](https://en.wikipedia.org/wiki/Base64) в соответствии с RFC 4648. -В случае ошибки выбрасывает исключение. +Декодирует строку из формата [Base64](https://en.wikipedia.org/wiki/Base64) в соответствии с RFC 4648. +При ошибке выбрасывает исключение. **Синтаксис** @@ -350,7 +350,7 @@ base64Decode(encoded) **Аргументы** -* `encoded` — строковый столбец или константа для декодирования. Если строка не является корректной строкой в кодировке Base64, выбрасывается исключение. [`String`](/sql-reference/data-types/string) +* `encoded` — строковый столбец или константа для декодирования. Если строка не является корректной Base64-строкой, выбрасывается исключение. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -372,9 +372,9 @@ SELECT base64Decode('Y2xpY2tob3VzZQ==') ## base64Encode {#base64Encode} -Добавлена в версии: v18.16 +Введена в: v18.16 -Кодирует строку в представление [Base64](https://en.wikipedia.org/wiki/Base64) в соответствии с RFC 4648. +Кодирует строку в формат [Base64](https://en.wikipedia.org/wiki/Base64) согласно RFC 4648. **Синтаксис** @@ -386,7 +386,7 @@ base64Encode(plaintext) **Аргументы** -* `plaintext` — Столбец или константа с исходным текстом для кодирования. [`String`](/sql-reference/data-types/string) +* `plaintext` — Столбец или константа с открытым текстом для декодирования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -408,9 +408,9 @@ SELECT base64Encode('clickhouse') ## base64URLDecode {#base64URLDecode} -Добавлена в версии: v24.6 +Введено в версии: v24.6 -Декодирует строку из формата [Base64](https://en.wikipedia.org/wiki/Base64), используя URL-безопасный алфавит в соответствии с RFC 4648. +Декодирует строку из представления формата [Base64](https://en.wikipedia.org/wiki/Base64), используя URL-безопасный алфавит в соответствии с RFC 4648. В случае ошибки выбрасывает исключение. **Синтаксис** @@ -421,11 +421,11 @@ base64URLDecode(encoded) **Аргументы** -* `encoded` — строковый столбец или константа для кодирования. Если строка не является корректной Base64-строкой, выбрасывается исключение. [`String`](/sql-reference/data-types/string) +* `encoded` — строковый столбец или константа, подлежащие кодированию. Если строка не является корректной Base64-кодировкой, выбрасывается исключение. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку, содержащую декодированное значение аргумента. [`String`](/sql-reference/data-types/string) +Возвращает строку с декодированным значением аргумента. [`String`](/sql-reference/data-types/string) **Примеры** @@ -443,9 +443,9 @@ SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') ## base64URLEncode {#base64URLEncode} -Добавлена в версии: v18.16 +Появилась в версии v18.16 -Кодирует строку с использованием представления [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4) (RFC 4648) с алфавитом, безопасным для URL. +Кодирует строку в представление [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4) (RFC 4648) с URL-безопасным алфавитом. **Синтаксис** @@ -455,11 +455,11 @@ base64URLEncode(plaintext) **Аргументы** -* `plaintext` — Столбец или константа с исходным текстом для кодирования. [`String`](/sql-reference/data-types/string) +* `plaintext` — столбец или константа с открытым текстом для кодирования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку, содержащую закодированное значение аргумента. [`String`](/sql-reference/data-types/string) +Возвращает строку с закодированным значением аргумента. [`String`](/sql-reference/data-types/string) **Примеры** @@ -477,10 +477,10 @@ SELECT base64URLEncode('https://clickhouse.com') ## basename {#basename} -Появилась в версии: v20.1 +Введена в версии v20.1 -Извлекает часть строки после последней косой черты (`/`) или обратной косой черты (`\`). -Эта функция часто используется для получения имени файла из пути. +Извлекает часть строки после последнего прямого или обратного слеша. +Эта функция часто используется для извлечения имени файла из пути. **Синтаксис** @@ -490,15 +490,15 @@ basename(expr) **Аргументы** -* `expr` — строковое выражение. Символы обратной косой черты должны экранироваться. [`String`](/sql-reference/data-types/string) +* `expr` — строковое выражение. Обратные косые черты должны быть экранированы. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает часть входной строки после её последней прямой или обратной косой черты. Если входная строка заканчивается прямой или обратной косой чертой, функция возвращает пустую строку. Возвращает исходную строку, если в ней нет прямых или обратных косых черт. [`String`](/sql-reference/data-types/string) +Возвращает часть входной строки после последней косой или обратной косой черты. Если входная строка оканчивается косой или обратной косой чертой, функция возвращает пустую строку. Возвращает исходную строку, если в ней нет косых или обратных косых черт. [`String`](/sql-reference/data-types/string) **Примеры** -**Извлечение имени файла из пути в стиле Unix** +**Извлечение имени файла из Unix-пути** ```sql title=Query SELECT 'some/long/path/to/file' AS a, basename(a) @@ -510,7 +510,7 @@ SELECT 'some/long/path/to/file' AS a, basename(a) └────────────────────────┴────────────────────────────────────┘ ``` -**Извлечь имя файла из пути в Windows** +**Извлечение имени файла из пути Windows** ```sql title=Query SELECT 'some\\long\\path\\to\\file' AS a, basename(a) @@ -536,7 +536,7 @@ SELECT 'some-file-name' AS a, basename(a) ## byteHammingDistance {#byteHammingDistance} -Добавлена в версии v23.9 +Впервые появилась в версии v23.9. Вычисляет [расстояние Хэмминга](https://en.wikipedia.org/wiki/Hamming_distance) между двумя байтовыми строками. @@ -546,7 +546,7 @@ SELECT 'some-file-name' AS a, basename(a) byteHammingDistance(s1, s2) ``` -**Псевдонимы**: `mismatches` +**Синонимы**: `mismatches` **Аргументы** @@ -573,9 +573,9 @@ SELECT byteHammingDistance('karolin', 'kathrin') ## compareSubstrings {#compareSubstrings} -Введена в версии: v25.2 +Введена в версии v25.2 -Лексикографически сравнивает две строки. +Сравнивает две строки в лексикографическом порядке. **Синтаксис** @@ -585,11 +585,11 @@ compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes) **Аргументы** -* `s1` — первая строка для сравнения. [`String`](/sql-reference/data-types/string) -* `s2` — вторая строка для сравнения. [`String`](/sql-reference/data-types/string) -* `s1_offset` — позиция (начиная с нуля) в `s1`, с которой начинается сравнение. [`UInt*`](/sql-reference/data-types/int-uint) -* `s2_offset` — позиция (начиная с нуля) в `s2`, с которой начинается сравнение. [`UInt*`](/sql-reference/data-types/int-uint) -* `num_bytes` — максимальное количество байт, сравниваемых в обеих строках. Если `s1_offset` (или `s2_offset`) + `num_bytes` превышает длину входной строки, значение `num_bytes` будет соответственно уменьшено. [`UInt*`](/sql-reference/data-types/int-uint) +* `s1` — Первая строка для сравнения. [`String`](/sql-reference/data-types/string) +* `s2` — Вторая строка для сравнения. [`String`](/sql-reference/data-types/string) +* `s1_offset` — Позиция (нумерация с нуля) в `s1`, с которой начинается сравнение. [`UInt*`](/sql-reference/data-types/int-uint) +* `s2_offset` — Позиция (нумерация с нуля) в `s2`, с которой начинается сравнение. [`UInt*`](/sql-reference/data-types/int-uint) +* `num_bytes` — Максимальное количество байт для сравнения в обеих строках. Если `s1_offset` (или `s2_offset`) + `num_bytes` превышает конец исходной строки, `num_bytes` будет соответствующим образом уменьшено. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -616,11 +616,11 @@ SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result ## concat {#concat} -Добавлена в версии: v1.1 +Впервые появилась в версии v1.1. -Объединяет (конкатенирует) переданные аргументы. +Объединяет переданные аргументы. -Аргументы, которые не имеют типов [`String`](../data-types/string.md) или [`FixedString`](../data-types/fixedstring.md), преобразуются в строки с использованием их сериализации по умолчанию. +Аргументы, не относящиеся к типам [`String`](../data-types/string.md) или [`FixedString`](../data-types/fixedstring.md), преобразуются в строки с использованием их стандартной сериализации. Поскольку это снижает производительность, не рекомендуется использовать аргументы типов, отличных от String/FixedString. **Синтаксис** @@ -631,11 +631,11 @@ concat([s1, s2, ...]) **Аргументы** -* `s1, s2, ...` — Любое количество значений произвольного типа. [`Any`](/sql-reference/data-types) +* `s1, s2, ...` — Произвольное количество значений любого типа. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает строку типа String, полученную конкатенацией аргументов. Если хотя бы один из аргументов равен `NULL`, функция возвращает `NULL`. Если аргументы отсутствуют, возвращается пустая строка. [`Nullable(String)`](/sql-reference/data-types/nullable) +Возвращает строку (`String`), полученную конкатенацией аргументов. Если среди аргументов есть `NULL`, функция возвращает `NULL`. Если аргументов нет, возвращается пустая строка. [`Nullable(String)`](/sql-reference/data-types/nullable) **Примеры** @@ -651,7 +651,7 @@ SELECT concat('Hello, ', 'World!') └─────────────────────────────┘ ``` -**Конкатенация числовых значений** +**Конкатенация чисел** ```sql title=Query SELECT concat(42, 144) @@ -665,9 +665,9 @@ SELECT concat(42, 144) ## concatAssumeInjective {#concatAssumeInjective} -Добавлена в версии v1.1 +Появилась в версии v1.1 -Аналог функции [`concat`](#concat), но предполагает, что `concat(s1, s2, ...) → sn` является инъективной, +Аналог функции [`concat`](#concat), но предполагается, что `concat(s1, s2, ...) → sn` является инъективной, т. е. возвращает разные результаты для разных аргументов. Может использоваться для оптимизации `GROUP BY`. @@ -684,7 +684,7 @@ concatAssumeInjective([s1, s2, ...]) **Возвращаемое значение** -Возвращает строку, созданную путём конкатенации аргументов. Если хотя бы одно из значений аргументов равно `NULL`, функция возвращает `NULL`. Если аргументы не переданы, возвращает пустую строку. [`String`](/sql-reference/data-types/string) +Возвращает строку, полученную путем конкатенации аргументов. Если какое-либо из значений аргументов равно `NULL`, функция возвращает `NULL`. Если не передано ни одного аргумента, возвращает пустую строку. [`String`](/sql-reference/data-types/string) **Примеры** @@ -704,7 +704,7 @@ SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjectiv ## concatWithSeparator {#concatWithSeparator} -Впервые появилась в версии v22.12 +Впервые появилась в версии v22.12. Объединяет переданные строки, разделяя их указанным разделителем. @@ -718,12 +718,12 @@ concatWithSeparator(sep[, exp1, exp2, ...]) **Аргументы** -* `sep` — разделитель. [`const String`](/sql-reference/data-types/string) или [`const FixedString`](/sql-reference/data-types/fixedstring) -* `exp1, exp2, ...` — выражения для конкатенации. Аргументы, тип которых не `String` и не `FixedString`, преобразуются в строки с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы типов, отличных от String/FixedString. [`Any`](/sql-reference/data-types) +* `sep` — разделитель, который будет использоваться. [`const String`](/sql-reference/data-types/string) или [`const FixedString`](/sql-reference/data-types/fixedstring) +* `exp1, exp2, ...` — выражения, которые необходимо конкатенировать. Аргументы типов, отличных от `String` или `FixedString`, преобразуются в строки с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы не-`String`/`FixedString` типов. [`Any`](/sql-reference/data-types) **Возвращаемое значение** -Возвращает строку, созданную путём конкатенации аргументов. Если какое-либо из значений аргументов равно `NULL`, функция возвращает `NULL`. [`String`](/sql-reference/data-types/string) +Возвращает строку, созданную путём конкатенации аргументов. Если какое-либо значение аргумента равно `NULL`, функция возвращает `NULL`. [`String`](/sql-reference/data-types/string) **Примеры** @@ -741,9 +741,9 @@ SELECT concatWithSeparator('a', '1', '2', '3', '4') ## concatWithSeparatorAssumeInjective {#concatWithSeparatorAssumeInjective} -Добавлена в: v22.12 +Введена в: v22.12 -Похожа на [`concatWithSeparator`](#concatWithSeparator), но предполагает, что `concatWithSeparator(sep[,exp1, exp2, ... ]) → result` является инъективной. +Аналог [`concatWithSeparator`](#concatWithSeparator), но предполагается, что выражение `concatWithSeparator(sep[,exp1, exp2, ... ]) → result` является инъективной функцией. Функция называется инъективной, если она возвращает разные результаты для разных аргументов. Может использоваться для оптимизации `GROUP BY`. @@ -756,12 +756,12 @@ concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ]) **Аргументы** -* `sep` — Разделитель. [`const String`](/sql-reference/data-types/string) или [`const FixedString`](/sql-reference/data-types/fixedstring) -* `exp1, exp2, ...` — Выражения для конкатенации. Аргументы, которые не относятся к типу `String` или `FixedString`, преобразуются в строки с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы типов, отличных от String/FixedString. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) +* `sep` — используемый разделитель. [`const String`](/sql-reference/data-types/string) или [`const FixedString`](/sql-reference/data-types/fixedstring) +* `exp1, exp2, ...` — выражения для конкатенации. Аргументы, которые не относятся к типам `String` или `FixedString`, преобразуются в строки с использованием их сериализации по умолчанию. Поскольку это снижает производительность, не рекомендуется использовать аргументы не типа String/FixedString. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) **Возвращаемое значение** -Возвращает строку, полученную конкатенацией аргументов. Если любое из значений аргументов равно `NULL`, функция возвращает `NULL`. [`String`](/sql-reference/data-types/string) +Возвращает строку, созданную конкатенацией аргументов. Если какое-либо из значений аргументов равно `NULL`, функция возвращает `NULL`. [`String`](/sql-reference/data-types/string) **Примеры** @@ -800,14 +800,14 @@ GROUP BY concatWithSeparatorAssumeInjective('-', first_name, last_name); ## conv {#conv} -Появилась в версии: v1.1 +Добавлена в версии v1.1 Преобразует числа между различными системами счисления. Функция преобразует число из одной системы счисления в другую. Поддерживаются системы счисления с основанием от 2 до 36. Для оснований больше 10 используются буквы A–Z (без учета регистра) для представления цифр 10–35. -Эта функция совместима с функцией MySQL CONV(). +Эта функция совместима с функцией CONV() из MySQL. **Синтаксис** @@ -817,7 +817,7 @@ conv(number, from_base, to_base) **Аргументы** -* `number` — число для преобразования; может быть строкой или числом. - `from_base` — исходная система счисления (2-36); должен быть целым числом. - `to_base` — целевая система счисления (2-36); должен быть целым числом. +* `number` — число для преобразования. Может быть строкой или числом. - `from_base` — основание исходной системы счисления (2–36). Должно быть целым числом. - `to_base` — основание целевой системы счисления (2–36). Должно быть целым числом. **Возвращаемое значение** @@ -825,7 +825,7 @@ conv(number, from_base, to_base) **Примеры** -**Преобразование из десятичной системы в двоичную** +**Преобразование десятичного числа в двоичное** ```sql title=Query SELECT conv('10', 10, 2) @@ -845,7 +845,7 @@ SELECT conv('FF', 16, 10) 255 ``` -**Преобразование с отрицательным значением** +**Преобразование с отрицательным числом** ```sql title=Query SELECT conv('-1', 10, 16) @@ -867,9 +867,9 @@ SELECT conv('1010', 2, 8) ## convertCharset {#convertCharset} -Появилась в версии v1.1 +Появилась в версии: v1.1 -Возвращает строку `s`, перекодированную из кодировки `from` в кодировку `to`. +Возвращает строку `s`, преобразованную из кодировки `from` в кодировку `to`. **Синтаксис** @@ -880,8 +880,8 @@ convertCharset(s, from, to) **Аргументы** * `s` — входная строка. [`String`](/sql-reference/data-types/string) -* `from` — исходная кодировка символов. [`String`](/sql-reference/data-types/string) -* `to` — целевая кодировка символов. [`String`](/sql-reference/data-types/string) +* `from` — исходная кодировка. [`String`](/sql-reference/data-types/string) +* `to` — целевая кодировка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -903,7 +903,7 @@ SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1'); ## damerauLevenshteinDistance {#damerauLevenshteinDistance} -Добавлена в: v24.1 +Введена в версии: v24.1 Вычисляет [расстояние Дамерау — Левенштейна](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) между двумя байтовыми строками. @@ -920,7 +920,7 @@ damerauLevenshteinDistance(s1, s2) **Возвращаемое значение** -Возвращает расстояние Дамерау—Левенштейна между двумя строками. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает расстояние Дамерау–Левенштейна между двумя строками. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -940,7 +940,7 @@ SELECT damerauLevenshteinDistance('clickhouse', 'mouse') Добавлена в версии: v23.9 -Преобразует HTML-сущности в строке в соответствующие символы. +Декодирует HTML-сущности в строке, преобразуя их в соответствующие символы. **Синтаксис** @@ -954,7 +954,7 @@ decodeHTMLComponent(s) **Возвращаемое значение** -Возвращает строку с декодированными HTML-сущностями. [`String`](/sql-reference/data-types/string) +Возвращает строку, в которой HTML-сущности декодированы. [`String`](/sql-reference/data-types/string) **Примеры** @@ -984,11 +984,11 @@ decodeXMLComponent(s) **Аргументы** -* `s` — Строка, содержащая XML-сущности для декодирования. [`String`](/sql-reference/data-types/string) +* `s` — строка, содержащая XML-сущности для декодирования. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает переданную строку с декодированными XML-сущностями. [`String`](/sql-reference/data-types/string) +Возвращает исходную строку с декодированными XML-сущностями. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1006,7 +1006,7 @@ SELECT decodeXMLComponent('<tag>Hello & World</tag>') ## editDistance {#editDistance} -Введена в версии: v23.9 +Впервые представлена в: v23.9 Вычисляет [редакционное расстояние](https://en.wikipedia.org/wiki/Edit_distance) между двумя байтовыми строками. @@ -1020,8 +1020,8 @@ editDistance(s1, s2) **Аргументы** -* `s1` — Первая входная строка. [`String`](/sql-reference/data-types/string) -* `s2` — Вторая входная строка. [`String`](/sql-reference/data-types/string) +* `s1` — первая входная строка. [`String`](/sql-reference/data-types/string) +* `s2` — вторая входная строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -1043,7 +1043,7 @@ SELECT editDistance('clickhouse', 'mouse') ## editDistanceUTF8 {#editDistanceUTF8} -Добавлена в версии v24.6 +Появилась в версии: v24.6 Вычисляет [редакционное расстояние](https://en.wikipedia.org/wiki/Edit_distance) между двумя строками в кодировке UTF-8. @@ -1057,12 +1057,12 @@ editDistanceUTF8(s1, s2) **Аргументы** -* `s1` — Первая входная строка. [`String`](/sql-reference/data-types/string) -* `s2` — Вторая входная строка. [`String`](/sql-reference/data-types/string) +* `s1` — первая входная строка. [`String`](/sql-reference/data-types/string) +* `s2` — вторая входная строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает расстояние Левенштейна между двумя строками в кодировке UTF-8. [`UInt64`](/sql-reference/data-types/int-uint) +Возвращает редакционное расстояние между двумя строками в кодировке UTF-8. [`UInt64`](/sql-reference/data-types/int-uint) **Примеры** @@ -1082,7 +1082,7 @@ SELECT editDistanceUTF8('我是谁', '我是我') Добавлена в версии v21.1 -Экранирует символы строки для помещения её в текстовый узел или атрибут XML. +Экранирует символы в строке, чтобы поместить её в текстовый узел или атрибут XML. **Синтаксис** @@ -1109,16 +1109,16 @@ SELECT ``` ```response title=Response -┌─оригинал───────────────────┬─xml_кодировка────────────────────────────────────────┐ -│ Привет & "Мир" │ <tag>Привет & "Мир"</tag> │ +┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐ +│ Hello & "World" │ <tag>Hello & "World"</tag> │ └────────────────────────────┴──────────────────────────────────────────────────────┘ ``` ## endsWith {#endsWith} -Введена в версии: v1.1 +Впервые появилась в версии v1.1. -Проверяет, заканчивается ли строка указанным суффиксом. +Проверяет, оканчивается ли строка указанным суффиксом. **Синтаксис** @@ -1128,8 +1128,8 @@ endsWith(s, suffix) **Аргументы** -* `s` — Строка для проверки. [`String`](/sql-reference/data-types/string) -* `suffix` — Суффикс, который нужно проверить. [`String`](/sql-reference/data-types/string) +* `s` — строка для проверки. [`String`](/sql-reference/data-types/string) +* `suffix` — суффикс, на наличие которого выполняется проверка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -1151,9 +1151,9 @@ SELECT endsWith('ClickHouse', 'House'); ## endsWithCaseInsensitive {#endsWithCaseInsensitive} -Добавлена в версии v25.9 +Впервые появилась в версии: v25.9 -Проверяет, оканчивается ли строка на указанный суффикс без учета регистра. +Проверяет, оканчивается ли строка заданным суффиксом без учета регистра. **Синтаксис** @@ -1164,11 +1164,11 @@ endsWithCaseInsensitive(s, suffix) **Аргументы** * `s` — строка для проверки. [`String`](/sql-reference/data-types/string) -* `suffix` — суффикс для проверки (независимо от регистра). [`String`](/sql-reference/data-types/string) +* `suffix` — суффикс для проверки без учета регистра. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает `1`, если `s` оканчивается на `suffix` независимо от регистра, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если `s` оканчивается на `suffix` без учета регистра, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -1201,11 +1201,11 @@ endsWithCaseInsensitiveUTF8(s, suffix) **Аргументы** * `s` — строка для проверки. [`String`](/sql-reference/data-types/string) -* `suffix` — суффикс для проверки (сравнение без учёта регистра). [`String`](/sql-reference/data-types/string) +* `suffix` — суффикс для проверки без учета регистра. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает `1`, если `s` заканчивается на `suffix` при сравнении без учёта регистра, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если `s` оканчивается на `suffix` без учета регистра, в противном случае — `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -1225,9 +1225,9 @@ SELECT endsWithCaseInsensitiveUTF8('данных', 'ых'); Добавлена в: v23.8 -Возвращает, оканчивается ли строка `s` суффиксом `suffix`. +Возвращает, заканчивается ли строка `s` суффиксом `suffix`. Предполагается, что строка содержит корректный текст в кодировке UTF-8. -Если это предположение нарушено, исключение не выбрасывается, а результат не определен. +Если это предположение нарушено, исключение не выбрасывается, и результат не определён. **Синтаксис** @@ -1237,12 +1237,12 @@ endsWithUTF8(s, suffix) **Аргументы** -* `s` — Строка для проверки. [`String`](/sql-reference/data-types/string) -* `suffix` — Суффикс для проверки. [`String`](/sql-reference/data-types/string) +* `s` — строка, которую нужно проверить. [`String`](/sql-reference/data-types/string) +* `suffix` — суффикс, на который выполняется проверка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает `1`, если `s` оканчивается на `suffix`, в противном случае — `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если `s` оканчивается на `suffix`, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -1260,19 +1260,19 @@ SELECT endsWithUTF8('данных', 'ых'); ## extractTextFromHTML {#extractTextFromHTML} -Появилась в версии: v21.3 +Впервые появилась в: v21.3 Извлекает текстовое содержимое из HTML или XHTML. -Эта функция удаляет HTML‑теги, комментарии и элементы script/style, оставляя только текст. Она выполняет: +Эта функция удаляет HTML‑теги, комментарии и элементы script/style, оставляя только текстовое содержимое. Она выполняет: -* удаление всех HTML/XML‑тегов; -* удаление комментариев (``); -* удаление элементов script и style вместе с их содержимым; -* обработку CDATA‑секций (копируются дословно); -* корректную обработку и нормализацию пробелов. +* Удаление всех HTML/XML‑тегов +* Удаление комментариев (``) +* Удаление элементов script и style вместе с их содержимым +* Обработку секций CDATA (копируются без изменений) +* Корректную обработку и нормализацию пробельных символов -Примечание: HTML‑сущности не декодируются и при необходимости должны обрабатываться отдельной функцией. +Примечание: HTML‑сущности не декодируются, при необходимости их следует обрабатывать отдельной функцией. **Синтаксис** @@ -1282,11 +1282,11 @@ extractTextFromHTML(html) **Аргументы** -* `html` — строка, содержащая HTML‑контент, из которого извлекается текст. [`String`](/sql-reference/data-types/string) +* `html` — строка с HTML‑содержимым, из которого нужно извлечь текст. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает извлечённый текст с нормализованными пробельными символами. [`String`](/sql-reference/data-types/string) +Возвращает извлечённый текст с нормализованными пробелами. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1295,9 +1295,9 @@ extractTextFromHTML(html) ```sql title=Query SELECT extractTextFromHTML(' - Заголовок страницы + Page Title -

Привет Мир!

+

Hello World!

@@ -1313,7 +1313,7 @@ SELECT extractTextFromHTML(' ## firstLine {#firstLine} -Добавлена в версии v23.7 +Добавлена в версии: v23.7 Возвращает первую строку многострочного текста. @@ -1329,7 +1329,7 @@ firstLine(s) **Возвращаемое значение** -Возвращает первую строку из входной строки или всю строку, если во входной строке нет разделителей строк. [`String`](/sql-reference/data-types/string) +Возвращает первую строку во входной строке или всю строку, если в ней нет разделителей строк. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1347,10 +1347,10 @@ SELECT firstLine('foo\\nbar\\nbaz') ## idnaDecode {#idnaDecode} -Добавлена в версии: v24.1 +Появилась в версии: v24.1 -Возвращает представление доменного имени в Юникоде (UTF-8) (алгоритм ToUnicode) в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA). -В случае ошибки (например, из-за некорректного входного значения) возвращается исходная строка. +Возвращает Unicode-представление (UTF-8) доменного имени (алгоритм ToUnicode) в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA). +В случае ошибки (например, из-за некорректного ввода) возвращается исходная строка. Обратите внимание, что повторное применение [`idnaEncode()`](#idnaEncode) и [`idnaDecode()`](#idnaDecode) не обязательно возвращает исходную строку из-за нормализации регистра. **Синтаксис** @@ -1365,7 +1365,7 @@ idnaDecode(s) **Возвращаемое значение** -Возвращает Unicode-представление во входной строки в кодировке UTF-8 в соответствии с механизмом IDNA для этого значения. [`String`](/sql-reference/data-types/string) +Возвращает представление входной строки в Unicode (UTF-8) в соответствии с механизмом IDNA для входного значения. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1383,13 +1383,13 @@ SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de') ## idnaEncode {#idnaEncode} -Впервые представлена в: v24.1 +Появилась в версии v24.1 Возвращает ASCII-представление (алгоритм ToASCII) доменного имени в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA). -Входная строка должна быть в UTF-кодировке и может быть преобразована в ASCII-строку, в противном случае генерируется исключение. +Входная строка должна быть в кодировке UTF и иметь представление в виде ASCII-строки, иначе будет выброшено исключение. :::note -Не выполняется декодирование percent-encoding и удаление табуляций, пробелов или управляющих символов. +Не выполняется percent-decoding и удаление символов табуляции, пробелов или управляющих символов. ::: **Синтаксис** @@ -1422,14 +1422,14 @@ SELECT idnaEncode('straße.münchen.de') ## initcap {#initcap} -Появилась в версии: v23.7 +Впервые появилась в версии: v23.7 Преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. -Словами считаются последовательности буквенно-цифровых символов, разделённые небуквенно-цифровыми символами. +Слова — это последовательности буквенно-цифровых символов, разделённые небуквенно-цифровыми символами. :::note -Поскольку `initcap` преобразует только первую букву каждого слова в верхний регистр, вы можете наблюдать неожиданное поведение для слов, содержащих апострофы или заглавные буквы. -Это ожидаемое поведение, и в настоящее время исправлять его не планируется. +Поскольку `initcap` преобразует в верхний регистр только первую букву каждого слова, вы можете столкнуться с неожиданным поведением для слов, содержащих апострофы или прописные буквы. +Это известная особенность, и в настоящее время планов по её изменению нет. ::: **Синтаксис** @@ -1444,14 +1444,14 @@ initcap(s) **Возвращаемое значение** -Возвращает `s`, в которой первая буква каждого слова преобразована в верхний регистр. [`String`](/sql-reference/data-types/string) +Возвращает `s`, где первая буква каждого слова преобразована в верхний регистр. [`String`](/sql-reference/data-types/string) **Примеры** **Пример использования** ```sql title=Query -SELECT initcap('строительство для быстрого') +SELECT initcap('building for fast') ``` ```response title=Response @@ -1460,7 +1460,7 @@ SELECT initcap('строительство для быстрого') └──────────────────────────────┘ ``` -**Пример известного поведения при работе со словами, содержащими апострофы или заглавные буквы** +**Пример особенностей поведения для слов, содержащих апострофы или заглавные буквы** ```sql title=Query SELECT initcap('John''s cat won''t eat.'); @@ -1474,15 +1474,15 @@ SELECT initcap('John''s cat won''t eat.'); ## initcapUTF8 {#initcapUTF8} -Добавлена в: v23.7 +Добавлено в: v23.7 -Подобно функции [`initcap`](#initcap), `initcapUTF8` преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. -Предполагается, что строка содержит текст в корректной кодировке UTF-8. -Если это предположение нарушается, исключение не выбрасывается, и результат является неопределённым. +Аналогично [`initcap`](#initcap), `initcapUTF8` преобразует первую букву каждого слова в верхний регистр, а остальные — в нижний. +Предполагается, что строка содержит корректный текст в кодировке UTF-8. +Если это предположение нарушено, исключение не выбрасывается, а результат является неопределённым. :::note -Эта функция не определяет язык, поэтому, например, для турецкого результат может быть не совсем корректным (i/İ vs. i/I). -Если длина последовательности байт UTF-8 отличается для верхнего и нижнего регистра одной и той же точки кода (code point), результат для этого символа может быть некорректным. +Эта функция не определяет язык, например, для турецкого результат может быть не совсем корректным (i/İ vs. i/I). +Если длина последовательности байтов UTF-8 отличается для верхнего и нижнего регистра одной и той же кодовой точки, результат для этой кодовой точки может быть некорректным. ::: **Синтаксис** @@ -1497,7 +1497,7 @@ initcapUTF8(s) **Возвращаемое значение** -Возвращает `s` с первой буквой каждого слова, преобразованной в верхний регистр. [`String`](/sql-reference/data-types/string) +Возвращает строку `s`, в которой первая буква каждого слова преобразована в верхний регистр. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1515,9 +1515,9 @@ SELECT initcapUTF8('не тормозит') ## isValidASCII {#isValidASCII} -Добавлено в: v25.9 +Добавлена в версии v25.9 -Возвращает 1, если входной String или FixedString содержит только ASCII-байты (0x00–0x7F), иначе 0. +Возвращает 1, если входной `String` или `FixedString` содержит только байты ASCII (0x00–0x7F), иначе — 0. **Синтаксис** @@ -1528,7 +1528,7 @@ SELECT initcapUTF8('не тормозит') **Аргументы** -* Нет. +* Нет аргументов. **Возвращаемое значение** @@ -1545,9 +1545,9 @@ SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii ## isValidUTF8 {#isValidUTF8} -Добавлена в версии: v20.1 +Введена в версии: v20.1 -Проверяет, представляет ли набор байтов корректный текст в кодировке UTF-8. +Проверяет, является ли последовательность байт корректным текстом в кодировке UTF-8. **Синтаксис** @@ -1561,14 +1561,14 @@ isValidUTF8(s) **Возвращаемое значение** -Возвращает `1`, если набор байтов представляет собой корректный UTF-8-кодированный текст, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если последовательность байтов представляет собой корректный текст в кодировке UTF-8, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** **Пример использования** ```sql title=Query -SELECT isValidUTF8('\\xc3\\xb1') AS валидный, isValidUTF8('\\xc3\\x28') AS невалидный +SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid ``` ```response title=Response @@ -1579,9 +1579,9 @@ SELECT isValidUTF8('\\xc3\\xb1') AS валидный, isValidUTF8('\\xc3\\x28') ## jaroSimilarity {#jaroSimilarity} -Добавлена в версии: v24.1 +Введена в версии: v24.1 -Вычисляет [Jaro similarity](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) между двумя байтовыми строками. +Вычисляет [сходство по метрике Jaro](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity) между двумя байтовыми строками. **Синтаксис** @@ -1596,7 +1596,7 @@ jaroSimilarity(s1, s2) **Возвращаемое значение** -Возвращает меру сходства Джаро между двумя строками. [`Float64`](/sql-reference/data-types/float) +Возвращает коэффициент сходства Джаро для двух строк. [`Float64`](/sql-reference/data-types/float) **Примеры** @@ -1614,9 +1614,9 @@ SELECT jaroSimilarity('clickhouse', 'click') ## jaroWinklerSimilarity {#jaroWinklerSimilarity} -Добавлена в версии v24.1 +Введена в версии: v24.1 -Вычисляет [сходство Джаро–Винклера](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance) между двумя байтовыми строками. +Вычисляет [коэффициент сходства Джаро — Винклера](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance) между двумя байтовыми строками. **Синтаксис** @@ -1626,12 +1626,12 @@ jaroWinklerSimilarity(s1, s2) **Аргументы** -* `s1` — первая входная строка. [`String`](/sql-reference/data-types/string) -* `s2` — вторая входная строка. [`String`](/sql-reference/data-types/string) +* `s1` — Первая входная строка. [`String`](/sql-reference/data-types/string) +* `s2` — Вторая входная строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает сходство Джаро — Винклера между двумя строками. [`Float64`](/sql-reference/data-types/float) +Возвращает меру сходства Jaro–Winkler между двумя строками. [`Float64`](/sql-reference/data-types/float) **Примеры** @@ -1649,9 +1649,9 @@ SELECT jaroWinklerSimilarity('clickhouse', 'click') ## left {#left} -Введена в версии: v22.1 +Впервые появилась в: v22.1 -Возвращает подстроку строки `s` со смещением `offset` от левого края. +Возвращает подстроку из строки `s` с указанным `offset`, считая от левого края. **Синтаксис** @@ -1662,7 +1662,7 @@ left(s, offset) **Аргументы** * `s` — Строка, из которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — Количество байт смещения. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `offset` — Величина смещения в байтах. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -1670,7 +1670,7 @@ left(s, offset) * Для положительного `offset` — подстроку `s` длиной `offset` байт, начиная с левого края строки. * Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная с левого края строки. -* Пустую строку, если `length` равен `0`. +* Пустую строку, если `length(s)` равно `0`. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1685,7 +1685,7 @@ SELECT left('Hello World', 5) Hello ``` -**Отрицательный сдвиг** +**Отрицательное смещение** ```sql title=Query SELECT left('Hello World', -6) @@ -1697,9 +1697,9 @@ Hello ## leftPad {#leftPad} -Добавлена в: v21.8 +Добавлена в версии: v21.8 -Дополняет строку слева пробелами или указанной строкой (при необходимости многократно) до тех пор, пока её длина не достигнет заданного значения `length`. +Дополняет строку слева пробелами или указанной строкой (повторяя её при необходимости) до тех пор, пока результирующая строка не достигнет заданной `length`. **Синтаксис** @@ -1707,17 +1707,17 @@ Hello leftPad(string, length[, pad_string]) ``` -**Псевдонимы**: `lpad` +**Синонимы**: `lpad` **Аргументы** * `string` — Входная строка, которую нужно дополнить. [`String`](/sql-reference/data-types/string) -* `length` — Длина результирующей строки. Если значение меньше длины входной строки, входная строка укорачивается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — Необязательный аргумент. Строка, которой дополняется входная строка. Если не указан, входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) +* `length` — Длина результирующей строки. Если значение меньше длины входной строки, то входная строка обрезается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — Необязательный параметр. Строка, которой дополняется входная строка. Если параметр не задан, входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает дополненную слева строку заданной длины. [`String`](/sql-reference/data-types/string) +Возвращает строку заданной длины, дополненную слева. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1735,10 +1735,10 @@ SELECT leftPad('abc', 7, '*'), leftPad('def', 7) ## leftPadUTF8 {#leftPadUTF8} -Введена в версии: v21.8 +Добавлена в версии: v21.8 -Дополняет строку в кодировке UTF8 слева пробелами или указанной строкой (при необходимости несколько раз), пока результирующая строка не достигнет заданной длины. -В отличие от [`leftPad`](#leftPad), который измеряет длину строки в байтах, здесь длина строки измеряется в кодовых точках. +Дополняет строку в кодировке UTF-8 слева пробелами или указанной строкой (при необходимости многократно), пока результирующая строка не достигнет заданной длины. +В отличие от [`leftPad`](#leftPad), где длина строки измеряется в байтах, здесь длина строки измеряется в кодовых точках. **Синтаксис** @@ -1748,9 +1748,9 @@ leftPadUTF8(string, length[, pad_string]) **Аргументы** -* `string` — Входная строка, которую необходимо дополнить. [`String`](/sql-reference/data-types/string) -* `length` — Длина результирующей строки. Если значение меньше длины входной строки, то входная строка укорачивается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — Необязательный параметр. Строка, которой дополняется входная строка. Если параметр не указан, входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) +* `string` — входная строка, которую необходимо дополнить. [`String`](/sql-reference/data-types/string) +* `length` — длина результирующей строки. Если значение меньше длины входной строки, то входная строка укорачивается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — необязательный параметр. Строка, которой дополняется входная строка. Если параметр не указан, входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -1772,9 +1772,9 @@ SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7) ## leftUTF8 {#leftUTF8} -Добавлена в: v22.1 +Добавлено в версии: v22.1 -Возвращает подстроку строки `s` в кодировке UTF-8 с заданным `offset`, начиная слева. +Возвращает подстроку строки в кодировке UTF-8 `s` с указанным смещением `offset`, начиная с начала строки (слева). **Синтаксис** @@ -1784,15 +1784,15 @@ leftUTF8(s, offset) **Аргументы** -* `s` — строка в кодировке UTF-8, для которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — количество байт смещения. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `s` — Строка в кодировке UTF-8, из которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) +* `offset` — Количество байт смещения. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** Возвращает: -* Для положительного `offset` — подстроку `s` длиной `offset` байт, начиная от начала строки.\n" -* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная от начала строки.\n" +* Для положительного `offset` — подстроку `s` длиной `offset` байт, начиная с левой части строки. +* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная с левой части строки. * Пустую строку, если `length` равно 0. [`String`](/sql-reference/data-types/string) @@ -1820,11 +1820,11 @@ SELECT leftUTF8('Привет', -4) ## lengthUTF8 {#lengthUTF8} -Появилась в версии: v1.1 +Впервые появилась в версии v1.1 Возвращает длину строки в кодовых точках Юникода, а не в байтах или символах. Предполагается, что строка содержит корректный текст в кодировке UTF-8. -Если это предположение нарушено, исключение не генерируется, а результат неопределён. +Если это предположение нарушено, исключение не выбрасывается, и результат не определён. **Синтаксис** @@ -1836,7 +1836,7 @@ lengthUTF8(s) **Аргументы** -* `s` — строка, содержащая корректный текст в кодировке UTF-8. [`String`](/sql-reference/data-types/string) +* `s` — строка, содержащая текст в корректной кодировке UTF-8. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -1858,9 +1858,9 @@ SELECT lengthUTF8('Здравствуй, мир!') ## lower {#lower} -Впервые появилась в версии: v1.1 +Появилась в версии: v1.1 -Преобразует ASCII-строку в нижний регистр. +Преобразует строку в кодировке ASCII в нижний регистр. **Синтаксис** @@ -1872,11 +1872,11 @@ lower(s) **Аргументы** -* `s` — строка для преобразования в нижний регистр. [`String`](/sql-reference/data-types/string) +* `s` — строка, которую нужно преобразовать к нижнему регистру. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку `s` в нижнем регистре. [`String`](/sql-reference/data-types/string) +Возвращает строку `s`, преобразованную к нижнему регистру. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1894,9 +1894,9 @@ SELECT lower('CLICKHOUSE') ## lowerUTF8 {#lowerUTF8} -Добавлена в: v1.1 +Введена в версии: v1.1 -Преобразует строку в нижний регистр, предполагая, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, а результат не определён. +Преобразует строку к нижнему регистру, предполагая, что строка содержит корректный текст в кодировке UTF-8. Если это предположение нарушено, исключение не выбрасывается, и результат неопределён. **Синтаксис** @@ -1914,7 +1914,7 @@ lowerUTF8(input) **Примеры** -**first** +**Первый** ```sql title=Query SELECT lowerUTF8('München') as Lowerutf8; @@ -1926,7 +1926,7 @@ münchen ## normalizeUTF8NFC {#normalizeUTF8NFC} -Добавлена в: v21.11 +Добавлена в версии v21.11 Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). @@ -1942,7 +1942,7 @@ normalizeUTF8NFC(str) **Возвращаемое значение** -Возвращает строку в нормальной форме NFC (NFC-normalized) для UTF-8. [`String`](/sql-reference/data-types/string) +Возвращает строку UTF-8 в нормализованной форме NFC. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1950,7 +1950,7 @@ normalizeUTF8NFC(str) ```sql title=Query SELECT -'é' AS original, -- e + комбинируемый знак акута (U+0065 + U+0301) +'é' AS original, -- e + combining acute accent (U+0065 + U+0301) length(original), normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9) length(nfc_normalized); @@ -1964,9 +1964,9 @@ length(nfc_normalized); ## normalizeUTF8NFD {#normalizeUTF8NFD} -Добавлена в версии v21.11 +Впервые появилась в версии v21.11. -Нормализует строку в кодировке UTF-8 в соответствии с [нормальной формой NFD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). +Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). **Синтаксис** @@ -1980,7 +1980,7 @@ normalizeUTF8NFD(str) **Возвращаемое значение** -Возвращает строку в нормализованной форме NFD для UTF-8. [`String`](/sql-reference/data-types/string) +Возвращает строку в кодировке UTF-8 в нормализованной форме NFD. [`String`](/sql-reference/data-types/string) **Примеры** @@ -1990,7 +1990,7 @@ normalizeUTF8NFD(str) SELECT 'é' AS original, -- é (U+00E9) length(original), - normalizeUTF8NFD('é') AS nfd_normalized, -- e + комбинируемый акут (U+0065 + U+0301) + normalizeUTF8NFD('é') AS nfd_normalized, -- e + combining acute (U+0065 + U+0301) length(nfd_normalized); ``` @@ -2002,9 +2002,9 @@ SELECT ## normalizeUTF8NFKC {#normalizeUTF8NFKC} -Появилась в версии v21.11 +Добавлена в версии: v21.11 -Нормализует строку UTF‑8 в соответствии с [нормальной формой NFKC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). +Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFKC](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). **Синтаксис** @@ -2018,7 +2018,7 @@ normalizeUTF8NFKC(str) **Возвращаемое значение** -Возвращает строку в нормализованной форме NFKC в кодировке UTF-8. [`String`](/sql-reference/data-types/string) +Возвращает нормализованную по NFKC форму строки в кодировке UTF-8. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2026,8 +2026,8 @@ normalizeUTF8NFKC(str) ```sql title=Query SELECT - '① ② ③' AS original, -- Символы чисел в кружках - normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- Преобразует в 1 2 3 + '① ② ③' AS original, -- Circled number characters + normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- Converts to 1 2 3 ``` ```response title=Response @@ -2038,9 +2038,9 @@ SELECT ## normalizeUTF8NFKD {#normalizeUTF8NFKD} -Добавлено в версии v21.11 +Добавлена в: v21.11 -Нормализует строку в кодировке UTF-8 в соответствии с [формой нормализации NFKD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). +Нормализует строку UTF-8 в соответствии с [формой нормализации NFKD](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms). **Синтаксис** @@ -2054,7 +2054,7 @@ normalizeUTF8NFKD(str) **Возвращаемое значение** -Возвращает строку в нормализованной форме NFKD исходной UTF-8-строки. [`String`](/sql-reference/data-types/string) +Возвращает строку в нормализованной форме NFKD в кодировке UTF-8. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2062,8 +2062,8 @@ normalizeUTF8NFKD(str) ```sql title=Query SELECT - 'H₂O²' AS original, -- H + индекс 2 внизу + O + индекс 2 вверху - normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- Преобразует в H 2 O 2 + 'H₂O²' AS original, -- H + subscript 2 + O + superscript 2 + normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- Converts to H 2 O 2 ``` ```response title=Response @@ -2074,10 +2074,10 @@ SELECT ## punycodeDecode {#punycodeDecode} -Добавлено в версии: v24.1 +Добавлена в версии: v24.1 Возвращает исходный текст в кодировке UTF-8 для строки, закодированной в формате [Punycode](https://en.wikipedia.org/wiki/Punycode). -Если передана некорректная строка в кодировке Punycode, генерируется исключение. +Если передана некорректная строка в формате Punycode, выбрасывается исключение. **Синтаксис** @@ -2087,11 +2087,11 @@ punycodeDecode(s) **Аргументы** -* `s` — строка в кодировке Punycode. [`String`](/sql-reference/data-types/string) +* `s` — строка, закодированная в Punycode. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает исходное текстовое значение аргумента. [`String`](/sql-reference/data-types/string) +Возвращает исходную строку для входного значения. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2109,10 +2109,10 @@ SELECT punycodeDecode('Mnchen-3ya') ## punycodeEncode {#punycodeEncode} -Появилась в: v24.1 +Впервые появилась в версии v24.1. -Возвращает представление строки в кодировке [Punycode](https://en.wikipedia.org/wiki/Punycode). -Строка должна быть закодирована в UTF-8, иначе поведение не определено. +Возвращает представление строки в формате [Punycode](https://en.wikipedia.org/wiki/Punycode). +Строка должна быть закодирована в UTF-8, в противном случае поведение функции не определено. **Синтаксис** @@ -2126,7 +2126,7 @@ punycodeEncode(s) **Возвращаемое значение** -Возвращает представление входного значения в Punycode. [`String`](/sql-reference/data-types/string) +Возвращает Punycode-представление входного значения. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2144,9 +2144,9 @@ SELECT punycodeEncode('München') ## regexpExtract {#regexpExtract} -Впервые появился в: v23.2 +Впервые появилась в: v23.2 -Извлекает первую подстроку в `haystack`, которая соответствует шаблону регулярного выражения и указанному индексу группы. +Извлекает из `haystack` первую подстроку, которая соответствует шаблону регулярного выражения и указанному индексу группы в регулярном выражении. **Синтаксис** @@ -2158,13 +2158,13 @@ regexpExtract(haystack, pattern[, index]) **Аргументы** -* `haystack` — Строка, в которой ищется шаблон регулярного выражения. [`String`](/sql-reference/data-types/string) -* `pattern` — Строка, регулярное выражение. `pattern` может содержать несколько групп регулярного выражения, `index` указывает, какую группу извлечь. Индекс 0 означает совпадение со всем регулярным выражением. [`const String`](/sql-reference/data-types/string) -* `index` — Необязательный параметр. Целое число больше или равно 0, по умолчанию — 1. Определяет, какую группу регулярного выражения извлечь. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `haystack` — Строка, в которой будет выполняться поиск по шаблону регулярного выражения. [`String`](/sql-reference/data-types/string) +* `pattern` — Строка, шаблон регулярного выражения. `pattern` может содержать несколько групп регулярного выражения, `index` указывает, какую группу извлечь. Индекс 0 означает совпадение со всем регулярным выражением. [`const String`](/sql-reference/data-types/string) +* `index` — Необязательный. Целое число больше либо равно 0, по умолчанию 1. Определяет, какую группу регулярного выражения извлечь. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает строку с совпадением. [`String`](/sql-reference/data-types/string) +Возвращает строку с найденным совпадением. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2186,9 +2186,9 @@ SELECT ## repeat {#repeat} -Введена в версии v20.1 +Добавлена в версии: v20.1 -Повторяет строку заданное количество раз. +Повторяет строку указанное количество раз, конкатенируя её саму с собой. **Синтаксис** @@ -2203,7 +2203,7 @@ repeat(s, n) **Возвращаемое значение** -Строка, содержащая строку `s`, повторённую `n` раз. Если `n` отрицательное, функция возвращает пустую строку. [`String`](/sql-reference/data-types/string) +Строка, содержащая `s`, повторённую `n` раз. Если `n` — отрицательное число, функция возвращает пустую строку. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2221,11 +2221,11 @@ SELECT repeat('abc', 10) ## reverseUTF8 {#reverseUTF8} -Добавлено в: v1.1 +Добавлено в версии: v1.1 -Разворачивает последовательность кодовых точек Unicode в строке. +Обращает порядок кодовых точек Unicode в строке. Предполагается, что строка содержит корректный текст в кодировке UTF-8. -Если это предположение нарушено, исключение не генерируется, и результат неопределён. +Если это предположение нарушено, исключение не выбрасывается, и результат не определен. **Синтаксис** @@ -2235,11 +2235,11 @@ reverseUTF8(s) **Аргументы** -* `s` — Строка, содержащая текст в кодировке UTF-8. [`String`](/sql-reference/data-types/string) +* `s` — строка, содержащая текст в корректной кодировке UTF-8. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку с последовательностью кодовых точек Unicode в обратном порядке. [`String`](/sql-reference/data-types/string) +Возвращает строку с последовательностью кодовых точек Юникода в обратном порядке. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2255,9 +2255,9 @@ esuoHkcilC ## right {#right} -Появилась в версии v22.1 +Впервые появилась в версии v22.1 -Возвращает подстроку строки `s` с заданным смещением `offset`, отсчитываемым справа. +Возвращает подстроку строки `s` со смещением `offset`, отсчитываемым справа. **Синтаксис** @@ -2267,16 +2267,16 @@ right(s, offset) **Аргументы** -* `s` — Строка, из которой извлекается подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — Величина смещения в байтах. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `s` — Строка, из которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) +* `offset` — Количество байт смещения. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** Возвращает: -* Для положительного `offset` — подстроку `s` длиной `offset` байт, считая с правого края строки. -* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, считая с правого края строки. -* Пустую строку, если значение `length` равно `0`. +* Для положительного `offset` — подстроку `s` длиной `offset` байт, начиная с конца строки. +* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная с конца строки. +* Пустую строку, если `length` равно `0`. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2303,9 +2303,9 @@ lo ## rightPad {#rightPad} -Появилась в версии v21.8 +Введена в версии v21.8. -Дополняет строку справа пробелами или указанной строкой (при необходимости многократно) до тех пор, пока длина результирующей строки не достигнет заданного значения `length`. +Дополняет строку справа пробелами или указанной строкой (при необходимости — многократно) до тех пор, пока её длина не станет равна заданному значению `length`. **Синтаксис** @@ -2317,8 +2317,8 @@ rightPad(string, length[, pad_string]) **Аргументы** -* `string` — Входная строка, которую нужно дополнить. [`String`](/sql-reference/data-types/string) -* `length` — Длина результирующей строки. Если значение меньше длины входной строки, то входная строка укорачивается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `string` — Входная строка, которую необходимо дополнить. [`String`](/sql-reference/data-types/string) +* `length` — Длина результирующей строки. Если значение меньше длины входной строки, входная строка усекается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) * `pad_string` — Необязательный параметр. Строка, которой дополняется входная строка. Если параметр не указан, входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -2341,10 +2341,10 @@ SELECT rightPad('abc', 7, '*'), rightPad('abc', 7) ## rightPadUTF8 {#rightPadUTF8} -Добавлена в версии v21.8 +Впервые добавлена в: v21.8 -Дополняет строку справа пробелами или указанной строкой (при необходимости многократно) до тех пор, пока результирующая строка не достигнет заданной длины. -В отличие от [`rightPad`](#rightPad), который измеряет длину строки в байтах, здесь длина строки измеряется в кодовых точках. +Дополняет строку справа пробелами или указанной строкой (многократно, при необходимости) до тех пор, пока результирующая строка не достигнет заданной длины. +В отличие от [`rightPad`](#rightPad), который измеряет длину строки в байтах, в этой функции длина строки измеряется в кодовых точках. **Синтаксис** @@ -2354,9 +2354,9 @@ rightPadUTF8(string, length[, pad_string]) **Аргументы** -* `string` — Входная строка, которую нужно дополнить. [`String`](/sql-reference/data-types/string) -* `length` — Длина результирующей строки. Если значение меньше длины входной строки, то входная строка укорачивается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — Необязательный параметр. Строка, которой дополняется входная строка. Если не указано, то входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) +* `string` — Входная строка, которую необходимо дополнить. [`String`](/sql-reference/data-types/string) +* `length` — Длина результирующей строки. Если значение меньше длины входной строки, входная строка усекается до `length` символов. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `pad_string` — Необязательный параметр. Строка, которой дополняется входная строка. Если параметр не указан, входная строка дополняется пробелами. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -2378,9 +2378,9 @@ SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7) ## rightUTF8 {#rightUTF8} -Впервые появилась в: v22.1 +Добавлена в версии v22.1 -Возвращает подстроку строки в кодировке UTF‑8 `s` с заданным `offset`, начиная с конца. +Возвращает подстроку строки `s` в кодировке UTF-8, начиная с указанного смещения `offset` от правого края. **Синтаксис** @@ -2390,15 +2390,15 @@ rightUTF8(s, offset) **Аргументы** -* `s` — Строка в кодировке UTF-8, для которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — Смещение в байтах. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `s` — Строка в кодировке UTF-8, из которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) +* `offset` — Количество байт смещения. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** Возвращает: -* Для положительного значения `offset` — подстроку `s` длиной `offset` байт, начиная от правого края строки. -* Для отрицательного значения `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная от правого края строки. +* Для положительного `offset` — подстроку `s` длиной `offset` байт, начиная с конца строки. +* Для отрицательного `offset` — подстроку `s` длиной `length(s) - |offset|` байт, начиная с конца строки. * Пустую строку, если `length` равно `0`. [`String`](/sql-reference/data-types/string) @@ -2426,7 +2426,7 @@ SELECT rightUTF8('Привет', -4) ## soundex {#soundex} -Впервые появилась в версии: v23.4 +Впервые появилась в версии v23.4. Возвращает [код Soundex](https://en.wikipedia.org/wiki/Soundex) для строки. @@ -2460,9 +2460,9 @@ SELECT soundex('aksel') ## space {#space} -Появилась в версии: v23.5 +Появилась в версии v23.5 -Повторяет символ пробела (` `) указанное число раз. +Возвращает строку, состоящую из указанного количества пробелов (` `). **Синтаксис** @@ -2472,11 +2472,11 @@ space(n) **Аргументы** -* `n` — количество повторений символа пробела. [`(U)Int*`](/sql-reference/data-types/int-uint) +* `n` — число повторений пробела. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает строку, в которой пробел повторяется `n` раз. Если `n <= 0`, функция возвращает пустую строку. [`String`](/sql-reference/data-types/string) +Возвращает строку, содержащую пробел, повторённый `n` раз. Если `n <= 0`, функция возвращает пустую строку. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2494,12 +2494,12 @@ SELECT space(3) AS res, length(res); ## sparseGrams {#sparseGrams} -Добавлена в: v25.5 +Впервые представлена в: v25.5 Находит все подстроки заданной строки длиной не менее `n`, -для которых хеши (n-1)-грамм на границах подстроки -строго больше хешей любых (n-1)-грамм внутри подстроки. -Использует `CRC32` в качестве хеш-функции. +для которых хэши `(n-1)`-грамм на границах подстроки +строго больше хэшей любых `(n-1)`-грамм внутри подстроки. +Использует `CRC32` в качестве хэш-функции. **Синтаксис** @@ -2510,12 +2510,12 @@ sparseGrams(s[, min_ngram_length, max_ngram_length]) **Аргументы** * `s` — входная строка. [`String`](/sql-reference/data-types/string) -* `min_ngram_length` — необязательный параметр. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимальное значение — 3. [`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — необязательный параметр. Минимальная длина извлекаемых n-грамм. Минимальное и значение по умолчанию — 3. [`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — необязательный параметр. Максимальная длина извлекаемых n-грамм. Значение по умолчанию — 100. Не должно быть меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает массив извлечённых подстрок. [`Array(String)`](/sql-reference/data-types/array) +Возвращает массив полученных подстрок. [`Array(String)`](/sql-reference/data-types/array) **Примеры** @@ -2533,12 +2533,12 @@ SELECT sparseGrams('alice', 3) ## sparseGramsHashes {#sparseGramsHashes} -Добавлена в: v25.5 +Впервые появилась в версии: v25.5 Находит хэши всех подстрок заданной строки длиной не менее `n`, -для которых хэши (n-1)-грамм на границах подстроки -строго больше хэшей любых (n-1)-грамм внутри подстроки. -Использует `CRC32` в качестве хеш-функции. +для которых хэши (n−1)-грамм на границах подстроки +строго больше хэшей любых (n−1)-грамм внутри подстроки. +Использует `CRC32` в качестве хэш-функции. **Синтаксис** @@ -2550,7 +2550,7 @@ sparseGramsHashes(s[, min_ngram_length, max_ngram_length]) * `s` — входная строка. [`String`](/sql-reference/data-types/string) * `min_ngram_length` — необязательный параметр. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимальное значение — 3. [`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Не должно быть меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -2572,11 +2572,11 @@ SELECT sparseGramsHashes('alice', 3) ## sparseGramsHashesUTF8 {#sparseGramsHashesUTF8} -Появилась в: v25.5 +Появилась в версии: v25.5 -Находит хэши всех подстрок заданной строки в кодировке UTF-8 длиной не менее `n`, для которых хэши (n-1)-грамм на границах подстроки строго больше хэшей любых (n-1)-грамм внутри подстроки. -Ожидает строку в кодировке UTF-8, выбрасывает исключение при некорректной UTF-8-последовательности. -Использует `CRC32` в качестве функции хеширования. +Находит хэши всех подстрок заданной строки в кодировке UTF-8 длиной не менее `n`, таких, что хэши (n-1)-грамм на границах подстроки строго больше хэшей любой (n-1)-граммы внутри подстроки. +Ожидает строку в кодировке UTF-8; при некорректной последовательности UTF-8 выбрасывает исключение. +В качестве хэш-функции использует `CRC32`. **Синтаксис** @@ -2586,13 +2586,13 @@ sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length]) **Аргументы** -* `s` — Входная строка. [`String`](/sql-reference/data-types/string) -* `min_ngram_length` — Необязательный параметр. Минимальная длина извлекаемых n-грамм. Значение по умолчанию и минимальное значение — 3. [`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — Необязательный параметр. Максимальная длина извлекаемых n-грамм. Значение по умолчанию — 100. Не должно быть меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) +* `s` — входная строка. [`String`](/sql-reference/data-types/string) +* `min_ngram_length` — необязательный параметр. Минимальная длина извлекаемой n-граммы. Минимальное и значение по умолчанию — 3. [`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Должно быть не меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает массив CRC32-хэшей выбранных подстрок в кодировке UTF-8. [`Array(UInt32)`](/sql-reference/data-types/array) +Возвращает массив CRC32-хешей выбранных подстрок в кодировке UTF-8. [`Array(UInt32)`](/sql-reference/data-types/array) **Примеры** @@ -2610,11 +2610,11 @@ SELECT sparseGramsHashesUTF8('алиса', 3) ## sparseGramsUTF8 {#sparseGramsUTF8} -Появилась в: v25.5 +Появилась в версии: v25.5 -Находит все подстроки заданной строки в кодировке UTF-8 длиной не менее `n`, для которых хэши (n-1)-грамм на границах подстроки строго больше хэшей любых (n-1)-грамм внутри неё. -Ожидает строку в кодировке UTF-8, выбрасывает исключение при обнаружении некорректной UTF-8-последовательности. -Использует `CRC32` в качестве хэш-функции. +Находит все подстроки заданной строки в кодировке UTF-8 длиной не менее `n`, для которых хеши (n-1)-грамм на границах подстроки строго больше, чем хеши любых (n-1)-грамм внутри подстроки. +Ожидает строку в кодировке UTF-8, выбрасывает исключение в случае некорректной последовательности UTF-8. +Использует `CRC32` как хеш-функцию. **Синтаксис** @@ -2624,9 +2624,9 @@ sparseGramsUTF8(s[, min_ngram_length, max_ngram_length]) **Аргументы** -* `s` — Входная строка. [`String`](/sql-reference/data-types/string) -* `min_ngram_length` — Необязательный аргумент. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимальное значение — 3. [`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — Необязательный аргумент. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Не должно быть меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) +* `s` — входная строка. [`String`](/sql-reference/data-types/string) +* `min_ngram_length` — необязательный параметр. Минимальная длина извлекаемой n-граммы. Значение по умолчанию и минимальное значение — 3. [`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — необязательный параметр. Максимальная длина извлекаемой n-граммы. Значение по умолчанию — 100. Не должно быть меньше `min_ngram_length`. [`UInt*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** @@ -2648,7 +2648,7 @@ SELECT sparseGramsUTF8('алиса', 3) ## startsWith {#startsWith} -Добавлена в версии: v1.1 +Впервые представлена в версии v1.1 Проверяет, начинается ли строка с указанной строки. @@ -2660,8 +2660,8 @@ startsWith(s, prefix) **Аргументы** -* `s` — строка для проверки. [`String`](/sql-reference/data-types/string) -* `prefix` — префикс для проверки. [`String`](/sql-reference/data-types/string) +* `s` — строка, которую нужно проверить. [`String`](/sql-reference/data-types/string) +* `prefix` — префикс, наличие которого проверяется. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -2695,12 +2695,12 @@ startsWithCaseInsensitive(s, prefix) **Аргументы** -* `s` — Строка для проверки. [`String`](/sql-reference/data-types/string) -* `prefix` — Префикс, проверяемый без учета регистра. [`String`](/sql-reference/data-types/string) +* `s` — строка для проверки. [`String`](/sql-reference/data-types/string) +* `prefix` — префикс для проверки без учета регистра. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает `1`, если `s` начинается с `prefix` (сравнение без учета регистра), иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если `s` начинается с префикса `prefix` без учета регистра, иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -2718,11 +2718,11 @@ SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK'); ## startsWithCaseInsensitiveUTF8 {#startsWithCaseInsensitiveUTF8} -Добавлено в v25.9 +Появилась в версии: v25.9 -Проверяет, начинается ли строка с заданного префикса без учета регистра. +Проверяет, начинается ли строка с указанного префикса без учёта регистра. Предполагается, что строка содержит корректный текст в кодировке UTF-8. -Если это предположение нарушено, исключение не выбрасывается, и результат становится неопределённым. +Если это предположение нарушено, исключение не выбрасывается, и результат не определён. **Синтаксис** @@ -2732,12 +2732,12 @@ startsWithCaseInsensitiveUTF8(s, prefix) **Аргументы** -* `s` — Строка для проверки. [`String`](/sql-reference/data-types/string) -* `prefix` — Префикс для проверки без учета регистра. [`String`](/sql-reference/data-types/string) +* `s` — строка для проверки. [`String`](/sql-reference/data-types/string) +* `prefix` — префикс для проверки без учета регистра. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает `1`, если `s` начинается с `prefix` (без учета регистра), иначе `0`. [`UInt8`](/sql-reference/data-types/int-uint) +Возвращает `1`, если `s` начинается с префикса `prefix` без учета регистра, иначе — `0`. [`UInt8`](/sql-reference/data-types/int-uint) **Примеры** @@ -2755,11 +2755,11 @@ SELECT startsWithCaseInsensitiveUTF8('приставка', 'при') ## startsWithUTF8 {#startsWithUTF8} -Добавлена в: v23.8 +Добавлена в версии v23.8 Проверяет, начинается ли строка с указанного префикса. -Предполагается, что строка содержит валидный текст в кодировке UTF-8. -Если это предположение нарушено, исключение не выбрасывается, а результат не определён. +Предполагается, что строка содержит корректный текст в кодировке UTF-8. +Если это предположение нарушено, исключение не выбрасывается, и результат не определён. **Синтаксис** @@ -2770,7 +2770,7 @@ startsWithUTF8(s, prefix) **Аргументы** * `s` — строка, которую нужно проверить. [`String`](/sql-reference/data-types/string) -* `prefix` — префикс, наличие которого проверяется. [`String`](/sql-reference/data-types/string) +* `prefix` — префикс, который нужно проверить. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -2792,9 +2792,9 @@ SELECT startsWithUTF8('приставка', 'при') ## stringBytesEntropy {#stringBytesEntropy} -Добавлена в версии: v25.6 +Введена в: v25.6 -Вычисляет энтропию Шеннона распределения байтов в строке. +Вычисляет энтропию Шеннона по распределению байтов в строке. **Синтаксис** @@ -2826,9 +2826,9 @@ SELECT stringBytesEntropy('Hello, world!') ## stringBytesUniq {#stringBytesUniq} -Добавлена в: v25.6 +Добавлена в версии v25.6 -Считает количество различных байтов в строке. +Считает количество уникальных байтов в строке. **Синтаксис** @@ -2842,7 +2842,7 @@ stringBytesUniq(s) **Возвращаемое значение** -Возвращает количество уникальных байт в строке. [`UInt16`](/sql-reference/data-types/int-uint) +Возвращает количество уникальных байтов в строке. [`UInt16`](/sql-reference/data-types/int-uint) **Примеры** @@ -2860,7 +2860,7 @@ SELECT stringBytesUniq('Hello') ## stringJaccardIndex {#stringJaccardIndex} -Добавлена в версии: v23.11 +Добавлено в версии v23.11 Вычисляет [индекс сходства Жаккара](https://en.wikipedia.org/wiki/Jaccard_index) между двумя байтовыми строками. @@ -2895,7 +2895,7 @@ SELECT stringJaccardIndex('clickhouse', 'mouse') ## stringJaccardIndexUTF8 {#stringJaccardIndexUTF8} -Впервые представлена в: v23.11 +Появилась в версии v23.11. Аналог [`stringJaccardIndex`](#stringJaccardIndex), но для строк в кодировке UTF-8. @@ -2907,12 +2907,12 @@ stringJaccardIndexUTF8(s1, s2) **Аргументы** -* `s1` — первая входная строка в кодировке UTF8. [`String`](/sql-reference/data-types/string) -* `s2` — вторая входная строка в кодировке UTF8. [`String`](/sql-reference/data-types/string) +* `s1` — первая входная строка в кодировке UTF-8. [`String`](/sql-reference/data-types/string) +* `s2` — вторая входная строка в кодировке UTF-8. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает индекс сходства Жаккара между двумя строками UTF8. [`Float64`](/sql-reference/data-types/float) +Возвращает индекс схожести Жаккара между двумя строками в кодировке UTF-8. [`Float64`](/sql-reference/data-types/float) **Примеры** @@ -2933,12 +2933,12 @@ SELECT stringJaccardIndexUTF8('我爱你', '我也爱你') Введена в версии v1.1 Возвращает подстроку строки `s`, начинающуюся с указанного байтового индекса `offset`. -Подсчёт байтов начинается с 1 по следующим правилам: +Подсчёт байт начинается с 1 по следующей логике: * Если `offset` равен `0`, возвращается пустая строка. -* Если `offset` отрицательный, подстрока начинается на `pos` символов от конца строки, а не от начала. +* Если `offset` отрицательный, подстрока начинается на `pos` символов от конца строки, а не от её начала. -Необязательный аргумент `length` задаёт максимальное количество байт, которое может содержать возвращаемая подстрока. +Необязательный аргумент `length` задаёт максимальное количество байт возвращаемой подстроки. **Синтаксис** @@ -2950,13 +2950,13 @@ substring(s, offset[, length]) **Аргументы** -* `s` — Строка, из которой извлекается подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) или [`Enum`](/sql-reference/data-types/enum) +* `s` — Строка, из которой вычисляется подстрока. [`String`](/sql-reference/data-types/string) или [`FixedString`](/sql-reference/data-types/fixedstring) или [`Enum`](/sql-reference/data-types/enum) * `offset` — Начальная позиция подстроки в `s`. [`(U)Int*`](/sql-reference/data-types/int-uint) * `length` — Необязательный параметр. Максимальная длина подстроки. [`(U)Int*`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает подстроку `s` длиной `length` байт, начиная с индекса `offset`. [`String`](/sql-reference/data-types/string) +Возвращает подстроку строки `s` длиной `length` байт, начиная с индекса `offset`. [`String`](/sql-reference/data-types/string) **Примеры** @@ -2974,9 +2974,9 @@ SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1) ## substringIndex {#substringIndex} -Впервые появилась в: v23.7 +Появилась в версии v23.7 -Возвращает подстроку `s`, расположенную перед `count`-м вхождением разделителя `delim`, как в Spark или MySQL. +Возвращает подстроку строки `s`, расположенную перед `count`-м вхождением разделителя `delim`, аналогично Spark или MySQL. **Синтаксис** @@ -2989,12 +2989,12 @@ substringIndex(s, delim, count) **Аргументы** * `s` — Строка, из которой извлекается подстрока. [`String`](/sql-reference/data-types/string) -* `delim` — Разделитель, по которому выполняется разбиение строки. [`String`](/sql-reference/data-types/string) -* `count` — Количество вхождений разделителя, которые нужно посчитать перед извлечением подстроки. Если `count` положительное, возвращается всё слева от последнего разделителя (считая слева). Если `count` отрицательное, возвращается всё справа от последнего разделителя (считая справа). [`UInt`](/sql-reference/data-types/int-uint) или [`Int`](/sql-reference/data-types/int-uint) +* `delim` — Символ-разделитель, по которому выполняется разбиение строки. [`String`](/sql-reference/data-types/string) +* `count` — Количество вхождений разделителя, которое нужно посчитать перед извлечением подстроки. Если `count` положительный, возвращается всё слева от последнего разделителя (при подсчёте слева). Если `count` отрицательный, возвращается всё справа от последнего разделителя (при подсчёте справа). [`UInt`](/sql-reference/data-types/int-uint) или [`Int`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает подстроку строки `s` до `count`-го вхождения `delim`. [`String`](/sql-reference/data-types/string) +Возвращает подстроку из `s` до `count`-го вхождения `delim`. [`String`](/sql-reference/data-types/string) **Примеры** @@ -3012,11 +3012,11 @@ SELECT substringIndex('www.clickhouse.com', '.', 2) ## substringIndexUTF8 {#substringIndexUTF8} -Появилась в версии: v23.7 +Впервые представлена в: v23.7 -Возвращает подстроку `s` до `count`-го вхождения разделителя `delim`, предназначена для работы с Unicode code points. +Возвращает подстроку `s` до `count` вхождений разделителя `delim`, для работы с кодовыми точками Unicode. Предполагается, что строка содержит корректный текст в кодировке UTF-8. -Если это предположение нарушено, исключение не выбрасывается, и результат не определён. +Если это предположение нарушено, исключение не генерируется, и результат не определён. **Синтаксис** @@ -3027,16 +3027,16 @@ substringIndexUTF8(s, delim, count) **Аргументы** * `s` — Строка, из которой извлекается подстрока. [`String`](/sql-reference/data-types/string) -* `delim` — Символ, по которому выполняется разбиение. [`String`](/sql-reference/data-types/string) -* `count` — Количество вхождений разделителя, которые нужно учесть перед извлечением подстроки. Если `count` положительно, возвращается всё слева от последнего разделителя (при подсчёте слева). Если `count` отрицательно, возвращается всё справа от последнего разделителя (при подсчёте справа). [`UInt`](/sql-reference/data-types/int-uint) или [`Int`](/sql-reference/data-types/int-uint) +* `delim` — Символ, по которому выполняется разделение строки. [`String`](/sql-reference/data-types/string) +* `count` — Количество вхождений разделителя, которые нужно учесть перед извлечением подстроки. Если `count` положительное, возвращается всё слева от последнего разделителя (при подсчёте слева). Если `count` отрицательное, возвращается всё справа от последнего разделителя (при подсчёте справа). [`UInt`](/sql-reference/data-types/int-uint) или [`Int`](/sql-reference/data-types/int-uint) **Возвращаемое значение** -Возвращает подстроку `s` до `count` вхождений `delim`. [`String`](/sql-reference/data-types/string) +Возвращает подстроку `s`, расположенную перед `count` вхождениями `delim`. [`String`](/sql-reference/data-types/string) **Примеры** -**Пример UTF-8** +**Пример для UTF-8** ```sql title=Query SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2) @@ -3048,19 +3048,19 @@ www.straßen-in-europa ## substringUTF8 {#substringUTF8} -Введено в: v1.1 +Введена в: v1.1 -Возвращает подстроку строки `s`, которая начинается с указанного байтового смещения `offset` по кодовым точкам Unicode. +Возвращает подстроку строки `s`, которая начинается с указанного байтового индекса `offset` для кодовых точек Юникода. Отсчёт байтов начинается с `1` по следующей логике: * Если `offset` равен `0`, возвращается пустая строка. -* Если `offset` отрицателен, подстрока начинается, отступив `pos` символов от конца строки, а не от её начала. +* Если `offset` отрицательный, подстрока начинается на `pos` символов от конца строки, а не от начала. -Необязательный аргумент `length` задаёт максимальное количество байт, которое может иметь возвращаемая подстрока. +Необязательный аргумент `length` задаёт максимальное количество байтов, которое может иметь возвращаемая подстрока. :::note Эта функция предполагает, что строка содержит корректный текст в кодировке UTF-8. -Если это предположение нарушается, исключение не выбрасывается, и результат неопределён. +Если это предположение нарушено, исключение не генерируется, а результат не определён. ::: **Синтаксис** @@ -3093,10 +3093,10 @@ Täglich grüßt das Murmeltier. grüßt das Murmeltier. grüßt ## toValidUTF8 {#toValidUTF8} -Добавлено в: v20.1 +Добавлена в версии: v20.1 -Преобразует строку в корректную кодировку UTF-8, заменяя любые некорректные символы в кодировке UTF-8 символом замены `�` (U+FFFD). -Если обнаруживается несколько идущих подряд некорректных символов, они заменяются одним символом замены. +Преобразует строку в корректную кодировку UTF-8, заменяя любые недопустимые символы UTF-8 символом-заполнителем `�` (U+FFFD). +Если обнаруживается несколько подряд идущих недопустимых символов, они заменяются одним таким символом. **Синтаксис** @@ -3106,7 +3106,7 @@ toValidUTF8(s) **Аргументы** -* `s` — Произвольная последовательность байтов, представленная объектом типа данных String. [`String`](/sql-reference/data-types/string) +* `s` — Любой набор байтов, представленный объектом типа данных String. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -3129,10 +3129,10 @@ c ## trimBoth {#trimBoth} -Введена в: v20.1 +Впервые представлена в версии v20.1 -Удаляет указанные символы из начала и конца строки. -По умолчанию удаляет распространённые пробельные символы (ASCII). +Удаляет указанные символы с начала и конца строки. +По умолчанию удаляет распространённые пробельные символы ASCII. **Синтаксис** @@ -3144,12 +3144,12 @@ trimBoth(s[, trim_characters]) **Аргументы** -* `s` — Строка для обрезки. [`String`](/sql-reference/data-types/string) -* `trim_characters` — Необязательный параметр. Символы для обрезки. Если не указан, удаляются стандартные пробельные символы. [`String`](/sql-reference/data-types/string) +* `s` — Строка для обрезки по краям. [`String`](/sql-reference/data-types/string) +* `trim_characters` — Необязательный параметр. Символы для обрезки. Если параметр не указан, удаляются стандартные пробельные символы. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку, у которой указанные символы обрезаны с начала и конца. [`String`](/sql-reference/data-types/string) +Возвращает строку с указанными символами, обрезанными с обеих сторон. [`String`](/sql-reference/data-types/string) **Примеры** @@ -3167,10 +3167,10 @@ SELECT trimBoth('$$ClickHouse$$', '$') ## trimLeft {#trimLeft} -Появилась в версии: v20.1 +Впервые представлена в версии v20.1 -Удаляет указанные символы с начала строки. -По умолчанию удаляет распространённые пробельные символы (ASCII). +Удаляет указанные символы в начале строки. +По умолчанию удаляет распространённые пробельные символы ASCII. **Синтаксис** @@ -3183,7 +3183,7 @@ trimLeft(input[, trim_characters]) **Аргументы** * `input` — Строка, из которой нужно удалить символы. [`String`](/sql-reference/data-types/string) -* `trim_characters` — Необязательный параметр. Набор символов для удаления. Если не указан, удаляются распространённые пробельные символы. [`String`](/sql-reference/data-types/string) +* `trim_characters` — Необязательный параметр. Символы, которые нужно удалить. Если не указан, удаляются стандартные пробельные символы. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -3220,12 +3220,12 @@ trimRight(s[, trim_characters]) **Аргументы** -* `s` — Строка для обрезки. [`String`](/sql-reference/data-types/string) -* `trim_characters` — Необязательные символы для обрезки. Если не указано, удаляются обычные пробельные символы. [`String`](/sql-reference/data-types/string) +* `s` — Строка, которую нужно обрезать. [`String`](/sql-reference/data-types/string) +* `trim_characters` — Необязательный набор символов для обрезки. Если не указан, удаляются обычные пробельные символы. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку с указанными символами, удалёнными справа. [`String`](/sql-reference/data-types/string) +Возвращает строку с указанными символами, обрезанными справа. [`String`](/sql-reference/data-types/string) **Примеры** @@ -3243,9 +3243,9 @@ SELECT trimRight('ClickHouse','House'); ## tryBase32Decode {#tryBase32Decode} -Впервые представлена в версии v25.6 +Введена в версии: v25.6 -Принимает строку и декодирует её с использованием схемы кодирования [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6). +Принимает строку и декодирует её, используя кодировку [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6). **Синтаксис** @@ -3255,11 +3255,11 @@ tryBase32Decode(encoded) **Аргументы** -* `encoded` — строковый столбец или константа для декодирования. Если строка не является корректной Base32-строкой, в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) +* `encoded` — строковый столбец или константа для декодирования. Если строка не является корректной строкой в формате Base32, в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку с декодированным значением аргумента. [`String`](/sql-reference/data-types/string) +Возвращает строку, содержащую декодированное значение аргумента. [`String`](/sql-reference/data-types/string) **Примеры** @@ -3271,13 +3271,13 @@ SELECT tryBase32Decode('IVXGG33EMVSA===='); ```response title=Response ┌─tryBase32Decode('IVXGG33EMVSA====')─┐ -│ Закодировано │ +│ Encoded │ └─────────────────────────────────────┘ ``` ## tryBase58Decode {#tryBase58Decode} -Добавлена в версии v22.10 +Добавлена в версии: v22.10 Аналог [`base58Decode`](#base58Decode), но в случае ошибки возвращает пустую строку. @@ -3289,7 +3289,7 @@ tryBase58Decode(encoded) **Аргументы** -* `encoded` — строковый столбец или константа. Если строка не является корректной строкой в кодировке Base58, в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) +* `encoded` — строковый столбец или константа. Если строка не является корректной Base58-строкой, в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -3305,15 +3305,15 @@ SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_i ```response title=Response ┌─res─────┬─res_invalid─┐ -│ Закодировано │ │ +│ Encoded │ │ └─────────┴─────────────┘ ``` ## tryBase64Decode {#tryBase64Decode} -Появилась в версии: v18.16 +Введена в версии: v18.16 -Аналогична [`base64Decode`](#base64Decode), но в случае ошибки возвращает пустую строку. +Аналог функции [`base64Decode`](#base64Decode), но в случае ошибки возвращает пустую строку. **Синтаксис** @@ -3323,7 +3323,7 @@ tryBase64Decode(encoded) **Аргументы** -* `encoded` — столбец или константа типа String для декодирования. Если строка некорректно закодирована в Base64, то в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) +* `encoded` — столбец или константа типа String для декодирования. Если строка не является корректной строкой в кодировке Base64, в случае ошибки функция возвращает пустую строку. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -3345,9 +3345,9 @@ SELECT tryBase64Decode('Y2xpY2tob3VzZQ==') ## tryBase64URLDecode {#tryBase64URLDecode} -Впервые появилось в: v18.16 +Введена в версии v18.16. -Аналогично [`base64URLDecode`](#base64URLDecode), но в случае ошибки возвращает пустую строку. +Подобна [`base64URLDecode`](#base64URLDecode), но в случае ошибки возвращает пустую строку. **Синтаксис** @@ -3357,11 +3357,11 @@ tryBase64URLDecode(encoded) **Аргументы** -* `encoded` — строковый столбец или константа для декодирования. Если строка не является корректной в кодировке Base64, в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) +* `encoded` — строковый столбец или строковая константа для декодирования. Если строка не является корректной Base64-строкой, в случае ошибки возвращается пустая строка. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает строку с декодированным значением аргумента. [`String`](/sql-reference/data-types/string) +Возвращает строку, содержащую декодированное значение аргумента. [`String`](/sql-reference/data-types/string) **Примеры** @@ -3379,10 +3379,10 @@ SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') ## tryIdnaEncode {#tryIdnaEncode} -Введена в версии v24.1 +Добавлена в: v24.1 -Возвращает представление доменного имени в Unicode (UTF-8) по алгоритму ToUnicode в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA). -В случае ошибки функция возвращает пустую строку вместо выбрасывания исключения. +Возвращает представление доменного имени в Unicode (UTF-8) (алгоритм ToUnicode) в соответствии с механизмом [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications) (IDNA). +В случае ошибки возвращает пустую строку вместо выбрасывания исключения. **Синтаксис** @@ -3414,9 +3414,9 @@ SELECT tryIdnaEncode('straße.münchen.de') ## tryPunycodeDecode {#tryPunycodeDecode} -Появилась в версии: v24.1 +Добавлена в версии: v24.1 -Аналог функции `punycodeDecode`, но возвращает пустую строку, если передана некорректная Punycode-строка. +Аналогична `punycodeDecode`, но возвращает пустую строку, если на вход передана недопустимая строка в кодировке Punycode. **Синтаксис** @@ -3426,11 +3426,11 @@ tryPunycodeDecode(s) **Аргументы** -* `s` — строка в кодировке Punycode. [`String`](/sql-reference/data-types/string) +* `s` — строка, закодированная в Punycode. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Возвращает текстовое представление входного значения или пустую строку, если входное значение некорректно. [`String`](/sql-reference/data-types/string) +Возвращает текстовое представление входного значения или пустую строку, если входные данные некорректны. [`String`](/sql-reference/data-types/string) **Примеры** @@ -3448,9 +3448,9 @@ SELECT tryPunycodeDecode('Mnchen-3ya') ## upper {#upper} -Добавлена в версии: v1.1 +Впервые появилась в версии v1.1 -Преобразует символы латинского алфавита в кодировке ASCII в строке в верхний регистр. +Преобразует латинские ASCII-символы в строке в верхний регистр. **Синтаксис** @@ -3462,7 +3462,7 @@ upper(s) **Аргументы** -* `s` — строка для преобразования в верхний регистр. [`String`](/sql-reference/data-types/string) +* `s` — строка, которую необходимо преобразовать в верхний регистр. [`String`](/sql-reference/data-types/string) **Возвращаемое значение** @@ -3486,12 +3486,12 @@ SELECT upper('clickhouse') Введена в версии: v1.1 -Преобразует строку в верхний регистр, предполагая, что строка содержит текст в корректной кодировке UTF-8. -Если это предположение не выполняется, исключение не генерируется, а результат не определён. +Преобразует строку в верхний регистр, предполагая, что строка содержит корректный текст в кодировке UTF-8. +Если это предположение не выполняется, исключение не выбрасывается, а результат не определён. :::note -Эта функция не определяет язык; например, для турецкого результат может быть не совсем корректным (i/İ vs. i/I). -Если длина последовательности байт UTF-8 различается для верхнего и нижнего регистра одной и той же кодовой точки (например, `ẞ` и `ß`), результат может быть некорректен для этой кодовой точки. +Эта функция не определяет язык, поэтому, например, для турецкого результат может быть не полностью корректным (i/İ vs. i/I). +Если длина байтовой последовательности в UTF-8 отличается для верхнего и нижнего регистра одной и той же кодовой точки (например, `ẞ` и `ß`), результат для этой кодовой точки может быть некорректным. ::: **Синтаксис** @@ -3502,11 +3502,11 @@ upperUTF8(s) **Аргументы** -* `s` — тип String (строка). [`String`](/sql-reference/data-types/string) +* `s` — строка типа [`String`](/sql-reference/data-types/string) **Возвращаемое значение** -Значение типа данных String (строка). [`String`](/sql-reference/data-types/string) +Значение типа [`String`](/sql-reference/data-types/string) **Примеры** diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md index 6490e289278..67605d6cf85 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md @@ -7,74 +7,77 @@ title: 'Оператор CHECK TABLE' doc_type: 'reference' --- -Запрос `CHECK TABLE` в ClickHouse используется для проверки целостности данных в конкретной таблице или её партициях. Он контролирует целостность данных путём проверки контрольных сумм и других внутренних структур данных. +Запрос `CHECK TABLE` в ClickHouse используется для проверки конкретной таблицы или её партиций. Он контролирует целостность данных, проверяя контрольные суммы и другие внутренние структуры данных. В частности, он сравнивает фактические размеры файлов с ожидаемыми значениями, которые хранятся на сервере. Если размеры файлов не совпадают с сохранёнными значениями, это означает, что данные повреждены. Это может быть вызвано, например, сбоем системы во время выполнения запроса. :::warning -Запрос `CHECK TABLE` может читать все данные в таблице и занимать значительные ресурсы, что делает его ресурсоёмким. +Запрос `CHECK TABLE` может считывать все данные в таблице и удерживать ресурсы, что делает его ресурсоёмким. Оцените потенциальное влияние на производительность и использование ресурсов перед выполнением этого запроса. -Этот запрос не улучшит производительность системы, и вам не следует выполнять его, если вы не уверены в своих действиях. +Этот запрос не улучшает производительность системы, и вы не должны выполнять его, если не уверены в своих действиях. ::: + + ## Синтаксис {#syntax} -Основной синтаксис запроса выглядит следующим образом: +Основной синтаксис запроса следующий: ```sql -ПРОВЕРИТЬ ТАБЛИЦУ table_name [PARTITION partition_expression | PART part_name] [FORMAT format] [SETTINGS check_query_single_value_result = (0|1) [, other_settings]] +CHECK TABLE table_name [PARTITION partition_expression | PART part_name] [FORMAT format] [SETTINGS check_query_single_value_result = (0|1) [, other_settings]] ``` * `table_name`: Указывает имя таблицы, которую вы хотите проверить. -* `partition_expression`: (Необязательно) Если вы хотите проверить определённый раздел таблицы, используйте это выражение, чтобы указать раздел. -* `part_name`: (Необязательно) Если вы хотите проверить конкретную часть данных в таблице, добавьте строковый литерал, чтобы указать её имя. +* `partition_expression`: (Необязательно) Если вы хотите проверить конкретную партицию таблицы, используйте это выражение, чтобы указать партицию. +* `part_name`: (Необязательно) Если вы хотите проверить конкретную часть (part) в таблице, добавьте строковый литерал, чтобы указать имя части. * `FORMAT format`: (Необязательно) Позволяет указать формат вывода результата. * `SETTINGS`: (Необязательно) Позволяет задать дополнительные настройки. - * **`check_query_single_value_result`**: (Необязательно) Эта настройка позволяет переключаться между детализированным результатом (`0`) и суммарным результатом (`1`). - * Можно применить и другие настройки. Если для результатов не требуется детерминированный порядок, вы можете установить max_threads больше единицы, чтобы ускорить запрос. + * **`check_query_single_value_result`**: (Необязательно) Эта настройка позволяет переключаться между подробным результатом (`0`) и сводным результатом (`1`). + * Можно применять и другие настройки. Если вам не требуется детерминированный порядок результатов, вы можете установить max_threads больше единицы, чтобы ускорить запрос. Ответ на запрос зависит от значения настройки `check_query_single_value_result`. -При значении `check_query_single_value_result = 1` возвращается только столбец `result` с одной строкой. Значение в этой строке равно `1`, если проверка целостности пройдена, и `0`, если данные повреждены. +В случае `check_query_single_value_result = 1` возвращается только столбец `result` с одной строкой. Значение в этой строке равно `1`, если проверка целостности пройдена, и `0`, если данные повреждены. При `check_query_single_value_result = 0` запрос возвращает следующие столбцы: * `part_path`: Указывает путь к части данных или имя файла. -* `is_passed`: Возвращает 1, если проверка для этой части прошла успешно, и 0 в противном случае. -* `message`: Любые дополнительные сообщения, связанные с проверкой, такие как сообщения об ошибках или успешном выполнении. +* `is_passed`: Возвращает 1, если проверка для этой части выполнена успешно, и 0 в противном случае. +* `message`: Любые дополнительные сообщения, связанные с проверкой, например сообщения об ошибках или об успешном выполнении. -Запрос `CHECK TABLE` поддерживает следующие движки таблиц: +Запрос `CHECK TABLE` поддерживает следующие табличные движки: * [Log](../../engines/table-engines/log-family/log.md) * [TinyLog](../../engines/table-engines/log-family/tinylog.md) * [StripeLog](../../engines/table-engines/log-family/stripelog.md) * [MergeTree family](../../engines/table-engines/mergetree-family/mergetree.md) -Выполнение запроса для таблиц с другими движками таблиц вызывает исключение `NOT_IMPLEMENTED`. +Выполнение запроса над таблицами с другими табличными движками приводит к исключению `NOT_IMPLEMENTED`. Движки из семейства `*Log` не обеспечивают автоматическое восстановление данных при сбое. Используйте запрос `CHECK TABLE`, чтобы своевременно отслеживать потерю данных. + ## Примеры {#examples} -По умолчанию запрос `CHECK TABLE` показывает общий результат проверки таблицы: +Запрос `CHECK TABLE` по умолчанию показывает общий статус проверки таблицы: ```sql -ПРОВЕРИТЬ ТАБЛИЦУ test_table; +CHECK TABLE test_table; ``` ```text -┌─результат─┐ +┌─result─┐ │ 1 │ └────────┘ ``` -Если вы хотите видеть статус проверки для каждой отдельной части данных, вы можете использовать настройку `check_query_single_value_result`. +Если вы хотите увидеть статус проверки для каждой отдельной части данных, можно использовать настройку `check_query_single_value_result`. -Также, чтобы проверить конкретный раздел таблицы, вы можете использовать ключевое слово `PARTITION`. +Также, чтобы проверить конкретную партицию таблицы, вы можете использовать ключевое слово `PARTITION`. ```sql -ПРОВЕРИТЬ ТАБЛИЦУ t0 РАЗДЕЛ ID '201003' -ФОРМАТ PrettyCompactMonoBlock -НАСТРОЙКИ check_query_single_value_result = 0 +CHECK TABLE t0 PARTITION ID '201003' +FORMAT PrettyCompactMonoBlock +SETTINGS check_query_single_value_result = 0 ``` Результат: @@ -86,7 +89,7 @@ doc_type: 'reference' └──────────────┴───────────┴─────────┘ ``` -Аналогично, можно проверить отдельную часть таблицы с помощью ключевого слова `PART`. +Аналогичным образом вы можете проверить отдельную часть таблицы, используя ключевое слово `PART`. ```sql CHECK TABLE t0 PART '201003_7_7_0' @@ -102,20 +105,20 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴─────────┘ ``` -Обратите внимание: если часть не существует, запрос завершится ошибкой: +Обратите внимание, что если часть отсутствует, запрос вернёт ошибку: ```sql -ПРОВЕРИТЬ ТАБЛИЦУ t0 ЧАСТЬ '201003_111_222_0' +CHECK TABLE t0 PART '201003_111_222_0' ``` ```text -DB::Exception: Нет такой части данных '201003_111_222_0' для проверки в таблице 'default.t0'. (NO_SUCH_DATA_PART) +DB::Exception: No such data part '201003_111_222_0' to check in table 'default.t0'. (NO_SUCH_DATA_PART) ``` ### Получение результата 'Corrupted' {#receiving-a-corrupted-result} :::warning -Отказ от ответственности: описанная здесь процедура, включая ручное изменение или удаление файлов непосредственно в каталоге данных, предназначена только для экспериментальных сред и сред разработки. **Не** пытайтесь выполнять её на боевом сервере, так как это может привести к потере данных или другим непредвиденным последствиям. +Отказ от ответственности: процедура, описанная здесь, включая ручное изменение или удаление файлов непосредственно в каталоге данных, предназначена только для экспериментальных или тестовых сред. **Не** пытайтесь выполнять её на продуктивном сервере, так как это может привести к потере данных или другим непредвиденным последствиям. ::: Удалите существующий файл контрольной суммы: @@ -130,18 +133,18 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 -Результат: +Output: ```text ┌─part_path────┬─is_passed─┬─message──────────────────────────────────┐ │ 201003_7_7_0 │ 1 │ │ -│ 201003_3_3_0 │ 1 │ Контрольные суммы пересчитаны и записаны на диск. │ +│ 201003_3_3_0 │ 1 │ Checksums recounted and written to disk. │ └──────────────┴───────────┴──────────────────────────────────────────┘ ```` -Если файл checksums.txt отсутствует, его можно восстановить. Он будет пересчитан и перезаписан во время выполнения команды CHECK TABLE для конкретного раздела, и статус по‑прежнему будет отображаться как 'is_passed = 1'. +Если файл checksums.txt отсутствует, его можно восстановить. Он будет пересчитан и перезаписан во время выполнения команды CHECK TABLE для конкретной партиции, а статус по-прежнему будет отображаться как 'is_passed = 1'. -Вы можете проверить все существующие таблицы `(Replicated)MergeTree` одновременно с помощью запроса `CHECK ALL TABLES`. +Вы можете проверить все существующие таблицы `(Replicated)MergeTree` одновременно, выполнив запрос `CHECK ALL TABLES`. ```sql CHECK ALL TABLES @@ -149,8 +152,9 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 ``` + ```text -┌─база_данных─┬─таблица──┬─путь_части───┬─пройдено─┬─сообщение─┐ +┌─database─┬─table────┬─part_path───┬─is_passed─┬─message─┐ │ default │ t2 │ all_1_95_3 │ 1 │ │ │ db1 │ table_01 │ all_39_39_0 │ 1 │ │ │ default │ t1 │ all_39_39_0 │ 1 │ │ @@ -164,11 +168,12 @@ SETTINGS check_query_single_value_result = 0 └──────────┴──────────┴─────────────┴───────────┴─────────┘ ``` + ## Если данные повреждены {#if-the-data-is-corrupted} Если таблица повреждена, вы можете скопировать неповреждённые данные в другую таблицу. Для этого: 1. Создайте новую таблицу с такой же структурой, как у повреждённой таблицы. Для этого выполните запрос `CREATE TABLE AS `. -2. Установите значение `max_threads` равным 1, чтобы следующий запрос выполнялся в одном потоке. Для этого выполните запрос `SET max_threads = 1`. +2. Установите значение `max_threads` равным 1, чтобы обработать следующий запрос в одном потоке. Для этого выполните запрос `SET max_threads = 1`. 3. Выполните запрос `INSERT INTO SELECT * FROM `. Этот запрос копирует неповреждённые данные из повреждённой таблицы в другую таблицу. Будут скопированы только данные до повреждённой части. 4. Перезапустите `clickhouse-client`, чтобы сбросить значение `max_threads`. diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md index ee5db533ab6..15b6b0058bd 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md @@ -1,7 +1,6 @@ --- -description: 'Предоставляет табличный интерфейс для чтения и записи файлов в Azure Blob - Storage. Похожа на функцию s3.' -keywords: ['azure blob storage'] +description: 'Предоставляет табличный интерфейс для выборки и вставки файлов в Azure Blob Storage. Аналогично табличной функции s3.' +keywords: ['Azure Blob Storage'] sidebar_label: 'azureBlobStorage' sidebar_position: 10 slug: /sql-reference/table-functions/azureBlobStorage @@ -12,9 +11,12 @@ doc_type: 'reference' import ExperimentalBadge from '@theme/badges/ExperimentalBadge'; import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; + # Табличная функция azureBlobStorage {#azureblobstorage-table-function} -Предоставляет табличный интерфейс для чтения и записи файлов в [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs). Эта табличная функция аналогична [функции s3](../../sql-reference/table-functions/s3.md). +Предоставляет табличный интерфейс для чтения и записи файлов в [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs). Эта табличная функция аналогична табличной функции [s3](../../sql-reference/table-functions/s3.md). + + ## Синтаксис {#syntax} @@ -22,31 +24,36 @@ import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; azureBlobStorage(- connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression, structure, partition_strategy, partition_columns_in_data_file, extra_credentials(client_id=, tenant_id=)]) ``` + ## Аргументы {#arguments} -| Аргумент | Описание | -|---------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `connection_string`\| `storage_account_url` | `connection_string` включает имя и ключ учетной записи ([Create connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)), либо вы можете указать здесь URL учетной записи хранилища, а имя учетной записи и ключ учетной записи — как отдельные параметры (см. параметры `account_name` и `account_key`) | +| Аргумент | Описание | +|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `connection_string`\| `storage_account_url` | `connection_string` включает имя и ключ учетной записи ([Create connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)), либо здесь можно указать URL учетной записи хранилища, а имя и ключ учетной записи — отдельными параметрами (см. параметры `account_name` и `account_key`) | | `container_name` | Имя контейнера | -| `blobpath` | Путь к файлу. Поддерживает следующие подстановочные шаблоны в режиме только для чтения: `*`, `**`, `?`, `{abc,def}` и `{N..M}`, где `N`, `M` — числа, `'abc'`, `'def'` — строки. | -| `account_name` | Если используется `storage_account_url`, то здесь может быть указано имя учетной записи | -| `account_key` | Если используется `storage_account_url`, то здесь может быть указан ключ учетной записи | -| `format` | [Формат](/sql-reference/formats) файла. | -| `compression` | Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. По умолчанию тип сжатия определяется автоматически по расширению файла (то же самое, что установка значения `auto`). | -| `structure` | Структура таблицы. Формат: `'column1_name column1_type, column2_name column2_type, ...'`. | -| `partition_strategy` | Необязательный параметр. Поддерживаемые значения: `WILDCARD` или `HIVE`. `WILDCARD` требует наличия `{_partition_id}` в пути, который заменяется на ключ партиции. `HIVE` не допускает подстановочные шаблоны, предполагает, что путь является корнем таблицы и генерирует каталоги партиций в стиле Hive с идентификаторами Snowflake в качестве имен файлов и форматом файла в качестве расширения. По умолчанию используется `WILDCARD`. | -| `partition_columns_in_data_file` | Необязательный параметр. Используется только со стратегией партиционирования `HIVE`. Указывает ClickHouse, следует ли ожидать, что столбцы партиции будут записаны в файл данных. Значение по умолчанию — `false`. | -| `extra_credentials` | Используйте `client_id` и `tenant_id` для аутентификации. Если указаны `extra_credentials`, они имеют приоритет над `account_name` и `account_key`. +| `blobpath` | Путь к файлу. Поддерживает следующие подстановочные шаблоны в режиме только для чтения: `*`, `**`, `?`, `{abc,def}` и `{N..M}`, где `N`, `M` — числа, а `'abc'`, `'def'` — строки. | +| `account_name` | Если используется `storage_account_url`, то имя учетной записи можно указать здесь | +| `account_key` | Если используется `storage_account_url`, то ключ учетной записи можно указать здесь | +| `format` | [Формат](/sql-reference/formats) файла. | +| `compression` | Поддерживаемые значения: `none`, `gzip/gz`, `brotli/br`, `xz/LZMA`, `zstd/zst`. По умолчанию сжатие автоматически определяется по расширению файла (то же, что `auto`). | +| `structure` | Структура таблицы. Формат `'column1_name column1_type, column2_name column2_type, ...'`. | +| `partition_strategy` | Необязательный параметр. Поддерживаемые значения: `WILDCARD` или `HIVE`. `WILDCARD` требует наличия `{_partition_id}` в пути, который заменяется ключом партиции. `HIVE` не допускает подстановочные шаблоны, предполагает, что путь указывает на корень таблицы, и создает структуру каталогов партиций в стиле Hive с идентификаторами Snowflake в качестве имен файлов и форматом файла в качестве расширения. По умолчанию используется `WILDCARD`. | +| `partition_columns_in_data_file` | Необязательный параметр. Используется только со стратегией партиционирования `HIVE`. Указывает ClickHouse, следует ли ожидать, что столбцы партиции записаны в файл данных. По умолчанию — `false`. | +| `extra_credentials` | Используйте `client_id` и `tenant_id` для аутентификации. Если указаны `extra_credentials`, они имеют приоритет над `account_name` и `account_key`. | + + ## Возвращаемое значение {#returned_value} -Таблица заданной структуры для чтения данных из указанного файла или записи их в него. +Таблица заданной структуры, предназначенная для чтения или записи данных в указанный файл. + + ## Примеры {#examples} -Аналогично движку таблиц [AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage), пользователи могут использовать эмулятор Azurite для локальной разработки с использованием Azure Storage. Дополнительные сведения см. [здесь](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage). Ниже предполагается, что Azurite доступен по имени хоста `azurite1`. +Аналогично движку таблицы [AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage), для локальной разработки с Azure Storage можно использовать эмулятор Azurite. Подробности см. [здесь](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage). Далее предполагается, что Azurite доступен по имени хоста `azurite1`. -Запишите данные в хранилище Azure Blob, используя следующее: +Запишите данные в Azure Blob Storage с помощью следующего: ```sql INSERT INTO TABLE FUNCTION azureBlobStorage('http://azurite1:10000/devstoreaccount1', @@ -54,7 +61,7 @@ INSERT INTO TABLE FUNCTION azureBlobStorage('http://azurite1:10000/devstoreaccou 'CSV', 'auto', 'column1 UInt32, column2 UInt32, column3 UInt32') PARTITION BY column3 VALUES (1, 2, 3), (3, 2, 1), (78, 43, 3); ``` -Затем его можно прочитать с помощью +После этого его можно прочитать с помощью ```sql SELECT * FROM azureBlobStorage('http://azurite1:10000/devstoreaccount1', @@ -68,7 +75,7 @@ SELECT * FROM azureBlobStorage('http://azurite1:10000/devstoreaccount1', └───────────┴────────────┴───────────┘ ``` -или с использованием строки подключения +или с использованием параметра connection_string ```sql SELECT count(*) FROM azureBlobStorage('DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;EndPointSuffix=core.windows.net', @@ -81,27 +88,30 @@ SELECT count(*) FROM azureBlobStorage('DefaultEndpointsProtocol=https;AccountNam └─────────┘ ``` + ## Виртуальные столбцы {#virtual-columns} - `_path` — Путь к файлу. Тип: `LowCardinality(String)`. - `_file` — Имя файла. Тип: `LowCardinality(String)`. -- `_size` — Размер файла в байтах. Тип: `Nullable(UInt64)`. Если размер файла неизвестен, значение — `NULL`. -- `_time` — Время последнего изменения файла. Тип: `Nullable(DateTime)`. Если время неизвестно, значение — `NULL`. +- `_size` — Размер файла в байтах. Тип: `Nullable(UInt64)`. Если размер файла неизвестен, значение равно `NULL`. +- `_time` — Время последнего изменения файла. Тип: `Nullable(DateTime)`. Если время неизвестно, значение равно `NULL`. + + -## Запись с партиционированием {#partitioned-write} +## Партиционированная запись {#partitioned-write} ### Стратегия партиционирования {#partition-strategy} Поддерживается только для запросов INSERT. -`WILDCARD` (по умолчанию): заменяет подстановочный символ `{_partition_id}` в пути к файлу фактическим ключом партиции. +`WILDCARD` (значение по умолчанию): Заменяет подстановку `{_partition_id}` в пути к файлу на фактический ключ партиции. -`HIVE` реализует партиционирование в стиле Hive для чтения и записи. Файлы создаются в следующем формате: `//.`. +`HIVE` реализует партиционирование в стиле Hive для чтения и записи. Он генерирует файлы в следующем формате: `//.`. **Пример стратегии партиционирования `HIVE`** ```sql -INSERT INTO TABLE FUNCTION azureBlobStorage(azure_conf2, storage_account_url = 'http://localhost:30000/devstoreaccount1', container='cont', blob_path='azure_table_root', format='CSVWithNames', compression='auto', structure='year UInt16, country String, id Int32', partition_strategy='hive') PARTITION BY (year, country) VALUES (2020, 'Россия', 1), (2021, 'Бразилия', 2); +INSERT INTO TABLE FUNCTION azureBlobStorage(azure_conf2, storage_account_url = 'http://localhost:30000/devstoreaccount1', container='cont', blob_path='azure_table_root', format='CSVWithNames', compression='auto', structure='year UInt16, country String, id Int32', partition_strategy='hive') PARTITION BY (year, country) VALUES (2020, 'Russia', 1), (2021, 'Brazil', 2); ``` ```result @@ -113,27 +123,29 @@ select _path, * from azureBlobStorage(azure_conf2, storage_account_url = 'http:/ └─────────────────────────────────────────────────────────────────────────────────┴────┴──────┴─────────┘ ``` + ## настройка use_hive_partitioning {#hive-style-partitioning} -Это указание для ClickHouse при разборе файлов, партиционированных в стиле Hive, во время чтения. Оно не влияет на запись. Для симметричного чтения и записи используйте аргумент `partition_strategy`. +Это указание для ClickHouse при чтении файлов с партиционированием в стиле Hive. На запись оно не влияет. Для симметричных операций чтения и записи используйте аргумент `partition_strategy`. -Когда настройка `use_hive_partitioning` установлена в значение 1, ClickHouse обнаружит партиционирование в стиле Hive в пути (`/name=value/`) и позволит использовать столбцы партиций как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути партиций, но с префиксом `_`. +Когда настройка `use_hive_partitioning` установлена в значение 1, ClickHouse обнаруживает партиционирование в стиле Hive в пути (`/name=value/`) и позволяет использовать столбцы партиции как виртуальные столбцы в запросе. Эти виртуальные столбцы будут иметь те же имена, что и в пути партиционирования, но с префиксом `_`. **Пример** -Использование виртуального столбца, созданного с помощью партиционирования в стиле Hive +Используйте виртуальный столбец, созданный с помощью партиционирования в стиле Hive ```sql SELECT * FROM azureBlobStorage(config, storage_account_url='...', container='...', blob_path='http://data/path/date=*/country=*/code=*/*.parquet') WHERE _date > '2020-01-01' AND _country = 'Netherlands' AND _code = 42; ``` + ## Использование Shared Access Signatures (SAS) {#using-shared-access-signatures-sas-sas-tokens} -Shared Access Signature (SAS) — это URI, который предоставляет ограниченный доступ к контейнеру или файлу в Azure Storage. Используйте его, чтобы предоставить ограниченный по времени доступ к ресурсам учетной записи хранения без передачи ключа учетной записи хранения. Подробнее [здесь](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature). +Shared Access Signature (SAS) — это URI, который предоставляет ограниченный доступ к контейнеру или файлу в Azure Storage. Используйте его, чтобы предоставить ограниченный по времени доступ к ресурсам учетной записи хранения без передачи ключа этой учетной записи. Более подробно описано [здесь](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature). Функция `azureBlobStorage` поддерживает Shared Access Signatures (SAS). -[Маркер Blob SAS](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers) содержит всю необходимую для аутентификации запроса информацию, включая целевой blob-объект, права доступа и период действия. Чтобы сформировать URL-адрес для blob-объекта, добавьте SAS-маркер к конечной точке службы blob. Например, если конечная точка — `https://clickhousedocstest.blob.core.windows.net/`, запрос будет выглядеть так: +[Токен Blob SAS](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers) содержит всю информацию, необходимую для аутентификации запроса, включая целевой BLOB-объект, права доступа и период действия. Чтобы сформировать URL BLOB-объекта, добавьте токен SAS к конечной точке службы BLOB-хранилища. Например, если конечная точка — `https://clickhousedocstest.blob.core.windows.net/`, запрос будет выглядеть так: ```sql SELECT count() @@ -143,10 +155,10 @@ FROM azureBlobStorage('BlobEndpoint=https://clickhousedocstest.blob.core.windows │ 10 │ └─────────┘ -Получена 1 строка. Затрачено: 0.425 sec. +1 row in set. Elapsed: 0.425 sec. ``` -В качестве альтернативы пользователи могут использовать сгенерированный [URL-адрес SAS для BLOB-объекта](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers): +Кроме того, можно использовать сгенерированный [Blob SAS URL](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers): ```sql SELECT count() @@ -156,8 +168,9 @@ FROM azureBlobStorage('https://clickhousedocstest.blob.core.windows.net/?sp=r&st │ 10 │ └─────────┘ -Получена 1 строка. Прошло: 0,153 сек. +1 row in set. Elapsed: 0.153 sec. ``` -## См. также {#related} + +## Связанные материалы {#related} - [Движок таблицы AzureBlobStorage](engines/table-engines/integrations/azureBlobStorage.md) diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md b/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md index c15d8007dd4..a17ce6732cc 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md @@ -48,10 +48,10 @@ Docker Compose открывает дополнительные порты для ### Клонирование репозитория {#clone-the-repo} -Чтобы развернуть с помощью Docker Compose, клонируйте репозиторий HyperDX, перейдите в каталог и выполните `docker-compose up`: +Чтобы развернуть с помощью Docker Compose, клонируйте репозиторий ClickStack, перейдите в каталог и выполните `docker-compose up`: ```shell -git clone git@github.com:hyperdxio/hyperdx.git +git clone https://github.com/ClickHouse/ClickStack.git docker compose up ``` @@ -61,7 +61,7 @@ docker compose up Создайте пользователя, указав имя пользователя и пароль, соответствующие требованиям. -При нажатии `Create` будут созданы источники данных для экземпляра ClickHouse, развернутого с помощью Helm-чарта. +При нажатии `Create` будут созданы источники данных для экземпляра ClickHouse, развернутого с помощью Docker Compose. :::note Переопределение подключения по умолчанию Вы можете переопределить подключение по умолчанию к интегрированному экземпляру ClickHouse. Подробности см. в разделе ["Использование ClickHouse Cloud"](#using-clickhouse-cloud). @@ -88,34 +88,31 @@ docker compose up Пользователи могут изменять настройки стека, например используемую версию, через файл с переменными окружения: ```shell -user@example-host hyperdx % cat .env -# Используется в docker-compose.yml {#used-by-docker-composeyml} -# Используется в docker-compose.yml {#used-by-docker-composeyml} -HDX_IMAGE_REPO=docker.hyperdx.io -IMAGE_NAME=ghcr.io/hyperdxio/hyperdx -IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx -LOCAL_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-local -LOCAL_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-local -ALL_IN_ONE_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-all-in-one -ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-all-in-one -OTEL_COLLECTOR_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-otel-collector -OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-otel-collector -CODE_VERSION=2.0.0-beta.16 -IMAGE_VERSION_SUB_TAG=.16 -IMAGE_VERSION=2-beta +user@example-host clickstack % cat .env + +# Used by docker-compose.yml +IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one +LOCAL_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-local +ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one +OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-otel-collector +CODE_VERSION=2.8.0 +IMAGE_VERSION_SUB_TAG=.8.0 +IMAGE_VERSION=2 IMAGE_NIGHTLY_TAG=2-nightly +IMAGE_LATEST_TAG=latest -# Настройка URL доменов {#set-up-domain-urls} -HYPERDX_API_PORT=8000 #необязательно (не должен быть занят другими сервисами) +# Set up domain URLs +HYPERDX_API_PORT=8000 #optional (should not be taken by other services) HYPERDX_APP_PORT=8080 HYPERDX_APP_URL=http://localhost HYPERDX_LOG_LEVEL=debug HYPERDX_OPAMP_PORT=4320 -# Конфигурация OTel/ClickHouse {#otelclickhouse-config} +# Otel/Clickhouse config HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default ``` + ### Настройка коллектора OTel {#configuring-collector} Конфигурацию коллектора OTel можно изменить при необходимости — см. раздел ["Изменение конфигурации"](/use-cases/observability/clickstack/ingesting-data/otel-collector#modifying-otel-collector-configuration). @@ -124,15 +121,15 @@ HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default Этот дистрибутив можно использовать с ClickHouse Cloud. Пользователям следует: -* Удалить сервис ClickHouse из файла `docker-compose.yaml`. Это необязательно при тестировании, так как развернутый экземпляр ClickHouse просто будет игнорироваться, хотя и будет расходовать локальные ресурсы. При удалении сервиса убедитесь, что удалены все ссылки на него, такие как `depends_on`. +* Удалить сервис ClickHouse из файла `docker-compose.yml`. Это необязательно при тестировании, так как развернутый экземпляр ClickHouse просто будет игнорироваться, хотя и будет расходовать локальные ресурсы. При удалении сервиса убедитесь, что удалены все ссылки на него, такие как `depends_on`. -* Изменить OTel collector для использования экземпляра ClickHouse Cloud, задав переменные окружения `CLICKHOUSE_ENDPOINT`, `CLICKHOUSE_USER` и `CLICKHOUSE_PASSWORD` в файле `docker-compose.yaml`. В частности, добавьте переменные окружения в сервис OTel collector: +* Изменить OTel collector для использования экземпляра ClickHouse Cloud, задав переменные окружения `CLICKHOUSE_ENDPOINT`, `CLICKHOUSE_USER` и `CLICKHOUSE_PASSWORD` в файле `docker-compose.yml`. В частности, добавьте переменные окружения в сервис OTel collector: ```shell otel-collector: - image: ${OTEL_COLLECTOR_IMAGE_NAME}:${IMAGE_VERSION} + image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: - CLICKHOUSE_ENDPOINT: '' # HTTPS endpoint here + CLICKHOUSE_ENDPOINT: '' # https endpoint here CLICKHOUSE_USER: '' CLICKHOUSE_PASSWORD: '' HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: ${HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE} @@ -155,25 +152,25 @@ HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default -Чтобы их задать, измените соответствующие сервисы в файле `docker-compose.yaml`: +Чтобы их задать, измените соответствующие сервисы в файле `docker-compose.yml`: ```yaml app: - image: ${HDX_IMAGE_REPO}/${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} + image: ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} ports: - ${HYPERDX_API_PORT}:${HYPERDX_API_PORT} - ${HYPERDX_APP_PORT}:${HYPERDX_APP_PORT} environment: - BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # включение JSON + BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # enable JSON FRONTEND_URL: ${HYPERDX_APP_URL}:${HYPERDX_APP_PORT} HYPERDX_API_KEY: ${HYPERDX_API_KEY} HYPERDX_API_PORT: ${HYPERDX_API_PORT} - # сокращено для краткости + # truncated for brevity otel-collector: - image: ${HDX_IMAGE_REPO}/${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} + image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: - OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # включение JSON + OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # enable JSON CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s' - # сокращено для краткости + # truncated for brevity ``` diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 6c0a4f1b985..4cfef04d411 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -23,156 +23,154 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p Этот пример набора данных также может использоваться с HyperDX в ClickHouse Cloud, с лишь незначительными изменениями конвейера, указанными в тексте. При использовании HyperDX в ClickHouse Cloud пользователям потребуется локально запущенный коллектор OpenTelemetry, как описано в [руководстве по началу работы для этой модели развертывания](/use-cases/observability/clickstack/deployment/hyperdx-clickhouse-cloud). ::: - - -## Создание пользовательской конфигурации OpenTelemetry {#create-otel-configuration} - -Создайте файл `custom-local-config.yaml` со следующим содержимым: - -```yaml -receivers: - filelog: - include: - - /host/var/log/**/*.log # Логи Linux с хоста - - /host/var/log/syslog - - /host/var/log/messages - - /host/private/var/log/*.log # Логи macOS с хоста - start_at: beginning - resource: - service.name: "system-logs" # Имя сервиса для системных логов - - hostmetrics: - collection_interval: 1s - scrapers: - cpu: - metrics: - system.cpu.time: - enabled: true - system.cpu.utilization: - enabled: true - memory: - metrics: - system.memory.usage: - enabled: true - system.memory.utilization: - enabled: true - filesystem: - metrics: - system.filesystem.usage: - enabled: true - system.filesystem.utilization: - enabled: true - paging: - metrics: - system.paging.usage: - enabled: true - system.paging.utilization: - enabled: true - system.paging.faults: - enabled: true - disk: - load: - network: - processes: - -service: - pipelines: - logs/local: - receivers: [filelog] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - metrics/hostmetrics: - receivers: [hostmetrics] - processors: - - memory_limiter - - batch - exporters: - - clickhouse -``` - -Данная конфигурация собирает системные журналы и метрики для систем OSX и Linux и отправляет результаты в ClickStack. Конфигурация расширяет коллектор ClickStack, добавляя новые приёмники и конвейеры — при этом используются существующий экспортёр `clickhouse` и процессоры (`memory_limiter`, `batch`), уже настроенные в базовом коллекторе ClickStack. - -:::note Временные метки при ингестии -Данная конфигурация корректирует временные метки в процессе ингестии, присваивая каждому событию обновлённое значение времени. Пользователям следует [предварительно обрабатывать или парсить временные метки](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching) с помощью процессоров или операторов OTel в своих лог-файлах, чтобы обеспечить сохранение точного времени события. - -При такой настройке, если приёмник или процессор файлов настроен на чтение с начала файла, всем существующим записям журнала будет присвоена одинаковая скорректированная временная метка — время обработки, а не исходное время события. Любые новые события, добавляемые в файл, получат временные метки, приближённые к фактическому времени их генерации. - -Чтобы избежать такого поведения, установите начальную позицию в значение `end` в конфигурации приёмника. Это обеспечит приём только новых записей с временными метками, соответствующими фактическому времени их поступления. -::: - -Подробнее о структуре конфигурации OpenTelemetry (OTel) см. в [официальном руководстве](https://opentelemetry.io/docs/collector/configuration/). - -## Запуск ClickStack с пользовательской конфигурацией {#start-clickstack} - -Выполните следующую команду docker для запуска универсального контейнера с вашей конфигурацией: - -```shell -docker run -d --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-all-in-one:latest -``` - -:::note Пользователь root -Мы запускаем коллектор от имени пользователя root для доступа ко всем системным журналам — это необходимо для сбора журналов из защищённых путей в системах на базе Linux. Однако такой подход не рекомендуется для production-окружения. В production-средах OpenTelemetry Collector следует развёртывать как локальный агент только с минимальными правами, необходимыми для доступа к целевым источникам журналов. - -Обратите внимание, что мы монтируем `/var/log` хоста в `/host/var/log` внутри контейнера во избежание конфликтов с собственными лог-файлами контейнера. -::: - -Если вы используете HyperDX в ClickHouse Cloud с отдельным коллектором, используйте эту команду: - -```shell -docker run -d \ - -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ - -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ - -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ - -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-otel-collector:latest -``` - -Коллектор немедленно начнет сбор локальных системных журналов и метрик. - -## Переход к интерфейсу HyperDX {#navigate-to-the-hyperdx-ui} - -Перейдите по адресу [http://localhost:8080](http://localhost:8080) для доступа к интерфейсу HyperDX при локальном развёртывании. При использовании HyperDX в ClickHouse Cloud выберите ваш сервис и пункт `HyperDX` в меню слева. - -## Изучение системных логов {#explore-system-logs} - -В интерфейсе поиска должны отобразиться локальные системные логи. Разверните фильтры и выберите `system.log`: - -Локальные логи HyperDX - -## Изучение системных метрик {#explore-system-metrics} - -Метрики можно изучать с помощью графиков. + + ## Создание пользовательской конфигурации OpenTelemetry {#create-otel-configuration} + + Создайте файл `custom-local-config.yaml` со следующим содержимым: + + ```yaml + receivers: + filelog: + include: + - /host/var/log/**/*.log # Логи Linux с хоста + - /host/var/log/syslog + - /host/var/log/messages + - /host/private/var/log/*.log # Логи macOS с хоста + start_at: beginning + resource: + service.name: "system-logs" # Имя сервиса для системных логов + + hostmetrics: + collection_interval: 1s + scrapers: + cpu: + metrics: + system.cpu.time: + enabled: true + system.cpu.utilization: + enabled: true + memory: + metrics: + system.memory.usage: + enabled: true + system.memory.utilization: + enabled: true + filesystem: + metrics: + system.filesystem.usage: + enabled: true + system.filesystem.utilization: + enabled: true + paging: + metrics: + system.paging.usage: + enabled: true + system.paging.utilization: + enabled: true + system.paging.faults: + enabled: true + disk: + load: + network: + processes: + + service: + pipelines: + logs/local: + receivers: [filelog] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + metrics/hostmetrics: + receivers: [hostmetrics] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + ``` + + Данная конфигурация собирает системные журналы и метрики для систем OSX и Linux и отправляет результаты в ClickStack. Конфигурация расширяет коллектор ClickStack, добавляя новые приёмники и конвейеры — при этом используются существующий экспортёр `clickhouse` и процессоры (`memory_limiter`, `batch`), уже настроенные в базовом коллекторе ClickStack. + + :::note Временные метки при ингестии + Данная конфигурация корректирует временные метки в процессе ингестии, присваивая каждому событию обновлённое значение времени. Пользователям следует [предварительно обрабатывать или парсить временные метки](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching) с помощью процессоров или операторов OTel в своих лог-файлах, чтобы обеспечить сохранение точного времени события. + + При такой настройке, если приёмник или процессор файлов настроен на чтение с начала файла, всем существующим записям журнала будет присвоена одинаковая скорректированная временная метка — время обработки, а не исходное время события. Любые новые события, добавляемые в файл, получат временные метки, приближённые к фактическому времени их генерации. + + Чтобы избежать такого поведения, установите начальную позицию в значение `end` в конфигурации приёмника. Это обеспечит приём только новых записей с временными метками, соответствующими фактическому времени их поступления. + ::: + + Подробнее о структуре конфигурации OpenTelemetry (OTel) см. в [официальном руководстве](https://opentelemetry.io/docs/collector/configuration/). + + ## Запуск ClickStack с пользовательской конфигурацией {#start-clickstack} + + Выполните следующую команду docker для запуска универсального контейнера с вашей конфигурацией: + + ```shell + docker run -d --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-all-in-one:latest + ``` + + :::note Пользователь root + Мы запускаем коллектор от имени пользователя root для доступа ко всем системным журналам — это необходимо для сбора журналов из защищённых путей в системах на базе Linux. Однако такой подход не рекомендуется для production-окружения. В production-средах OpenTelemetry Collector следует развёртывать как локальный агент только с минимальными правами, необходимыми для доступа к целевым источникам журналов. + + Обратите внимание, что мы монтируем `/var/log` хоста в `/host/var/log` внутри контейнера во избежание конфликтов с собственными лог-файлами контейнера. + ::: + + Если вы используете HyperDX в ClickHouse Cloud с отдельным коллектором, используйте эту команду: + + ```shell + docker run -d \ + -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ + -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ + -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ + -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-otel-collector:latest + ``` + + Коллектор немедленно начнет сбор локальных системных журналов и метрик. + + ## Переход к интерфейсу HyperDX {#navigate-to-the-hyperdx-ui} + + Перейдите по адресу [http://localhost:8080](http://localhost:8080) для доступа к интерфейсу HyperDX при локальном развёртывании. При использовании HyperDX в ClickHouse Cloud выберите ваш сервис и пункт `HyperDX` в меню слева. + + ## Изучение системных логов {#explore-system-logs} + + В интерфейсе поиска должны отобразиться локальные системные логи. Разверните фильтры и выберите `system.log`: + + Локальные логи HyperDX + + ## Изучение системных метрик {#explore-system-metrics} -Перейдите в Chart Explorer через левое меню. Выберите источник `Metrics` и тип агрегации `Maximum`. + Метрики можно изучать с помощью графиков. -В меню `Select a Metric` введите `memory`, затем выберите `system.memory.utilization (Gauge)`. + Перейдите в Chart Explorer через левое меню. Выберите источник `Metrics` и тип агрегации `Maximum`. -Нажмите кнопку запуска, чтобы визуализировать использование памяти за период времени. + В меню `Select a Metric` введите `memory`, затем выберите `system.memory.utilization (Gauge)`. -Использование памяти во времени + Нажмите кнопку запуска, чтобы визуализировать использование памяти за период времени. -Обратите внимание, что число возвращается как число с плавающей точкой `%`. Для более наглядного отображения выберите `Set number format`. + Использование памяти во времени -Формат числа + Обратите внимание, что число возвращается как число с плавающей точкой `%`. Для более наглядного отображения выберите `Set number format`. -В открывшемся меню выберите `Percentage` из выпадающего списка `Output format`, после чего нажмите `Apply`. + Формат числа -Память, % времени выполнения + В открывшемся меню выберите `Percentage` из выпадающего списка `Output format`, после чего нажмите `Apply`. + Память, % времени выполнения \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md index 74f731a576c..0b5e710da3f 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azure-queue.md @@ -41,14 +41,15 @@ ENGINE = AzureQueue('DefaultEndpointsProtocol=http;AccountName=devstoreaccount1; SETTINGS mode = 'unordered' ``` + ## Settings {#settings} 支持的设置大多与 `S3Queue` 表引擎相同,只是没有 `s3queue_` 前缀。参见[完整的设置列表](../../../engines/table-engines/integrations/s3queue.md#settings)。 要获取为该表配置的设置列表,请使用 `system.azure_queue_settings` 表。从 `24.10` 版本起可用。 -下面是仅与 AzureQueue 兼容且不适用于 S3Queue 的设置。 +下面是仅与 AzureQueue 兼容、而不适用于 S3Queue 的设置。 -### `after_processing_move_connection_string` {#after_processing_move_connection_string} +### `after_processing_move_connection_string` {#after_processing_move_connection_string} 当目标是另一个 Azure 容器时,用于将已成功处理的文件移动到该容器的 Azure Blob Storage 连接字符串。 @@ -58,7 +59,7 @@ SETTINGS mode = 'unordered' 默认值:空字符串。 -### `after_processing_move_container` {#after_processing_move_container} +### `after_processing_move_container` {#after_processing_move_container} 当目标是另一个 Azure 容器时,用于指定成功处理后文件要移动到的容器名称。 @@ -84,6 +85,13 @@ SETTINGS after_processing_move_container = 'dst-container'; ``` + +## 从 AzureQueue 表引擎中执行 SELECT {#select} + +在 AzureQueue 表上默认禁止执行 SELECT 查询。这遵循常见的队列模式,即数据只被读取一次,然后从队列中移除。禁止 SELECT 是为了防止意外数据丢失。 +不过,在某些情况下直接执行 SELECT 可能会很有用。要实现这一点,需要将设置 `stream_like_engine_allow_direct_select` 设为 `True`。 +AzureQueue 引擎针对 SELECT 查询有一个特殊设置:`commit_on_select`。将其设为 `False` 可在读取后保留队列中的数据,设为 `True` 则会在读取后将其移除。 + ## 描述 {#description} `SELECT` 对于流式导入并不是特别有用(除非用于调试),因为每个文件只能被导入一次。更实际的做法是使用[物化视图](../../../sql-reference/statements/create/view.md)来创建实时管道。为此: @@ -111,6 +119,7 @@ CREATE MATERIALIZED VIEW consumer TO stats SELECT * FROM stats ORDER BY key; ``` + ## 虚拟列 {#virtual-columns} * `_path` — 文件路径。 @@ -120,11 +129,11 @@ SELECT * FROM stats ORDER BY key; ## 自省 {#introspection} -通过表设置 `enable_logging_to_queue_log=1` 为该表启用日志记录。 +通过表设置 `enable_logging_to_queue_log=1` 启用该表的日志记录功能。 自省功能与 [S3Queue 表引擎](/engines/table-engines/integrations/s3queue#introspection) 相同,但有以下几个明显差异: -1. 对于服务器版本 >= 25.1,使用 `system.azure_queue` 表示队列的内存状态。对于更早的版本,使用 `system.s3queue`(其中也会包含 `azure` 表的信息)。 +1. 对于服务器版本 >= 25.1,使用 `system.azure_queue` 用于表示队列的内存状态。对于更早的版本,使用 `system.s3queue`(其中也会包含 `azure` 表的信息)。 2. 在主 ClickHouse 配置中启用 `system.azure_queue_log`,例如: ```xml @@ -142,24 +151,24 @@ SELECT * FROM stats ORDER BY key; CREATE TABLE system.azure_queue_log ( - `hostname` LowCardinality(String) COMMENT '主机名', - `event_date` Date COMMENT '写入此日志行的事件日期', - `event_time` DateTime COMMENT '写入此日志行的事件时间', - `database` String COMMENT '当前 S3Queue 表所在的数据库名称。', - `table` String COMMENT 'S3Queue 表的名称。', - `uuid` String COMMENT 'S3Queue 表的 UUID', - `file_name` String COMMENT '正在处理的文件名', - `rows_processed` UInt64 COMMENT '已处理的行数', - `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT '文件处理状态', - `processing_start_time` Nullable(DateTime) COMMENT '文件处理开始时间', - `processing_end_time` Nullable(DateTime) COMMENT '文件处理结束时间', - `exception` String COMMENT '异常消息(如有发生)' + `hostname` LowCardinality(String) COMMENT 'Hostname', + `event_date` Date COMMENT 'Event date of writing this log row', + `event_time` DateTime COMMENT 'Event time of writing this log row', + `database` String COMMENT 'The name of a database where current S3Queue table lives.', + `table` String COMMENT 'The name of S3Queue table.', + `uuid` String COMMENT 'The UUID of S3Queue table', + `file_name` String COMMENT 'File name of the processing file', + `rows_processed` UInt64 COMMENT 'Number of processed rows', + `status` Enum8('Processed' = 0, 'Failed' = 1) COMMENT 'Status of the processing file', + `processing_start_time` Nullable(DateTime) COMMENT 'Time of the start of processing the file', + `processing_end_time` Nullable(DateTime) COMMENT 'Time of the end of processing the file', + `exception` String COMMENT 'Exception message if happened' ) ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 8192 -COMMENT '包含 S3Queue 引擎处理文件信息的日志条目。' +COMMENT 'Contains logging entries with the information files processes by S3Queue engine.' ``` @@ -171,7 +180,7 @@ FROM system.azure_queue_log LIMIT 1 FORMAT Vertical -第 1 行: +Row 1: ────── hostname: clickhouse event_date: 2024-12-16 @@ -186,6 +195,6 @@ processing_start_time: 2024-12-16 13:42:47 processing_end_time: 2024-12-16 13:42:47 exception: -返回 1 行。用时:0.002 秒。 +1 row in set. Elapsed: 0.002 sec. ``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md index 4cd4a2c141e..a60c1d3edac 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/azureBlobStorage.md @@ -1,5 +1,5 @@ --- -description: '此引擎提供与 Azure Blob Storage 生态系统的集成。' +description: '该引擎提供与 Azure Blob Storage 生态系统的集成。' sidebar_label: 'Azure Blob Storage' sidebar_position: 10 slug: /engines/table-engines/integrations/azureBlobStorage @@ -7,9 +7,13 @@ title: 'AzureBlobStorage 表引擎' doc_type: 'reference' --- + + # AzureBlobStorage 表引擎 {#azureblobstorage-table-engine} -该引擎用于与 [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 生态系统集成。 +该引擎用于与 [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 生态系统进行集成。 + + ## 创建表 {#create-table} @@ -22,22 +26,22 @@ CREATE TABLE azure_blob_storage_table (name String, value UInt32) ### 引擎参数 {#engine-parameters} -* `endpoint` — 带有容器和前缀的 Azure Blob Storage 端点 URL。如所用的认证方式需要,还可以选择在其中包含 account_name。(`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`)或者也可以通过 `storage_account_url`、`account_name` 和 `container` 单独提供这些参数。要指定前缀时,应使用 `endpoint`。 -* `endpoint_contains_account_name` - 此标志用于指定 `endpoint` 是否包含 `account_name`,因为只有某些认证方式才需要它。(默认值:true) -* `connection_string|storage_account_url` — `connection_string` 包含账户名和密钥([创建 connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)),或者你也可以在此处提供 storage account URL,并通过单独的参数提供账户名和账户密钥(参见参数 `account_name` 和 `account_key`)。 -* `container_name` - 容器名称。 +* `endpoint` — 包含容器和前缀的 Azure Blob Storage endpoint URL。如果所用的身份验证方法需要,也可以在其中包含 account_name(`http://azurite1:{port}/[account_name]{container_name}/{data_prefix}`)。或者也可以通过 storage_account_url、account_name 和 container 分别提供这些参数。要指定前缀时,应使用 endpoint。 +* `endpoint_contains_account_name` - 此标志用于指定 endpoint 中是否包含 account_name,因为只有某些身份验证方法才需要。(默认值:true) +* `connection_string|storage_account_url` — connection_string 包含 account name 和 key([创建连接字符串](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json\&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)),或者可以在此处提供 storage account url,并将 account name 和 account key 作为单独参数提供(参见参数 account_name 和 account_key)。 +* `container_name` - 容器名称 * `blobpath` - 文件路径。在只读模式下支持以下通配符:`*`、`**`、`?`、`{abc,def}` 和 `{N..M}`,其中 `N`、`M` 为数字,`'abc'`、`'def'` 为字符串。 -* `account_name` - 如果使用 `storage_account_url`,则可在此处指定账户名。 -* `account_key` - 如果使用 `storage_account_url`,则可在此处指定账户密钥。 +* `account_name` - 如果使用 storage_account_url,则可以在此处指定 account name +* `account_key` - 如果使用 storage_account_url,则可以在此处指定 account key * `format` — 文件的[格式](/interfaces/formats.md)。 -* `compression` — 支持的值:`none`、`gzip/gz`、`brotli/br`、`xz/LZMA`、`zstd/zst`。默认会通过文件扩展名自动检测压缩类型(等同于设置为 `auto`)。 -* `partition_strategy` – 选项:`WILDCARD` 或 `HIVE`。`WILDCARD` 要求在路径中包含 `{_partition_id}`,该占位符会被分区键替换。`HIVE` 不允许使用通配符,假定路径为表的根路径,并生成 Hive 风格的分区目录,文件名为 Snowflake ID,扩展名为文件格式。默认值为 `WILDCARD`。 -* `partition_columns_in_data_file` - 仅在使用 `HIVE` 分区策略时有效。告知 ClickHouse 是否应在数据文件中写入分区列。默认值为 `false`。 -* `extra_credentials` - 使用 `client_id` 和 `tenant_id` 进行认证。如果提供了 `extra_credentials`,则其优先级高于 `account_name` 和 `account_key`。 +* `compression` — 支持的值:`none`、`gzip/gz`、`brotli/br`、`xz/LZMA`、`zstd/zst`。默认情况下,将通过文件扩展名自动检测压缩格式(等同于将其设置为 `auto`)。 +* `partition_strategy` – 可选值:`WILDCARD` 或 `HIVE`。`WILDCARD` 要求路径中包含 `{_partition_id}`,该占位符会被分区键替换。`HIVE` 不允许使用通配符,假定该路径是表的根路径,并生成 Hive 风格的分区目录,使用 Snowflake ID 作为文件名,文件格式作为扩展名。默认为 `WILDCARD`。 +* `partition_columns_in_data_file` - 仅在使用 `HIVE` 分区策略时生效。用于告知 ClickHouse 是否应在数据文件中写入分区列。默认为 `false`。 +* `extra_credentials` - 使用 `client_id` 和 `tenant_id` 进行身份验证。如果提供了 extra_credentials,将优先于 `account_name` 和 `account_key`。 **示例** -用户可以使用 Azurite 仿真器进行本地 Azure Storage 开发。详情见[此处](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)。如果使用本地的 Azurite 实例,用户可能需要在下面的命令中将 `http://azurite1:10000` 替换为 `http://localhost:10000`,其中我们假设 Azurite 可通过主机 `azurite1` 访问。 +用户可以使用 Azurite 模拟器进行本地 Azure Storage 开发。详细信息参见[此处](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)。如果使用本地 Azurite 实例,用户可能需要在下面的命令中将 `http://azurite1:10000` 替换为 `http://localhost:10000`,其中假设 Azurite 可通过主机 `azurite1` 访问。 ```sql CREATE TABLE test_table (key UInt64, data String) @@ -56,26 +60,29 @@ SELECT * FROM test_table; └──────┴───────┘ ``` + ## 虚拟列 {#virtual-columns} - `_path` — 文件路径。类型:`LowCardinality(String)`。 - `_file` — 文件名。类型:`LowCardinality(String)`。 -- `_size` — 文件大小(字节数)。类型:`Nullable(UInt64)`。如果大小未知,则值为 `NULL`。 +- `_size` — 以字节为单位的文件大小。类型:`Nullable(UInt64)`。如果大小未知,则值为 `NULL`。 - `_time` — 文件的最后修改时间。类型:`Nullable(DateTime)`。如果时间未知,则值为 `NULL`。 + + ## 身份验证 {#authentication} -当前有 3 种身份验证方式: +当前支持 3 种身份验证方式: -* `Managed Identity` - 可以通过提供 `endpoint`、`connection_string` 或 `storage_account_url` 进行身份验证。 -* `SAS Token` - 可以通过提供 `endpoint`、`connection_string` 或 `storage_account_url` 进行身份验证。通过 URL 中是否包含 `?` 来识别。示例参见 [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens)。 -* `Workload Identity` - 可以通过提供 `endpoint` 或 `storage_account_url` 进行身份验证。如果在配置中设置了 `use_workload_identity` 参数,则会使用 [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications) 进行身份验证。 +* `Managed Identity` —— 通过提供 `endpoint`、`connection_string` 或 `storage_account_url` 使用。 +* `SAS Token` —— 通过提供 `endpoint`、`connection_string` 或 `storage_account_url` 使用。它通过 URL 中是否存在 `?` 来识别。示例参见 [azureBlobStorage](/sql-reference/table-functions/azureBlobStorage#using-shared-access-signatures-sas-sas-tokens)。 +* `Workload Identity` —— 通过提供 `endpoint` 或 `storage_account_url` 使用。如果在配置中设置了 `use_workload_identity` 参数,则会使用 [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications) 进行身份验证。 ### 数据缓存 {#data-cache} `Azure` 表引擎支持在本地磁盘上进行数据缓存。 -有关文件系统缓存配置选项及用法,请参见本[节](/operations/storing-data.md/#using-local-cache)。 -缓存是基于存储对象的路径和 ETag 进行的,因此 ClickHouse 不会读取陈旧的缓存数据。 +有关文件系统缓存配置选项和用法,请参阅本[章节](/operations/storing-data.md/#using-local-cache)。 +缓存会根据存储对象的路径和 ETag 进行,因此 ClickHouse 不会读取陈旧的缓存版本。 要启用缓存,请设置 `filesystem_cache_name = ''` 和 `enable_filesystem_cache = 1`。 @@ -85,13 +92,13 @@ FROM azureBlobStorage('DefaultEndpointsProtocol=http;AccountName=devstoreaccount SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1; ``` -1. 在 ClickHouse 配置文件中添加以下节: +1. 在 ClickHouse 配置文件中添加以下配置段: ```xml - 缓存目录的路径 + path to cache directory 10Gi @@ -102,17 +109,17 @@ SETTINGS filesystem_cache_name = 'cache_for_azure', enable_filesystem_cache = 1; ### PARTITION BY {#partition-by} -`PARTITION BY` —— 可选。在大多数情况下不需要分区键;即便需要,一般也不需要比按月更细的分区键。分区不会加速查询(与 ORDER BY 表达式相反)。切勿使用粒度过细的分区。不要按客户端标识符或名称对数据进行分区(相反,应将客户端标识符或名称作为 ORDER BY 表达式中的第一列)。 +`PARTITION BY` — 可选。在大多数情况下通常不需要分区键;如果确实需要,一般也不必使用比“按月”更细粒度的分区键。分区不会加速查询(与 ORDER BY 表达式相反)。应避免使用过于细粒度的分区。不要按客户端标识或名称对数据进行分区(相反,应将客户端标识或名称作为 ORDER BY 表达式中的第一列)。 -对于按月分区,使用 `toYYYYMM(date_column)` 表达式,其中 `date_column` 是类型为 [Date](/sql-reference/data-types/date.md) 的日期列。这里的分区名称采用 `"YYYYMM"` 格式。 +要按月分区,使用 `toYYYYMM(date_column)` 表达式,其中 `date_column` 是一个类型为 [Date](/sql-reference/data-types/date.md) 的日期列。此时的分区名称采用 `"YYYYMM"` 格式。 #### 分区策略 {#partition-strategy} -`WILDCARD`(默认):将文件路径中的 `{_partition_id}` 通配符替换为实际的分区键。不支持读取。 +`WILDCARD`(默认):将文件路径中的 `{_partition_id}` 通配符替换为实际分区键。不支持读取。 -`HIVE` 为读写实现 Hive 风格的分区。读取通过递归 glob 模式完成。写入生成的文件采用以下格式:`//.`。 +`HIVE` 实现了用于读写的 Hive 风格分区。读取使用递归 glob 模式实现。写入时按以下格式生成文件:`//.`。 -注意:使用 `HIVE` 分区策略时,`use_hive_partitioning` 设置不起任何作用。 +注意:使用 `HIVE` 分区策略时,`use_hive_partitioning` 设置不起作用。 `HIVE` 分区策略示例: @@ -124,7 +131,8 @@ arthur :) insert into azure_table values (2020, 'Russia', 1), (2021, 'Brazil', 2 arthur :) select _path, * from azure_table; ``` -┌─_path──────────────────────────────────────────────────────────────────────┬─year─┬─country─┬─counter─┐ + +┌─_path──────────────────────────────────────────────────────────────────────┬─年份─┬─国家───┬─计数───┐ 1. │ cont/hive_partitioned/year=2020/country=Russia/7351305360873664512.parquet │ 2020 │ Russia │ 1 │ 2. │ cont/hive_partitioned/year=2021/country=Brazil/7351305360894636032.parquet │ 2021 │ Brazil │ 2 │ @@ -133,6 +141,7 @@ arthur :) select _path, * from azure_table; ``` ``` + ## 另请参阅 {#see-also} -[Azure Blob 存储表函数](/sql-reference/table-functions/azureBlobStorage) +[Azure Blob Storage 表函数](/sql-reference/table-functions/azureBlobStorage) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md index e571bc8474f..2d86af78070 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/mongodb.md @@ -1,5 +1,5 @@ --- -description: 'MongoDB 引擎是一个只读表引擎,支持从远程集合读取数据。' +description: 'MongoDB 引擎是一种只读表引擎,支持从远程集合读取数据。' sidebar_label: 'MongoDB' sidebar_position: 135 slug: /engines/table-engines/integrations/mongodb @@ -7,12 +7,16 @@ title: 'MongoDB 表引擎' doc_type: 'reference' --- + + # MongoDB 表引擎 {#mongodb-table-engine} -MongoDB 引擎是一种只读表引擎,用于从远程 [MongoDB](https://www.mongodb.com/) 集合中读取数据。 +MongoDB 引擎是一种只读表引擎,可用于从远程 [MongoDB](https://www.mongodb.com/) 集合读取数据。 + +目前仅支持 MongoDB v3.6 及以上版本的服务器。 +[Seed list (`mongodb+srv`)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list) 尚不受支持。 + -仅支持 MongoDB v3.6 及更高版本的服务器。 -尚不支持 [种子列表(`mongodb+srv`)](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-seed-list)。 ## 创建表 {#creating-a-table} @@ -27,19 +31,19 @@ CREATE TABLE [IF NOT EXISTS] [db.]table_name **引擎参数** -| 参数 | 描述 | -| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `host:port` | MongoDB 服务器地址。 | -| `database` | 远程数据库名称。 | -| `collection` | 远程集合名称。 | -| `user` | MongoDB 用户。 | -| `password` | 用户密码。 | -| `options` | 可选。以 URL 格式字符串形式提供的 MongoDB 连接字符串[选项](https://www.mongodb.com/docs/manual/reference/connection-string-options/#connection-options),例如:`'authSource=admin&ssl=true'`。 | -| `oid_columns` | 以逗号分隔的列名列表,这些列在 WHERE 子句中将被视为 `oid`。默认值为 `_id`。 | +| Parameter | Description | +| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `host:port` | MongoDB 服务器地址。 | +| `database` | 远程数据库名称。 | +| `collection` | 远程集合名称。 | +| `user` | MongoDB 用户。 | +| `password` | 用户密码。 | +| `options` | 可选。以 URL 格式字符串表示的 MongoDB 连接字符串[选项](https://www.mongodb.com/docs/manual/reference/connection-string-options/#connection-options),例如:`'authSource=admin&ssl=true'` | +| `oid_columns` | 在 WHERE 子句中应被视为 `oid` 的、以逗号分隔的列名列表。默认为 `_id`。 | :::tip -如果你使用的是 MongoDB Atlas 云服务,可以从 “Atlas SQL” 选项中获取连接 URL。 -种子列表(`mongodb**+srv**`)目前尚不支持,但会在后续版本中加入。 +如果你使用的是 MongoDB Atlas Cloud 提供的云服务,可以从 'Atlas SQL' 选项中获取连接 URL。 +种子列表(`mongodb**+srv**`)目前尚不支持,但会在未来版本中添加。 ::: 或者,你也可以传入一个 URI: @@ -50,34 +54,35 @@ ENGINE = MongoDB(uri, collection[, oid_columns]); **引擎参数** -| 参数 | 说明 | -| ------------- | -------------------------------------------------- | -| `uri` | MongoDB 服务器的连接 URI。 | -| `collection` | 远程集合的名称。 | -| `oid_columns` | 以逗号分隔的列名列表,这些列在 WHERE 子句中将被视为 `oid` 类型。默认值为 `_id`。 | +| 参数 | 描述 | +| ------------- | -------------------------------------------- | +| `uri` | MongoDB 服务器的连接 URI。 | +| `collection` | 远程集合名称。 | +| `oid_columns` | 以逗号分隔的列名列表,在 WHERE 子句中按 `oid` 处理。默认值为 `_id`。 | + ## 类型映射 {#types-mappings} | MongoDB | ClickHouse | | ----------------------- | ---------------------------------------- | -| bool, int32, int64 | *除 Decimal 外的任意数值类型*,Boolean,String | -| double | Float64,String | -| date | Date,Date32,DateTime,DateTime64,String | -| string | String,*如果格式正确,则为除 Decimal 外的任意数值类型* | -| document | String(作为 JSON) | -| array | Array,String(作为 JSON) | +| bool, int32, int64 | *除 Decimals 外的任意数值类型*、Boolean、String | +| double | Float64、String | +| date | Date、Date32、DateTime、DateTime64、String | +| string | String,*如果格式正确,则可以是任意数值类型(除 Decimals 外)* | +| document | String(JSON 格式) | +| array | Array、String(JSON 格式) | | oid | String | -| binary | 如果在列中则为 String,如果在数组或文档中则为 base64 编码的字符串 | +| binary | 在列中为 String,在数组或文档中为 base64 编码字符串 | | uuid (binary subtype 4) | UUID | | *any other* | String | -如果在 MongoDB 文档中未找到键(例如列名不匹配),将插入默认值,或者在列可为 `NULL` 的情况下插入 `NULL`。 +如果在 MongoDB 文档中找不到键(例如列名不匹配),则会插入默认值或 `NULL`(如果该列是 Nullable)。 ### OID {#oid} -如果希望在 WHERE 子句中将某个 `String` 视为 `oid`,只需将该列名作为表引擎的最后一个参数传入。 -在按 `_id` 列查询记录时可能需要这样做,因为在 MongoDB 中 `_id` 列默认具有 `oid` 类型。 -如果表中的 `_id` 字段具有其他类型,例如 `uuid`,则需要将 `oid_columns` 设为空,否则会使用该参数的默认值 `_id`。 +如果希望在 WHERE 子句中将某个 `String` 按照 `oid` 处理,只需在表引擎的最后一个参数中填写该列的名称。 +在通过 `_id` 列查询记录时,这可能是必要的,因为在 MongoDB 中 `_id` 的默认类型为 `oid`。 +如果表中的 `_id` 字段是其他类型,例如 `uuid`,则需要将 `oid_columns` 设为空,否则会使用该参数的默认值 `_id`。 ```javascript db.sample_oid.insertMany([ @@ -93,7 +98,7 @@ db.sample_oid.find(); ] ``` -默认情况下,只有 `_id` 会被视为 `oid` 列。 +默认情况下,只有 `_id` 列会被视为 `oid` 列。 ```sql CREATE TABLE sample_oid @@ -102,11 +107,11 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('mongodb://user:pass@host/db', 'sample_oid'); -SELECT count() FROM sample_oid WHERE _id = '67bf6cc44ebc466d33d42fb2'; --输出结果为 1。 -SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; --输出结果为 0 +SELECT count() FROM sample_oid WHERE _id = '67bf6cc44ebc466d33d42fb2'; --will output 1. +SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; --will output 0 ``` -在这种情况下,输出将是 `0`,因为 ClickHouse 并不知道列 `another_oid_column` 的类型是 `oid`,所以我们来修正一下: +在这种情况下,输出结果将是 `0`,因为 ClickHouse 并不知道 `another_oid_column` 的类型是 `oid`,我们来修正一下: ```sql CREATE TABLE sample_oid @@ -115,7 +120,7 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('mongodb://user:pass@host/db', 'sample_oid', '_id,another_oid_column'); --- 或 +-- or CREATE TABLE sample_oid ( @@ -123,37 +128,41 @@ CREATE TABLE sample_oid another_oid_column String ) ENGINE = MongoDB('host', 'db', 'sample_oid', 'user', 'pass', '', '_id,another_oid_column'); -SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; -- 现在将输出 1 +SELECT count() FROM sample_oid WHERE another_oid_column = '67bf6cc40000000000ea41b1'; -- will output 1 now ``` + ## 支持的子句 {#supported-clauses} -仅支持包含简单表达式的查询(例如,`WHERE field = ORDER BY field2 LIMIT `)。 -此类表达式会被转换为 MongoDB 查询语言并在服务器端执行。 -你可以通过 [mongodb_throw_on_unsupported_query](../../../operations/settings/settings.md#mongodb_throw_on_unsupported_query) 来禁用这些限制。 -在这种情况下,ClickHouse 会尽力转换查询,但可能会导致在 ClickHouse 端进行全表扫描和处理。 +只支持带有简单表达式的查询(例如,`WHERE field = ORDER BY field2 LIMIT `)。 +此类表达式会被转换为 MongoDB 查询语言,并在服务端执行。 +你可以通过 [mongodb_throw_on_unsupported_query](../../../operations/settings/settings.md#mongodb_throw_on_unsupported_query) 禁用所有这些限制。 +在这种情况下,ClickHouse 会在尽最大努力的基础上尝试转换查询,但这可能会导致在 ClickHouse 端执行全表扫描和处理。 :::note -最好始终显式指定字面量的类型,因为 Mongo 要求严格类型化的过滤条件。\ -例如,你希望按 `Date` 字段进行过滤: +最好始终显式设置字面值的类型,因为 Mongo 要求过滤条件具有严格的类型。 +例如,你希望按 `Date` 进行过滤: ```sql SELECT * FROM mongo_table WHERE date = '2024-01-01' ``` -这样不起作用,因为 Mongo 不会自动将字符串转换为 `Date`,所以你需要手动进行转换: +这样行不通,因为 Mongo 不会把字符串自动转换为 `Date` 类型,因此你需要手动进行转换: ```sql SELECT * FROM mongo_table WHERE date = '2024-01-01'::Date OR date = toDate('2024-01-01') ``` -这适用于 `Date`、`Date32`、`DateTime`、`Bool` 和 `UUID` 类型。 +这同样适用于 `Date`、`Date32`、`DateTime`、`Bool`、`UUID`。 + +::: + ## 使用示例 {#usage-example} -假设 MongoDB 中已经加载了 [sample_mflix](https://www.mongodb.com/docs/atlas/sample-data/sample-mflix) 数据集 +假设已在 MongoDB 中加载 [sample_mflix](https://www.mongodb.com/docs/atlas/sample-data/sample-mflix) 数据集 -在 ClickHouse 中创建一张表,用于从 MongoDB 集合中读取数据: +在 ClickHouse 中创建一个表,以便从 MongoDB 集合中读取数据: ```sql CREATE TABLE sample_mflix_table @@ -183,10 +192,10 @@ SELECT count() FROM sample_mflix_table ``` ```sql --- JSONExtractString 无法下推至 MongoDB +-- JSONExtractString cannot be pushed down to MongoDB SET mongodb_throw_on_unsupported_query = 0; --- 查找评分 > 7.5 的所有《回到未来》系列电影 +-- Find all 'Back to the Future' sequels with rating > 7.5 SELECT title, plot, genres, directors, released FROM sample_mflix_table WHERE title IN ('Back to the Future', 'Back to the Future Part II', 'Back to the Future Part III') AND toFloat32(JSONExtractString(imdb, 'rating')) > 7.5 @@ -198,7 +207,7 @@ FORMAT Vertical; Row 1: ────── title: Back to the Future -plot: 一个年轻人意外地被他的朋友埃米特·布朗博士发明的时光旅行DeLorean汽车送回到30年前,他必须确保他高中时期的父母结合,以保证自己的存在。 +plot: A young man is accidentally sent 30 years into the past in a time-traveling DeLorean invented by his friend, Dr. Emmett Brown, and must make sure his high-school-age parents unite in order to save his own existence. genres: ['Adventure','Comedy','Sci-Fi'] directors: ['Robert Zemeckis'] released: 1985-07-03 @@ -206,14 +215,14 @@ released: 1985-07-03 Row 2: ────── title: Back to the Future Part II -plot: 在访问2015年之后,马蒂·麦克弗莱必须再次回到1955年,以防止1985年发生灾难性的变化……同时不能干扰他的第一次旅行。 +plot: After visiting 2015, Marty McFly must repeat his visit to 1955 to prevent disastrous changes to 1985... without interfering with his first trip. genres: ['Action','Adventure','Comedy'] directors: ['Robert Zemeckis'] released: 1989-11-22 ``` ```sql --- 查找基于 Cormac McCarthy 作品改编的前 3 部电影 +-- Find top 3 movies based on Cormac McCarthy's books SELECT title, toFloat32(JSONExtractString(imdb, 'rating')) AS rating FROM sample_mflix_table WHERE arrayExists(x -> x LIKE 'Cormac McCarthy%', writers) @@ -222,14 +231,15 @@ LIMIT 3; ``` ```text - ┌─标题───────────────────┬─评分───┐ -1. │ 老无所依 │ 8.1 │ -2. │ 日落有限公司 │ 7.4 │ -3. │ 末日危途 │ 7.3 │ + ┌─title──────────────────┬─rating─┐ +1. │ No Country for Old Men │ 8.1 │ +2. │ The Sunset Limited │ 7.4 │ +3. │ The Road │ 7.3 │ └────────────────────────┴────────┘ ``` -## 故障排查 {#troubleshooting} -您可以在 DEBUG 级别日志中看到生成的 MongoDB 查询。 -实现细节可以在 [mongocxx](https://github.com/mongodb/mongo-cxx-driver) 和 [mongoc](https://github.com/mongodb/mongo-c-driver) 的文档中找到。 +## 故障排除 {#troubleshooting} +可以在 DEBUG 级别日志中查看生成的 MongoDB 查询。 + +实现细节参见 [mongocxx](https://github.com/mongodb/mongo-cxx-driver) 和 [mongoc](https://github.com/mongodb/mongo-c-driver) 文档。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md index 53c704c6bd0..00302c08483 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3.md @@ -1,5 +1,5 @@ --- -description: '此引擎用于与 Amazon S3 生态系统集成。类似于 HDFS 引擎,但提供了 S3 特有的功能。' +description: '此引擎提供与 Amazon S3 生态系统的集成能力。类似于 HDFS 引擎,但提供 S3 专有功能。' sidebar_label: 'S3' sidebar_position: 180 slug: /engines/table-engines/integrations/s3 @@ -7,9 +7,13 @@ title: 'S3 表引擎' doc_type: 'reference' --- + + # S3 表引擎 {#s3-table-engine} -该引擎提供与 [Amazon S3](https://aws.amazon.com/s3/) 生态系统的集成能力。此引擎类似于 [HDFS](/engines/table-engines/integrations/hdfs) 引擎,但提供了 S3 专用功能。 +该引擎提供与 [Amazon S3](https://aws.amazon.com/s3/) 生态系统的集成。该引擎类似于 [HDFS](/engines/table-engines/integrations/hdfs) 引擎,但提供 S3 特有的功能。 + + ## 示例 {#example} @@ -30,6 +34,7 @@ SELECT * FROM s3_engine_table LIMIT 2; └──────┴───────┘ ``` + ## 创建表 {#creating-a-table} ```sql @@ -41,20 +46,20 @@ CREATE TABLE s3_engine_table (name String, value UInt32) ### 引擎参数 {#parameters} -* `path` — 带有文件路径的存储桶 URL。在只读模式下支持以下通配符:`*`、`**`、`?`、`{abc,def}` 和 `{N..M}`,其中 `N`、`M` 为数字,`'abc'`、`'def'` 为字符串。更多信息参见[下文](#wildcards-in-path)。 +* `path` — 带有文件路径的 bucket URL。只读模式下支持以下通配符:`*`、`**`、`?`、`{abc,def}` 和 `{N..M}`,其中 `N`、`M` 为数字,`'abc'`、`'def'` 为字符串。更多信息参见[下文](#wildcards-in-path)。 * `NOSIGN` - 如果在凭证位置提供此关键字,所有请求都不会被签名。 * `format` — 文件的[格式](/sql-reference/formats#formats-overview)。 -* `aws_access_key_id`, `aws_secret_access_key` - [AWS](https://aws.amazon.com/) 账号用户的长期凭证。可以使用它们对请求进行认证。该参数为可选。如果未指定凭证,则会从配置文件中读取。更多信息参见 [Using S3 for Data Storage](../mergetree-family/mergetree.md#table_engine-mergetree-s3)。 -* `compression` — 压缩类型。支持的值:`none`、`gzip/gz`、`brotli/br`、`xz/LZMA`、`zstd/zst`。该参数为可选。默认情况下,将根据文件扩展名自动检测压缩类型。 -* `partition_strategy` – 选项:`WILDCARD` 或 `HIVE`。`WILDCARD` 要求路径中包含 `{_partition_id}`,该占位符会被分区键替换。`HIVE` 不允许使用通配符,假定路径为表的根路径,并生成 Hive 风格的分区目录,使用 Snowflake ID 作为文件名,并以文件格式作为扩展名。默认值为 `WILDCARD`。 -* `partition_columns_in_data_file` - 仅在使用 `HIVE` 分区策略时使用。用于指示 ClickHouse 数据文件中是否包含分区列。默认值为 `false`。 -* `storage_class_name` - 选项:`STANDARD` 或 `INTELLIGENT_TIERING`,用于指定 [AWS S3 Intelligent Tiering](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/) 存储类别。 +* `aws_access_key_id`、`aws_secret_access_key` - [AWS](https://aws.amazon.com/) 账号用户的长期凭证。可使用这些凭证对请求进行身份验证。该参数是可选的。如果未指定凭证,将从配置文件中读取。更多信息参见 [Using S3 for Data Storage](../mergetree-family/mergetree.md#table_engine-mergetree-s3)。 +* `compression` — 压缩类型。支持的值:`none`、`gzip/gz`、`brotli/br`、`xz/LZMA`、`zstd/zst`。该参数是可选的。默认情况下,将根据文件扩展名自动检测压缩类型。 +* `partition_strategy` – 选项:`WILDCARD` 或 `HIVE`。`WILDCARD` 要求在路径中包含 `{_partition_id}`,该占位符将被分区键替换。`HIVE` 不允许使用通配符,假定路径是表的根路径,并生成 Hive 风格的分区目录,使用 Snowflake ID 作为文件名,并将文件格式作为扩展名。默认值为 `WILDCARD`。 +* `partition_columns_in_data_file` - 仅在使用 `HIVE` 分区策略时生效。用于告知 ClickHouse 是否应在数据文件中写入分区列。默认值为 `false`。 +* `storage_class_name` - 选项:`STANDARD` 或 `INTELLIGENT_TIERING`,用于指定 [AWS S3 Intelligent Tiering](https://aws.amazon.com/s3/storage-classes/intelligent-tiering/)。 ### 数据缓存 {#data-cache} `S3` 表引擎支持在本地磁盘上进行数据缓存。 -有关文件系统缓存配置选项和使用方法,请参见本[节](/operations/storing-data.md/#using-local-cache)。 -缓存键基于存储对象的路径和 ETag,因此 ClickHouse 不会读取已过期的缓存版本。 +有关文件系统缓存的配置选项和使用方法,请参见本[节](/operations/storing-data.md/#using-local-cache)。 +缓存是基于路径和存储对象的 ETag 进行的,因此 ClickHouse 不会读取过期的缓存版本。 要启用缓存,请使用设置 `filesystem_cache_name = ''` 和 `enable_filesystem_cache = 1`。 @@ -64,37 +69,38 @@ FROM s3('http://minio:10000/clickhouse//test_3.csv', 'minioadmin', 'minioadminpa SETTINGS filesystem_cache_name = 'cache_for_s3', enable_filesystem_cache = 1; ``` -在配置文件中定义缓存有两种方式。 +在配置文件中定义缓存有两种方法。 -1. 在 ClickHouse 配置文件中添加如下配置段: +1. 在 ClickHouse 配置文件中添加以下部分: ```xml - 缓存目录的路径 + path to cache directory 10Gi ``` -2. 复用 ClickHouse 中 `storage_configuration` 部分的缓存配置(以及相应的缓存存储),[如本节所述](/operations/storing-data.md/#using-local-cache) +2. 复用 ClickHouse `storage_configuration` 部分的缓存配置(以及相应的缓存存储),[详见此处](/operations/storing-data.md/#using-local-cache) ### PARTITION BY {#partition-by} -`PARTITION BY` — 可选。大多数情况下您不需要分区键,即便需要,一般也不需要比“按月”更细粒度的分区键。分区并不会加快查询速度(与 ORDER BY 表达式相反)。绝不要使用粒度过细的分区。不要按客户端标识符或名称对数据进行分区(而应将客户端标识符或名称设置为 ORDER BY 表达式中的第一列)。 +`PARTITION BY` — 可选。在大多数情况下无需分区键;即使需要,通常也不必细化到按月以下的粒度。分区不会提升查询性能(与 ORDER BY 表达式不同)。切勿使用粒度过细的分区。不要按照客户端标识符或名称对数据进行分区(相反,应将客户端标识符或名称作为 ORDER BY 表达式中的第一列)。 -对于按月分区,使用 `toYYYYMM(date_column)` 表达式,其中 `date_column` 是类型为 [Date](/sql-reference/data-types/date.md) 的日期列。此时的分区名称采用 `"YYYYMM"` 格式。 +对于按月分区,使用 `toYYYYMM(date_column)` 表达式,其中 `date_column` 是类型为 [Date](/sql-reference/data-types/date.md) 的日期列。此处的分区名采用 `"YYYYMM"` 格式。 #### 分区策略 {#partition-strategy} -`WILDCARD`(默认):将文件路径中的 `{_partition_id}` 通配符替换为实际的分区键。不支持读取操作。 +`WILDCARD`(默认):将文件路径中的 `{_partition_id}` 通配符替换为实际的分区键值。不支持读取。 + -`HIVE` 实现了用于读写的 Hive 风格分区。读取通过递归的 glob 模式完成,等价于 `SELECT * FROM s3('table_root/**.parquet')`。 -写入会按如下格式生成文件:`//.`。 +`HIVE` 在读写时实现了 Hive 风格的分区。读取通过递归 glob 通配模式实现,等价于 `SELECT * FROM s3('table_root/**.parquet')`。 +写入生成的文件格式如下:`//.`。 -注意:当使用 `HIVE` 分区策略时,`use_hive_partitioning` 设置不会生效。 +注意:使用 `HIVE` 分区策略时,`use_hive_partitioning` 设置将不会生效。 `HIVE` 分区策略示例: @@ -135,18 +141,19 @@ arthur :) select _path, * from t_03363_parquet; ### 查询分区数据 {#querying-partitioned-data} -本示例使用了集成 ClickHouse 和 MinIO 的 [docker compose 配置示例](https://github.com/ClickHouse/examples/tree/5fdc6ff72f4e5137e23ea075c88d3f44b0202490/docker-compose-recipes/recipes/ch-and-minio-S3)。你只需替换 endpoint 和认证参数即可在 S3 上复现相同的查询。 +此示例使用了集成 ClickHouse 和 MinIO 的 [docker compose 配置示例](https://github.com/ClickHouse/examples/tree/5fdc6ff72f4e5137e23ea075c88d3f44b0202490/docker-compose-recipes/recipes/ch-and-minio-S3)。你可以通过替换 endpoint 和认证信息,改为使用 S3 来复现相同的查询。 + +请注意,在 `ENGINE` 配置中,S3 endpoint 使用参数令牌 `{_partition_id}` 作为 S3 对象(文件名)的一部分,并且 SELECT 查询会在这些生成的对象名称上执行查询(例如,`test_3.csv`)。 -请注意,在 `ENGINE` 配置中,S3 endpoint 将参数占位符 `{_partition_id}` 用作 S3 对象(文件名)的一部分,而 SELECT 查询则是针对这些生成的对象名称进行查询(例如 `test_3.csv`)。 :::note -如示例所示,目前尚不支持直接从分区的 S3 表中进行查询, +如示例所示,目前尚不支持直接从已分区的 S3 表中进行查询, 但可以通过使用 S3 表函数分别查询各个分区来实现。 -在 S3 中写入分区数据的主要用途,是为了将这些数据迁移到另一套 +在 S3 中写入分区数据的主要用例,是为了便于将这些数据迁移到另一套 ClickHouse 系统(例如,从本地部署系统迁移到 ClickHouse -Cloud)。由于 ClickHouse 数据集通常非常庞大,且网络可靠性有时并不理想, -因此将数据集拆分为多个子集进行传输是合理的做法,这也正是进行分区写入的原因。 +Cloud)。由于 ClickHouse 数据集通常非常庞大,且网络 +可靠性有时难以保证,因此以子集方式传输数据集是合理的做法,这也就是进行分区写入的原因。 ::: #### 创建表 {#create-the-table} @@ -173,10 +180,10 @@ PARTITION BY column3 INSERT INTO p VALUES (1, 2, 3), (3, 2, 1), (78, 43, 45) ``` -#### 查询分区 3 {#select-from-partition-3} +#### 从分区 3 查询 {#select-from-partition-3} :::tip -此查询使用 S3 表函数。 +此查询使用 s3 表函数。 ::: ```sql @@ -190,7 +197,7 @@ FROM s3('http://minio:10000/clickhouse//test_3.csv', 'minioadmin', 'minioadminpa └────┴────┴────┘ ``` -#### 从分区 1 查询数据 {#select-from-partition-1} +#### 从分区 1 查询 {#select-from-partition-1} ```sql SELECT * @@ -203,7 +210,7 @@ FROM s3('http://minio:10000/clickhouse//test_1.csv', 'minioadmin', 'minioadminpa └────┴────┴────┘ ``` -#### 从分区 45 中查询数据 {#select-from-partition-45} +#### 查询分区 45 {#select-from-partition-45} ```sql SELECT * @@ -218,72 +225,79 @@ FROM s3('http://minio:10000/clickhouse//test_45.csv', 'minioadmin', 'minioadminp #### 限制 {#limitation} -你可能很自然地会尝试执行 `Select * from p`,但如上所述,此查询会失败;请改用前面的查询。 +你可能很自然地会尝试执行 `Select * from p`,但如上所述,该查询会失败;请改用前面的查询。 ```sql SELECT * FROM p ``` ```response -服务器返回异常(版本 23.4.1): -代码:48. DB::Exception: 来自 localhost:9000。DB::Exception: 尚未实现从分区 S3 存储读取数据的功能。(NOT_IMPLEMENTED) +Received exception from server (version 23.4.1): +Code: 48. DB::Exception: Received from localhost:9000. DB::Exception: Reading from a partitioned S3 storage is not implemented yet. (NOT_IMPLEMENTED) ``` + ## 插入数据 {#inserting-data} -请注意,数据行只能插入到新文件中,不会执行合并周期或文件拆分操作。一旦文件写入完成,后续插入将会失败。为避免这种情况,可以使用 `s3_truncate_on_insert` 和 `s3_create_new_file_on_insert` 设置。更多详情请参见[此处](/integrations/s3#inserting-data)。 +请注意,数据行只能插入到新文件中。不存在合并周期或文件拆分操作。一旦文件写入完成,后续插入将会失败。为避免这种情况,可以使用 `s3_truncate_on_insert` 和 `s3_create_new_file_on_insert` 设置。更多详情参见[此处](/integrations/s3#inserting-data)。 + + ## 虚拟列 {#virtual-columns} -- `_path` — 文件的路径。类型:`LowCardinality(String)`。 +- `_path` — 文件路径。类型:`LowCardinality(String)`。 - `_file` — 文件名。类型:`LowCardinality(String)`。 -- `_size` — 文件大小(字节)。类型:`Nullable(UInt64)`。如果大小未知,则值为 `NULL`。 +- `_size` — 文件大小(字节数)。类型:`Nullable(UInt64)`。如果大小未知,则值为 `NULL`。 - `_time` — 文件的最后修改时间。类型:`Nullable(DateTime)`。如果时间未知,则值为 `NULL`。 - `_etag` — 文件的 ETag。类型:`LowCardinality(String)`。如果 ETag 未知,则值为 `NULL`。 -- `_tags` — 文件的标签。类型:`Map(String, String)`。如果没有标签,则值为空映射 `{}`。 +- `_tags` — 文件的标签。类型:`Map(String, String)`。如果不存在标签,则值为空映射 `{}'`{""} + +有关虚拟列的更多信息,请参阅[此处](../../../engines/table-engines/index.md#table_engines-virtual_columns)。 + -有关虚拟列的更多信息,请参阅[此处](../../../engines/table-engines/index.md#table_engines-virtual_columns){}`. ## 实现细节 {#implementation-details} -- 读写操作可以并行进行 +- 读写可以并行进行 - 不支持: - `ALTER` 和 `SELECT...SAMPLE` 操作。 - 索引。 - - [零拷贝](../../../operations/storing-data.md#zero-copy) 复制在技术上可行,但目前不受支持。 + - 可以实现 [Zero-copy](../../../operations/storing-data.md#zero-copy) 复制,但目前不受支持。 - :::note 零拷贝复制尚未准备好用于生产环境 - 在 ClickHouse 22.8 及更高版本中,零拷贝复制默认被禁用。该特性不建议在生产环境中使用。 + :::note Zero-copy 复制尚未准备好用于生产环境 + 在 ClickHouse 22.8 及更高版本中,Zero-copy 复制默认是禁用的。不建议在生产环境中使用该功能。 ::: + + ## 路径中的通配符 {#wildcards-in-path} -`path` 参数可以使用类似 bash 的通配符来指定多个文件。要参与处理,文件必须实际存在,并且与整个路径模式完全匹配。文件列表在执行 `SELECT` 时确定(而不是在 `CREATE` 时)。 +`path` 参数可以使用类似 bash 的通配符来指定多个文件。要被处理的文件必须存在,并且与整个路径模式完全匹配。文件列表在执行 `SELECT` 时确定(而不是在 `CREATE` 时)。 -* `*` — 匹配任意数量的任意字符(不包括 `/`),可以为空字符串。 -* `**` — 匹配任意数量的任意字符(包括 `/`),可以为空字符串。 +* `*` — 匹配除 `/` 之外的任意数量的任意字符,包括空字符串。 +* `**` — 匹配包括 `/` 在内的任意数量的任意字符,包括空字符串。 * `?` — 匹配任意单个字符。 -* `{some_string,another_string,yet_another_one}` — 匹配字符串 `'some_string'、'another_string'、'yet_another_one'` 中的任意一个。 -* `{N..M}` — 匹配从 N 到 M 范围内(含两端)的任意数字。N 和 M 可以有前导零,例如 `000..078`。 +* `{some_string,another_string,yet_another_one}` — 匹配字符串 `'some_string'`、`'another_string'`、`'yet_another_one'` 中的任意一个。 +* `{N..M}` — 匹配从 N 到 M 范围内(包含两端)的任意数字。N 和 M 可以带有前导零,例如 `000..078`。 -带有 `{}` 的写法类似于 [remote](../../../sql-reference/table-functions/remote.md) 表函数。 +使用 `{}` 的语法形式类似于 [remote](../../../sql-reference/table-functions/remote.md) 表函数。 :::note -如果文件列表中包含带前导零的数字范围,请对每一位数字分别使用带花括号的写法,或者使用 `?`。 +如果文件列表中包含带前导零的数字范围,请为每一位数字分别使用带花括号的语法形式,或者使用 `?`。 ::: -**通配符示例 1** +**带通配符的示例 1** -创建一个表,使用名为 `file-000.csv`、`file-001.csv`、...、`file-999.csv` 的文件: +创建使用文件名为 `file-000.csv`、`file-001.csv`、...、`file-999.csv` 的表: ```sql CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/my_folder/file-{000..999}.csv', 'CSV'); ``` -**带有通配符的示例 2** +**带通配符的示例 2** -假设我们有几个 CSV 格式的文件,其在 S3 上的 URI 如下: +假设我们在 S3 上有若干 CSV 格式的文件,其 URI 如下所示: * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_1.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_1.csv)' * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_2.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/some_folder/some_file_2.csv)' @@ -292,72 +306,77 @@ CREATE TABLE big_table (name String, value UInt32) * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_2.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_2.csv)' * '[https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_3.csv](https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/another_folder/some_file_3.csv)' -有几种方法可以创建一个由这六个文件构成的表: +有多种方式可以创建一个包含这六个文件的表: -1. 指定文件后缀的范围: +1. 指定文件名后缀的范围: ```sql CREATE TABLE table_with_range (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/some_file_{1..3}', 'CSV'); ``` -2. 将所有带有 `some_file_` 前缀的文件取出(两个文件夹中都不应存在除此之外、带有该前缀的额外文件): +2. 取出所有以 `some_file_` 为前缀的文件(这两个文件夹中都不应包含带有该前缀的多余文件): ```sql CREATE TABLE table_with_question_mark (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/some_file_?', 'CSV'); ``` -3. 将这两个文件夹中的所有文件拿出来(所有文件都应符合查询中描述的格式和架构): +3. 将两个文件夹中的所有文件都纳入(所有文件都应符合查询中描述的格式和 schema): ```sql CREATE TABLE table_with_asterisk (name String, value UInt32) ENGINE = S3('https://clickhouse-public-datasets.s3.amazonaws.com/my-bucket/{some,another}_folder/*', 'CSV'); ``` + ## 存储设置 {#storage-settings} -- [s3_truncate_on_insert](/operations/settings/settings.md#s3_truncate_on_insert) - 允许在插入前截断文件。默认禁用。 -- [s3_create_new_file_on_insert](/operations/settings/settings.md#s3_create_new_file_on_insert) - 当格式带有后缀时,允许在每次插入操作时创建一个新文件。默认禁用。 -- [s3_skip_empty_files](/operations/settings/settings.md#s3_skip_empty_files) - 允许在读取时跳过空文件。默认启用。 +- [s3_truncate_on_insert](/operations/settings/settings.md#s3_truncate_on_insert) - 允许在插入前截断目标文件。默认情况下为禁用。 +- [s3_create_new_file_on_insert](/operations/settings/settings.md#s3_create_new_file_on_insert) - 如果格式带有后缀,允许在每次插入时创建一个新文件。默认情况下为禁用。 +- [s3_skip_empty_files](/operations/settings/settings.md#s3_skip_empty_files) - 允许在读取时跳过空文件。默认情况下为启用。 + + ## 与 S3 相关的设置 {#settings} -以下设置可以在查询执行前进行配置,或写入配置文件。 +以下设置可以在查询执行前配置,或者写入配置文件中。 -- `s3_max_single_part_upload_size` — 使用单部分上传到 S3 时,单个对象允许的最大大小。默认值为 `32Mb`。 -- `s3_min_upload_part_size` — 使用 [S3 多部分上传](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) 时,每个分片的最小大小。默认值为 `16Mb`。 +- `s3_max_single_part_upload_size` — 使用单部分上传到 S3 时,单个对象允许上传的最大大小。默认值为 `32Mb`。 +- `s3_min_upload_part_size` — 使用多部分上传到 [S3 Multipart upload](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) 时,每个分片上传的最小大小。默认值为 `16Mb`。 - `s3_max_redirects` — 允许的 S3 重定向跳转的最大次数。默认值为 `10`。 -- `s3_single_read_retries` — 单次读操作的最大重试次数。默认值为 `4`。 -- `s3_max_put_rps` — 在开始限流前,每秒允许的最大 PUT 请求数。默认值为 `0`(无限制)。 -- `s3_max_put_burst` — 在触及每秒请求数限制前,可以同时发起的最大请求数。默认值为 `0` 时,等同于 `s3_max_put_rps`。 -- `s3_max_get_rps` — 在开始限流前,每秒允许的最大 GET 请求数。默认值为 `0`(无限制)。 -- `s3_max_get_burst` — 在触及每秒请求数限制前,可以同时发起的最大请求数。默认值为 `0` 时,等同于 `s3_max_get_rps`。 -- `s3_upload_part_size_multiply_factor` - 每当在一次对 S3 的写入中上传了 `s3_multiply_parts_count_threshold` 个分片时,将 `s3_min_upload_part_size` 按该因子放大。默认值为 `2`。 -- `s3_upload_part_size_multiply_parts_count_threshold` - 每当向 S3 上传了该数量的分片时,会将 `s3_min_upload_part_size` 乘以 `s3_upload_part_size_multiply_factor`。默认值为 `500`。 -- `s3_max_inflight_parts_for_one_file` - 限制对同一对象可以并发执行的 PUT 请求数。该数量应被限制。值为 `0` 表示不限制。默认值为 `20`。每个进行中的分片(in-flight part)都会占用一个缓冲区,对于前 `s3_upload_part_size_multiply_factor` 个分片,缓冲区大小为 `s3_min_upload_part_size`;当文件足够大时,缓冲区会更大,详见 `upload_part_size_multiply_factor`。在默认设置下,对于小于 `8G` 的文件,单个上传文件占用的内存不超过 `320Mb`。对于更大的文件,占用会更高。 +- `s3_single_read_retries` — 单次读取操作的最大重试次数。默认值为 `4`。 +- `s3_max_put_rps` — 在开始限流之前,每秒允许的最大 PUT 请求速率。默认值为 `0`(无限制)。 +- `s3_max_put_burst` — 在触发每秒请求数限制之前,允许同时发起的最大请求数。默认(值为 `0`)时等于 `s3_max_put_rps`。 +- `s3_max_get_rps` — 在开始限流之前,每秒允许的最大 GET 请求速率。默认值为 `0`(无限制)。 +- `s3_max_get_burst` — 在触发每秒请求数限制之前,允许同时发起的最大请求数。默认(值为 `0`)时等于 `s3_max_get_rps`。 +- `s3_upload_part_size_multiply_factor` - 每当从一次写入到 S3 上传了 `s3_multiply_parts_count_threshold` 个分片时,将 `s3_min_upload_part_size` 乘以该因子。默认值为 `2`。 +- `s3_upload_part_size_multiply_parts_count_threshold` - 每当向 S3 上传的分片数量达到该值时,`s3_min_upload_part_size` 会乘以 `s3_upload_part_size_multiply_factor`。默认值为 `500`。 +- `s3_max_inflight_parts_for_one_file` - 限制针对同一对象可并发运行的 PUT 请求数量。该数值应被限制。值为 `0` 表示无限制。默认值为 `20`。每个进行中的分片都会有一个大小为 `s3_min_upload_part_size` 的缓冲区,适用于前 `s3_upload_part_size_multiply_factor` 个分片,当文件足够大时缓冲区会更大,参见 `upload_part_size_multiply_factor`。在默认设置下,对于小于 `8GB` 的文件,每个上传文件占用的内存不会超过 `320Mb`。对于更大的文件,占用会更高。 + +安全注意事项:如果恶意用户可以指定任意 S3 URL,则必须将 `s3_max_redirects` 设置为 0 以避免 [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery) 攻击;或者在服务器配置中指定 `remote_host_filter`。 + -安全注意事项:如果恶意用户可以指定任意 S3 URL,应将 `s3_max_redirects` 设为 `0` 以避免 [SSRF](https://en.wikipedia.org/wiki/Server-side_request_forgery) 攻击;或者在服务器配置中指定 `remote_host_filter`。 ## 基于 endpoint 的设置 {#endpoint-settings} -可以在配置文件中为指定的 endpoint 设置以下配置(通过 URL 的精确前缀进行匹配): +可以在配置文件中为指定的 endpoint 配置以下设置(将通过 URL 的精确前缀进行匹配): -* `endpoint` — 指定 endpoint 的前缀。必需项。 +* `endpoint` — 指定 endpoint 的前缀。必填。 * `access_key_id` 和 `secret_access_key` — 指定用于该 endpoint 的凭证。可选。 -* `use_environment_credentials` — 如果设置为 `true`,S3 客户端将尝试从环境变量和给定 endpoint 的 [Amazon EC2](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud) 元数据中获取凭证。可选,默认值为 `false`。 -* `region` — 指定 S3 区域名。可选。 +* `use_environment_credentials` — 如果设置为 `true`,S3 客户端将尝试从环境变量和该 endpoint 的 [Amazon EC2](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud) 元数据中获取凭证。可选,默认值为 `false`。 +* `region` — 指定 S3 区域名称。可选。 * `use_insecure_imds_request` — 如果设置为 `true`,S3 客户端在从 Amazon EC2 元数据获取凭证时将使用不安全的 IMDS 请求。可选,默认值为 `false`。 -* `expiration_window_seconds` — 用于检查基于过期时间的凭证是否已失效的宽限时间(秒)。可选,默认值为 `120`。 -* `no_sign_request` - 忽略所有凭证,使请求不进行签名。用于访问公共存储桶时非常有用。 -* `header` — 将指定的 HTTP 头添加到对给定 endpoint 的请求中。可选,可以指定多次。 -* `access_header` - 当不存在来自其他来源的凭证时,将指定的 HTTP 头添加到对给定 endpoint 的请求中。 -* `server_side_encryption_customer_key_base64` — 如果指定,将为访问使用 SSE-C 加密的 S3 对象设置所需的 HTTP 头。可选。 -* `server_side_encryption_kms_key_id` - 如果指定,将为访问使用 [SSE-KMS 加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 的 S3 对象设置所需的 HTTP 头。如果指定为空字符串,则使用 AWS 托管的 S3 密钥。可选。 -* `server_side_encryption_kms_encryption_context` - 如果与 `server_side_encryption_kms_key_id` 一起指定,将设置给定的 SSE-KMS 加密上下文 HTTP 头。可选。 -* `server_side_encryption_kms_bucket_key_enabled` - 如果与 `server_side_encryption_kms_key_id` 一起指定,将设置启用 SSE-KMS S3 bucket key 的 HTTP 头。可选,可以为 `true` 或 `false`,默认不设置(遵循 bucket 级别设置)。 -* `max_single_read_retries` — 单次读取时的最大重试次数。默认值为 `4`。可选。 -* `max_put_rps`、`max_put_burst`、`max_get_rps` 和 `max_get_burst` - 限流设置(参见上文说明),用于特定 endpoint,而不是按查询进行设置。可选。 +* `expiration_window_seconds` — 用于检查基于过期时间的凭证是否已过期的宽限期(秒)。可选,默认值为 `120`。 +* `no_sign_request` - 忽略所有凭证,使请求不被签名。适用于访问公共 bucket。 +* `header` — 为发往指定 endpoint 的请求添加给定的 HTTP 头。可选,可多次指定。 +* `access_header` - 为发往指定 endpoint 的请求添加给定的 HTTP 头,用于不存在来自其他来源的凭证时的情况。 +* `server_side_encryption_customer_key_base64` — 如果指定,则会为访问使用 SSE-C 加密的 S3 对象设置所需的头。可选。 +* `server_side_encryption_kms_key_id` - 如果指定,则会为访问使用 [SSE-KMS 加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 的 S3 对象设置所需的头。如果指定为空字符串,则会使用 AWS 托管的 S3 密钥。可选。 +* `server_side_encryption_kms_encryption_context` - 如果与 `server_side_encryption_kms_key_id` 一起指定,则会设置给定的 SSE-KMS 加密上下文头。可选。 +* `server_side_encryption_kms_bucket_key_enabled` - 如果与 `server_side_encryption_kms_key_id` 一起指定,则会设置启用 SSE-KMS 的 S3 bucket keys 的头。可选,可为 `true` 或 `false`,默认不设置(遵从 bucket 级别设置)。 +* `max_single_read_retries` — 单次读取期间的最大重试次数。默认值为 `4`。可选。 +* `max_put_rps`、`max_put_burst`、`max_get_rps` 和 `max_get_burst` - 针对特定 endpoint 使用的限流设置(参见上文描述),而不是按查询级别设置。可选。 **示例:** @@ -382,6 +401,7 @@ CREATE TABLE table_with_asterisk (name String, value UInt32) ``` + ## 使用归档文件 {#working-with-archives} 假设我们在 S3 上有若干归档文件,其 URI 如下: @@ -390,7 +410,7 @@ CREATE TABLE table_with_asterisk (name String, value UInt32) * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-11.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-11.csv.zip)' * '[https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-12.csv.zip](https://s3-us-west-1.amazonaws.com/umbrella-static/top-1m-2018-01-12.csv.zip)' -可以使用 :: 从这些归档文件中提取数据。通配模式(glob)既可以用于 URL 的部分,也可以用于 :: 之后的部分(用于指定归档内部文件的名称)。 +可以使用 :: 从这些归档文件中提取数据。通配符(globs)既可以用于 URL 部分,也可以用于 :: 之后的部分(用于指定归档内部文件的名称)。 ```sql SELECT * @@ -404,23 +424,27 @@ ClickHouse 支持三种归档格式: ZIP TAR 7Z -虽然可以从任意受支持的存储位置访问 ZIP 和 TAR 归档,但 7Z 归档只能从安装了 ClickHouse 的本地文件系统读取。 +虽然可以从任何受支持的存储位置访问 ZIP 和 TAR 归档文件,但 7Z 归档文件只能从安装了 ClickHouse 的本地文件系统读取。 ::: + ## 访问公共 bucket {#accessing-public-buckets} -ClickHouse 会尝试从多种不同类型的来源自动获取凭证。 -有时,在访问某些公共 bucket 时,这可能会导致问题,从而导致客户端返回 `403` 错误码。 -可以通过使用 `NOSIGN` 关键字来避免这一问题,该关键字会强制客户端忽略所有凭证,不对请求进行签名。 +ClickHouse 会尝试从多种不同类型的来源获取凭证。 +有时,在访问某些公共 bucket 时,这可能会导致问题,使客户端返回 `403` 错误码。 +可以通过使用 `NOSIGN` 关键字来避免此问题,该关键字会强制客户端忽略所有凭证,请求时不进行签名。 ```sql CREATE TABLE big_table (name String, value UInt32) ENGINE = S3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/aapl_stock.csv', NOSIGN, 'CSVWithNames'); ``` -## 性能优化 {#optimizing-performance} -如需了解如何优化 `s3` 函数的性能,请参阅[我们的详细指南](/integrations/s3/performance)。 +## 优化性能 {#optimizing-performance} + +有关如何优化 S3 FUNCTION 性能的详细信息,请参阅 [我们的详细指南](/integrations/s3/performance)。 + + ## 另请参阅 {#see-also} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md index 690d01860c6..c35fd297c1e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/engines/table-engines/integrations/s3queue.md @@ -83,6 +83,7 @@ SETTINGS mode = 'ordered'; ``` + ## 设置 {#settings} 要获取为该表配置的设置列表,请查询 `system.s3_queue_settings` 系统表。自 `24.10` 版本起可用。 @@ -96,7 +97,7 @@ SETTINGS 默认值:在 24.6 之前的版本中默认为 `ordered`。从 24.6 开始不再提供默认值,该设置必须手动指定。对于在更早版本中创建的表,为了兼容性其默认值仍为 `Ordered`。 -### `after_processing` {#after_processing} +### `after_processing` {#after_processing} 如何在文件成功处理后进行后续操作。 @@ -132,7 +133,8 @@ SETTINGS 标记操作需要提供标签键和值,分别通过 `after_processing_tag_key` 和 `after_processing_tag_value` 配置。 -### `after_processing_retries` {#after_processing_retries} + +### `after_processing_retries` {#after_processing_retries} 在放弃之前,对所请求的后处理操作进行重试的次数。 @@ -142,9 +144,9 @@ SETTINGS 默认值:`10`。 -### `after_processing_move_access_key_id` {#after_processing_move_access_key_id} +### `after_processing_move_access_key_id` {#after_processing_move_access_key_id} -如果目标是另一个 S3 bucket,则该选项为将成功处理的文件移动到目标 S3 bucket 所使用的 Access Key ID。 +如果目标是另一个 S3 bucket,则该选项指定用于将成功处理的文件移动到目标 S3 bucket 的 Access Key ID。 可能的取值: @@ -162,7 +164,7 @@ SETTINGS 默认值:空字符串。 -### `after_processing_move_secret_access_key` {#after_processing_move_secret_access_key} +### `after_processing_move_secret_access_key` {#after_processing_move_secret_access_key} 当目标是另一个 S3 bucket 时,用于将成功处理的文件移动到该目标 bucket 的 Secret Access Key。 @@ -172,7 +174,7 @@ SETTINGS 默认值:空字符串。 -### `after_processing_move_uri` {#after_processing_move_uri} +### `after_processing_move_uri` {#after_processing_move_uri} 当目标是另一个 S3 bucket 时,用于存放已成功处理文件的 S3 bucket 的 URI。 @@ -182,7 +184,7 @@ SETTINGS 默认值:空字符串。 -### `after_processing_tag_key` {#after_processing_tag_key} +### `after_processing_tag_key` {#after_processing_tag_key} 当 `after_processing='tag'` 时,用于给成功处理的文件打标签的标签键。 @@ -192,7 +194,7 @@ SETTINGS 默认值:空字符串。 -### `after_processing_tag_value` {#after_processing_tag_value} +### `after_processing_tag_value` {#after_processing_tag_value} 当 `after_processing='tag'` 时,为成功处理的文件设置标签时使用的标签值。 @@ -202,7 +204,7 @@ SETTINGS 默认值:空字符串。 -### `keeper_path` {#keeper_path} +### `keeper_path` {#keeper_path} ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定,则默认路径由全局配置中提供的路径和表的 UUID 组成。 可能的取值: @@ -211,25 +213,25 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 默认值:`/`。 -### `s3queue_loading_retries` {#loading_retries} +### `s3queue_loading_retries` {#loading_retries} -文件加载最多重试指定的次数。默认情况下,不进行重试。 +对文件加载操作最多重试指定的次数。默认情况下,不进行重试。 可能的取值: * 正整数。 默认值:`0`。 -### `s3queue_processing_threads_num` {#processing_threads_num} +### `s3queue_processing_threads_num` {#processing_threads_num} -用于执行处理的线程数。仅适用于 `Unordered` 模式。 +用于处理的线程数。仅适用于 `Unordered` 模式。 默认值:CPU 数量或 16。 -### `s3queue_parallel_inserts` {#parallel_inserts} +### `s3queue_parallel_inserts` {#parallel_inserts} 默认情况下,`processing_threads_num` 只会产生一个 `INSERT`,因此只是以多线程方式下载文件并进行解析。 -但这会限制并行度,因此为获得更高吞吐量,应使用 `parallel_inserts=true`,这将允许并行插入数据(但请注意,这会导致为 MergeTree 系列表引擎生成更多数据片段)。 +但这会限制并行度,因此为获得更高吞吐量,应使用 `parallel_inserts=true`,这将允许并行插入数据(但请注意,这会导致为 MergeTree 系列表引擎生成更多分区片段)。 :::note `INSERT` 的触发会受 `max_process*_before_commit` 相关设置约束。 @@ -237,13 +239,13 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 默认值:`false`。 -### `s3queue_enable_logging_to_s3queue_log` {#enable_logging_to_s3queue_log} +### `s3queue_enable_logging_to_s3queue_log` {#enable_logging_to_s3queue_log} 启用将日志记录写入 `system.s3queue_log`。 默认值:`0`。 -### `s3queue_polling_min_timeout_ms` {#polling_min_timeout_ms} +### `s3queue_polling_min_timeout_ms` {#polling_min_timeout_ms} 指定 ClickHouse 在进行下一次轮询尝试之前等待的最短时间(以毫秒为单位)。 @@ -253,7 +255,7 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 默认值:`1000`。 -### `s3queue_polling_max_timeout_ms` {#polling_max_timeout_ms} +### `s3queue_polling_max_timeout_ms` {#polling_max_timeout_ms} 定义 ClickHouse 在发起下一次轮询尝试之前的最大等待时间(以毫秒为单位)。 @@ -263,9 +265,9 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 默认值:`10000`。 -### `s3queue_polling_backoff_ms` {#polling_backoff_ms} +### `s3queue_polling_backoff_ms` {#polling_backoff_ms} -确定在未发现新文件时,需要加到上一次轮询间隔上的额外等待时间。下一次轮询会在上一次间隔与该退避值之和或最大间隔(取二者中较小值)之后触发。 +确定在未发现新文件时,需要加到上一次轮询间隔上的额外等待时间。下一次轮询会在上一次间隔与该退避时间之和或最大间隔(取二者中较小值)之后触发。 可能的取值: @@ -284,7 +286,7 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 默认值:`1000`。 -### `s3queue_tracked_file_ttl_sec` {#tracked_file_ttl_sec} +### `s3queue_tracked_file_ttl_sec` {#tracked_file_ttl_sec} 在“unordered”模式下,在 ZooKeeper 节点中保留已处理文件的最长时间(以秒为单位,默认永久保存)。对“ordered”模式无效。 在经过指定秒数后,该文件会被重新导入。 @@ -295,27 +297,27 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 默认值:`0`。 -### `s3queue_cleanup_interval_min_ms` {#cleanup_interval_min_ms} +### `s3queue_cleanup_interval_min_ms` {#cleanup_interval_min_ms} -用于 `Ordered` 模式。定义负责维护已跟踪文件 TTL 和最大已跟踪文件集合的后台任务在重新调度间隔上的最小值。 +用于 `Ordered` 模式。定义负责维护已跟踪文件生存时间 (TTL) 和最大已跟踪文件集合的后台任务的重新调度间隔下限。 默认值:`10000`。 -### `s3queue_cleanup_interval_max_ms` {#cleanup_interval_max_ms} +### `s3queue_cleanup_interval_max_ms` {#cleanup_interval_max_ms} -用于 “Ordered” 模式。定义重新调度后台任务的时间间隔的最大上限,该后台任务负责维护已跟踪文件的 TTL,以及已跟踪文件集合的最大大小。 +用于 “Ordered” 模式。定义后台任务重新调度时间间隔的上限,该后台任务负责维护已跟踪文件的生存时间 (TTL),以及已跟踪文件集合的最大大小。 默认值:`30000`。 ### `s3queue_buckets` {#buckets} -用于 Ordered 模式。从 `24.6` 版本开始可用。如果存在多个 S3Queue 表副本,并且它们都使用 Keeper 中相同的元数据目录,那么 `s3queue_buckets` 的值至少要等于副本数量。如果同时使用了 `s3queue_processing_threads` 设置,那么进一步增大 `s3queue_buckets` 的值是合理的,因为它决定了 `S3Queue` 处理的实际并行度。 +用于 Ordered 模式。自 `24.6` 版本起可用。如果存在多个 S3Queue 表副本,并且它们都使用 Keeper 中相同的元数据目录,那么 `s3queue_buckets` 的值至少应等于副本数量。如果同时使用了 `s3queue_processing_threads` 设置,那么将 `s3queue_buckets` 的值进一步增大是有意义的,因为它决定了 `S3Queue` 处理的实际并行度。 -### `use_persistent_processing_nodes` {#use_persistent_processing_nodes} +### `use_persistent_processing_nodes` {#use_persistent_processing_nodes} -默认情况下,S3Queue 表始终使用临时处理节点。如果在 S3Queue 将已处理文件提交到 ZooKeeper 之前、但在其开始处理之后,ZooKeeper 会话过期,就可能导致数据重复。此设置会强制服务器在 Keeper 会话过期的情况下消除产生重复数据的可能性。 +默认情况下,S3Queue 表一直使用临时处理节点。如果在 S3Queue 将已处理文件提交到 ZooKeeper 之前、但在其开始处理之后,ZooKeeper 会话过期,就可能导致数据重复。此设置会强制服务器在 Keeper 会话过期时避免出现重复数据。 -### `persistent_processing_nodes_ttl_seconds` {#persistent_processing_nodes_ttl_seconds} +### `persistent_processing_nodes_ttl_seconds` {#persistent_processing_nodes_ttl_seconds} 在服务器异常终止的情况下,如果启用了 `use_persistent_processing_nodes`,就有可能出现尚未被移除的处理节点(processing nodes)。此设置用于定义一个时间段,在该时间段内,这些处理节点可以被安全清理。 @@ -323,7 +325,7 @@ ZooKeeper 中的路径可以通过表引擎设置单独指定;如果未指定 ## 与 S3 相关的设置 {#s3-settings} -该引擎支持所有 S3 相关设置。有关 S3 设置的更多信息,请参阅[此处](../../../engines/table-engines/integrations/s3.md)。 +该引擎支持所有与 S3 相关的设置。有关 S3 设置的更多信息,请参阅[此处](../../../engines/table-engines/integrations/s3.md)。 ## 基于角色的 S3 访问 {#s3-role-based-access} @@ -348,6 +350,7 @@ SETTINGS ... ``` + ## S3Queue 有序模式 {#ordered-mode} `S3Queue` 处理模式可以在 ZooKeeper 中存储更少的元数据,但有一个限制:按时间更晚添加的文件,其名称在字母数字顺序上必须更大。 @@ -358,6 +361,12 @@ SETTINGS 不建议在 `24.6` 版本之前使用 `(s3queue_)processing_threads_num` 设置。 `(s3queue_)buckets` 设置从 `24.6` 版本开始可用。 +## 从 S3Queue 表引擎中执行 SELECT 查询 {#select} + +默认情况下,S3Queue 表禁止执行 SELECT 查询。这符合常见的队列模式:数据只被读取一次,随后从队列中移除。禁止 SELECT 是为了防止意外数据丢失。 +但在某些情况下,执行 SELECT 查询可能是有用的。要实现这一点,需要将设置 `stream_like_engine_allow_direct_select` 设为 `True`。 +S3Queue 引擎为 SELECT 查询提供了一个特殊设置:`commit_on_select`。将其设为 `False` 可以在读取后保留队列中的数据,将其设为 `True` 则会在读取后移除数据。 + ## 描述 {#description} `SELECT` 对于流式导入并不是特别有用(除调试外),因为每个文件只能被导入一次。更实用的做法是使用[物化视图](../../../sql-reference/statements/create/view.md)来创建实时数据流。为此: @@ -385,6 +394,7 @@ SETTINGS SELECT * FROM stats ORDER BY name; ``` + ## 虚拟列 {#virtual-columns} * `_path` — 文件路径。 @@ -416,7 +426,7 @@ SETTINGS * 服务器异常终止。 -2. 在多个服务器上配置了 `S3Queue` 且它们在 zookeeper 中指向同一路径,并使用 `Ordered` 模式时,`s3queue_loading_retries` 将不起作用。该问题很快将得到修复。 +2. 在多个服务器上配置了 `S3Queue` 且它们在 zookeeper 中指向同一路径,并使用 `Ordered` 模式时,`s3queue_loading_retries` 将不会生效。该问题将在后续版本中修复。 ## 自省 {#introspection} @@ -439,7 +449,7 @@ SETTINGS `exception` String ) ENGINE = SystemS3Queue -COMMENT '包含 S3Queue 元数据的内存状态以及每个文件当前处理的行数。' │ +COMMENT 'Contains in-memory state of S3Queue metadata and currently processed rows per file.' │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` @@ -462,9 +472,9 @@ ProfileEvents: {'ZooKeeperTransactions':3,'ZooKeeperGet':2,'ZooKeeperMul exception: ``` -2. `system.s3queue_log`。持久化表。包含与 `system.s3queue` 相同的信息,但记录的是 `processed` 和 `failed` 文件。 +2. `system.s3queue_log`。持久化表。包含与 `system.s3queue` 相同的信息,但仅针对 `processed` 和 `failed` 状态的文件。 -该表具有以下结构: +该表的结构如下: ```sql SHOW CREATE TABLE system.s3queue_log @@ -492,7 +502,7 @@ SETTINGS index_granularity = 8192 │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ``` -要使用 `system.s3queue_log`,需要在服务器配置文件中为其添加相应配置: +要使用 `system.s3queue_log`,需要在服务器配置文件中定义其配置: ```xml diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md index 8156880b3eb..cc63de828a7 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/maxMap.md @@ -1,23 +1,30 @@ --- slug: '/examples/aggregate-function-combinators/maxMap' title: 'maxMap' -description: 'maxMap 组合子使用示例' +description: '使用 maxMap 组合器的示例' keywords: ['max', 'map', 'combinator', 'examples', 'maxMap'] sidebar_label: 'maxMap' doc_type: 'reference' --- + + # maxMap {#maxmap} + + ## 描述 {#description} -可以将 [`Map`](/sql-reference/aggregate-functions/combinators#-map) 组合器应用于 [`max`](/sql-reference/aggregate-functions/reference/max) 函数,以使用 `maxMap` 聚合组合器函数按键分别计算 Map 中的最大值。 +[`Map`](/sql-reference/aggregate-functions/combinators#-map) 组合器可以应用于 [`max`](/sql-reference/aggregate-functions/reference/max) +函数,使用 `maxMap` 聚合函数组合器按键计算 Map 中每个键对应的最大值。 + + ## 示例用法 {#example-usage} -在这个示例中,我们将创建一张表,用于存储不同时间段的状态码及其计数, -其中每一行都包含一个 `Map`,用于将状态码映射到对应的计数。我们将使用 -`maxMap` 来计算每个时间段内各个状态码的最大计数值。 +在这个示例中,我们将创建一个表,用于存储不同时间段的状态码及其计数, +其中每一行都包含一个 Map,用于将状态码映射到其对应的计数。我们将使用 +`maxMap` 来在每个时间段内计算每个状态码的最大计数值。 ```sql title="Query" CREATE TABLE metrics( @@ -34,32 +41,33 @@ INSERT INTO metrics VALUES SELECT timeslot, - maxMap(status) + maxMap(status), FROM metrics GROUP BY timeslot; ``` -`maxMap` 函数会在每个时间段内找出各个状态码的最大计数。例如: +`maxMap` 函数会在每个时间段内,为每个状态码找到最大计数值。例如: -* 在时间段 '2000-01-01 00:00:00': +* 在时间段 '2000-01-01 00:00:00' 中: * 状态 'a':15 * 状态 'b':25 * 状态 'c':max(35, 45) = 45 * 状态 'd':55 * 状态 'e':65 -* 在时间段 '2000-01-01 00:01:00': +* 在时间段 '2000-01-01 00:01:00' 中: * 状态 'd':75 * 状态 'e':85 * 状态 'f':max(95, 105) = 105 * 状态 'g':max(115, 125) = 125 ```response title="Response" - ┌────────────时间段─┬─最大映射(状态)───────────────────────┐ + ┌────────────timeslot─┬─maxMap(status)───────────────────────┐ 1. │ 2000-01-01 00:01:00 │ {'d':75,'e':85,'f':105,'g':125} │ 2. │ 2000-01-01 00:00:00 │ {'a':15,'b':25,'c':45,'d':55,'e':65} │ └─────────────────────┴──────────────────────────────────────┘ ``` + ## 另请参阅 {#see-also} - [`max`](/sql-reference/aggregate-functions/reference/max) -- [`Map组合器`](/sql-reference/aggregate-functions/combinators#-map) +- [`Map combinator`](/sql-reference/aggregate-functions/combinators#-map) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md index 4f04e1ed380..36128189bf4 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingArrayIf.md @@ -7,15 +7,23 @@ sidebar_label: 'quantilesTimingArrayIf' doc_type: 'reference' --- + + # quantilesTimingArrayIf {#quantilestimingarrayif} -## 描述 {#description} -可以将 [`Array`](/sql-reference/aggregate-functions/combinators#-array) 和 [`If`](/sql-reference/aggregate-functions/combinators#-if) 组合器应用于 [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) 函数,使用 `quantilesTimingArrayIf` 聚合组合器函数,对条件为真的行中数组里的时间值计算分位数。 -## 使用示例 {#example-usage} +## Description {#description} + +[`Array`](/sql-reference/aggregate-functions/combinators#-array) 和 [`If`](/sql-reference/aggregate-functions/combinators#-if) +组合器可以应用于 [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) +函数,在条件为 true 的行上使用 `quantilesTimingArrayIf` 聚合组合器函数计算数组中时间值的分位数。 + -在本示例中,我们将创建一张表,用于存储不同接口的 API 响应时间, + +## 示例用法 {#example-usage} + +在本示例中,我们将创建一个表来存储不同 API 端点的响应时间, 并使用 `quantilesTimingArrayIf` 来计算成功请求的响应时间分位数。 ```sql title="Query" @@ -37,25 +45,26 @@ FROM api_responses GROUP BY endpoint; ``` -`quantilesTimingArrayIf` 函数只会对成功率超过 95% 的端点计算分位数。 +`quantilesTimingArrayIf` 函数只会为成功率高于 95% 的端点计算分位数。 返回的数组按以下顺序包含这些分位数: * 0(最小值) * 0.25(第一四分位数) * 0.5(中位数) * 0.75(第三四分位数) -* 0.95(第 95 百分位) -* 0.99(第 99 百分位) +* 0.95(第 95 百分位数) +* 0.99(第 99 百分位数) * 1.0(最大值) ```response title="Response" - ┌─端点─┬─响应时间分位数─────────────────────────────────────────────┐ -1. │ 订单 │ [82, 87, 92, 98, 103, 104, 105] │ -2. │ 产品 │ [45, 47, 49, 51, 52, 52, 53] │ -3. │ 用户 │ [nan, nan, nan, nan, nan, nan, nan] │ + ┌─endpoint─┬─response_time_quantiles─────────────────────────────────────────────┐ +1. │ orders │ [82, 87, 92, 98, 103, 104, 105] │ +2. │ products │ [45, 47, 49, 51, 52, 52, 53] │ +3. │ users │ [nan, nan, nan, nan, nan, nan, nan] │ └──────────┴─────────────────────────────────────────────────────────────────────┘ ``` + ## 另请参阅 {#see-also} - [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) - [`If 组合器`](/sql-reference/aggregate-functions/combinators#-if) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md index 841b1d04ad9..717923b27bd 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/quantilesTimingIf.md @@ -7,17 +7,22 @@ sidebar_label: 'quantilesTimingIf' doc_type: 'reference' --- + + # quantilesTimingIf {#quantilestimingif} + + ## 描述 {#description} [`If`](/sql-reference/aggregate-functions/combinators#-if) 组合器可以应用于 [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -函数,使用 `quantilesTimingIf` 聚合组合器函数来计算满足条件为 true 的行的耗时值分位数。 +函数,通过聚合组合器函数 `quantilesTimingIf` 来计算条件为 true 的行的时间值分位数。 -## 使用示例 {#example-usage} -在这个示例中,我们将创建一个表,用于存储不同接口端点的 API 响应时间, -并使用 `quantilesTimingIf` 来计算成功请求的响应时间分位数。 + +## 示例用法 {#example-usage} + +在本示例中,我们将创建一张表来存储不同端点的 API 响应时间,并使用 `quantilesTimingIf` 计算成功请求的响应时间分位数。 ```sql title="Query" CREATE TABLE api_responses( @@ -59,25 +64,26 @@ FROM api_responses GROUP BY endpoint; ``` -函数 `quantilesTimingIf` 只会对成功的请求(is_successful = 1)计算分位数。 -返回的数组按以下顺序包含这些分位数: +`quantilesTimingIf` 函数仅会对成功的请求(is_successful = 1)计算分位数。 +返回的数组按顺序包含以下分位数: * 0(最小值) * 0.25(第一四分位数) * 0.5(中位数) * 0.75(第三四分位数) -* 0.95(第 95 百分位数) -* 0.99(第 99 百分位数) +* 0.95(第 95 百分位) +* 0.99(第 99 百分位) * 1.0(最大值) ```response title="Response" - ┌─端点─┬─响应时间分位数─────────────────────────────────────────────┐ -1. │ 订单 │ [82, 87, 92, 98, 103, 104, 105] │ -2. │ 产品 │ [45, 47, 49, 51, 52, 52, 53] │ -3. │ 用户 │ [nan, nan, nan, nan, nan, nan, nan] │ + ┌─endpoint─┬─response_time_quantiles─────────────────────────────────────────────┐ +1. │ orders │ [82, 87, 92, 98, 103, 104, 105] │ +2. │ products │ [45, 47, 49, 51, 52, 52, 53] │ +3. │ users │ [nan, nan, nan, nan, nan, nan, nan] │ └──────────┴─────────────────────────────────────────────────────────────────────┘ ``` + ## 另请参阅 {#see-also} - [`quantilesTiming`](/sql-reference/aggregate-functions/reference/quantiletiming) -- [`If` 组合器](/sql-reference/aggregate-functions/combinators#-if) +- [`If 组合子`](/sql-reference/aggregate-functions/combinators#-if) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md index 123e2494524..fc3d544f3aa 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/guides/examples/aggregate_function_combinators/sumMap.md @@ -1,23 +1,28 @@ --- slug: '/examples/aggregate-function-combinators/sumMap' title: 'sumMap' -description: 'sumMap 组合器使用示例' -keywords: ['sum', 'map', 'combinator', 'examples', 'sumMap'] +description: '使用 sumMap 组合器的示例' +keywords: ['sum', 'map', '组合器', '示例', 'sumMap'] sidebar_label: 'sumMap' doc_type: 'reference' --- + + # sumMap {#summap} + + ## 描述 {#description} [`Map`](/sql-reference/aggregate-functions/combinators#-map) 组合器可以应用于 [`sum`](/sql-reference/aggregate-functions/reference/sum) -函数,此时会使用 `sumMap` 聚合组合器函数,根据每个键计算 Map 中对应值的总和。 +函数,以使用 `sumMap` 聚合组合器函数按键计算 Map 中值的总和。 + + ## 示例用法 {#example-usage} -在本示例中,我们将创建一张表,用于存储不同时间段内的状态码及其计数,其中每一行都包含一个 Map,用于将状态码映射到其对应的计数。我们将使用 -`sumMap` 来计算每个时间段内各状态码的总计数。 +在本例中,我们将创建一个表,用于存储不同时间段的状态码及其计数,其中每一行都包含一个 `Map`,用于将状态码映射到其对应的计数。我们将使用 `sumMap` 来计算每个时间段内每种状态码的总数。 ```sql title="Query" CREATE TABLE metrics( @@ -39,27 +44,28 @@ FROM metrics GROUP BY timeslot; ``` -`sumMap` 函数会计算每个时间段内各状态码的总数。例如: +`sumMap` 函数会在每个时间段内计算各状态码的总数。例如: -* 在时间段 '2000-01-01 00:00:00' 内: +* 在时间段 '2000-01-01 00:00:00': * 状态 'a':15 * 状态 'b':25 * 状态 'c':35 + 45 = 80 * 状态 'd':55 * 状态 'e':65 -* 在时间段 '2000-01-01 00:01:00' 内: +* 在时间段 '2000-01-01 00:01:00': * 状态 'd':75 * 状态 'e':85 * 状态 'f':95 + 105 = 200 * 状态 'g':115 + 125 = 240 ```response title="Response" - ┌────────────时隙────────┬─状态求和映射(sumMap)───────────────────┐ + ┌────────────timeslot─┬─sumMap(status)───────────────────────┐ 1. │ 2000-01-01 00:01:00 │ {'d':75,'e':85,'f':200,'g':240} │ 2. │ 2000-01-01 00:00:00 │ {'a':15,'b':25,'c':80,'d':55,'e':65} │ └─────────────────────┴──────────────────────────────────────┘ ``` + ## 另请参阅 {#see-also} - [`sum`](/sql-reference/aggregate-functions/reference/sum) - [`Map 组合器`](/sql-reference/aggregate-functions/combinators#-map) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md b/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md index ee82ad6e414..5ff00cfe03b 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/keeper/index.md @@ -4,26 +4,28 @@ slug: /guides/sre/keeper/clickhouse-keeper sidebar_label: '配置 ClickHouse Keeper' sidebar_position: 10 keywords: ['Keeper', 'ZooKeeper', 'clickhouse-keeper'] -description: 'ClickHouse Keeper(clickhouse-keeper)用于替代 ZooKeeper,提供复制和协调功能。' +description: 'ClickHouse Keeper(clickhouse-keeper)用于替代 ZooKeeper,并提供复制与协调能力。' title: 'ClickHouse Keeper' doc_type: 'guide' --- -# ClickHouse Keeper(clickhouse-keeper) {#clickhouse-keeper-clickhouse-keeper} + + +# ClickHouse Keeper (clickhouse-keeper) {#clickhouse-keeper-clickhouse-keeper} import SelfManaged from '@site/i18n/zh/docusaurus-plugin-content-docs/current/_snippets/_self_managed_only_automated.md'; -ClickHouse Keeper 为数据[复制](/engines/table-engines/mergetree-family/replication.md)和[分布式 DDL](/sql-reference/distributed-ddl.md) 查询执行提供协调系统。ClickHouse Keeper 与 ZooKeeper 兼容。 +ClickHouse Keeper 作为数据[复制](/engines/table-engines/mergetree-family/replication.md)和[分布式 DDL](/sql-reference/distributed-ddl.md) 查询执行的协调系统。ClickHouse Keeper 与 ZooKeeper 兼容。 ### 实现细节 {#implementation-details} -ZooKeeper 是最早广为人知的开源协调系统之一。它用 Java 实现,具有相当简单而强大的数据模型。ZooKeeper 的协调算法 ZooKeeper Atomic Broadcast (ZAB) 不为读操作提供线性一致性保证,因为每个 ZooKeeper 节点本地提供读服务。与 ZooKeeper 不同,ClickHouse Keeper 使用 C++ 编写,并采用 [RAFT 算法](https://raft.github.io/)的[实现](https://github.com/eBay/NuRaft)。该算法允许对读写操作提供线性一致性,并且在不同语言中有多种开源实现。 +ZooKeeper 是最早、最知名的开源协调系统之一。它由 Java 编写,具有相对简单而强大的数据模型。ZooKeeper 的协调算法 ZooKeeper Atomic Broadcast (ZAB) 不为读操作提供线性一致性保证,因为每个 ZooKeeper 节点本地提供读服务。与 ZooKeeper 不同,ClickHouse Keeper 使用 C++ 编写,并采用 [RAFT 算法](https://raft.github.io/) 的[实现](https://github.com/eBay/NuRaft)。该算法允许对读写操作提供线性一致性,并且在不同语言中有多个开源实现。 -默认情况下,ClickHouse Keeper 提供与 ZooKeeper 相同的保证:线性一致的写入以及非线性一致的读取。它具有兼容的客户端-服务器协议,因此可以使用任何标准 ZooKeeper 客户端与 ClickHouse Keeper 交互。快照和日志的格式与 ZooKeeper 不兼容,但 `clickhouse-keeper-converter` 工具可以将 ZooKeeper 数据转换为 ClickHouse Keeper 快照。ClickHouse Keeper 的服务器间协议同样与 ZooKeeper 不兼容,因此无法构建混合的 ZooKeeper / ClickHouse Keeper 集群。 +默认情况下,ClickHouse Keeper 提供与 ZooKeeper 相同的保证:线性一致的写入和非线性一致的读取。它具有兼容的客户端-服务器协议,因此可以使用任何标准 ZooKeeper 客户端与 ClickHouse Keeper 交互。快照和日志的格式与 ZooKeeper 不兼容,但可以使用 `clickhouse-keeper-converter` 工具将 ZooKeeper 数据转换为 ClickHouse Keeper 快照。ClickHouse Keeper 中的服务器间协议同样与 ZooKeeper 不兼容,因此无法构建混合的 ZooKeeper / ClickHouse Keeper 集群。 -ClickHouse Keeper 以与 [ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_ZooKeeperAccessControl) 相同的方式支持访问控制列表 (ACL)。ClickHouse Keeper 支持相同的权限集合,并具有相同的内置方案:`world`、`auth` 和 `digest`。`digest` 认证方案使用 `username:password` 这一对值,其中密码以 Base64 编码。 +ClickHouse Keeper 以与 [ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_ZooKeeperAccessControl) 相同的方式支持访问控制列表 (ACL)。ClickHouse Keeper 支持相同的权限集合,并具有完全相同的内置方案:`world`、`auth` 和 `digest`。`digest` 认证方案使用 `username:password` 对,密码以 Base64 编码。 :::note 不支持外部集成。 @@ -31,87 +33,92 @@ ClickHouse Keeper 以与 [ZooKeeper](https://zookeeper.apache.org/doc/r3.1.2/zoo ### 配置 {#configuration} -ClickHouse Keeper 可以作为 ZooKeeper 的独立替代品,或作为 ClickHouse 服务器的内部组件使用。在这两种情况下,配置文件几乎相同,都是 `.xml` 文件。 +ClickHouse Keeper 可以作为 ZooKeeper 的独立替代品使用,也可以作为 ClickHouse 服务器的内部组件使用。在这两种情况下,配置几乎相同,均使用 `.xml` 文件。 #### Keeper 配置设置 {#keeper-configuration-settings} -ClickHouse Keeper 主要的配置标签是 ``,并包含以下参数: +ClickHouse Keeper 的主要配置标签是 ``,并具有以下参数: + | Parameter | Description | Default | |--------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| -| `tcp_port` | 客户端连接使用的端口。 | `2181` | -| `tcp_port_secure` | 客户端与 keeper-server 之间通过 SSL 连接使用的安全端口。 | - | -| `server_id` | 唯一的服务器 ID,ClickHouse Keeper 集群中的每个节点都必须有唯一编号(1、2、3 等)。 | - | -| `log_storage_path` | 协调日志的存储路径,与 ZooKeeper 一样,最好将日志存储在负载较低的节点上。 | - | -| `snapshot_storage_path` | 协调快照的存储路径。 | - | -| `enable_reconfiguration` | 通过 [`reconfig`](#reconfiguration) 启用动态集群重配置。 | `False` | -| `max_memory_usage_soft_limit` | Keeper 最大内存使用量的软限制(字节)。 | `max_memory_usage_soft_limit_ratio` * `physical_memory_amount` | -| `max_memory_usage_soft_limit_ratio` | 如果未设置 `max_memory_usage_soft_limit` 或将其设置为 0,则使用此值来定义默认软限制。 | `0.9` | -| `cgroups_memory_observer_wait_time` | 如果未设置 `max_memory_usage_soft_limit` 或将其设置为 `0`,则使用该时间间隔监控物理内存大小。一旦内存大小发生变化,将通过 `max_memory_usage_soft_limit_ratio` 重新计算 Keeper 的内存软限制。 | `15` | -| `http_control` | [HTTP control](#http-control) 接口的配置。 | - | -| `digest_enabled` | 启用实时数据一致性检查。 | `True` | -| `create_snapshot_on_exit` | 在关闭期间创建快照。 | - | -| `hostname_checks_enabled` | 为集群配置启用主机名合理性检查(例如,当 `localhost` 与远程端点一起使用时)。 | `True` | -| `four_letter_word_white_list` | 4lw 命令的白名单。 | `conf, cons, crst, envi, ruok, srst, srvr, stat, wchs, dirs, mntr, isro, rcvr, apiv, csnp, lgif, rqld, ydld` | +| `tcp_port` | 客户端连接使用的端口。 | `2181` | +| `tcp_port_secure` | 客户端与 keeper-server 之间进行 SSL 连接所使用的安全端口。 | - | +| `server_id` | 唯一的服务器 ID,ClickHouse Keeper 集群中的每个参与节点必须具有唯一编号(1、2、3,依此类推)。 | - | +| `log_storage_path` | 协调日志的存储路径,与 ZooKeeper 一样,最好将日志存储在不繁忙的节点上。 | - | +| `snapshot_storage_path` | 协调快照的存储路径。 | - | +| `enable_reconfiguration` | 通过 [`reconfig`](#reconfiguration) 启用集群动态重配置。 | `False` | +| `max_memory_usage_soft_limit` | Keeper 最大内存占用的软限制(字节)。 | `max_memory_usage_soft_limit_ratio` * `physical_memory_amount` | +| `max_memory_usage_soft_limit_ratio` | 如果未设置 `max_memory_usage_soft_limit` 或将其设置为 0,则使用该值来定义默认软限制。 | `0.9` | +| `cgroups_memory_observer_wait_time` | 如果未设置 `max_memory_usage_soft_limit` 或将其设置为 `0`,则使用该间隔来观察物理内存大小。一旦内存大小发生变化,将根据 `max_memory_usage_soft_limit_ratio` 重新计算 Keeper 的内存软限制。 | `15` | +| `http_control` | [HTTP control](#http-control) 接口的配置。 | - | +| `digest_enabled` | 启用实时数据一致性检查。 | `True` | +| `create_snapshot_on_exit` | 在关闭时创建快照。 | - | +| `hostname_checks_enabled` | 为集群配置启用主机名有效性检查(例如,当 localhost 与远程端点一起使用时)。 | `True` | +| `four_letter_word_white_list` | 4lw 命令白名单。 | `conf, cons, crst, envi, ruok, srst, srvr, stat, wchs, dirs, mntr, isro, rcvr, apiv, csnp, lgif, rqld, ydld` | |`enable_ipv6`| 启用 IPv6 | `True`| 其他常用参数继承自 ClickHouse 服务器配置(`listen_host`、`logger` 等)。 #### 内部协调设置 {#internal-coordination-settings} -内部协调设置位于 `.` 部分,并包含以下参数: +内部协调设置位于 `.` 部分,并具有以下参数: + + | Parameter | Description | Default | |------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | `operation_timeout_ms` | 单个客户端操作的超时时间(毫秒) | `10000` | | `min_session_timeout_ms` | 客户端会话的最小超时时间(毫秒) | `10000` | | `session_timeout_ms` | 客户端会话的最大超时时间(毫秒) | `100000` | -| `dead_session_check_period_ms` | ClickHouse Keeper 检查并清理失效会话的周期(毫秒) | `500` | -| `heart_beat_interval_ms` | ClickHouse Keeper 领导节点向跟随者发送心跳的时间间隔(毫秒) | `500` | -| `election_timeout_lower_bound_ms` | 如果跟随者在该时间间隔内没有收到来自领导者的心跳,则可以发起领导者选举。必须小于或等于 `election_timeout_upper_bound_ms`。理想情况下,这两个值不应相等。 | `1000` | -| `election_timeout_upper_bound_ms` | 如果跟随者在该时间间隔内没有收到来自领导者的心跳,则必须发起领导者选举。 | `2000` | -| `rotate_log_storage_interval` | 单个文件中要存储的日志记录数量。 | `100000` | -| `reserved_log_items` | 在压缩之前要保留的协调日志记录数量。 | `100000` | -| `snapshot_distance` | ClickHouse Keeper 创建新快照的频率(按日志记录条数计)。 | `100000` | +| `dead_session_check_period_ms` | ClickHouse Keeper 检查失效会话并将其移除的频率(毫秒) | `500` | +| `heart_beat_interval_ms` | ClickHouse Keeper leader 向 follower 发送心跳的频率(毫秒) | `500` | +| `election_timeout_lower_bound_ms` | 如果 follower 在该时间间隔内未收到来自 leader 的心跳,则可以发起 leader 选举。必须小于或等于 `election_timeout_upper_bound_ms`。理想情况下这两个值不应相等。 | `1000` | +| `election_timeout_upper_bound_ms` | 如果 follower 在该时间间隔内未收到来自 leader 的心跳,则必须发起 leader 选举。 | `2000` | +| `rotate_log_storage_interval` | 单个文件中要存储的日志记录条数。 | `100000` | +| `reserved_log_items` | 在压缩之前要保留的协调日志记录条数。 | `100000` | +| `snapshot_distance` | ClickHouse Keeper 创建新快照的频率(按日志中的记录条数计)。 | `100000` | | `snapshots_to_keep` | 要保留的快照数量。 | `3` | -| `stale_log_gap` | 领导者将跟随者视为“过期”,并向其发送快照而非日志时所使用的阈值。 | `10000` | -| `fresh_log_gap` | 节点被认为重新变为“最新”的阈值。 | `200` | -| `max_requests_batch_size` | 在发送到 RAFT 之前,请求批次中包含的最大请求数量。 | `100` | -| `force_sync` | 每次写入协调日志时调用 `fsync`。 | `true` | -| `quorum_reads` | 通过完整的 RAFT 共识机制,以类似写请求的速度执行读请求。 | `false` | -| `raft_logs_level` | 协调相关文本日志的日志级别(trace、debug 等)。 | `system default` | -| `auto_forwarding` | 允许将写请求从跟随者转发到领导者。 | `true` | -| `shutdown_timeout` | 等待内部连接完成并关闭的时间(毫秒)。 | `5000` | -| `startup_timeout` | 如果服务器在指定的超时时间内未能连接到其他仲裁参与者,则会终止(毫秒)。 | `30000` | -| `async_replication` | 启用异步复制。在保留所有写入和读取保证的同时获得更好的性能。为避免破坏向后兼容性,该设置默认禁用。 | `false` | -| `latest_logs_cache_size_threshold` | 最新日志条目的内存缓存的最大总大小。 | `1GiB` | -| `commit_logs_cache_size_threshold` | 为下一次提交所需日志条目的内存缓存的最大总大小。 | `500MiB` | -| `disk_move_retries_wait_ms` | 在一次磁盘间文件移动失败后,两次重试之间等待的时间(毫秒)。 | `1000` | -| `disk_move_retries_during_init` | 在初始化期间,磁盘间文件移动失败后重试的次数。 | `100` | +| `stale_log_gap` | leader 将 follower 视为已过时、并向其发送快照而非追加日志时使用的阈值。 | `10000` | +| `fresh_log_gap` | 节点被视为“最新”时的阈值。 | `200` | +| `max_requests_batch_size` | 发送到 RAFT 之前,请求批次中包含的最大请求数量。 | `100` | +| `force_sync` | 在每次写入协调日志时调用 `fsync`。 | `true` | +| `quorum_reads` | 将读请求按写请求方式,通过完整 RAFT 共识执行,具有类似的延迟。 | `false` | +| `raft_logs_level` | 与协调相关的文本日志级别(trace、debug 等)。 | `system default` | +| `auto_forwarding` | 允许将 follower 上的写请求转发到 leader。 | `true` | +| `shutdown_timeout` | 等待内部连接结束并关闭的时间(毫秒)。 | `5000` | +| `startup_timeout` | 如果服务器在指定超时时间内未与其他 quorum 成员建立连接,则会终止(毫秒)。 | `30000` | +| `async_replication` | 启用异步复制。在保持所有写入和读取语义保证的同时提升性能。该设置默认关闭,以避免破坏向后兼容性。 | `false` | +| `latest_logs_cache_size_threshold` | 最新日志条目的内存缓存的最大总大小 | `1GiB` | +| `commit_logs_cache_size_threshold` | 提交下一步所需日志条目的内存缓存的最大总大小 | `500MiB` | +| `disk_move_retries_wait_ms` | 在磁盘之间移动文件时发生故障后,两次重试之间的等待时间(毫秒) | `1000` | +| `disk_move_retries_during_init` | 在初始化期间,在磁盘之间移动文件时发生故障后的最大重试次数 | `100` | | `experimental_use_rocksdb` | 使用 RocksDB 作为后端存储 | `0` | -仲裁(quorum)配置位于 `.` 部分中,并包含各服务器的配置说明。 +Quorum 配置位于 `.` 部分,包含服务器的相关描述。 -整个仲裁范围内唯一的参数是 `secure`,用于为仲裁参与者之间的通信启用加密连接。如果内部节点间通信需要 SSL 连接,可以将该参数设置为 `true`,否则可以保持未指定。 +整个 quorum 的唯一参数是 `secure`,用于为 quorum 成员之间的通信启用加密连接。如果节点之间的内部通信需要 SSL 连接,可以将该参数设置为 `true`,否则可以不设置。 每个 `` 的主要参数为: -* `id` — 仲裁中服务器的标识符。 + + +* `id` — 仲裁中的服务器标识符。 * `hostname` — 部署该服务器的主机名。 * `port` — 该服务器监听连接的端口。 -* `can_become_leader` — 设为 `false` 可将该服务器配置为 `learner`。如果省略,则默认为 `true`。 +* `can_become_leader` — 设为 `false` 以将服务器配置为 `learner`。如果省略,则值为 `true`。 :::note -当 ClickHouse Keeper 集群的拓扑发生变化时(例如替换某个服务器),请务必保持 `server_id` 与 `hostname` 的映射关系一致,避免打乱顺序或在不同服务器之间复用已有的 `server_id`(例如,如果依赖自动化脚本部署 ClickHouse Keeper,就有可能发生这种情况)。 +如果你的 ClickHouse Keeper 集群拓扑发生变化(例如替换服务器),请务必保持 `server_id` 与 `hostname` 的映射关系一致,避免打乱现有 `server_id` 的顺序,或在不同服务器之间复用同一个 `server_id`(如果你依赖自动化脚本部署 ClickHouse Keeper,就有可能发生这种情况)。 -如果 Keeper 实例所在的主机可能发生变化,建议定义并使用主机名而不是原始 IP 地址。更改主机名等同于先移除该服务器再将其重新加入,在某些情况下这可能无法完成(例如 Keeper 实例数量不足以形成仲裁)。 +如果 Keeper 实例所在的主机可能发生变化,我们建议定义并使用主机名而不是裸 IP 地址。更改主机名等同于移除服务器并重新加入,在某些情况下这可能无法完成(例如 Keeper 实例不足以组成仲裁)。 ::: :::note -`async_replication` 默认是禁用的,以避免破坏向后兼容性。如果集群中的所有 Keeper 实例都运行在支持 `async_replication` 的版本上(v23.9+),建议启用该功能,因为它可以在没有任何负面影响的情况下提升性能。 +为避免破坏向后兼容性,`async_replication` 默认是禁用的。如果你集群中的所有 Keeper 实例都运行在支持 `async_replication` 的版本(v23.9+)上,我们建议启用它,因为在没有任何负面影响的情况下,它可以提升性能。 ::: -关于包含三个节点的仲裁配置示例,可以在带有 `test_keeper_` 前缀的[集成测试](https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration)中找到。服务器 #1 的配置示例如下: +由三个节点组成仲裁的配置示例可以在带有 `test_keeper_` 前缀的[集成测试](https://github.com/ClickHouse/ClickHouse/tree/master/tests/integration)中找到。服务器 #1 的示例配置如下: ```xml @@ -148,13 +155,13 @@ ClickHouse Keeper 主要的配置标签是 ``,并包含以下 ### 如何运行 {#how-to-run} -ClickHouse Keeper 已打包在 ClickHouse 服务器安装包中,只需在 `/etc/your_path_to_config/clickhouse-server/config.xml` 中添加 `` 的配置,然后像平常一样启动 ClickHouse 服务器即可。如果你想以独立方式运行 ClickHouse Keeper,可以通过类似的方式启动它: +ClickHouse Keeper 已包含在 ClickHouse server 软件包中,只需在 `/etc/your_path_to_config/clickhouse-server/config.xml` 中添加 `` 的配置,然后像往常一样启动 ClickHouse server 即可。如果你想以独立模式运行 ClickHouse Keeper,可以采用类似的方式启动它: ```bash clickhouse-keeper --config /etc/your_path_to_config/config.xml ``` -如果尚未创建名为 `clickhouse-keeper` 的符号链接,可以手动创建,或者在运行 `clickhouse` 时将 `keeper` 作为参数指定: +如果没有该符号链接(`clickhouse-keeper`),可以创建它,或者将 `keeper` 指定为 `clickhouse` 的参数: ```bash clickhouse keeper --config /etc/your_path_to_config/config.xml @@ -162,11 +169,11 @@ clickhouse keeper --config /etc/your_path_to_config/config.xml ### 四字母命令 {#four-letter-word-commands} -ClickHouse Keeper 也提供了与 ZooKeeper 基本相同的 4lw 命令。每个命令由四个字母组成,例如 `mntr`、`stat` 等。其中有一些更为实用的命令:`stat` 提供关于服务器及其已连接客户端的一些通用信息,而 `srvr` 和 `cons` 则分别提供关于服务器和连接的详细信息。 +ClickHouse Keeper 也提供了 4lw 命令,与 Zookeeper 几乎相同。每个命令由四个字母组成,例如 `mntr`、`stat` 等。其中有一些更实用的命令:`stat` 提供有关服务器和已连接客户端的一些通用信息,而 `srvr` 和 `cons` 则分别提供关于服务器和连接的详细信息。 4lw 命令有一个白名单配置项 `four_letter_word_white_list`,其默认值为 `conf,cons,crst,envi,ruok,srst,srvr,stat,wchs,dirs,mntr,isro,rcvr,apiv,csnp,lgif,rqld,ydld`。 -你可以通过 telnet 或 nc 在客户端端口向 ClickHouse Keeper 发送这些命令。 +你可以在客户端端口通过 telnet 或 nc 向 ClickHouse Keeper 发送这些命令。 ```bash echo mntr | nc localhost 9181 @@ -174,12 +181,13 @@ echo mntr | nc localhost 9181 下面是详细的 4lw 命令: -* `ruok`:测试服务器是否在非错误状态下运行。如果服务器正在运行,则会响应 `imok`,否则将完全不会有任何响应。`imok` 的响应并不一定表示服务器已加入仲裁,只表明服务器进程处于活动状态并已绑定到指定的客户端端口。使用 "stat" 获取有关仲裁状态和客户端连接信息的详细内容。 +* `ruok`:用于测试服务器是否在无错误状态下运行。如果服务器正在运行,它会返回 `imok`;否则将完全没有响应。返回 `imok` 并不一定表示该服务器已经加入 quorum,只能说明服务器进程处于活动状态并已绑定到指定的客户端端口。请使用 `stat` 获取关于 quorum 状态以及客户端连接信息的详细情况。 ```response -正常 +imok ``` + * `mntr`: 输出可用于监控集群健康状态的变量列表。 ```response @@ -202,44 +210,44 @@ zk_followers 0 zk_synced_followers 0 ``` -* `srvr`: 显示服务器的完整详细信息。 +* `srvr`: 显示服务器的所有详细信息。 ```response -ClickHouse Keeper 版本: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 -延迟 最小值/平均值/最大值: 0/0/0 -已接收: 2 -已发送: 2 -连接数: 1 -待处理请求: 0 +ClickHouse Keeper version: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 +Latency min/avg/max: 0/0/0 +Received: 2 +Sent : 2 +Connections: 1 +Outstanding: 0 Zxid: 34 -模式: leader -节点数: 4 +Mode: leader +Node count: 4 ``` -* `stat`: 列出服务器和已连接客户端的简要信息。 +* `stat`: 列出服务器和已连接客户端的简要状态信息。 ```response -ClickHouse Keeper 版本: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 -客户端: +ClickHouse Keeper version: v21.11.1.1-prestable-7a4a0b0edef0ad6e0aa662cd3b90c3f4acf796e7 +Clients: 192.168.1.1:52852(recved=0,sent=0) 192.168.1.1:52042(recved=24,sent=48) -延迟 最小值/平均值/最大值: 0/0/0 -已接收: 4 -已发送: 4 -连接数: 1 -待处理: 0 +Latency min/avg/max: 0/0/0 +Received: 4 +Sent : 4 +Connections: 1 +Outstanding: 0 Zxid: 36 -模式: leader -节点数: 4 +Mode: leader +Node count: 4 ``` -* `srst`: 重置服务器统计信息。该命令会影响 `srvr`、`mntr` 和 `stat` 的结果。 +* `srst`: 重置服务器统计信息。该命令会影响 `srvr`、`mntr` 和 `stat` 的输出结果。 ```response -服务器统计数据已重置。 +Server stats reset. ``` -* `conf`: 输出服务配置的详细信息。 +* `conf`: 打印服务配置的详细信息。 ```response server_id=1 @@ -272,20 +280,21 @@ compress_snapshots_with_zstd_format=true configuration_change_tries_count=20 ``` -* `cons`: 列出当前连接到此服务器的所有客户端的完整连接/会话详情。包括接收/发送的数据包数量、会话 ID、操作延迟、最近一次执行的操作等。 +* `cons`: 列出所有已连接到此服务器的客户端的完整连接/会话详细信息。包括已接收/已发送数据包数量、会话 ID、操作延迟、最近执行的操作等信息。 ```response 192.168.1.1:52163(recved=0,sent=0,sid=0xffffffffffffffff,lop=NA,est=1636454787393,to=30000,lzxid=0xffffffffffffffff,lresp=0,llat=0,minlat=0,avglat=0,maxlat=0) 192.168.1.1:52042(recved=9,sent=18,sid=0x0000000000000001,lop=List,est=1636454739887,to=30000,lcxid=0x0000000000000005,lzxid=0x0000000000000005,lresp=1636454739892,llat=0,minlat=0,avglat=0,maxlat=0) ``` -* `crst`: 重置所有连接/会话的统计信息。 +* `crst`: 重置所有连接的连接及会话统计数据。 ```response -连接统计已重置。 +Connection stats reset. ``` -* `envi`: 打印当前服务环境的详细信息 +* `envi`: 打印运行环境的详细信息 + ```response Environment: @@ -301,58 +310,58 @@ user.dir=/Users/JackyWoo/project/jd/clickhouse/cmake-build-debug/programs/ user.tmp=/var/folders/b4/smbq5mfj7578f2jzwn602tt40000gn/T/ ``` -* `dirs`: 显示快照和日志文件的总大小(字节) +* `dirs`: 以字节为单位显示快照和日志文件的总大小 ```response snapshot_dir_size: 0 log_dir_size: 3875 ``` -* `isro`: 检测服务器是否在只读模式下运行。如果处于只读模式,服务器将返回 `ro`,否则返回 `rw`。 +* `isro`: 用于检查服务器是否在只读模式下运行。如果处于只读模式,服务器会返回 `ro`,否则返回 `rw`。 ```response rw ``` -* `wchs`: 列出该服务器上的 watch 概要信息。 +* `wchs`: 列出该服务器上所有监视(watch)的简要信息。 ```response -1 个连接监视 1 个路径 -总监视数:1 +1 connections watching 1 paths +Total watches:1 ``` -* `wchc`: 按会话列出服务器上的监控项(watch)详细信息。该命令输出包含关联监控项(路径)的会话(连接)列表。注意:根据监控项数量的多少,此操作可能开销较大(影响服务器性能),请谨慎使用。 +* `wchc`: 按会话列出服务器上 watch 的详细信息。该命令会输出会话(连接)及其关联 watch(路径)的列表。注意:视 watch 数量而定,此操作可能开销较大(影响服务器性能),请谨慎使用。 ```response 0x0000000000000001 /clickhouse/task_queue/ddl ``` -* `wchp`: 按路径列出服务器上 watch 的详细信息。该命令会输出包含关联会话的路径(znode)列表。注意:根据 watch 数量的不同,此操作可能会开销较大(即影响服务器性能),请谨慎使用。 +* `wchp`: 按路径列出服务器上 watch 的详细信息。该命令输出包含关联会话的路径(znode)列表。注意:根据 watch 数量的不同,此操作可能开销较大(即会影响服务器性能),请谨慎使用。 ```response /clickhouse/task_queue/ddl 0x0000000000000001 ``` -* `dump`: 列出当前未完成的会话和临时节点。仅可在 leader 节点上使用。 +* `dump`: 列出所有未处理的会话和临时节点。此命令仅在 leader 节点上可用。 ```response -会话转储 (2): +Sessions dump (2): 0x0000000000000001 0x0000000000000002 -包含临时节点的会话 (1): +Sessions with Ephemerals (1): 0x0000000000000001 /clickhouse/task_queue/ddl ``` -* `csnp`: 调度一个快照创建任务。成功时返回已提交日志中该快照的最后索引;失败时返回 `Failed to schedule snapshot creation task.`。注意可以通过 `lgif` 命令来判断快照是否已完成。 +* `csnp`: 安排快照创建任务。成功时返回最后提交的日志索引,失败时返回 `Failed to schedule snapshot creation task.`。请注意,你可以通过 `lgif` 命令来判断快照是否已完成。 ```response 100 ``` -* `lgif`: Keeper 日志信息。`first_log_idx`:本节点在日志存储中的第一个日志索引;`first_log_term`:本节点的第一个日志任期(term);`last_log_idx`:本节点在日志存储中的最后一个日志索引;`last_log_term`:本节点的最后一个日志任期(term);`last_committed_log_idx`:本节点在状态机中最后一次提交的日志索引;`leader_committed_log_idx`:从本节点视角看到的 leader 已提交的日志索引;`target_committed_log_idx`:目标应提交到的日志索引;`last_snapshot_idx`:上一个快照中已提交的最大日志索引。 +* `lgif`: Keeper 日志信息。`first_log_idx`:本节点在日志存储中的第一个日志索引;`first_log_term`:本节点的第一个日志任期;`last_log_idx`:本节点在日志存储中的最后一个日志索引;`last_log_term`:本节点的最后一个日志任期;`last_committed_log_idx`:本节点在状态机中最后一次提交的日志索引;`leader_committed_log_idx`:从本节点视角看到的 leader 已提交日志索引;`target_committed_log_idx`:应当提交到的目标日志索引;`last_snapshot_idx`:上一份快照中最大的已提交日志索引。 ```response first_log_idx 1 @@ -365,13 +374,13 @@ target_committed_log_idx 101 last_snapshot_idx 50 ``` -* `rqld`: 请求成为新的 leader。若请求已发送则返回 `Sent leadership request to leader.`,若请求未发送则返回 `Failed to send leadership request to leader.`。注意,如果该节点已经是 leader,则结果与请求已发送时相同。 +* `rqld`: 请求成为新的 leader。如果成功发送请求,则返回 `Sent leadership request to leader.`;如果未能发送请求,则返回 `Failed to send leadership request to leader.`。注意,如果节点已经是 leader,则返回结果与成功发送请求时相同。 ```response -已向 Leader 发送领导权请求。 +Sent leadership request to leader. ``` -* `ftfl`: 列出所有功能开关以及这些开关在该 Keeper 实例中是否已启用。 +* `ftfl`: 列出所有功能开关(feature flags)以及它们在该 Keeper 实例中的启用状态。 ```response filtered_list 1 @@ -379,38 +388,39 @@ multi_read 1 check_not_exists 0 ``` -* `ydld`:请求让出领导权并转为 follower 角色。如果接收该请求的服务器是 leader,它会先暂停写操作,等待继任者(当前 leader 本身永远不会被选为继任者)完成对最新日志的追赶,然后再辞去领导身份。继任者将自动选出。如果请求已发送,则返回 `Sent yield leadership request to leader.`,如果请求未发送,则返回 `Failed to send yield leadership request to leader.`。注意,如果节点已经是 follower,则效果等同于请求已成功发送。 +* `ydld`: 请求让出领导权并成为 follower。如果接收请求的服务器是 leader,它会先暂停写操作,等待继任者(当前 leader 绝不会成为继任者)完成最新日志的追赶,然后再主动卸任。继任者将会被自动选出。如果请求已发送,则返回 `Sent yield leadership request to leader.`,如果请求未发送,则返回 `Failed to send yield leadership request to leader.`。注意,如果节点已经是 follower,那么结果与请求已成功发送时相同。 ```response -已向 Leader 发送让出领导权请求。 +Sent yield leadership request to leader. ``` -* `pfev`: 返回所有已收集事件的值。对于每个事件,返回事件名称、事件值以及事件描述。 +* `pfev`: 返回所有收集到的事件的值。对于每个事件,它会返回事件名称、事件值以及事件的描述。 + ```response -FileOpen 62 已打开的文件数。 -Seek 4 'lseek' 函数的调用次数。 -ReadBufferFromFileDescriptorRead 126 从文件描述符执行读取操作(read/pread)的次数。不包括套接字。 -ReadBufferFromFileDescriptorReadFailed 0 从文件描述符执行读取操作(read/pread)失败的次数。 -ReadBufferFromFileDescriptorReadBytes 178846 从文件描述符读取的字节数。如果文件已压缩,则显示压缩后的数据大小。 -WriteBufferFromFileDescriptorWrite 7 向文件描述符执行写入操作(write/pwrite)的次数。不包括套接字。 -WriteBufferFromFileDescriptorWriteFailed 0 向文件描述符执行写入操作(write/pwrite)失败的次数。 -WriteBufferFromFileDescriptorWriteBytes 153 写入文件描述符的字节数。如果文件已压缩,则显示压缩后的数据大小。 -FileSync 2 对文件调用 F_FULLFSYNC/fsync/fdatasync 函数的次数。 -DirectorySync 0 对目录调用 F_FULLFSYNC/fsync/fdatasync 函数的次数。 -FileSyncElapsedMicroseconds 12756 等待文件 F_FULLFSYNC/fsync/fdatasync 系统调用的总耗时。 -DirectorySyncElapsedMicroseconds 0 等待目录 F_FULLFSYNC/fsync/fdatasync 系统调用的总耗时。 -ReadCompressedBytes 0 从压缩源(文件、网络)读取的字节数(解压前的字节数)。 -CompressedReadBufferBlocks 0 从压缩源(文件、网络)读取的压缩块数(相互独立压缩的数据块)。 -CompressedReadBufferBytes 0 从压缩源(文件、网络)读取的未压缩字节数(解压后的字节数)。 -AIOWrite 0 使用 Linux 或 FreeBSD AIO 接口执行写入操作的次数 -AIOWriteBytes 0 使用 Linux 或 FreeBSD AIO 接口写入的字节数 +FileOpen 62 Number of files opened. +Seek 4 Number of times the 'lseek' function was called. +ReadBufferFromFileDescriptorRead 126 Number of reads (read/pread) from a file descriptor. Does not include sockets. +ReadBufferFromFileDescriptorReadFailed 0 Number of times the read (read/pread) from a file descriptor have failed. +ReadBufferFromFileDescriptorReadBytes 178846 Number of bytes read from file descriptors. If the file is compressed, this will show the compressed data size. +WriteBufferFromFileDescriptorWrite 7 Number of writes (write/pwrite) to a file descriptor. Does not include sockets. +WriteBufferFromFileDescriptorWriteFailed 0 Number of times the write (write/pwrite) to a file descriptor have failed. +WriteBufferFromFileDescriptorWriteBytes 153 Number of bytes written to file descriptors. If the file is compressed, this will show compressed data size. +FileSync 2 Number of times the F_FULLFSYNC/fsync/fdatasync function was called for files. +DirectorySync 0 Number of times the F_FULLFSYNC/fsync/fdatasync function was called for directories. +FileSyncElapsedMicroseconds 12756 Total time spent waiting for F_FULLFSYNC/fsync/fdatasync syscall for files. +DirectorySyncElapsedMicroseconds 0 Total time spent waiting for F_FULLFSYNC/fsync/fdatasync syscall for directories. +ReadCompressedBytes 0 Number of bytes (the number of bytes before decompression) read from compressed sources (files, network). +CompressedReadBufferBlocks 0 Number of compressed blocks (the blocks of data that are compressed independent of each other) read from compressed sources (files, network). +CompressedReadBufferBytes 0 Number of uncompressed bytes (the number of bytes after decompression) read from compressed sources (files, network). +AIOWrite 0 Number of writes with Linux or FreeBSD AIO interface +AIOWriteBytes 0 Number of bytes written with Linux or FreeBSD AIO interface ... ``` -### HTTP 控制接口 {#http-control} +### HTTP 控制 {#http-control} -ClickHouse Keeper 提供了一个 HTTP 接口,用于检查副本是否已准备好接收请求。它可用于云环境中,例如 [Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes)。 +ClickHouse Keeper 提供了一个 HTTP 接口,用于检查副本是否已就绪,可以接收流量。它可以用于云环境,例如 [Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes)。 启用 `/ready` 端点的配置示例: @@ -429,12 +439,12 @@ ClickHouse Keeper 提供了一个 HTTP 接口,用于检查副本是否已准 ### 功能开关(Feature flags) {#feature-flags} -Keeper 与 ZooKeeper 及其客户端完全兼容,但它也为 ClickHouse 客户端引入了一些独特的功能和请求类型。 -由于这些功能可能会引入向后不兼容的变更,因此大多数功能默认处于禁用状态,可以通过 `keeper_server.feature_flags` 配置启用。 -所有功能也都可以被显式禁用。 -如果你想为 Keeper 集群启用某个新功能,我们建议你先将集群中所有 Keeper 实例更新到支持该功能的版本,然后再启用该功能本身。 +Keeper 与 ZooKeeper 及其客户端完全兼容,但也为 ClickHouse 客户端引入了一些独有的功能和请求类型。 +由于这些功能可能会带来向后不兼容的变更,其中大部分默认是禁用的,可以通过 `keeper_server.feature_flags` 配置启用。 +也可以显式地禁用所有功能。 +如果你想为 Keeper 集群启用某个新功能,我们建议先将集群中所有 Keeper 实例升级到支持该功能的版本,然后再启用该功能本身。 -下面是一个功能开关配置示例,其中禁用了 `multi_read` 并启用了 `check_not_exists`: +下面是一个功能开关配置示例,其中禁用了 `multi_read`,并启用了 `check_not_exists`: ```xml @@ -449,76 +459,78 @@ Keeper 与 ZooKeeper 及其客户端完全兼容,但它也为 ClickHouse 客 可用的功能如下: -| 功能 | 描述 | 默认值 | -| ---------------------- | --------------------------------------------------------------------- | --- | -| `multi_read` | 支持多读(multi read)请求 | `1` | -| `filtered_list` | 支持按节点类型(临时节点或持久节点)过滤结果的列表请求 | `1` | -| `check_not_exists` | 支持 `CheckNotExists` 请求,用于断言某个节点不存在 | `1` | -| `create_if_not_exists` | 支持 `CreateIfNotExists` 请求:如果节点不存在则尝试创建该节点;如果节点已存在,则不会应用任何更改,并返回 `ZOK` | `1` | -| `remove_recursive` | 支持 `RemoveRecursive` 请求,用于删除该节点及其整个子树 | `1` | +| 功能 | 说明 | 默认值 | +| ---------------------- | ----------------------------------------------------------------- | --- | +| `multi_read` | 支持 multi read 请求(一次性读取多个节点的请求) | `1` | +| `filtered_list` | 支持按节点类型(临时或持久)过滤结果的列表请求 | `1` | +| `check_not_exists` | 支持 `CheckNotExists` 请求,该请求用于断言节点不存在 | `1` | +| `create_if_not_exists` | 支持 `CreateIfNotExists` 请求,如果节点不存在则尝试创建;如果节点已存在,则不会应用任何更改并返回 `ZOK` | `1` | +| `remove_recursive` | 支持 `RemoveRecursive` 请求,该请求会删除节点及其整个子树 | `1` | :::note -从 25.7 版本开始,部分功能标志(feature flag)默认启用。\ +部分功能开关自 25.7 版本起默认为启用状态。 将 Keeper 升级到 25.7+ 的推荐方式是先升级到 24.9+ 版本。 ::: + ### 从 ZooKeeper 迁移 {#migration-from-zookeeper} -无法实现从 ZooKeeper 到 ClickHouse Keeper 的无缝迁移。需要先停止 ZooKeeper 集群、转换数据,然后再启动 ClickHouse Keeper。`clickhouse-keeper-converter` 工具可将 ZooKeeper 日志和快照转换为 ClickHouse Keeper 快照。它仅适用于 ZooKeeper 3.4 及以上版本。迁移步骤如下: +无法实现从 ZooKeeper 到 ClickHouse Keeper 的无缝直接迁移。必须先停止 ZooKeeper 集群、转换数据,然后再启动 ClickHouse Keeper。`clickhouse-keeper-converter` 工具可以将 ZooKeeper 日志和快照转换为 ClickHouse Keeper 快照。它仅适用于 ZooKeeper 3.4 及以上版本。迁移步骤如下: 1. 停止所有 ZooKeeper 节点。 -2. 可选但推荐:找到 ZooKeeper 的 leader 节点,将其启动后再停止一次。这会强制 ZooKeeper 创建一致的快照。 +2. 可选但建议执行:找到 ZooKeeper 的 leader 节点,再将其启动并重新停止一次。这会强制 ZooKeeper 创建一致的快照。 -3. 在 leader 节点上运行 `clickhouse-keeper-converter`,例如: +3. 在 leader 上运行 `clickhouse-keeper-converter`,例如: ```bash clickhouse-keeper-converter --zookeeper-logs-dir /var/lib/zookeeper/version-2 --zookeeper-snapshots-dir /var/lib/zookeeper/version-2 --output-dir /path/to/clickhouse/keeper/snapshots ``` -4. 将快照复制到已配置了 `keeper` 的 ClickHouse 服务器节点上,或启动 ClickHouse Keeper 来替代 ZooKeeper。快照必须在所有节点上持久化保存,否则空节点可能启动得更快并成为 leader。 +4. 将快照复制到已配置 `keeper` 的 ClickHouse 服务器节点,或启动 ClickHouse Keeper 来替代 ZooKeeper。快照必须在所有节点上持久化,否则空节点可能更快启动,并且其中一个可能会成为 leader。 :::note -`keeper-converter` 工具在 Keeper 独立二进制文件中不可用。 +`keeper-converter` 工具在 Keeper 独立可执行文件中不可用。 如果已安装 ClickHouse,可以直接使用该二进制文件: ```bash clickhouse keeper-converter ... ``` -Otherwise, you can [download the binary](/getting-started/quick-start/oss#download-the-binary) and run the tool as described above without installing ClickHouse. +否则,你可以[下载二进制文件](/getting-started/quick-start/oss#download-the-binary),并按上文所述运行该工具,而无需安装 ClickHouse。 ::: -### 在丢失法定人数后的恢复 {#recovering-after-losing-quorum} +### 在失去仲裁后进行恢复 {#recovering-after-losing-quorum} -由于 ClickHouse Keeper 使用 Raft,它可以在一定程度上容忍节点宕机,具体取决于集群规模。\ -例如,对于一个 3 节点集群,如果只有 1 个节点宕机,它仍然可以正常工作。 +由于 ClickHouse Keeper 使用 Raft,它可以在一定程度上容忍节点崩溃,具体取决于集群的大小。 +例如,对于一个 3 节点的集群,如果只有 1 个节点崩溃,它仍然可以继续正常工作。 -集群配置可以动态变更,但存在一些限制。重新配置同样依赖 Raft,\ -因此要向集群添加或移除节点,必须具备法定人数。如果在无法重启的情况下,集群中同时有太多节点宕机,\ +集群配置可以动态调整,但存在一些限制。重新配置同样依赖 Raft, +因此要向集群中添加/移除节点,你需要具备仲裁(quorum)。如果你在集群中同时失去了过多的节点,并且无法再次启动它们, Raft 将停止工作,并且不允许你通过常规方式重新配置集群。 -尽管如此,ClickHouse Keeper 提供了一种恢复模式,允许你仅使用 1 个节点强制重新配置集群。\ -只有在无法重新启动这些节点,或无法在相同端点上启动新的实例时,才应将该模式作为最后手段使用。 +尽管如此,ClickHouse Keeper 提供了恢复模式,它允许你仅使用 1 个节点强制重新配置集群。 +只有在你无法再次启动这些节点,或者无法在相同 endpoint 上启动新实例时,才应将此作为最后手段使用。 在继续之前需要注意的重要事项: * 确保故障节点无法再次连接到集群。 -* 在步骤中特别指出之前,不要启动任何新节点。 +* 在步骤中明确说明之前,不要启动任何新的节点。 + +在确认上述条件成立后,你需要执行以下操作: -在确认上述事项之后,你需要执行以下操作: +1. 选择一个 Keeper 节点作为新的 leader。请注意,该节点的数据将被用于整个集群,因此我们建议选择状态最为更新的节点。 +2. 在执行任何其他操作之前,先对所选节点的 `log_storage_path` 和 `snapshot_storage_path` 目录进行备份。 +3. 在你计划使用的所有节点上重新配置集群。 +4. 向选定的节点发送四字母命令 `rcvr`,这将把该节点切换到恢复模式,或者停止该节点上的 Keeper 实例,并使用 `--force-recovery` 参数重新启动。 +5. 逐个启动新节点上的 Keeper 实例,并在启动下一个节点之前,确认 `mntr` 对 `zk_server_state` 返回的是 `follower`。 +6. 在恢复模式下,在与新节点达到仲裁之前,leader 节点会对 `mntr` 命令返回错误信息,并拒绝来自客户端和 follower 的任何请求。 +7. 达到仲裁后,leader 节点将恢复到正常工作模式,开始接受所有请求。可通过 `mntr` 验证 Raft 状态,此时 `zk_server_state` 应返回 `leader`。 -1. 选择一个 Keeper 节点作为新的 leader。请注意,将使用该节点上的数据作为整个集群的数据,因此建议选择状态最新的节点。 -2. 在执行任何其他操作之前,为选定节点的 `log_storage_path` 和 `snapshot_storage_path` 目录创建备份。 -3. 在你计划继续使用的所有节点上重新配置集群。 -4. 向你选定的节点发送四字母命令 `rcvr`,它会将该节点切换到恢复模式;或者停止该节点上的 Keeper 实例,并使用 `--force-recovery` 参数重新启动。 -5. 依次启动新节点上的 Keeper 实例,在启动下一个节点之前,确保 `mntr` 命令对 `zk_server_state` 的返回值为 `follower`。 -6. 在恢复模式下,leader 节点在与新节点达成法定人数之前,会对 `mntr` 命令返回错误信息,并拒绝来自客户端和 follower 的任何请求。 -7. 达成法定人数后,leader 节点会恢复到正常运行模式,使用 Raft 接受所有请求——可通过 `mntr` 进行验证,此时 `zk_server_state` 应返回 `leader`。 ## 在 Keeper 中使用磁盘 {#using-disks-with-keeper} -Keeper 支持 [外部磁盘](/operations/storing-data.md) 类型中的一部分,用于存储快照、日志文件和状态文件。 +Keeper 支持部分[外部磁盘](/operations/storing-data.md),用于存储快照、日志文件和状态文件。 支持的磁盘类型包括: @@ -526,7 +538,7 @@ Keeper 支持 [外部磁盘](/operations/storing-data.md) 类型中的一部分 * s3 * local -下面是一个配置文件中磁盘定义的示例。 +下面是一个在配置文件中包含的磁盘定义示例。 ```xml @@ -563,22 +575,22 @@ Keeper 支持 [外部磁盘](/operations/storing-data.md) 类型中的一部分 ``` -若要将某块磁盘用于日志,需将 `keeper_server.log_storage_disk` 配置设为该磁盘的名称。 -若要将某块磁盘用于快照,需将 `keeper_server.snapshot_storage_disk` 配置设为该磁盘的名称。 -此外,还可以通过分别使用 `keeper_server.latest_log_storage_disk` 和 `keeper_server.latest_snapshot_storage_disk`,为最新日志或快照使用不同的磁盘。 -在这种情况下,当创建新的日志或快照时,Keeper 会自动将文件移动到正确的磁盘上。 -若要将某块磁盘用于状态文件,需将 `keeper_server.state_storage_disk` 配置设为该磁盘的名称。 +要使用磁盘来存储日志,需要将 `keeper_server.log_storage_disk` 配置项设置为该磁盘的名称。 +要使用磁盘来存储快照,需要将 `keeper_server.snapshot_storage_disk` 配置项设置为该磁盘的名称。 +此外,可以通过分别使用 `keeper_server.latest_log_storage_disk` 和 `keeper_server.latest_snapshot_storage_disk`,为最新的日志或快照使用不同的磁盘。 +在这种情况下,当新的日志或快照创建时,Keeper 会自动将文件移动到正确的磁盘。 +要使用磁盘来存储状态文件,需要将 `keeper_server.state_storage_disk` 配置项设置为该磁盘的名称。 -在磁盘之间移动文件是安全的,即使 Keeper 在传输中途停止,也不会有数据丢失的风险。 -在文件完全移动到新磁盘之前,不会从旧磁盘上删除。 +在磁盘之间移动文件是安全的,即使 Keeper 在传输过程中停止,也不会有数据丢失的风险。 +在文件完全移动到新磁盘之前,它不会从旧磁盘中删除。 -当 `keeper_server.coordination_settings.force_sync` 被设置为 `true`(默认即为 `true`)时,Keeper 无法在所有类型的磁盘上都满足某些一致性保证。 -目前,只有类型为 `local` 的磁盘支持持久同步。 -如果使用 `force_sync` 且未使用 `latest_log_storage_disk`,则 `log_storage_disk` 必须是 `local` 磁盘。 -如果使用了 `latest_log_storage_disk`,则它必须始终是 `local` 磁盘。 -如果禁用 `force_sync`,则在任意配置中都可以使用任意类型的磁盘。 +将 `keeper_server.coordination_settings.force_sync` 设置为 `true`(默认值为 `true`)的 Keeper 无法在所有类型的磁盘上提供某些保证。 +目前,只有类型为 `local` 的磁盘支持持久化同步。 +如果使用 `force_sync`,在未使用 `latest_log_storage_disk` 的情况下,`log_storage_disk` 必须是 `local` 类型的磁盘。 +如果使用了 `latest_log_storage_disk`,它必须始终是 `local` 类型的磁盘。 +如果禁用 `force_sync`,则在任何配置中都可以使用任意类型的磁盘。 -Keeper 实例的一种可能存储配置如下所示: +一个 Keeper 实例的存储配置可能如下所示: ```xml @@ -592,8 +604,8 @@ Keeper 实例的一种可能存储配置如下所示: ``` -此实例会将除最新日志外的所有日志存储在 `log_s3_plain` 磁盘上,而最新日志将存储在 `log_local` 磁盘上。 -同样的逻辑也适用于快照:除最新快照外的所有快照将存储在 `snapshot_s3_plain` 磁盘上,而最新快照将存储在 `snapshot_local` 磁盘上。 +此实例会将除最新日志之外的所有日志存储在磁盘 `log_s3_plain` 上,而最新日志将存储在磁盘 `log_local` 上。 +快照同样遵循这一逻辑,除最新快照之外的所有快照将存储在 `snapshot_s3_plain` 上,而最新快照将存储在磁盘 `snapshot_local` 上。 ### 更改磁盘配置 {#changing-disk-setup} @@ -601,12 +613,13 @@ Keeper 实例的一种可能存储配置如下所示: 在应用新的磁盘配置之前,请手动备份所有 Keeper 日志和快照。 ::: -如果定义了分层磁盘配置(为最新文件使用单独的磁盘),Keeper 会在启动时尝试自动将文件移动到正确的磁盘。 -仍然提供与之前相同的保证:在文件完全移动到新磁盘之前,不会从旧磁盘上删除它,因此可以安全地多次重启。 +如果定义了分层磁盘配置(为最新文件使用单独的磁盘),Keeper 会在启动时尝试自动将文件移动到正确的磁盘上。 +之前的安全保证依然适用:在文件完全移动到新磁盘之前,它不会从旧磁盘上删除,因此可以安全地多次重启。 -如果需要将文件移动到一块全新的磁盘(或从双磁盘配置迁移到单磁盘配置),可以使用多个 `keeper_server.old_snapshot_storage_disk` 和 `keeper_server.old_log_storage_disk` 定义。 +如果需要将文件移动到一个全新的磁盘(或从双磁盘配置迁移到单磁盘配置),可以使用多个 `keeper_server.old_snapshot_storage_disk` 和 `keeper_server.old_log_storage_disk` 定义。 + +以下配置展示了如何从先前的双磁盘配置迁移到一个全新的单磁盘配置: -以下配置展示了如何从之前的双磁盘配置迁移到一个全新的单磁盘配置: ```xml @@ -623,34 +636,37 @@ Keeper 实例的一种可能存储配置如下所示: ``` 在启动时,所有日志文件都会从 `log_local` 和 `log_s3_plain` 移动到 `log_local2` 磁盘。 -同样,所有快照文件都会从 `snapshot_local` 和 `snapshot_s3_plain` 移动到 `snapshot_local2` 磁盘。 +同时,所有快照文件都会从 `snapshot_local` 和 `snapshot_s3_plain` 移动到 `snapshot_local2` 磁盘。 + ## 配置日志缓存 {#configuring-logs-cache} -为了尽量减少从磁盘读取的数据量,Keeper 会在内存中缓存日志条目。 -如果请求很大,日志条目会占用过多内存,因此缓存的日志数据量会被限制。 -该限制由以下两个配置项控制: +为尽量减少从磁盘读取的数据量,Keeper 会在内存中缓存日志条目。 +如果请求很大,日志条目会占用过多内存,因此缓存的日志总量会被限制。 +该限制通过以下两个配置项进行控制: - `latest_logs_cache_size_threshold` - 缓存中存储的最新日志的总大小 -- `commit_logs_cache_size_threshold` - 接下来需要提交的后续日志的总大小 +- `commit_logs_cache_size_threshold` - 需要接下来提交的后续日志的总大小 -如果默认值过大,可以通过降低这两个配置项来减少内存使用。 +如果默认值过大,可以通过减小这两个配置项来降低内存使用。 :::note -可以使用 `pfev` 命令检查从每个缓存以及从文件读取的日志量。 -也可以使用 Prometheus 端点中的指标来跟踪这两个缓存的当前大小。 +可以使用 `pfev` 命令检查从各个缓存以及从文件中读取的日志量。 +也可以使用 Prometheus 端点暴露的指标来跟踪两个缓存当前的大小。 ::: + + ## Prometheus {#prometheus} -Keeper 可以对 [Prometheus](https://prometheus.io) 暴露指标数据,以供抓取。 +Keeper 可以向 [Prometheus](https://prometheus.io) 暴露可供抓取的指标数据。 -设置: +设置项: -* `endpoint` – Prometheus 服务器用于抓取指标的 HTTP 端点,应以 '/' 开头。 -* `port` – `endpoint` 所使用的端口。 -* `metrics` – 开关,用于暴露 [system.metrics](/operations/system-tables/metrics) 表中的指标。 -* `events` – 开关,用于暴露 [system.events](/operations/system-tables/events) 表中的指标。 -* `asynchronous_metrics` – 开关,用于暴露 [system.asynchronous_metrics](/operations/system-tables/asynchronous_metrics) 表中的当前指标值。 +* `endpoint` – Prometheus 服务器用于抓取指标的 HTTP 端点。以 '/' 开头。 +* `port` – `endpoint` 使用的端口。 +* `metrics` – 用于控制是否暴露 [system.metrics](/operations/system-tables/metrics) 表中指标的开关。 +* `events` – 用于控制是否暴露 [system.events](/operations/system-tables/events) 表中指标的开关。 +* `asynchronous_metrics` – 用于控制是否暴露 [system.asynchronous_metrics](/operations/system-tables/asynchronous_metrics) 表中当前指标值的开关。 **示例** @@ -677,22 +693,23 @@ Keeper 可以对 [Prometheus](https://prometheus.io) 暴露指标数据,以供 curl 127.0.0.1:9363/metrics ``` -另请参阅 ClickHouse Cloud 的 [Prometheus 集成](/integrations/prometheus)。 +请同时参阅 ClickHouse Cloud 的 [Prometheus 集成](/integrations/prometheus)。 + ## ClickHouse Keeper 用户指南 {#clickhouse-keeper-user-guide} -本指南提供了一组简单且最小化的设置,用于配置 ClickHouse Keeper,并通过一个示例演示如何测试分布式操作。该示例在 Linux 上使用 3 个节点完成。 +本指南提供用于配置 ClickHouse Keeper 的简单最小配置,并包含一个测试分布式操作的示例。该示例在 Linux 上,使用 3 个节点进行演示。 -### 1. 使用 Keeper 设置配置节点 {#1-configure-nodes-with-keeper-settings} +### 1. 使用 Keeper 设置配置各个节点 {#1-configure-nodes-with-keeper-settings} -1. 在 3 台主机(`chnode1`、`chnode2`、`chnode3`)上安装 3 个 ClickHouse 实例。(有关安装 ClickHouse 的详细信息,请参阅[快速开始](/getting-started/install/install.mdx)。) +1. 在 3 台主机(`chnode1`、`chnode2`、`chnode3`)上安装 3 个 ClickHouse 实例。(有关安装 ClickHouse 的详细信息,请参阅 [快速开始](/getting-started/install/install.mdx)。) -2. 在每个节点上添加以下条目,以允许通过网络接口进行外部通信。 +2. 在每个节点上,添加以下条目以允许通过网络接口进行外部通信。 ```xml 0.0.0.0 ``` -3. 在所有三台服务器上添加以下 ClickHouse Keeper 配置,并为每台服务器更新 `` 设置;例如 `chnode1` 为 `1`,`chnode2` 为 `2`,依此类推。 +3. 将以下 ClickHouse Keeper 配置添加到所有三台服务器上,并为每台服务器更新 `` 设置;对于 `chnode1` 为 `1`,`chnode2` 为 `2`,依此类推。 ```xml 9181 @@ -726,20 +743,20 @@ curl 127.0.0.1:9363/metrics ``` - 上面使用的是以下基本设置: + 上述示例中使用的基本设置如下: |Parameter |Description |Example | |----------|------------------------------|---------------------| - |tcp_port |供 keeper 客户端使用的端口|9181,等同于 zookeeper 中的默认端口 2181| - |server_id| 在 raft 配置中为每个 ClickHouse Keeper 服务器设置的标识符| 1| - |coordination_settings| 用于配置诸如超时等参数的部分| 超时:10000,日志级别:trace| - |server |参与的服务器的定义|每台服务器的定义列表| - |raft_configuration| keeper 集群中每台服务器的设置| 每台服务器及其相关设置| - |id |keeper 服务中服务器的数字 ID|1| - |hostname |keeper 集群中每台服务器的主机名、IP 或 FQDN|`chnode1.domain.com`| - |port|用于 keeper 服务器间连接监听的端口|9234| - -4. 启用 Zookeeper 组件。它将使用 ClickHouse Keeper 引擎: + |tcp_port |供 Keeper 客户端使用的端口|9181,等价于 Zookeeper 中的默认端口 2181| + |server_id| 在 raft 配置中用于标识每个 ClickHouse Keeper 服务器的标识符| 1| + |coordination_settings| 包含超时等参数的配置部分| 超时:10000,日志级别:trace| + |server |参与集群的服务器的定义|每个服务器定义的列表| + |raft_configuration| Keeper 集群中每台服务器的设置| 每台服务器及其设置| + |id |Keeper 服务中服务器的数字 ID|1| + |hostname |Keeper 集群中每台服务器的主机名、IP 或 FQDN|`chnode1.domain.com`| + |port|用于 Keeper 服务器之间连接监听的端口|9234| + +4. 启用 Zookeeper 组件。它将使用 ClickHouse Keeper 引擎: ```xml @@ -757,27 +774,29 @@ curl 127.0.0.1:9363/metrics ``` - 上面使用的是以下基本设置: + 上述示例中使用的基本设置如下: |Parameter |Description |Example | |----------|------------------------------|---------------------| - |node |用于 ClickHouse Keeper 连接的节点列表|每台服务器的一条配置记录| + |node |ClickHouse Keeper 连接使用的节点列表|每台服务器对应的配置条目| |host|每个 ClickHouse Keeper 节点的主机名、IP 或 FQDN| `chnode1.domain.com`| |port|ClickHouse Keeper 客户端端口| 9181| -5. 重启 ClickHouse 并验证每个 Keeper 实例是否正在运行。在每台服务器上执行以下命令。如果 Keeper 正常运行且处于健康状态,`ruok` 命令将返回 `imok`: +5. 重启 ClickHouse 并验证每个 Keeper 实例是否正在运行。在每台服务器上执行以下命令。如果 Keeper 正在运行且状态正常,`ruok` 命令将返回 `imok`: ```bash # echo ruok | nc localhost 9181; echo imok ``` -6. `system` 数据库中有一张名为 `zookeeper` 的表,其中包含 ClickHouse Keeper 实例的详细信息。我们来查看该表: +6. `system` 数据库中有一个名为 `zookeeper` 的表,其中包含 ClickHouse Keeper 实例的详细信息。我们来查看该表: ```sql SELECT * FROM system.zookeeper WHERE path IN ('/', '/clickhouse') ``` + + 该表如下所示: ```response @@ -788,9 +807,9 @@ curl 127.0.0.1:9363/metrics └────────────┴───────┴───────┴───────┴─────────────────────┴─────────────────────┴─────────┴──────────┴──────────┴────────────────┴────────────┴─────────────┴───────┴─────────────┘ ``` -### 2. 在 ClickHouse 中配置集群 {#2--configure-a-cluster-in-clickhouse} +### 2. 在 ClickHouse 中配置集群 {#2--configure-a-cluster-in-clickhouse} -1. 让我们在 2 个节点上配置一个包含 2 个分片且每个分片只有 1 个副本的简单集群。第三个节点将用于满足 ClickHouse Keeper 的仲裁(quorum)要求。在 `chnode1` 和 `chnode2` 上更新配置。下面的集群配置在每个节点上定义了 1 个分片,总计 2 个分片且无复制。在此示例中,一部分数据会位于一个节点上,另一部分数据会位于另一个节点上: +1. 我们来配置一个简单集群,其包含 2 个分片,并且仅在其中 2 个节点上各有 1 个副本。第三个节点将用于满足 ClickHouse Keeper 对仲裁的要求。更新 `chnode1` 和 `chnode2` 上的配置。以下集群在每个节点上定义 1 个分片,总计 2 个分片且不进行复制。在本示例中,部分数据会位于一个节点上,另一部分数据会位于另一个节点上: ```xml @@ -818,19 +837,19 @@ curl 127.0.0.1:9363/metrics | Parameter | Description | Example | | --------- | ------------------------- | -------------------- | | shard | 集群定义中的分片列表 | 每个分片的副本列表 | - | replica | 每个副本的配置列表 | 每个副本的配置项 | - | host | 将托管副本分片的服务器的主机名、IP 或 FQDN | `chnode1.domain.com` | - | port | 使用原生 TCP 协议进行通信的端口 | 9000 | + | replica | 每个副本的设置列表 | 每个副本的设置条目 | + | host | 将承载副本分片的服务器的主机名、IP 或 FQDN | `chnode1.domain.com` | + | port | 使用原生 TCP 协议进行通信所使用的端口 | 9000 | | user | 用于对集群实例进行身份验证的用户名 | default | - | password | 为该用户设置的密码,用于允许连接到集群实例 | `ClickHouse123!` | + | password | 为该用户定义的密码,用于允许连接到集群实例 | `ClickHouse123!` | -2. 重启 ClickHouse 并验证集群是否已创建: +2. 重启 ClickHouse 并验证集群已创建: ```bash SHOW clusters; ``` - 你应该能看到你的集群: + 你应当能看到该集群: ```response ┌─cluster───────┐ @@ -840,12 +859,13 @@ curl 127.0.0.1:9363/metrics ### 3. 创建并测试分布式表 {#3-create-and-test-distributed-table} -1. 使用 `chnode1` 上的 ClickHouse 客户端在新集群上创建一个新的数据库。`ON CLUSTER` 子句会自动在两个节点上创建该数据库。 +1. 使用 `chnode1` 上的 ClickHouse 客户端在新集群上创建一个新数据库。`ON CLUSTER` 子句会自动在两个节点上创建该数据库。 ```sql CREATE DATABASE db1 ON CLUSTER 'cluster_2S_1R'; ``` -2. 在 `db1` 数据库中创建一个新表。同样,`ON CLUSTER` 会在两个节点上创建该表。 + +2. 在 `db1` 数据库上创建一个新表。同样地,`ON CLUSTER` 会在两个节点上都创建该表。 ```sql CREATE TABLE db1.table1 on cluster 'cluster_2S_1R' ( @@ -907,7 +927,7 @@ curl 127.0.0.1:9363/metrics └────┴─────────┘ ``` -6. 可以创建一个 `Distributed` 表来汇总表示两个分片上的数据。使用 `Distributed` 表引擎的表本身不存储任何数据,但允许在多个服务器上进行分布式查询处理。读操作会访问所有分片,写操作可以分布到各个分片上。在 `chnode1` 上运行以下查询: +6. 可以创建一个 `Distributed` 表来表示两个分片上的数据。使用 `Distributed` 表引擎的表自身不存储任何数据,但允许在多台服务器上进行分布式查询处理。读取会访问所有分片,写入可以分布到各个分片上。在 `chnode1` 上运行如下查询: ```sql CREATE TABLE db1.dist_table ( id UInt64, @@ -916,7 +936,7 @@ curl 127.0.0.1:9363/metrics ENGINE = Distributed(cluster_2S_1R,db1,table1) ``` -7. 注意,对 `dist_table` 发起查询会返回来自两个分片的全部四行数据: +7. 注意,对 `dist_table` 进行查询会返回来自两个分片的四行数据: ```sql SELECT * FROM db1.dist_table @@ -939,7 +959,9 @@ curl 127.0.0.1:9363/metrics ### 总结 {#summary} -本指南演示了如何使用 ClickHouse Keeper 来设置集群。借助 ClickHouse Keeper,可以配置集群并定义可以在分片间复制的分布式表。 +本指南演示了如何使用 ClickHouse Keeper 设置集群。借助 ClickHouse Keeper,可以配置集群并定义可以在分片之间复制的分布式表。 + + ## 使用唯一路径配置 ClickHouse Keeper {#configuring-clickhouse-keeper-with-unique-paths} @@ -947,18 +969,18 @@ curl 127.0.0.1:9363/metrics ### 描述 {#description} -本文介绍如何使用内置的 `{uuid}` 宏配置项, -在 ClickHouse Keeper 或 ZooKeeper 中创建唯一条目。唯一路径 -在频繁创建和删除表时非常有用,因为 -这避免了需要等待数分钟让 Keeper 垃圾回收 -去清理路径条目;每次创建路径时,都会在该路径中使用新的 `uuid`, -路径从不复用。 +本文介绍如何使用内置的 `{uuid}` 宏配置项 +在 ClickHouse Keeper 或 ZooKeeper 中创建唯一条目。唯一路径在频繁创建和删除表时非常有用,因为 +这样就无需等待数分钟让 Keeper 垃圾回收 +去删除路径条目;每次创建路径时,都会在该路径中使用新的 `uuid`, +路径从不会被重用。 ### 示例环境 {#example-environment} -一个由三个节点组成的集群,将被配置为在所有三个节点上运行 ClickHouse Keeper, -并在其中两个节点上运行 ClickHouse。这样为 ClickHouse Keeper 提供了三个节点(包括一个仲裁节点), -以及一个由两个副本组成的单个 ClickHouse 分片。 +一个三节点集群,将被配置为在三个节点上都运行 ClickHouse Keeper, +并在其中两个节点上运行 ClickHouse。这样 +为 ClickHouse Keeper 提供了三个节点(包括一个仲裁节点),并且 +提供了一个由两个副本组成的单个 ClickHouse 分片。 | node | description | | ----------------------- | ------------------------- | @@ -991,9 +1013,9 @@ curl 127.0.0.1:9363/metrics ``` -### 将表设置为使用 `{uuid}` 的步骤 {#procedures-to-set-up-tables-to-use-uuid} +### 将表配置为使用 `{uuid}` 的步骤 {#procedures-to-set-up-tables-to-use-uuid} -1. 在每台服务器上配置宏(Macros)\ +1. 在每台服务器上配置 Macros 以服务器 1 为例: ```xml @@ -1004,10 +1026,10 @@ curl 127.0.0.1:9363/metrics ``` :::note -请注意,我们为 `shard` 和 `replica` 定义了宏,但 `{uuid}` 并未在此处定义,它是内置的,无需显式定义。 +请注意,我们为 `shard` 和 `replica` 定义了宏,但 `{uuid}` 并未在此处定义,它是内置宏,无需单独定义。 ::: -2. 创建数据库 +2. 创建一个数据库 ```sql CREATE DATABASE db_uuid @@ -1019,7 +1041,7 @@ CREATE DATABASE db_uuid CREATE DATABASE db_uuid ON CLUSTER cluster_1S_2R ENGINE = Atomic -查询 ID: 07fb7e65-beb4-4c30-b3ef-bd303e5c42b5 +Query id: 07fb7e65-beb4-4c30-b3ef-bd303e5c42b5 ┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ chnode2.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ @@ -1027,7 +1049,7 @@ ENGINE = Atomic └───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ ``` -3. 利用宏和 `{uuid}` 在集群上创建表 +3. 使用宏和 `{uuid}` 在集群中创建一张表 ```sql CREATE TABLE db_uuid.uuid_table1 ON CLUSTER 'cluster_1S_2R' @@ -1051,6 +1073,7 @@ ORDER BY id Query id: 8f542664-4548-4a02-bd2a-6f2c973d0dc4 ``` + ┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ │ chnode1.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │ │ chnode2.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ @@ -1058,7 +1081,7 @@ Query id: 8f542664-4548-4a02-bd2a-6f2c973d0dc4 ```` -4. 创建分布式表 +4. Create a distributed table ```sql CREATE TABLE db_uuid.dist_uuid_table1 ON CLUSTER 'cluster_1S_2R' @@ -1087,7 +1110,7 @@ Query id: 3bc7f339-ab74-4c7d-a752-1ffe54219c0e ### 测试 {#testing} -1. 向第一个节点插入数据(例如 `chnode1`) +1. 在第一个节点上插入数据(例如 `chnode1`) ```sql INSERT INTO db_uuid.uuid_table1 @@ -1103,10 +1126,10 @@ Query id: 0f178db7-50a6-48e2-9a1b-52ed14e6e0f9 Ok. -1 行数据。耗时: 0.033 秒。 +1 row in set. Elapsed: 0.033 sec. ``` -2. 向第二个节点插入数据(例如 `chnode2`) +2. 将数据插入到第二个节点(例如 `chnode2`) ```sql INSERT INTO db_uuid.uuid_table1 @@ -1118,11 +1141,11 @@ INSERT INTO db_uuid.uuid_table1 ```response INSERT INTO db_uuid.uuid_table1 (id, column1) FORMAT Values -查询 ID: edc6f999-3e7d-40a0-8a29-3137e97e3607 +Query id: edc6f999-3e7d-40a0-8a29-3137e97e3607 -完成。 +Ok. -结果集包含 1 行。耗时: 0.529 秒。 +1 row in set. Elapsed: 0.529 sec. ``` 3. 通过分布式表查看记录 @@ -1135,7 +1158,7 @@ SELECT * FROM db_uuid.dist_uuid_table1; SELECT * FROM db_uuid.dist_uuid_table1 -查询 ID: 6cbab449-9e7f-40fe-b8c2-62d46ba9f5c8 +Query id: 6cbab449-9e7f-40fe-b8c2-62d46ba9f5c8 ┌─id─┬─column1─┐ │ 1 │ abc │ @@ -1144,14 +1167,14 @@ FROM db_uuid.dist_uuid_table1 │ 2 │ def │ └────┴─────────┘ -返回 2 行。用时:0.007 秒。 +2 rows in set. Elapsed: 0.007 sec. ``` -### 替代方案 {#alternatives} +### 其他方案 {#alternatives} -可以通过宏预先定义默认复制路径,并同时使用 `{uuid}`。 +可以通过宏(包括 `{uuid}`)预先定义默认复制路径。 -1. 在每个节点上为表设置默认默认路径 +1. 在每个节点上为表设置默认路径 ```xml /clickhouse/tables/{shard}/db_uuid/{uuid} @@ -1159,10 +1182,10 @@ FROM db_uuid.dist_uuid_table1 ``` :::tip -如果某些节点仅用于特定数据库,你也可以在每个节点上定义一个 `{database}` 宏。 +如果某些节点只用于特定数据库,你也可以在每个节点上定义一个 `{database}` 宏。 ::: -2. 在不显式指定参数的情况下创建表: +2. 在未显式指定参数的情况下创建表: ```sql CREATE TABLE db_uuid.uuid_table1 ON CLUSTER 'cluster_1S_2R' @@ -1184,6 +1207,7 @@ ENGINE = ReplicatedMergeTree ORDER BY id ``` + Query id: ab68cda9-ae41-4d6d-8d3b-20d8255774ee ┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐ @@ -1191,11 +1215,11 @@ Query id: ab68cda9-ae41-4d6d-8d3b-20d8255774ee │ chnode1.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │ └───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘ -结果共 2 行。耗时:1.175 秒。 +结果中有 2 行。耗时 1.175 秒。 ```` -3. 验证其使用了默认配置中的设置 +3. Verify it used the settings used in default config ```sql SHOW CREATE TABLE db_uuid.uuid_table1; ```` @@ -1211,7 +1235,7 @@ CREATE TABLE db_uuid.uuid_table1 ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/db_uuid/{uuid}', '{replica}') ORDER BY id -返回 1 行。用时:0.003 秒。 +1 row in set. Elapsed: 0.003 sec. ``` ### 故障排查 {#troubleshooting} @@ -1223,7 +1247,7 @@ SELECT * FROM system.tables WHERE database = 'db_uuid' AND name = 'uuid_table1'; ``` -用于获取 ZooKeeper 中上述表的 UUID 相关信息的示例命令 +用于获取上述表在 ZooKeeper 中对应 UUID 表信息的示例命令 ```sql SELECT * FROM system.zookeeper @@ -1231,10 +1255,11 @@ WHERE path = '/clickhouse/tables/1/db_uuid/9e8a3cc2-0dec-4438-81a7-c3e63ce2a1cf/ ``` :::note -数据库必须为 `Atomic`。如果是从之前的版本升级,则 `default` 数据库很可能是 `Ordinary` 类型。 +数据库必须为 `Atomic`。如果是从之前的版本升级而来, +`default` 数据库很可能仍是 `Ordinary` 类型。 ::: -检查方式: +要进行检查: 例如, @@ -1258,20 +1283,21 @@ Query id: b047d459-a1d2-4016-bcf9-3e97e30e49c2 1 row in set. Elapsed: 0.004 sec. ``` + ## ClickHouse Keeper 动态重新配置 {#reconfiguration} ### 描述 {#description-1} -如果开启了 `keeper_server.enable_reconfiguration`,ClickHouse Keeper 对用于动态集群重新配置的 ZooKeeper [`reconfig`](https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_modifying) 命令提供部分支持。 +在开启 `keeper_server.enable_reconfiguration` 的情况下,ClickHouse Keeper 对 ZooKeeper 的 [`reconfig`](https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_modifying) 命令提供部分支持,可用于对集群进行动态重新配置。 :::note -如果该设置关闭,您可以通过手动修改各副本的 `raft_configuration` 节来重新配置集群。请确保在所有副本上都编辑这些文件,因为只有 leader 会应用更改。 -或者,您也可以通过任何兼容 ZooKeeper 的客户端发送 `reconfig` 查询。 +如果关闭了该设置,你可以通过手动修改各副本的 `raft_configuration` 部分来重新配置集群。请确保在所有副本上编辑这些文件,因为只有 leader 会实际应用更改。 +或者,你也可以通过任意兼容 ZooKeeper 的客户端发送 `reconfig` 查询。 ::: -虚拟节点 `/keeper/config` 中包含最近一次提交的集群配置,格式如下: +虚拟节点 `/keeper/config` 以如下格式包含最近一次提交的集群配置: ```text server.id = server_host:server_port[;server_type][;server_priority] @@ -1279,10 +1305,10 @@ server.id2 = ... ... ``` -* 每个服务器条目以换行符分隔。 -* `server_type` 可以是 `participant` 或 `learner`([learner](https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md) 不参与 leader 选举)。 -* `server_priority` 是一个非负整数,用于指定[在 leader 选举时应优先选择哪些节点](https://github.com/eBay/NuRaft/blob/master/docs/leader_election_priority.md)。 - 优先级为 0 表示该服务器永远不会成为 leader。 +* 每个服务器记录以换行符分隔。 +* `server_type` 可以是 `participant` 或 `learner`([learner](https://github.com/eBay/NuRaft/blob/master/docs/readonly_member.md) 不参与领导者选举)。 +* `server_priority` 是一个非负整数,用于指示[在领导者选举中应优先选择哪些节点](https://github.com/eBay/NuRaft/blob/master/docs/leader_election_priority.md)。 + 优先级为 0 表示该服务器永远不会成为领导者。 示例: @@ -1293,78 +1319,91 @@ server.2=zoo2:9234;participant;1 server.3=zoo3:9234;participant;1 ``` -可以使用 `reconfig` 命令来添加新服务器、删除现有服务器以及修改现有服务器的优先级,下面是一些示例(使用 `clickhouse-keeper-client`): +可以使用 `reconfig` 命令添加新服务器、删除现有服务器并修改现有服务器的优先级。下面是一些示例(使用 `clickhouse-keeper-client`): + ```bash -# 添加两台新服务器 {#add-two-new-servers} +# Add two new servers reconfig add "server.5=localhost:123,server.6=localhost:234;learner" -# 移除另外两台服务器 {#remove-two-other-servers} +# Remove two other servers reconfig remove "3,4" -# 将现有服务器的优先级更改为 8 {#change-existing-server-priority-to-8} +# Change existing server priority to 8 reconfig add "server.5=localhost:5123;participant;8" ``` 以下是 `kazoo` 的示例: + ```python -# 添加两台新服务器,移除两台现有服务器 {#add-two-new-servers-remove-two-other-servers} +# Add two new servers, remove two other servers reconfig(joining="server.5=localhost:123,server.6=localhost:234;learner", leaving="3,4") ``` -# 将现有服务器的优先级更改为 8 {#change-existing-server-priority-to-8} + +# 将现有服务器的优先级更改为 8 reconfig(joining="server.5=localhost:5123;participant;8", leaving=None) ``` -`joining` 中的服务器应采用上述服务器格式。服务器条目之间应以逗号分隔。 -添加新服务器时,可以省略 `server_priority`(默认值为 1)和 `server_type`(默认值为 `participant`)。 +Servers in `joining` should be in server format described above. Server entries should be delimited by commas. +While adding new servers, you can omit `server_priority` (default value is 1) and `server_type` (default value +is `participant`). -如果要更改现有服务器的优先级,请将其添加到 `joining` 中并指定目标优先级。 -服务器主机、端口和类型必须与现有服务器配置一致。 +If you want to change existing server priority, add it to `joining` with target priority. +Server host, port, and type must be equal to existing server configuration. -服务器按照在 `joining` 和 `leaving` 中出现的顺序进行添加和删除。 -来自 `joining` 的所有更新会在来自 `leaving` 的更新之前处理。 +Servers are added and removed in order of appearance in `joining` and `leaving`. +All updates from `joining` are processed before updates from `leaving`. -Keeper 重新配置实现中存在以下注意事项: +There are some caveats in Keeper reconfiguration implementation: -- 仅支持增量重新配置。包含非空 `new_members` 的请求将被拒绝。 +- Only incremental reconfiguration is supported. Requests with non-empty `new_members` are declined. - ClickHouse Keeper 实现依赖 NuRaft API 来动态更改成员关系。NuRaft 提供了每次添加或删除单个服务器的方式。这意味着每次配置更改(`joining` 的每个部分、`leaving` 的每个部分)必须单独决定。因此不提供批量重新配置功能,因为这会对最终用户造成误导。 + ClickHouse Keeper implementation relies on NuRaft API to change membership dynamically. NuRaft has a way to + add a single server or remove a single server, one at a time. This means each change to configuration + (each part of `joining`, each part of `leaving`) must be decided on separately. Thus there is no bulk + reconfiguration available as it would be misleading for end users. - 更改服务器类型(participant/learner)也不可行,因为 NuRaft 不支持此功能,唯一的方法是先删除再添加服务器,这同样会造成误导。 + Changing server type (participant/learner) isn't possible either as it's not supported by NuRaft, and + the only way would be to remove and add server, which again would be misleading. -- 无法使用返回的 `znodestat` 值。 -- 不使用 `from_version` 字段。所有设置了 `from_version` 的请求都将被拒绝。 - 这是因为 `/keeper/config` 是一个虚拟节点,这意味着它不存储在持久化存储中,而是针对每个请求使用指定的节点配置动态生成。 - 做出此决定是为了避免数据重复,因为 NuRaft 已经存储了此配置。 -- 与 ZooKeeper 不同,无法通过提交 `sync` 命令来等待集群重新配置完成。 - 新配置将_最终_应用,但无法保证具体时间。 -- `reconfig` 命令可能因各种原因失败。您可以检查集群状态以确认更新是否已应用。 +- You cannot use the returned `znodestat` value. +- The `from_version` field is not used. All requests with set `from_version` are declined. + This is due to the fact `/keeper/config` is a virtual node, which means it is not stored in + persistent storage, but rather generated on-the-fly with the specified node config for every request. + This decision was made as to not duplicate data as NuRaft already stores this config. +- Unlike ZooKeeper, there is no way to wait on cluster reconfiguration by submitting a `sync` command. + New config will be _eventually_ applied but with no time guarantees. +- `reconfig` command may fail for various reasons. You can check cluster's state and see whether the update + was applied. ``` + ## 将单节点 keeper 转换为集群 {#converting-a-single-node-keeper-into-a-cluster} -有时需要将用于实验的单个 keeper 节点扩展为一个集群。下面是将其一步步扩展为 3 节点集群的示意流程: +有时需要将实验性的 keeper 单节点扩展为一个集群。下面是将其逐步扩展为 3 节点集群的方案: -- **重要**:新增节点必须分批添加,每批数量需小于当前仲裁数,否则它们会在彼此之间选举出一个 leader。本示例中为逐个添加。 -- 现有 keeper 节点必须开启 `keeper_server.enable_reconfiguration` 配置参数。 -- 启动第二个节点,使用 keeper 集群的全新完整配置。 -- 启动完成后,使用 [`reconfig`](#reconfiguration) 将其添加到节点 1。 -- 然后,启动第三个节点,并使用 [`reconfig`](#reconfiguration) 将其添加进来。 +- **重要**:新节点必须以数量小于当前法定人数(quorum)的批次添加,否则它们会在自身之间选举出一个 leader。本示例中是逐个添加。 +- 现有的 keeper 节点必须开启 `keeper_server.enable_reconfiguration` 配置参数。 +- 使用 keeper 集群的完整新配置启动第二个节点。 +- 第二个节点启动后,使用 [`reconfig`](#reconfiguration) 将其添加到节点 1。 +- 现在,启动第三个节点,并使用 [`reconfig`](#reconfiguration) 将其添加到集群。 - 在 `clickhouse-server` 配置中添加新的 keeper 节点以更新配置,并重启以应用更改。 -- 更新节点 1 的 raft 配置,并在需要时选择性地重启它。 +- 更新节点 1 的 raft 配置,并在需要时重启它。 + +为了方便熟悉整个过程,这里提供了一个 [sandbox 仓库](https://github.com/ClickHouse/keeper-extend-cluster)。 + -为便于熟悉这一过程,这里提供了一个 [sandbox 仓库](https://github.com/ClickHouse/keeper-extend-cluster)。 -## 不支持的功能 {#unsupported-features} +## 不受支持的功能 {#unsupported-features} -虽然 ClickHouse Keeper 旨在与 ZooKeeper 完全兼容,但目前仍有一些功能尚未实现(相关开发仍在进行中): +虽然 ClickHouse Keeper 旨在与 ZooKeeper 完全兼容,但目前仍有一些功能尚未实现(相关开发正在进行中): - [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) 不支持返回 `Stat` 对象 -- [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) 不支持 [TTL](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/CreateMode.html#PERSISTENT_WITH_TTL) +- [`create`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#create(java.lang.String,byte%5B%5D,java.util.List,org.apache.zookeeper.CreateMode,org.apache.zookeeper.data.Stat)) 不支持 [生存时间 (TTL)](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/CreateMode.html#PERSISTENT_WITH_TTL) - [`addWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#addWatch(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.AddWatchMode)) 无法与 [`PERSISTENT`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/AddWatchMode.html#PERSISTENT) 类型的 watch 一起使用 -- [`removeWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeWatches(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.Watcher.WatcherType,boolean)) 和 [`removeAllWatches`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeAllWatches(java.lang.String,org.apache.zookeeper.Watcher.WatcherType,boolean)) 不支持 +- [`removeWatch`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeWatches(java.lang.String,org.apache.zookeeper.Watcher,org.apache.zookeeper.Watcher.WatcherType,boolean)) 和 [`removeAllWatches`](https://zookeeper.apache.org/doc/r3.9.1/apidocs/zookeeper-server/org/apache/zookeeper/ZooKeeper.html#removeAllWatches(java.lang.String,org.apache.zookeeper.Watcher.WatcherType,boolean)) 不受支持 - 不支持 `setWatches` - 不支持创建 [`CONTAINER`](https://zookeeper.apache.org/doc/r3.5.1-alpha/api/org/apache/zookeeper/CreateMode.html) 类型的 znode -- 不支持 [`SASL authentication`](https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zookeeper+and+SASL)(SASL 身份验证) +- 不支持 [`SASL authentication`](https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zookeeper+and+SASL) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md b/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md index a0a9eba7b88..a3075e8680e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/guides/sre/user-management/index.md @@ -3,70 +3,74 @@ slug: /operations/access-rights sidebar_position: 1 sidebar_label: '用户和角色' title: '访问控制与账户管理' -keywords: ['ClickHouse Cloud', '访问控制', '用户管理', 'RBAC', '安全'] +keywords: ['ClickHouse Cloud', '访问控制', '用户管理', 'RBAC', '安全性'] description: '介绍 ClickHouse Cloud 中的访问控制和账户管理' doc_type: 'guide' --- + + # 在 ClickHouse 中创建用户和角色 {#creating-users-and-roles-in-clickhouse} ClickHouse 支持基于 [RBAC](https://en.wikipedia.org/wiki/Role-based_access_control) 方法的访问控制管理。 -ClickHouse 访问控制实体: +ClickHouse 访问实体: - [用户账户](#user-account-management) - [角色](#role-management) -- [行策略](#row-policy-management) -- [设置配置文件](#settings-profiles-management) -- [配额](#quotas-management) +- [Row Policy](#row-policy-management) +- [Settings Profile](#settings-profiles-management) +- [Quota](#quotas-management) -您可以通过以下方式配置访问控制实体: +可以通过以下方式配置访问实体: - 基于 SQL 的工作流。 - 您需要[启用](#enabling-access-control)该功能。 + 需要先[启用](#enabling-access-control)此功能。 - 服务器[配置文件](/operations/configuration-files.md) `users.xml` 和 `config.xml`。 -我们建议使用基于 SQL 的工作流。这两种配置方法可以同时生效,因此如果您使用服务器配置文件来管理账户和访问权限,可以平稳切换到基于 SQL 的工作流。 +我们建议使用基于 SQL 的工作流。这两种配置方法可以同时工作,因此如果你通过服务器配置文件管理账户和访问权限,可以平滑切换到基于 SQL 的工作流。 :::note -不能同时使用两种配置方法来管理同一个访问控制实体。 +不能同时通过两种配置方法管理同一个访问实体。 ::: :::note -如果您希望管理 ClickHouse Cloud 控制台用户,请参考此[页面](/cloud/security/manage-cloud-users)。 +如果你希望管理 ClickHouse Cloud 控制台用户,请参考此[页面](/cloud/security/manage-cloud-users) ::: -要查看所有用户、角色、配置文件等以及它们被授予的所有权限,请使用 [`SHOW ACCESS`](/sql-reference/statements/show#show-access) 语句。 +要查看所有用户、角色、配置文件等对象及其所有授予的权限,请使用 [`SHOW ACCESS`](/sql-reference/statements/show#show-access) 语句。 + -## 概览 {#access-control-usage} -默认情况下,ClickHouse 服务器提供 `default` 用户账户。该账户不受基于 SQL 的访问控制和账户管理机制约束,但拥有全部权限。在任何未显式指定用户名的情况下都会使用 `default` 用户账户,例如从客户端登录或执行分布式查询时。在分布式查询处理中,如果服务器或集群配置中未指定 [user 和 password](/engines/table-engines/special/distributed.md) 属性,则会使用默认用户账户。 +## 概述 {#access-control-usage} -如果你刚开始使用 ClickHouse,可以考虑如下步骤: +默认情况下,ClickHouse 服务器提供 `default` 用户账户。该账户不能使用基于 SQL 的访问控制和账户管理功能,但拥有全部权限。`default` 用户账户会在未指定用户名的任何情况下被使用,例如客户端登录或分布式查询中。在分布式查询处理时,如果服务器或集群的配置未指定 [user and password](/engines/table-engines/special/distributed.md) 属性,则会使用默认用户账户。 -1. 为 `default` 用户[启用](#enabling-access-control)基于 SQL 的访问控制和账户管理。 -2. 以 `default` 用户账户登录并创建所有需要的用户。不要忘记创建一个管理员账户(`GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION`)。 +如果你刚开始使用 ClickHouse,可以考虑以下步骤: + +1. 为 `default` 用户[启用](#enabling-access-control) 基于 SQL 的访问控制和账户管理。 +2. 使用 `default` 用户账户登录并创建所有需要的用户。不要忘记创建一个管理员账户(`GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION`)。 3. 为 `default` 用户[收紧权限](/operations/settings/permissions-for-queries),并为其禁用基于 SQL 的访问控制和账户管理。 ### 当前方案的特性 {#access-control-properties} -- 即使数据库和表尚不存在,你也可以为它们授予权限。 -- 如果一个表被删除,与该表对应的所有权限不会自动被收回。这意味着即使你之后创建了同名的新表,所有这些权限仍然有效。要撤销与已删除表对应的权限,你需要执行例如 `REVOKE ALL PRIVILEGES ON db.table FROM ALL` 这样的查询。 -- 权限没有生存期相关的设置。 +- 即使数据库和表尚不存在,你也可以为其授予权限。 +- 如果删除了某个表,与该表对应的所有权限不会被自动撤销。这意味着即使你之后创建了一个同名的新表,这些权限仍然有效。要撤销与已删除表对应的权限,你需要执行例如 `REVOKE ALL PRIVILEGES ON db.table FROM ALL` 的查询。 +- 权限没有控制其有效期的设置。 ### 用户账户 {#user-account-management} -用户账户是一种访问实体,用于在 ClickHouse 中对某个主体进行授权。一个用户账户包含: +用户账户是一种访问实体,用于在 ClickHouse 中对用户进行授权。一个用户账户包含: - 标识信息。 -- [权限](/sql-reference/statements/grant.md#privileges),用于定义该用户可以执行的查询范围。 +- 定义该用户可以执行的查询范围的[权限](/sql-reference/statements/grant.md#privileges)。 - 被允许连接到 ClickHouse 服务器的主机。 -- 分配给该用户的角色及其默认角色。 +- 已分配的角色和默认角色。 - 在用户登录时默认应用的设置及其约束。 -- 分配给该用户的设置配置文件。 +- 已分配的设置配置文件。 -可以通过 [GRANT](/sql-reference/statements/grant.md) 查询,或通过分配[角色](#role-management),向用户账户授予权限。要从用户撤销权限,ClickHouse 提供 [REVOKE](/sql-reference/statements/revoke.md) 查询。要列出某个用户拥有的权限,使用 [SHOW GRANTS](/sql-reference/statements/show#show-grants) 语句。 +可以通过 [GRANT](/sql-reference/statements/grant.md) 查询或分配[角色](#role-management)的方式向用户账户授予权限。要从用户撤销权限,ClickHouse 提供 [REVOKE](/sql-reference/statements/revoke.md) 查询。要列出某个用户的权限,请使用 [SHOW GRANTS](/sql-reference/statements/show#show-grants) 语句。 管理查询: @@ -76,20 +80,20 @@ ClickHouse 访问控制实体: - [SHOW CREATE USER](/sql-reference/statements/show#show-create-user) - [SHOW USERS](/sql-reference/statements/show#show-users) -### 设置的生效顺序 {#access-control-settings-applying} +### 设置的应用方式 {#access-control-settings-applying} -设置可以通过不同方式进行配置:在用户账户中、在授予给该用户的角色中,以及在设置配置文件中。在用户登录时,如果同一项设置在不同的访问实体中都有配置,其值和约束按如下优先级(从高到低)生效: +可以在多个层级配置设置:针对用户账户、其被授予的角色以及设置配置文件。在用户登录时,如果某个设置在不同的访问实体中都有配置,则该设置的值和约束按如下优先级顺序生效(从高到低): 1. 用户账户自身的设置。 -2. 用户账户默认角色中的设置。如果某个设置在多个角色中都有配置,则该设置的应用顺序未定义。 -3. 分配给用户或其默认角色的设置配置文件中的设置。如果某个设置在多个配置文件中都有配置,则该设置的应用顺序未定义。 -4. 默认应用于整个服务器的设置,或来自 [default profile](/operations/server-configuration-parameters/settings#default_profile) 的设置。 +2. 用户账户默认角色中的设置。如果某个设置在多个角色中都已配置,则这些角色中设置的应用顺序未定义。 +3. 分配给用户或其默认角色的设置配置文件中的设置。如果某个设置在多个配置文件中都已配置,则这些配置文件中设置的应用顺序未定义。 +4. 应用于整个服务器的默认设置,或者来自 [default profile](/operations/server-configuration-parameters/settings#default_profile) 的设置。 ### 角色 {#role-management} -角色是一个访问实体容器,可以授予给用户账户。 +角色是可以授予给用户账户的访问实体容器。 -一个角色包含: +角色包含: - [权限](/sql-reference/statements/grant#privileges) - 设置和约束 @@ -107,12 +111,14 @@ ClickHouse 访问控制实体: 可以通过 [GRANT](/sql-reference/statements/grant.md) 查询向角色授予权限。要从角色撤销权限,ClickHouse 提供 [REVOKE](/sql-reference/statements/revoke.md) 查询。 -#### 行级策略 {#row-policy-management} +#### 行策略 ROW POLICY {#row-policy-management} + -行策略是一种过滤器,用于定义某个用户或角色可以访问哪些行。行策略包含针对某个特定表的过滤条件,以及应使用此行策略的角色和/或用户列表。 + +Row policy 是一种过滤器,用于定义哪些行对某个用户或角色可见。Row policy 包含针对某个特定表的过滤条件,以及应使用此 Row policy 的角色和/或用户列表。 :::note -行策略仅对具有只读访问权限的用户才有意义。如果用户可以修改表或在表之间复制分区,就会绕过行策略的限制。 +Row policy 仅对具有只读权限的用户有意义。如果用户可以修改表或在表之间复制分区,就会绕过 Row policy 的限制。 ::: 管理查询: @@ -123,9 +129,9 @@ ClickHouse 访问控制实体: - [SHOW CREATE ROW POLICY](/sql-reference/statements/show#show-create-row-policy) - [SHOW POLICIES](/sql-reference/statements/show#show-policies) -### 设置配置文件 {#settings-profiles-management} +### Settings profile {#settings-profiles-management} -设置配置文件是[设置](/operations/settings/index.md)的集合。设置配置文件包含设置和约束,以及应用此配置文件的角色和/或用户列表。 +Settings profile 是一组[设置](/operations/settings/index.md)的集合。Settings profile 包含设置和约束,以及应用此配置文件的角色和/或用户列表。 管理查询: @@ -135,11 +141,11 @@ ClickHouse 访问控制实体: - [SHOW CREATE SETTINGS PROFILE](/sql-reference/statements/show#show-create-settings-profile) - [SHOW PROFILES](/sql-reference/statements/show#show-profiles) -### 配额 {#quotas-management} +### Quota {#quotas-management} -配额用于限制资源使用。参见[配额](/operations/quotas.md)。 +配额用于限制资源使用。参见 [Quotas](/operations/quotas.md)。 -配额包含针对若干时间段的一组限制,以及应使用此配额的角色和/或用户列表。 +配额包含针对若干时间周期的一组限制,以及应使用该配额的角色和/或用户列表。 管理查询: @@ -150,27 +156,29 @@ ClickHouse 访问控制实体: - [SHOW QUOTA](/sql-reference/statements/show#show-quota) - [SHOW QUOTAS](/sql-reference/statements/show#show-quotas) -### 启用基于 SQL 的访问控制和账户管理 {#enabling-access-control} +### Enabling SQL-driven access control and account management {#enabling-access-control} + +- 设置用于存储配置的目录。 + + ClickHouse 将访问实体配置存储在由 [access_control_path](/operations/server-configuration-parameters/settings.md#access_control_path) 服务器配置参数指定的目录中。 -- 为配置存储设置一个目录。 +- 为至少一个用户账户启用基于 SQL 的访问控制和账户管理。 - ClickHouse 将访问实体配置存储在由服务器配置参数 [access_control_path](/operations/server-configuration-parameters/settings.md#access_control_path) 指定的文件夹中。 + 默认情况下,基于 SQL 的访问控制和账户管理对所有用户都是禁用的。需要在 `users.xml` 配置文件中至少配置一个用户,并将 [`access_management`](/operations/settings/settings-users.md#access_management-user-setting)、`named_collection_control`、`show_named_collections` 和 `show_named_collections_secrets` 设置的值设为 1。 -- 至少为一个用户账户启用基于 SQL 的访问控制和账户管理。 - 默认情况下,基于 SQL 的访问控制和账户管理对所有用户均处于禁用状态。你需要在 `users.xml` 配置文件中至少配置一个用户,并将 [`access_management`](/operations/settings/settings-users.md#access_management-user-setting)、`named_collection_control`、`show_named_collections` 和 `show_named_collections_secrets` 设置的值设为 1。 ## 定义 SQL 用户和角色 {#defining-sql-users-and-roles} :::tip -如果你在使用 ClickHouse Cloud,请参阅 [Cloud access management](/cloud/security/console-roles)。 +如果您在 ClickHouse Cloud 中工作,请参阅 [Cloud 访问管理](/cloud/security/console-roles)。 ::: -本文介绍如何在基础层面定义 SQL 用户和角色,并将这些权限和许可应用到数据库、表、行和列上。 +本文介绍如何定义 SQL 用户和角色的基本方法,以及如何将相应的权限和许可应用到数据库、表、行和列。 ### 启用 SQL 用户模式 {#enabling-sql-user-mode} -1. 在 `users.xml` 文件中为 `` 用户启用 SQL 用户模式: +1. 在 `users.xml` 文件中,在 `` 用户下启用 SQL 用户模式: ```xml 1 1 @@ -179,9 +187,9 @@ ClickHouse 访问控制实体: ``` :::note - `default` 用户是在全新安装时默认创建的唯一用户,同时也是默认用于节点间通信的账户。 + `default` 用户是在全新安装时唯一会被创建的用户,同时也是默认用于节点间通信的账号。 - 在生产环境中,建议在使用 SQL 管理员用户配置好节点间通信,并使用 ``、集群凭证以及/或节点间 HTTP 和传输协议凭证之后禁用该用户,因为 `default` 账户会被用于节点间通信。 + 在生产环境中,建议在使用 SQL 管理员用户配置好节点间通信,并使用 ``、集群凭证以及/或节点间 HTTP 和传输协议凭证设置好节点间通信后,禁用此用户,因为 `default` 账号被用于节点间通信。 ::: 2. 重启节点以应用更改。 @@ -192,7 +200,7 @@ ClickHouse 访问控制实体: ``` ### 定义用户 {#defining-users} -1. 创建一个 SQL 管理员账户: +1. 创建一个 SQL 管理员账号: ```sql CREATE USER clickhouse_admin IDENTIFIED BY 'password'; ``` @@ -201,18 +209,20 @@ ClickHouse 访问控制实体: GRANT ALL ON *.* TO clickhouse_admin WITH GRANT OPTION; ``` -## ALTER 权限 {#alter-permissions} -本文旨在帮助您更好地理解如何定义权限,以及在特权用户执行 `ALTER` 语句时权限是如何生效的。 -`ALTER` 语句可以划分为若干类别,其中一部分具有层级结构,另一部分则不具有层级结构,必须显式定义。 +## 修改权限 {#alter-permissions} + +本文旨在帮助您更好地理解如何定义权限,以及在为特权用户执行 `ALTER` 语句时权限是如何生效的。 + +`ALTER` 语句分为多个类别,其中有些具有层级关系,而有些则没有,必须显式单独定义。 **示例数据库、表和用户配置** 1. 使用管理员用户创建一个示例用户 ```sql -创建用户 my_user,密码为 'password'; +CREATE USER my_user IDENTIFIED BY 'password'; ``` 2. 创建示例数据库 @@ -221,27 +231,27 @@ ClickHouse 访问控制实体: CREATE DATABASE my_db; ``` -3. 创建示例表 +3. 创建示例数据表 ```sql CREATE TABLE my_db.my_table (id UInt64, column1 String) ENGINE = MergeTree() ORDER BY id; ``` -4. 创建一个示例管理员用户用于授予或撤销权限 +4. 创建一个示例管理员用户,用于授予和收回权限 ```sql CREATE USER my_alter_admin IDENTIFIED BY 'password'; ``` :::note -要授予或撤销权限,管理员用户必须拥有 `WITH GRANT OPTION` 权限。 +要授予或撤销权限,管理员用户必须具有 `WITH GRANT OPTION` 权限。 例如: ```sql -授予 ALTER 权限 于 my_db.* 并允许转授 +GRANT ALTER ON my_db.* WITH GRANT OPTION ``` -要执行 `GRANT` 或 `REVOKE` 操作来授予或收回权限,用户自身必须先拥有这些权限。 +要执行 `GRANT` 或 `REVOKE` 操作授予或撤销权限,用户自身必须已经拥有这些权限。 ::: **授予或撤销权限** @@ -249,7 +259,7 @@ CREATE USER my_alter_admin IDENTIFIED BY 'password'; `ALTER` 的层级结构: ```response -├── ALTER (仅适用于表和视图)/ +├── ALTER (only for table and view)/ │ ├── ALTER TABLE/ │ │ ├── ALTER UPDATE │ │ ├── ALTER DELETE @@ -289,7 +299,7 @@ CREATE USER my_alter_admin IDENTIFIED BY 'password'; 1. 为用户或角色授予 `ALTER` 权限 -使用 `GRANT ALTER on *.* TO my_user` 只会对顶级的 `ALTER TABLE` 和 `ALTER VIEW` 生效,其他 `ALTER` 语句必须分别单独授予或撤销。 +使用 `GRANT ALTER ON *.* TO my_user` 只会影响顶层的 `ALTER TABLE` 和 `ALTER VIEW`,其他 `ALTER` 语句必须单独授予或撤销。 例如,授予基本的 `ALTER` 权限: @@ -297,7 +307,7 @@ CREATE USER my_alter_admin IDENTIFIED BY 'password'; GRANT ALTER ON my_db.my_table TO my_user; ``` -最终得到的权限集合: +最终的权限集合: ```sql SHOW GRANTS FOR my_user; @@ -306,29 +316,30 @@ SHOW GRANTS FOR my_user; ```response SHOW GRANTS FOR my_user -查询 ID: 706befbc-525e-4ec1-a1a2-ba2508cc09e3 +Query id: 706befbc-525e-4ec1-a1a2-ba2508cc09e3 ┌─GRANTS FOR my_user───────────────────────────────────────────┐ │ GRANT ALTER TABLE, ALTER VIEW ON my_db.my_table TO my_user │ └──────────────────────────────────────────────────────────────┘ ``` -这将授予上面示例中 `ALTER TABLE` 和 `ALTER VIEW` 下的所有权限,但是不会授予某些其他 `ALTER` 权限,例如 `ALTER ROW POLICY`(参见前面的权限层级结构,可以看到 `ALTER ROW POLICY` 并不是 `ALTER TABLE` 或 `ALTER VIEW` 的子权限)。这些权限必须被显式授予或撤销。 +这将授予上面示例中 `ALTER TABLE` 和 `ALTER VIEW` 下的所有权限,但是不会授予某些其他 `ALTER` 权限,例如 `ALTER ROW POLICY`(参照前面的权限层级可以看到,`ALTER ROW POLICY` 并不是 `ALTER TABLE` 或 `ALTER VIEW` 的子级)。这些权限必须被显式地单独授予或撤销。 -如果只需要 `ALTER` 权限的一个子集,则可以分别授予每一项;如果该权限还有子权限,这些子权限也会被自动授予。 +如果只需要 `ALTER` 权限的一个子集,则可以分别单独授予每个权限;如果该权限还有子级权限,则这些子级权限也会被自动授予。 例如: ```sql -授予 my_user 在 my_db.my_table 上修改列的权限; +GRANT ALTER COLUMN ON my_db.my_table TO my_user; ``` -权限将配置为: +授权将配置为: ```sql SHOW GRANTS FOR my_user; ``` + ```response SHOW GRANTS FOR my_user @@ -338,10 +349,10 @@ Query id: 47b3d03f-46ac-4385-91ec-41119010e4e2 │ GRANT ALTER COLUMN ON default.my_table TO my_user │ └───────────────────────────────────────────────────┘ -1 行结果,耗时 0.004 秒。 +1 row in set. Elapsed: 0.004 sec. ``` -这还包括以下子权限: +此外还包含以下子权限: ```sql ALTER ADD COLUMN @@ -354,14 +365,14 @@ ALTER RENAME COLUMN 2. 从用户和角色撤销 `ALTER` 权限 -`REVOKE` 语句的行为与 `GRANT` 语句类似。 +`REVOKE` 语句的工作方式与 `GRANT` 语句类似。 如果某个用户/角色被授予了某个子权限,你可以直接撤销该子权限,也可以撤销其所继承的上级权限。 例如,如果该用户被授予了 `ALTER ADD COLUMN` ```sql -授予 my_user 在 my_db.my_table 上执行 ALTER ADD COLUMN 的权限; +GRANT ALTER ADD COLUMN ON my_db.my_table TO my_user; ``` ```response @@ -375,26 +386,26 @@ Ok. ``` ```sql -显示 my_user 的授权; +SHOW GRANTS FOR my_user; ``` ```response -显示 my_user 的权限 +SHOW GRANTS FOR my_user -查询 ID:27791226-a18f-46c8-b2b4-a9e64baeb683 +Query id: 27791226-a18f-46c8-b2b4-a9e64baeb683 -┌─my_user 的权限──────────────────────────────────────┐ -│ 授予 my_user 在 my_db.my_table 上的 ALTER ADD COLUMN 权限 │ +┌─GRANTS FOR my_user──────────────────────────────────┐ +│ GRANT ALTER ADD COLUMN ON my_db.my_table TO my_user │ └─────────────────────────────────────────────────────┘ ``` 可以单独撤销某项权限: ```sql -撤销 my_user 在 my_db.my_table 上的 ALTER 和 ADD COLUMN 权限; +REVOKE ALTER ADD COLUMN ON my_db.my_table FROM my_user; ``` -也可以在任意上层级别撤销(撤销该 COLUMN 的所有子权限): +也可以在任意更高层级撤销(撤销该 COLUMN 的所有下级权限): ```response REVOKE ALTER COLUMN ON my_db.my_table FROM my_user; @@ -405,9 +416,9 @@ REVOKE ALTER COLUMN ON my_db.my_table FROM my_user Query id: b882ba1b-90fb-45b9-b10f-3cda251e2ccc -完成。 +Ok. -0 行。耗时:0.002 秒。 +0 rows in set. Elapsed: 0.002 sec. ``` ```sql @@ -417,44 +428,44 @@ SHOW GRANTS FOR my_user; ```response SHOW GRANTS FOR my_user -查询 ID: e7d341de-de65-490b-852c-fa8bb8991174 +Query id: e7d341de-de65-490b-852c-fa8bb8991174 -完成。 +Ok. -结果集中有 0 行。耗时:0.003 秒。 +0 rows in set. Elapsed: 0.003 sec. ``` -**补充说明** +**附加说明** -这些权限必须由一个用户来授予,该用户不仅具有 `WITH GRANT OPTION`,而且自身也拥有这些权限。 +权限必须由这样一个用户授予:该用户不仅具有 `WITH GRANT OPTION`,而且本身也拥有这些权限。 -1. 要为某个管理员用户授予相应的权限,并允许其管理一组权限, - 下面是一个示例: +1. 要为某个管理员用户授予权限,并允许其管理一组权限 + 示例如下: ```sql -授予 my_alter_admin 在 my_db.my_table 上的 SELECT 和 ALTER COLUMN 权限,并具有授权选项; +GRANT SELECT, ALTER COLUMN ON my_db.my_table TO my_alter_admin WITH GRANT OPTION; ``` 现在用户可以授予或撤销 `ALTER COLUMN` 及其所有子权限。 **测试** -1. 授予 `SELECT` 权限 +1. 添加 `SELECT` 权限 ```sql - 授予 my_user 在 my_db.my_table 上的 SELECT 权限; + GRANT SELECT ON my_db.my_table TO my_user; ``` -2. 为该用户授予 ADD COLUMN 权限 +2. 为该用户授予添加列的权限 ```sql GRANT ADD COLUMN ON my_db.my_table TO my_user; ``` -3. 使用受限权限用户登录 +3. 使用受限用户账号登录 ```bash -clickhouse-client --user my_user --password password --port 9000 --host <你的 ClickHouse 主机地址> +clickhouse-client --user my_user --password password --port 9000 --host ``` 4. 测试添加一列 @@ -481,10 +492,11 @@ DESCRIBE my_db.my_table; ```response DESCRIBE TABLE my_db.my_table -查询 ID: ab9cb2d0-5b1a-42e1-bc9c-c7ff351cb272 +Query id: ab9cb2d0-5b1a-42e1-bc9c-c7ff351cb272 ``` -┌─名称────┬─类型───┬─默认_类型─┬─默认_表达式─┬─注释─┬─编解码_表达式─┬─TTL_表达式─┐ + +┌─name────┬─type───┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt64 │ │ │ │ │ │ │ column1 │ String │ │ │ │ │ │ │ column2 │ String │ │ │ │ │ │ @@ -492,7 +504,7 @@ DESCRIBE TABLE my_db.my_table ```` -4. 测试删除列 +4. Test deleting a column ```sql ALTER TABLE my_db.my_table DROP COLUMN column2; ```` @@ -505,26 +517,26 @@ Query id: 50ad5f6b-f64b-4c96-8f5f-ace87cea6c47 0 rows in set. Elapsed: 0.004 sec. -从服务器收到异常 (version 22.5.1): -Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_user: 权限不足。执行此查询需要授予 ALTER DROP COLUMN(column2) ON my_db.my_table 权限。(ACCESS_DENIED) +Received exception from server (version 22.5.1): +Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_user: Not enough privileges. To execute this query it's necessary to have grant ALTER DROP COLUMN(column2) ON my_db.my_table. (ACCESS_DENIED) ``` -5. 通过授予权限测试 ALTER ADMIN +5. 通过授予权限来测试 alter 管理员角色 ```sql GRANT SELECT, ALTER COLUMN ON my_db.my_table TO my_alter_admin WITH GRANT OPTION; ``` -6. 使用 alter admin 用户登录 +6. 使用具有 ALTER 权限的管理员账户登录 ```bash clickhouse-client --user my_alter_admin --password password --port 9000 --host ``` -7. 授予子权限 +7. 授予子级权限 ```sql -授予 my_user 在 my_db.my_table 上的 ALTER 和 ADD COLUMN 权限; +GRANT ALTER ADD COLUMN ON my_db.my_table TO my_user; ``` ```response @@ -535,7 +547,7 @@ Query id: 1c7622fa-9df1-4c54-9fc3-f984c716aeba Ok. ``` -8. 测试尝试为 alter 管理员用户授予一个其自身不具备、且并非该管理员用户现有授权子权限的权限。 +8. 测试在尝试授予某个权限时,如果该 alter 管理员用户本身不具备该权限,且该权限也不是其已获授权权限的子权限时的行为。 ```sql GRANT ALTER UPDATE ON my_db.my_table TO my_user; @@ -544,13 +556,13 @@ GRANT ALTER UPDATE ON my_db.my_table TO my_user; ```response GRANT ALTER UPDATE ON my_db.my_table TO my_user -查询 ID: 191690dc-55a6-4625-8fee-abc3d14a5545 +Query id: 191690dc-55a6-4625-8fee-abc3d14a5545 -返回 0 行。用时:0.004 秒。 +0 rows in set. Elapsed: 0.004 sec. -服务器返回异常(版本 22.5.1): -代码:497. DB::Exception: 来自 chnode1.marsnet.local:9440。DB::Exception: my_alter_admin: 权限不足。执行此查询需要具有 ALTER UPDATE ON my_db.my_table WITH GRANT OPTION 授权。(ACCESS_DENIED) +Received exception from server (version 22.5.1): +Code: 497. DB::Exception: Received from chnode1.marsnet.local:9440. DB::Exception: my_alter_admin: Not enough privileges. To execute this query it's necessary to have grant ALTER UPDATE ON my_db.my_table WITH GRANT OPTION. (ACCESS_DENIED) ``` **摘要** -针对表和视图的 `ALTER`,其权限具有层级关系,但对其他 `ALTER` 语句则不适用。权限既可以按细粒度级别进行设置,也可以通过权限分组来统一设置,并且可以以类似方式撤销。执行授权或撤销操作的用户必须具有 `WITH GRANT OPTION`,才能为用户(包括其自身)设置权限,并且自身必须已经拥有相应的权限。如果执行操作的用户本身不具备相应的 grant option 权限,则无法撤销自己的权限。 +针对表和视图的 `ALTER` 权限是分层的,但其他类型的 `ALTER` 语句则不具有这种层级关系。权限既可以以细粒度方式单独设置,也可以通过权限分组进行设置,并且都可以以相同方式撤销。授予或撤销权限的用户必须具有 `WITH GRANT OPTION`,才能为其他用户(包括其自身这一执行用户)设置权限,并且自身必须已经拥有相应的权限。如果执行用户本身不具有 `WITH GRANT OPTION` 权限,则不能撤销自己已有的权限。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/interfaces/formats.md b/i18n/zh/docusaurus-plugin-content-docs/current/interfaces/formats.md index f03425fe5b2..b7813b85be0 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/interfaces/formats.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/interfaces/formats.md @@ -9,13 +9,10 @@ doc_type: 'reference' import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; - # 输入和输出数据的格式 {#formats-for-input-and-output-data} ClickHouse 支持大多数已知的文本和二进制数据格式,从而可以轻松集成到几乎任何现有的数据管道中,充分发挥 ClickHouse 的优势。 - - ## 输入格式 {#input-formats} 输入格式用于: @@ -34,22 +31,16 @@ ClickHouse 支持大多数已知的文本和二进制数据格式,从而可以 请阅读完整的[基准分析](https://www.clickhouse.com/blog/clickhouse-input-format-matchup-which-is-fastest-most-efficient)。 要查看完整测试结果,请访问 [FastFormats](https://fastformats.clickhouse.com/) 在线仪表盘。 - - ## 输出格式 {#output-formats} 支持的输出格式用于: - 组织 `SELECT` 查询的结果 - 向以文件为后端的表执行 `INSERT` 操作 - - ## 格式概览 {#formats-overview} 受支持的格式有: - - | 格式 | 输入 | 输出 | | ---------------------------------------------------------------------------------------------------------- | -- | -- | | [TabSeparated](./formats/TabSeparated/TabSeparated.md) | ✔ | ✔ | @@ -139,12 +130,8 @@ ClickHouse 支持大多数已知的文本和二进制数据格式,从而可以 | [Markdown](./formats/Markdown.md) | ✗ | ✔ | | [表单](./formats/Form.md) | ✔ | ✗ | - - 你可以通过 ClickHouse 的设置来控制某些格式处理参数。欲了解更多信息,请参阅[设置](/operations/settings/settings-formats.md)部分。 - - ## 格式模式 {#formatschema} 包含格式模式的文件名由设置 `format_schema` 指定。 @@ -161,8 +148,6 @@ ClickHouse 支持大多数已知的文本和二进制数据格式,从而可以 如果通过 [HTTP 接口](/interfaces/http.md) 进行数据输入或输出,则格式模式中指定的文件名 必须位于服务器配置中由 [format_schema_path](/operations/server-configuration-parameters/settings.md/#format_schema_path) 指定的目录中。 - - ## 跳过错误 {#skippingerrors} 某些格式,例如 `CSV`、`TabSeparated`、`TSKV`、`JSONEachRow`、`Template`、`CustomSeparated` 和 `Protobuf`,在发生解析错误时可以跳过有问题的行,并从下一行的开头继续解析。参见 [input_format_allow_errors_num](/operations/settings/settings-formats.md/#input_format_allow_errors_num) 和 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/operations/settings/settings.md b/i18n/zh/docusaurus-plugin-content-docs/current/operations/settings/settings.md index c22e8b375ba..ea5dc2f8702 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/operations/settings/settings.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/operations/settings/settings.md @@ -10085,6 +10085,15 @@ S3 分块上传的最大分块编号。 在向 S3 执行分段上传时,每个上传分段的最小大小。 +## s3_path_filter_limit {#s3_path_filter_limit} + + + + + +从查询过滤条件中提取 `_path` 值用于文件遍历(替代 glob 列举)的最大数量。 +0 表示禁用。 + ## s3_request_timeout_ms {#s3_request_timeout_ms} @@ -10647,7 +10656,8 @@ SELECT ((4 + 2) + 1, ((4 + 2) + 1) + 2) -允许对 Kafka、RabbitMQ、FileLog、Redis Streams 和 NATS 引擎执行直接 SELECT 查询。如果存在附加的 materialized view,即使启用了此设置,也不允许执行 SELECT 查询。 +允许对 Kafka、RabbitMQ、FileLog、Redis Streams、S3Queue、AzureQueue 和 NATS 引擎执行直接 SELECT 查询。如果存在附加的 materialized view,即使启用了此设置,也不允许执行 SELECT 查询。 +如果没有附加的 materialized view,启用此设置后可以读取数据。请注意,已读取的数据通常会从队列中删除。为避免删除已读取的数据,应正确配置相关引擎的设置。 ## stream_like_engine_insert_queue {#stream_like_engine_insert_queue} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md index 1b9878f3a08..a677080f461 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/aggregate-functions/reference/intervalLengthSum.md @@ -86,7 +86,6 @@ SELECT id, intervalLengthSum(start, end), toTypeName(intervalLengthSum(start, en 3. 输入表: - ```text ┌─id─┬──────开始─┬────────结束─┐ │ a │ 2020-01-01 │ 2020-01-04 │ diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md index 1c4241e5ed9..bb6e65d6c84 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/index.md @@ -10,6 +10,8 @@ doc_type: 'reference' import SelfManaged from '@site/i18n/zh/docusaurus-plugin-content-docs/current/_snippets/_self_managed_only_no_roadmap.md'; import CloudDetails from '@site/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/dictionaries/_snippet_dictionary_in_cloud.md'; import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; +import ExperimentalBadge from '@theme/badges/ExperimentalBadge'; + # 字典 {#dictionaries} @@ -1052,7 +1054,7 @@ SOURCE(CLICKHOUSE(... update_field 'added_time' update_lag 15)) ... - + ... @@ -1066,7 +1068,7 @@ SOURCE(CLICKHOUSE(... update_field 'added_time' update_lag 15)) ```sql CREATE DICTIONARY dict_name (...) ... -SOURCE(SOURCE_TYPE(param1 val1 ... paramN valN)) -- 数据源配置 +SOURCE(SOURCE_TYPE(param1 val1 ... paramN valN)) -- Source configuration ... ``` @@ -1107,6 +1109,8 @@ SETTINGS(format_csv_allow_single_quotes = 0) * [Redis](#redis) * [Cassandra](#cassandra) * [PostgreSQL](#postgresql) + * [YTsaurus](#ytsaurus) + ### 本地文件 {#local-file} @@ -1891,6 +1895,48 @@ SOURCE(POSTGRESQL( `table` 或 `where` 字段不能与 `query` 字段同时使用。同时,`table` 和 `query` 字段中必须至少声明一个。 ::: +### YTsaurus {#ytsaurus} + + + + + +:::info +这是一个实验性特性,将来版本中可能会发生不向后兼容的变更。 +通过设置 [`allow_experimental_ytsaurus_dictionary_source`](/operations/settings/settings#allow_experimental_ytsaurus_dictionary_source) +来启用 YTsaurus 字典源。 +::: + +设置示例: + +```xml + + + http://localhost:8000 + //tmp/test + password + 1 + + +``` + +或 + +```sql +SOURCE(YTSAURUS( + http_proxy_urls 'http://localhost:8000' + cypress_path '//tmp/test' + oauth_token 'password' +)) +``` + +设置字段: + +* `http_proxy_urls` – 指向 YTsaurus HTTP 代理的 URL。 +* `cypress_path` – 指向表数据源的 Cypress 路径。 +* `oauth_token` – OAuth 令牌。 + + ### Null {#null} 一种特殊的数据源,可用于创建占位(空)字典。此类字典在测试场景中,或在数据节点与查询节点分离且这些节点上使用分布式表的环境中会很有用。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md index d2b70f41d89..42b49df54c7 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-functions.md @@ -6,15 +6,17 @@ title: '数组函数' doc_type: 'reference' --- + + # 数组函数 {#array-functions} {/* 下方标签中的内容会在文档框架构建时被替换为 - 由 system.functions 生成的文档。 - 请勿修改或删除这些标签。 + 由 system.functions 生成的文档。请勿修改或删除这些标签。 参见:https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } + {/*AUTOGENERATED_START*/ } ## array {#array} @@ -23,11 +25,11 @@ doc_type: 'reference' 根据函数参数创建一个数组。 -参数必须是常量,并且其类型必须具有一个共同的超类型。 -必须至少传入一个参数,否则无法确定要创建哪种类型的数组。 -这意味着不能使用此函数来创建空数组。若要创建空数组,请使用 `emptyArray*` 函数。 +参数必须是常量,并且其类型必须具有共同的超类型。 +必须传入至少一个参数,否则无法确定要创建哪种类型的数组。 +这意味着不能使用此函数创建空数组。要创建空数组,请使用 `emptyArray*` 函数。 -可以使用 `[ ]` 运算符实现相同的功能。 +使用 `[ ]` 运算符可以实现相同的功能。 **语法** @@ -37,11 +39,11 @@ array(x1 [, x2, ..., xN]) **参数** -* `x1` — 任意类型 T 的常量值。如果只提供此参数,则数组类型为 T。- `[, x2, ..., xN]` — 额外的 N 个常量值,与 `x1` 具有共同的超类型 +* `x1` — 任意类型 T 的常量值。如果只提供此参数,则数组类型为 T。- `[, x2, ..., xN]` — 额外的 N 个常量参数,与 `x1` 具有共同的超类型 **返回值** -返回一个数组,其中 'T' 是所有传入参数的最小公共类型。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,其中 'T' 为所有传入参数的最小公共类型。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -57,27 +59,28 @@ SELECT array(toInt32(1), toUInt16(2), toInt8(3)) AS a, toTypeName(a) └─────────┴───────────────┘ ``` -**用法无效** +**无效的用法** ```sql title=Query SELECT array(toInt32(5), toDateTime('1998-06-16'), toInt8(5)) AS a, toTypeName(a) ``` ```response title=Response -从服务器收到异常(版本 25.4.3): -代码: 386. DB::Exception: 从 localhost:9000 收到。DB::Exception: -类型 Int32、DateTime、Int8 不存在超类型 ... +Received exception from server (version 25.4.3): +Code: 386. DB::Exception: Received from localhost:9000. DB::Exception: +There is no supertype for types Int32, DateTime, Int8 ... ``` + ## arrayAUCPR {#arrayAUCPR} 引入版本:v20.4 计算精确率-召回率(PR)曲线下面积。 -精确率-召回率曲线是通过在所有阈值下,将精确率绘制在 y 轴、召回率绘制在 x 轴而得到的。 +精确率-召回率曲线是通过在所有阈值上,将精确率绘制在 y 轴、召回率绘制在 x 轴而得到的。 结果值范围为 0 到 1,值越高表示模型性能越好。 -在处理类别分布不平衡的数据集时,PR AUC 尤其有用,相比 ROC AUC 能在这类场景下提供更清晰的性能对比。 -更多细节请参见[此处](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[此处](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)和[此处](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve)。 +对于类别分布不平衡的数据集,PR AUC 尤其有用,在这类场景下,相比 ROC AUC 能提供更清晰的性能对比。 +更多详细信息,请参见[此处](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[此处](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)以及[此处](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve)。 **语法** @@ -85,25 +88,25 @@ SELECT array(toInt32(5), toDateTime('1998-06-16'), toInt8(5)) AS a, toTypeName(a arrayAUCPR(scores, labels[, partial_offsets]) ``` -**别名**: `arrayPRAUC` +**别名**:`arrayPRAUC` **参数** -* `cores` — 预测模型输出的分数。[`Array((U)Int*)`](/sql-reference/data-types/array) 或 [`Array(Float*)`](/sql-reference/data-types/array) +* `cores` — 评分,即预测模型输出的分数。[`Array((U)Int*)`](/sql-reference/data-types/array) 或 [`Array(Float*)`](/sql-reference/data-types/array) * `labels` — 样本标签,通常正样本为 1,负样本为 0。[`Array((U)Int*)`](/sql-reference/data-types/array) 或 [`Array(Enum)`](/sql-reference/data-types/array) * `partial_offsets` — -* 可选。一个由三个非负整数组成的 [`Array(T)`](/sql-reference/data-types/array),用于计算 PR 曲线下的部分面积(等价于 PR 空间中的一个垂直带状区域),而不是整个 AUC。此选项对于分布式计算 PR AUC 很有用。该数组必须包含以下元素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`]。 - * `higher_partitions_tp`:得分更高的各分区中正标签的数量。 - * `higher_partitions_fp`:得分更高的各分区中负标签的数量。 +* 可选。一个由三个非负整数组成的 [`Array(T)`](/sql-reference/data-types/array),用于计算 PR 曲线下的部分面积(等价于 PR 空间中的一条垂直带状区域),而不是整个 AUC。此选项在对 PR AUC 进行分布式计算时很有用。该数组必须包含以下元素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`]。 + * `higher_partitions_tp`:得分更高的分区中正标签的数量。 + * `higher_partitions_fp`:得分更高的分区中负标签的数量。 * `total_positives`:整个数据集中正样本的总数。 :::note 当使用 `arr_partial_offsets` 时,`arr_scores` 和 `arr_labels` 应仅对应整个数据集中的一个分区,并且该分区只包含某一分数区间内的样本。 -数据集应被划分为一系列相邻的连续分区,其中每个分区包含分数落在某个特定范围内的数据子集。 +数据集应被划分为连续的分区,每个分区包含分数落在特定范围内的数据子集。 例如: * 一个分区可以包含所有位于区间 [0, 0.5) 内的分数。 -* 另一个分区可以包含位于区间 [0.5, 1.0] 内的分数。 +* 另一个分区可以包含所有位于区间 [0.5, 1.0] 内的分数。 ::: **返回值** @@ -124,11 +127,12 @@ SELECT arrayAUCPR([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); └─────────────────────────────────────────────────┘ ``` + ## arrayAll {#arrayAll} -引入版本:v1.1 +引入于:v1.1 -如果 lambda `func(x [, y1, y2, ... yN])` 对所有元素的返回值都为 true,则返回 `1`;否则,返回 `0`。 +如果 Lambda `func(x [, y1, y2, ... yN])` 对所有元素的返回值都为 true,则返回 `1`;否则,返回 `0`。 **语法** @@ -138,17 +142,17 @@ arrayAll(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)和条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) * `cond1_arr, ...` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -如果 Lambda 函数对所有元素都返回 true,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果 Lambda 函数对所有元素的返回值都为 true,则返回 `1`;否则,返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** -**所有元素都满足条件** +**所有元素都匹配** ```sql title=Query SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 2, 3]) @@ -168,13 +172,14 @@ SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 1, 1]) 0 ``` + ## arrayAvg {#arrayAvg} 引入于:v21.1 -返回源数组中元素的平均值。 +返回源数组中各元素的平均值。 -如果指定了 lambda 函数 `func`,则返回对元素应用该 lambda 函数后所得结果的平均值。 +如果指定了 Lambda FUNCTION `func`,则返回其结果元素的平均值。 **语法** @@ -184,13 +189,13 @@ arrayAvg([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 可选。作用于源数组(`x`)及条件数组(`y`)元素的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 可选。一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。提供给 Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回源数组中元素的平均值;如果提供了 Lambda 函数,则返回其结果元素的平均值。[`Float64`](/sql-reference/data-types/float) +返回源数组元素的平均值;如果提供了 Lambda 函数,则返回其结果元素的平均值。[`Float64`](/sql-reference/data-types/float) **示例** @@ -214,9 +219,10 @@ SELECT arrayAvg(x, y -> x*y, [2, 3], [2, 3]) AS res; 6.5 ``` + ## arrayCompact {#arrayCompact} -自 v20.1 版本引入 +引入于:v20.1 从数组中移除连续的重复元素,包括 `null` 值。结果数组中各值的顺序与源数组中的顺序一致。 @@ -228,7 +234,7 @@ arrayCompact(arr) **参数** -* `arr` — 需要去重的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 要从中移除重复项的数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** @@ -246,11 +252,12 @@ SELECT arrayCompact([1, 1, nan, nan, 2, 3, 3, 3]); [1,nan,2,3] ``` + ## arrayConcat {#arrayConcat} -自 v1.1 版本引入 +引入于:v1.1 -合并作为参数传入的数组。 +将传入的数组参数合并。 **语法** @@ -264,7 +271,7 @@ arrayConcat(arr1 [, arr2, ... , arrN]) **返回值** -返回一个由提供的数组参数合并而成的单个数组。[`Array(T)`](/sql-reference/data-types/array) +返回由提供的数组参数拼接得到的单个数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -278,11 +285,12 @@ SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res [1, 2, 3, 4, 5, 6] ``` + ## arrayCount {#arrayCount} -引入版本:v1.1 +版本引入:v1.1 -返回使 `func(arr1[i], ..., arrN[i])` 的结果为 true 的元素数量。 +返回使 `func(arr1[i], ..., arrN[i])` 为 true 的元素数量。 如果未指定 `func`,则返回数组中非零元素的数量。 `arrayCount` 是一个[高阶函数](/sql-reference/functions/overview#higher-order-functions)。 @@ -300,11 +308,11 @@ arrayCount([func, ] arr1, ...) **返回值** -返回使 `func` 返回 true 的元素个数。否则,返回数组中非零元素的个数。[`UInt32`](/sql-reference/data-types/int-uint) +返回使 `func` 的结果为 true 的元素数量;如果未指定 `func`,则返回数组中非零元素的数量。[`UInt32`](/sql-reference/data-types/int-uint) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT arrayCount(x -> (x % 2), groupArray(number)) FROM numbers(10) @@ -314,11 +322,12 @@ SELECT arrayCount(x -> (x % 2), groupArray(number)) FROM numbers(10) 5 ``` + ## arrayCumSum {#arrayCumSum} -首次引入于:v1.1 +引入版本:v1.1 -返回一个数组,其中每个元素是源数组对应位置的前缀和(累计和)。如果指定了 lambda 函数,则在每个位置先对数组元素应用该 lambda,再对结果进行累计求和。 +返回一个数组,该数组由源数组中各元素的累积和(前缀和)组成。如果指定了 Lambda 函数,则通过对每个位置上的数组元素应用该 Lambda 来计算累积和。 **语法** @@ -328,13 +337,13 @@ arrayCumSum([func,] arr1[, arr2, ... , arrN]) **参数** -* `func` — 可选。应用于数组各位置元素的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — 可选。应用到每个位置数组元素上的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1` — 源数值数组。[`Array(T)`](/sql-reference/data-types/array) -* `[arr2, ..., arrN]` — 可选。与 `arr1` 长度相同的附加数组,如果指定了 lambda 函数,这些数组会作为参数传递给该函数。[`Array(T)`](/sql-reference/data-types/array) +* `[arr2, ..., arrN]` — 可选。与 `arr1` 大小相同的附加数组,如果指定,则作为参数传递给该 Lambda 函数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个数组,其中包含源数组元素的部分和(前缀和)。结果类型与输入数组的数值类型相同。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,包含源数组元素的部分和。结果类型与输入数组的数值类型相同。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -348,7 +357,7 @@ SELECT arrayCumSum([1, 1, 1, 1]) AS res [1, 2, 3, 4] ``` -**使用 lambda 表达式** +**使用 Lambda** ```sql title=Query SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res @@ -358,11 +367,12 @@ SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res [2, 6, 12] ``` + ## arrayCumSumNonNegative {#arrayCumSumNonNegative} 引入版本:v18.12 -返回一个数组,其中包含源数组元素的部分(逐步)累计和,并将任何为负的累计和替换为零。如果指定了 lambda 函数,则在每个位置先对数组元素应用该 lambda,再对结果进行累计求和。 +返回一个数组,其中包含源数组元素的部分(累积)和,遇到为负的累积和时将其替换为 0。如果指定了 Lambda 函数,则通过对每个位置上的数组元素先应用该 Lambda,然后对结果计算累积和。 **语法** @@ -372,13 +382,13 @@ arrayCumSumNonNegative([func,] arr1[, arr2, ... , arrN]) **参数** -* `func` — 可选。一个应用于数组中各位置元素的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — 可选。对每个位置的数组元素应用的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr1` — 数值类型的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[arr2, ..., arrN]` — 可选。与 `arr1` 大小相同的其他数组,如果指定了 lambda 函数,这些数组会作为参数传递给该函数。[`Array(T)`](/sql-reference/data-types/array) +* `[arr2, ..., arrN]` — 可选。与 `arr1` 大小相同的其他数组,如果指定了 Lambda 函数,则作为参数传递给该函数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回源数组元素的部分和数组,其中任何为负的累积和都会被替换为零。结果类型与输入数组的数值类型一致。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,其中包含源数组元素的部分和(前缀和),并将任何为负的累积和替换为零。结果类型与输入数组的数值类型相同。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -392,7 +402,7 @@ SELECT arrayCumSumNonNegative([1, 1, -4, 1]) AS res [1, 2, 0, 1] ``` -**使用 Lambda** +**配合 Lambda 使用** ```sql title=Query SELECT arrayCumSumNonNegative(x -> x * 2, [1, -2, 3]) AS res @@ -402,9 +412,10 @@ SELECT arrayCumSumNonNegative(x -> x * 2, [1, -2, 3]) AS res [2, 0, 6] ``` + ## arrayDifference {#arrayDifference} -引入版本:v1.1 +引入于 v1.1 计算一个数组,其元素为原数组中相邻元素之间的差值。 结果数组的第一个元素为 0,第二个元素为 `arr[1] - arr[0]`,第三个元素为 `arr[2] - arr[1]`,以此类推。 @@ -418,15 +429,15 @@ arrayDifference(arr) **参数** -* `arr` — 要计算相邻元素差值的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 要计算相邻元素之间差值的数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个由相邻数组元素之间的差值组成的数组 [`UInt*`](/sql-reference/data-types/int-uint) +返回一个数组,其元素为相邻数组元素之间的差值。[`UInt*`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayDifference([1, 2, 3, 4]); @@ -436,7 +447,7 @@ SELECT arrayDifference([1, 2, 3, 4]); [0,1,1,1] ``` -**结果类型为 Int64 时发生溢出的示例** +**由于结果类型为 Int64 时发生溢出的示例** ```sql title=Query SELECT arrayDifference([0, 10000000000000000000]); @@ -448,11 +459,12 @@ SELECT arrayDifference([0, 10000000000000000000]); └────────────────────────────────────────────┘ ``` + ## arrayDistinct {#arrayDistinct} -引入于:v1.1 +引入版本:v1.1 -返回一个仅包含数组中各不相同(去重后)元素的数组。 +返回仅包含数组中不重复元素的数组。 **语法** @@ -462,15 +474,15 @@ arrayDistinct(arr) **参数** -* `arr` — 要从中提取不同元素的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 要进行去重的数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个包含不同元素的数组 [`Array(T)`](/sql-reference/data-types/array) +返回一个包含去重后元素的数组 [`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayDistinct([1, 2, 2, 3, 1]); @@ -480,14 +492,15 @@ SELECT arrayDistinct([1, 2, 2, 3, 1]); [1,2,3] ``` + ## arrayDotProduct {#arrayDotProduct} -自 v23.5 引入 +引入版本:v23.5 返回两个数组的点积。 :::note -两个向量的长度必须相等。`Array` 和 `Tuple` 中的元素类型也可以是混合的。 +两个向量的长度必须相等。`Array` 和 `Tuple` 也可以包含不同类型的元素。 ::: **语法** @@ -506,7 +519,7 @@ arrayDotProduct(v1, v2) 两个向量的点积。 :::note -返回类型由参数的类型确定。如果 Array 或 Tuple 中包含不同类型的元素,则结果类型为它们的超类型。 +返回类型由参数的类型确定。如果 `Array` 或 `Tuple` 中包含混合元素类型,则结果类型为它们的超类型。 ::: [`(U)Int*`](/sql-reference/data-types/int-uint) 或 [`Float*`](/sql-reference/data-types/float) 或 [`Decimal`](/sql-reference/data-types/decimal) @@ -533,19 +546,20 @@ SELECT dotProduct((1::UInt16, 2::UInt8, 3::Float32),(4::Int16, 5::Float32, 6::UI 32 Float64 ``` + ## arrayElement {#arrayElement} -引入于:v1.1 +引入版本:v1.1 -获取给定数组中索引为 `n` 的元素,其中 `n` 可以是任意整数类型。 -如果索引超出数组边界,则返回默认值(数字为 0,字符串为空字符串等), -当数组参数为非常量且索引为常量 0 时除外。在这种情况下会报错 `Array indices are 1-based`。 +获取给定数组中下标为 `n` 的元素,其中 `n` 可以是任意整数类型。 +如果下标超出了数组的边界,则返回默认值(数字为 0,字符串为空字符串等), +但对非常量数组参数且下标为常量 0 的情况除外。在这种情况下会报错 `Array indices are 1-based`。 :::note -ClickHouse 中的数组索引从 1 开始。 +ClickHouse 中的数组下标从 1 开始。 ::: -支持负索引。在这种情况下,将从末尾开始计数,选取对应元素。例如,`arr[-1]` 是数组中的最后一个元素。 +支持负下标。在这种情况下,从数组末尾开始计数以选择相应的元素。例如,`arr[-1]` 是数组中的最后一个元素。 运算符 `[n]` 提供相同的功能。 @@ -557,15 +571,17 @@ arrayElement(arr, n) **参数** -* `arr` — 要检索的数组。[`Array(T)`](/sql-reference/data-types/array)。- `n` — 要获取的元素位置。[`(U)Int*`](/sql-reference/data-types/int-uint)。 +* `arr` — 要搜索的数组。[`Array(T)`](/sql-reference/data-types/array)。 + +- `n` — 要获取的元素位置。[`(U)Int*`](/sql-reference/data-types/int-uint)。 **返回值** -返回由给定数组参数合并得到的单个数组 [`Array(T)`](/sql-reference/data-types/array)。 +返回由提供的数组参数合并得到的单个数组 [`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayElement(arr, 2) FROM (SELECT [1, 2, 3] AS arr) @@ -595,7 +611,7 @@ SELECT arr[2] FROM (SELECT [1, 2, 3] AS arr) 2 ``` -**数组下标越界** +**数组索引越界** ```sql title=Query SELECT arrayElement(arr, 4) FROM (SELECT [1, 2, 3] AS arr) @@ -605,18 +621,19 @@ SELECT arrayElement(arr, 4) FROM (SELECT [1, 2, 3] AS arr) 0 ``` + ## arrayElementOrNull {#arrayElementOrNull} -引入于:v1.1 +引入版本:v1.1 获取给定数组中索引为 `n` 的元素,其中 `n` 可以是任意整数类型。 -如果索引超出了数组的范围,则返回 `NULL`,而不是默认值。 +如果索引超出数组范围,则返回 `NULL`,而不是默认值。 :::note ClickHouse 中的数组索引从 1 开始。 ::: -支持负索引。这时会从数组末尾开始计数来选择对应的元素。例如,`arr[-1]` 是数组中的最后一个元素。 +支持负索引。在这种情况下,它会从数组末尾开始计数并选择相应的元素。例如,`arr[-1]` 是数组中的最后一个元素。 **语法** @@ -630,11 +647,11 @@ arrayElementOrNull(arrays) **返回值** -返回由提供的数组参数合并得到的单个数组。[`Array(T)`](/sql-reference/data-types/array) +返回由提供的数组参数合并而成的单个数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayElementOrNull(arr, 2) FROM (SELECT [1, 2, 3] AS arr) @@ -664,14 +681,15 @@ SELECT arrayElementOrNull(arr, 4) FROM (SELECT [1, 2, 3] AS arr) NULL ``` + ## arrayEnumerate {#arrayEnumerate} -引入版本:v1.1 +引入于:v1.1 返回数组 `[1, 2, 3, ..., length(arr)]` -此函数通常与 [`ARRAY JOIN`](/sql-reference/statements/select/array-join) 子句一起使用。它允许在应用 `ARRAY JOIN` 之后,对每个数组只统计一次。 -此函数也可以用于高阶函数。例如,你可以使用它来获取满足某个条件的元素在数组中的索引。 +此函数通常与 [`ARRAY JOIN`](/sql-reference/statements/select/array-join) 子句一起使用,可在应用 `ARRAY JOIN` 后只对每个数组计数一次。 +该函数也可用于高阶函数。例如,可使用它来获取满足条件的元素的数组索引。 **语法** @@ -723,11 +741,12 @@ ARRAY JOIN └────┴────────────────┴─────────────┴─────┘ ``` + ## arrayEnumerateDense {#arrayEnumerateDense} -自 v18.12 版本引入 +引入版本:v18.12 -返回一个与源数组大小相同的数组,用于标记每个元素在源数组中首次出现的位置。 +返回一个与源数组大小相同的数组,表示每个元素在源数组中首次出现的位置。 **语法** @@ -741,7 +760,7 @@ arrayEnumerateDense(arr) **返回值** -返回一个与 `arr` 大小相同的数组,其中每个元素表示对应元素在源数组 [`Array(T)`](/sql-reference/data-types/array) 中首次出现的位置。 +返回一个与 `arr` 大小相同的数组,用于标识源数组中每个元素首次出现的位置索引。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -755,11 +774,12 @@ SELECT arrayEnumerateDense([10, 20, 10, 30]) [1,2,1,3] ``` + ## arrayEnumerateDenseRanked {#arrayEnumerateDenseRanked} -自 v20.1 引入 +引入版本:v20.1 -返回一个与源数组大小相同的数组,用于标示每个元素在源数组中首次出现的索引位置。它支持对多维数组进行枚举,并且可以指定在数组中向内遍历的深度。 +返回一个与源数组大小相同的数组,用于标示源数组中每个元素首次出现的位置。支持对多维数组进行枚举,并允许指定在数组中向内查看的层级深度。 **语法** @@ -775,14 +795,14 @@ arrayEnumerateDenseRanked(clear_depth, arr, max_array_depth) **返回值** -返回一个数组,用于表示每个元素在源数组中首次出现的位置。[`Array`](/sql-reference/data-types/array) +返回一个数组,表示源数组中每个元素首次出现的位置。[`Array`](/sql-reference/data-types/array) **示例** **基本用法** ```sql title=Query --- 当 clear_depth=1 且 max_array_depth=1 时,结果与 arrayEnumerateDense 给出的结果相同。 +-- With clear_depth=1 and max_array_depth=1, the result is identical to what arrayEnumerateDense would give. SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1); ``` @@ -791,16 +811,17 @@ SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1); [1,2,1,3] ``` -**与多维数组一起使用** +**与多维数组配合使用** ```sql title=Query --- 在此示例中,arrayEnumerateDenseRanked 用于获取一个数组,该数组指示多维数组中每个元素在具有相同值的元素中的排名位置。 --- 对于传入数组的第一行 [10, 10, 30, 20],结果的对应第一行是 [1, 1, 2, 3], --- 表示 10 是第一个遇到的数字,出现在位置 1 和 2,30 是第二个遇到的数字,出现在位置 3, --- 20 是第三个遇到的数字,出现在位置 4。 --- 对于第二行 [40, 50, 10, 30],结果的对应第二行是 [4,5,1,2],表示 40 --- 和 50 是第四个和第五个遇到的数字,分别出现在该行的位置 1 和 2,另一个 10 --- (第一个遇到的数字)出现在位置 3,30(第二个遇到的数字)出现在最后位置。 +-- In this example, arrayEnumerateDenseRanked is used to obtain an array indicating, for each element of the +-- multidimensional array, what its position is among elements of the same value. +-- For the first row of the passed array, [10, 10, 30, 20], the corresponding first row of the result is [1, 1, 2, 3], +-- indicating that 10 is the first number encountered in position 1 and 2, 30 the second number encountered in position 3 +-- and 20 is the third number encountered in position 4. +-- For the second row, [40, 50, 10, 30], the corresponding second row of the result is [4,5,1,2], indicating that 40 +-- and 50 are the fourth and fifth numbers encountered in position 1 and 2 of that row, that another 10 +-- (the first encountered number) is in position 3 and 30 (the second number encountered) is in the last position. SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2); ``` @@ -812,7 +833,7 @@ SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2); **使用更大 clear_depth 的示例** ```sql title=Query --- 将 clear_depth 设置为 2 会导致每行的枚举单独重新开始。 +-- Changing clear_depth=2 results in the enumeration occurring separately for each row anew. SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2); ``` @@ -821,15 +842,16 @@ SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2); [[1, 1, 2, 3], [1, 2, 3, 4]] ``` + ## arrayEnumerateUniq {#arrayEnumerateUniq} -自 v1.1 起提供 +引入于:v1.1 -返回一个与源数组大小相同的数组,其中每个元素表示源数组中对应元素在所有相同值元素中的位置。 +返回一个与源数组大小相同的数组,用于指示每个元素在所有相同值的元素中所处的位置。 -在使用 `ARRAY JOIN` 和对数组元素进行聚合时,此函数非常有用。 +在使用 `ARRAY JOIN` 和对数组元素进行聚合时,此函数很有用。 -该函数可以接受多个大小相同的数组作为参数。在这种情况下,唯一性是基于所有数组中相同位置元素所组成的元组来确定的。 +该函数可以接受多个大小相同的数组作为参数。在这种情况下,会根据所有数组中相同位置元素组成的元组来判断唯一性。 **语法** @@ -840,11 +862,11 @@ arrayEnumerateUniq(arr1[, arr2, ... , arrN]) **参数** * `arr1` — 要处理的第一个数组。[`Array(T)`](/sql-reference/data-types/array) -* `arr2, ...` — 可选。用于确定元组唯一性的、与 `arr1` 具有相同大小的其他数组。[`Array(UInt32)`](/sql-reference/data-types/array) +* `arr2, ...` — 可选。用于确定元组唯一性的、与 `arr1` 长度相同的其他数组。[`Array(UInt32)`](/sql-reference/data-types/array) **返回值** -返回一个数组,其中每个元素表示其在所有具有相同值或元组的元素中的位置。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,其中每个元素表示其在具有相同值或相同元组的元素中的位置。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -868,13 +890,13 @@ SELECT arrayEnumerateUniq([1, 1, 1, 2, 2, 2], [1, 1, 2, 1, 1, 2]); [1,2,1,1,2,1] ``` -**ARRAY JOIN 聚合** +**使用 ARRAY JOIN 聚合** ```sql title=Query --- 每个目标 ID 计算了转化次数(Goals 嵌套数据结构中的每个元素代表一个已达成的目标,我们称之为转化) --- 以及会话数。如果不使用 ARRAY JOIN,会话数将按 sum(Sign) 计算。但在此特定场景下, --- 由于嵌套的 Goals 结构导致行数倍增,为了确保每个会话仅计数一次,我们对 --- arrayEnumerateUniq(Goals.ID) 函数的值应用条件进行过滤。 +-- Each goal ID has a calculation of the number of conversions (each element in the Goals nested data structure is a goal that was reached, which we refer to as a conversion) +-- and the number of sessions. Without ARRAY JOIN, we would have counted the number of sessions as sum(Sign). But in this particular case, +-- the rows were multiplied by the nested Goals structure, so in order to count each session one time after this, we apply a condition to the +-- value of the arrayEnumerateUniq(Goals.ID) function. SELECT Goals.ID AS GoalID, @@ -905,13 +927,14 @@ LIMIT 10 └─────────┴─────────┴────────┘ ``` + ## arrayEnumerateUniqRanked {#arrayEnumerateUniqRanked} -自 v20.1 引入 +版本引入:v20.1 -返回一个与源数组具有相同维度的一维或多维数组, -对每个元素给出其在所有相同值元素中的位置。 -它支持对多维数组进行枚举,并且可以指定在数组中枚举的深度。 +返回一个与源数组维度相同的一维或多维数组, +对于每个元素,指示该元素在所有具有相同值的元素中的位置。 +它允许对多维数组进行枚举,并且可以指定在数组中向内遍历的深度。 **语法** @@ -921,21 +944,21 @@ arrayEnumerateUniqRanked(clear_depth, arr, max_array_depth) **参数** -* `clear_depth` — 在指定层级分别枚举元素。为不大于 `max_arr_depth` 的正整数。[`UInt*`](/sql-reference/data-types/int-uint) +* `clear_depth` — 在指定层级单独枚举元素。为正整数,且小于或等于 `max_arr_depth`。[`UInt*`](/sql-reference/data-types/int-uint) * `arr` — 要枚举的 N 维数组。[`Array(T)`](/sql-reference/data-types/array) -* `max_array_depth` — 最大生效深度。为不大于 `arr` 深度的正整数。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_array_depth` — 最大有效深度。为正整数,且小于或等于 `arr` 的深度。[`UInt*`](/sql-reference/data-types/int-uint) **返回值** -返回一个与 `arr` 具有相同大小的 N 维数组,其中每个元素表示该元素在所有相同值元素中的位置。[`Array(T)`](/sql-reference/data-types/array) +返回一个与 `arr` 大小相同的 N 维数组,其中每个元素给出该元素在所有与其值相同的元素中的位置。[`Array(T)`](/sql-reference/data-types/array) **示例** **示例 1** ```sql title=Query --- 当 clear_depth=1 且 max_array_depth=1 时,arrayEnumerateUniqRanked 的结果 --- 与 arrayEnumerateUniq 对同一数组给出的结果相同。 +-- With clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked +-- is identical to that which arrayEnumerateUniq would give for the same array. SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1); ``` @@ -947,8 +970,8 @@ SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1); **示例 2** ```sql title=Query --- 当 clear_depth=1 且 max_array_depth=1 时,arrayEnumerateUniqRanked 的结果 --- 与 arrayEnumerateUniq 对相同数组给出的结果一致。 +-- with clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked +-- is identical to that which arrayEnumerateUniqwould give for the same array. SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1], [2, 3, 2], [2]] ``` @@ -960,13 +983,14 @@ SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1 **示例 3** ```sql title=Query --- 在此示例中,arrayEnumerateUniqRanked 用于获取一个数组,该数组指示 --- 多维数组中每个元素在具有相同值的元素中的位置。对于传入数组的第一行 [1, 2, 3],对应的 --- 结果是 [1, 1, 1],表示这是首次遇到 1、2 和 3。 --- 对于传入数组的第二行 [2, 2, 1],对应的结果是 [2, 3, 3], --- 表示 2 是第二次和第三次遇到,1 是第二次遇到。 --- 同样,对于传入数组的第三行 [3], --- 对应的结果是 [2],表示 3 是第二次遇到。 +-- In this example, arrayEnumerateUniqRanked is used to obtain an array indicating, +-- for each element of the multidimensional array, what its position is among elements +-- of the same value. For the first row of the passed array, [1, 2, 3], the corresponding +-- result is [1, 1, 1], indicating that this is the first time 1, 2 and 3 are encountered. +-- For the second row of the provided array, [2, 2, 1], the corresponding result is [2, 3, 3], +-- indicating that 2 is encountered for a second and third time, and 1 is encountered +-- for the second time. Likewise, for the third row of the provided array [3] the +-- corresponding result is [2] indicating that 3 is encountered for the second time. SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2); ``` @@ -978,7 +1002,7 @@ SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2); **示例 4** ```sql title=Query --- 将 clear_depth 设置为 2,会使每行的元素被分别枚举。 +-- Changing clear_depth=2, results in elements being enumerated separately for each row. SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2); ``` @@ -986,19 +1010,20 @@ SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2); [[1, 1, 1], [1, 2, 1], [1]] ``` + ## arrayExcept {#arrayExcept} -自 v25.9 版本引入 +引入版本:v25.9 -返回一个数组,其中包含 `source` 中在 `except` 中不存在的元素,并保留其原始顺序。 +返回一个数组,其中包含 `source` 中在 `except` 中不存在的元素,并保留原始顺序。 -该函数对两个数组执行差集运算。对于 `source` 中的每个元素,会检查该元素是否存在于 `except` 中(使用精确比较)。如果不存在,则该元素会被包含在结果中。 +此函数对两个数组执行差集运算。对于 `source` 中的每个元素,它会检查该元素是否存在于 `except` 中(使用精确比较)。如果不存在,则将该元素包含在结果中。 该操作具有以下特性: -1. 保留 `source` 中元素的顺序 -2. 如果 `source` 中的重复元素在 `except` 中不存在,则这些重复元素会被保留 -3. 将 NULL 作为一个独立的值进行处理 +1. 保留来自 `source` 的元素顺序 +2. 如果某个重复元素在 `except` 中不存在,则保留 `source` 中的重复元素 +3. 将 NULL 作为单独的值进行处理 **语法** @@ -1008,16 +1033,16 @@ arrayExcept(source, except) **参数** -* `source` — 包含要过滤元素的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `except` — 包含需要从结果中排除元素的数组。[`Array(T)`](/sql-reference/data-types/array) +* `source` — 源数组,其中包含要筛选的元素。 [`Array(T)`](/sql-reference/data-types/array) +* `except` — 数组,其中包含要从结果中排除的元素。 [`Array(T)`](/sql-reference/data-types/array) **返回值** -返回与输入数组类型相同的数组,包含在 `source` 中但未在 `except` 中找到的元素。[`Array(T)`](/sql-reference/data-types/array) +返回一个与输入数组类型相同的数组,其中包含在 `source` 中但未在 `except` 中出现的元素。 [`Array(T)`](/sql-reference/data-types/array) **示例** -**基本示例** +**基本用法** ```sql title=Query SELECT arrayExcept([1, 2, 3, 2, 4], [3, 5]) @@ -1057,11 +1082,12 @@ SELECT arrayExcept(['apple', 'banana', 'cherry'], ['banana', 'date']) ['apple', 'cherry'] ``` + ## arrayExists {#arrayExists} -自 v1.1 起引入 +引入版本:v1.1 -如果在源数组中至少存在一个元素,使得 `func(x[, y1, y2, ... yN])` 返回 true,则返回 `1`;否则返回 `0`。 +如果源数组中存在至少一个元素,使 `func(x[, y1, y2, ... yN])` 返回 `true`,则返回 `1`;否则返回 `0`。 **语法** @@ -1071,17 +1097,17 @@ arrayExists(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 一个作用于源数组 (`x`) 和条件数组 (`y`) 元素的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 lambda 函数提供附加参数。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -如果 lambda 函数对至少一个元素返回 true,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果 Lambda 函数对至少一个元素的返回值为 true,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayExists(x, y -> x=y, [1, 2, 3], [0, 0, 0]) @@ -1091,11 +1117,12 @@ SELECT arrayExists(x, y -> x=y, [1, 2, 3], [0, 0, 0]) 0 ``` + ## arrayFill {#arrayFill} 引入版本:v20.1 -`arrayFill` 函数会从源数组的第一个元素开始,按顺序处理到最后一个元素,并在每个位置上使用源数组和条件数组中的元素,对一个 lambda 条件进行求值。当在位置 i 上该 lambda 函数的结果为 false 时,函数会将该元素替换为当前数组状态中位置 i-1 的元素。第一个元素始终会被保留,与任何条件无关。 +`arrayFill` 函数按顺序从源数组的第一个元素处理到最后一个元素,在每个位置使用源数组及条件数组中的元素评估一个 Lambda 条件。当在位置 i 上 Lambda 函数的结果为 false 时,函数会将该元素替换为当前数组状态下位置 i-1 的元素。第一个元素始终会被保留,而不受任何条件影响。 **语法** @@ -1105,9 +1132,9 @@ arrayFill(func(x [, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x [, y1, ..., yN])` — 一个 Lambda 函数 `func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])`,作用于源数组 `x` 和条件数组 `y` 的元素。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x [, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数 `func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN])`。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `[, cond1_arr, ... , condN_arr]` — 可选。作为额外参数传递给 Lambda 函数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** @@ -1115,7 +1142,7 @@ arrayFill(func(x [, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **示例** -**单个数组示例** +**单数组示例** ```sql title=Query SELECT arrayFill(x -> not isNull(x), [1, null, 2, null]) AS res @@ -1135,11 +1162,12 @@ SELECT arrayFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, [5, 5, 6, 6] ``` + ## arrayFilter {#arrayFilter} -自 v1.1 引入 +引入于:v1.1 -返回一个数组,其中仅包含源数组中使 lambda 函数返回 true 的元素。 +返回一个仅包含源数组中使 Lambda 函数返回 true 的元素的数组。 **语法** @@ -1149,13 +1177,13 @@ arrayFilter(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])] **参数** -* `func(x[, y1, ..., yN])` — 一个对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。为 Lambda 函数提供额外参数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回源数组的一个子集,类型为 [`Array(T)`](/sql-reference/data-types/array) +返回源数组的一个子集 [`Array(T)`](/sql-reference/data-types/array) **示例** @@ -1184,11 +1212,12 @@ SELECT [2] ``` + ## arrayFirst {#arrayFirst} -自 v1.1 起引入 +引入版本:v1.1 -返回源数组中第一个使 `func(x[, y1, y2, ... yN])` 返回 `true` 的元素,否则返回默认值。 +返回源数组中第一个使 `func(x[, y1, y2, ... yN])` 返回 true 的元素;如果不存在这样的元素,则返回默认值。 **语法** @@ -1198,15 +1227,18 @@ arrayFirst(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 对源数组(`x`)和条件数组(`y`)的元素进行操作的 Lambda 函数。[Lambda 函数](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 可选。作为附加参数传递给 Lambda 函数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。 + +- `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。 +- `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array)。 **返回值** -返回源数组中使 `λ` 结果为 true 的第一个元素,否则返回类型 `T` 的默认值。 +返回源数组中第一个使 `λ` 为 true 的元素,否则返回类型 `T` 的默认值。 **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT arrayFirst(x, y -> x=y, ['a', 'b', 'c'], ['c', 'b', 'a']) @@ -1226,11 +1258,12 @@ SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) 0 UInt8 ``` + ## arrayFirstIndex {#arrayFirstIndex} -自 v1.1 引入 +引入版本:v1.1 -返回源数组中第一个使 `func(x[, y1, y2, ... yN])` 返回 true 的元素的索引;如果不存在,则返回 '0'。 +返回源数组中第一个满足 `func(x[, y1, y2, ... yN])` 返回 true 的元素的索引;否则返回 0。 **语法** @@ -1240,11 +1273,11 @@ arrayFirstIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr] **参数** -* `func(x[, y1, ..., yN])` — 作用于源数组 (`x`) 及条件数组 (`y`) 元素的 lambda 函数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 可选。作为附加参数传递给 lambda 函数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array)。 **返回值** -返回使 `func` 为 true 的源数组第一个元素的索引,否则返回 `0`。[`UInt32`](/sql-reference/data-types/int-uint) +返回使 `func` 为 true 的源数组中第一个元素的索引,否则返回 `0` [`UInt32`](/sql-reference/data-types/int-uint) **示例** @@ -1268,9 +1301,10 @@ SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']) 0 ``` + ## arrayFirstOrNull {#arrayFirstOrNull} -自 v1.1 引入 +引入于:v1.1 返回源数组中第一个使 `func(x[, y1, y2, ... yN])` 返回 true 的元素,否则返回 `NULL`。 @@ -1282,13 +1316,13 @@ arrayFirstOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr **参数** -* `func(x[, y1, ..., yN])` — 一个用于对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。提供给 lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回使 `func` 为 `true` 的源数组中的第一个元素,否则返回 `NULL`。 +返回源数组中第一个使 `func` 返回 true 的元素,否则返回 `NULL`。 **示例** @@ -1312,18 +1346,19 @@ SELECT arrayFirstOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(re NULL Nullable(UInt8) ``` + ## arrayFlatten {#arrayFlatten} -自 v20.1 引入 +引入版本:v20.1 -将嵌套数组转换为扁平数组(一维数组)。 +将嵌套数组转换为一维数组。 -函数: +函数特性: * 适用于任意深度的嵌套数组。 -* 不会改变已经是扁平结构的数组。 +* 不会改变已经是一维结构的数组。 -扁平化后的数组包含所有源数组中的全部元素。 +扁平化后的数组包含所有源数组中的所有元素。 **语法** @@ -1339,11 +1374,11 @@ arrayFlatten(arr) **返回值** -将多维数组扁平化后返回一维数组 [`Array(T)`](/sql-reference/data-types/array) +返回由多维数组扁平化得到的一维数组 [`Array(T)`](/sql-reference/data-types/array) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT arrayFlatten([[[1]], [[2], [3]]]); @@ -1353,11 +1388,12 @@ SELECT arrayFlatten([[[1]], [[2], [3]]]); [1, 2, 3] ``` + ## arrayFold {#arrayFold} -自 v23.10 引入 +引入版本:v23.10 -将一个 lambda 函数应用于一个或多个等长数组,并将结果累积到一个累加器中。 +对一个或多个长度相同的数组应用一个 Lambda 函数,并将结果累积到一个累加器中。 **语法** @@ -1367,9 +1403,9 @@ arrayFold(λ(acc, x1 [, x2, x3, ... xN]), arr1 [, arr2, arr3, ... arrN], acc) **参数** -* `λ(x, x1 [, x2, x3, ... xN])` — 形式为 `λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])` 的 lambda 函数,其中 `F` 是应用于 `acc` 和来自 `x` 的数组值的操作,其结果会再次作为 `acc` 参与后续计算。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `arr1 [, arr2, arr3, ... arrN]` — 要进行运算的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) -* `acc` — 累加器值,其类型与该 Lambda 函数的返回类型相同。 +* `λ(x, x1 [, x2, x3, ... xN])` — 一个 Lambda 函数 `λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])`,其中 `F` 是作用于 `acc` 和来自 `x` 的数组元素的运算,其计算结果会再次作为新的 `acc` 参与后续计算。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `arr1 [, arr2, arr3, ... arrN]` — 待处理的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) +* `acc` — 累加器值,其类型与 Lambda 函数的返回类型相同。 **返回值** @@ -1423,11 +1459,12 @@ SELECT arrayFold( 300 ``` + ## arrayIntersect {#arrayIntersect} -自 v1.1 起引入 +引入版本:v1.1 -接收多个数组,并返回一个数组,其中包含在所有源数组中都出现的元素。结果仅包含唯一值。 +接受多个数组并返回一个数组,其中包含在所有源数组中都出现的元素。结果中只包含唯一值。 **语法** @@ -1441,11 +1478,11 @@ arrayIntersect(arr, arr1, ..., arrN) **返回值** -返回一个数组,包含所有 N 个数组中共有的不重复元素。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,其中包含所有 N 个数组中共同存在的、不重复的元素。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT @@ -1459,9 +1496,10 @@ arrayIntersect([1, 2], [1, 3], [1, 4]) AS non_empty_intersection └────────────────────────┴────────────────────┘ ``` + ## arrayJaccardIndex {#arrayJaccardIndex} -引入于:v23.7 +引入版本:v23.7 返回两个数组的 [Jaccard 指数](https://en.wikipedia.org/wiki/Jaccard_index)。 @@ -1478,11 +1516,11 @@ arrayJaccardIndex(arr_x, arr_y) **返回值** -返回 `arr_x` 和 `arr_y` 的 Jaccard 指数。[`Float64`](/sql-reference/data-types/float) +返回 `arr_x` 和 `arr_y` 的 Jaccard 指数,类型为 [`Float64`](/sql-reference/data-types/float) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayJaccardIndex([1, 2], [2, 3]) AS res @@ -1492,17 +1530,17 @@ SELECT arrayJaccardIndex([1, 2], [2, 3]) AS res 0.3333333333333333 ``` + ## arrayJoin {#arrayJoin} 引入版本:v1.1 -`arrayJoin` 函数接收一行包含数组的记录,并将该数组展开,为数组中的每个元素生成一行。 -这与 ClickHouse 中的常规函数不同,常规函数是在同一行内将输入值映射为输出值, -而聚合函数则对一组行进行“压缩”或“归约”,将其变为单个汇总行 -(或在与 `GROUP BY` 一起使用时变为汇总行中的单个值)。 +`arrayJoin` 函数会展开包含数组的一行数据,为数组中的每个元素生成一行。 +这与 ClickHouse 中在同一行内将输入值映射为输出值的 Regular Functions 不同; +也不同于接收多行并将其“压缩”或“归约”为单个汇总行(如果与 `GROUP BY` 一起使用,则为汇总行中的单个值)的 Aggregate Functions。 -除了应用此函数的列以外,所有列中的值都会被原样复制; -在该列中,这些值会被对应的数组元素所替换。 +除应用此函数的列以外,所有列的值都会被原样复制; +应用此函数的列中的值则会被相应的数组元素替换。 **语法** @@ -1516,7 +1554,7 @@ arrayJoin(arr) **返回值** -返回由 `arr` 展开的行集。 +返回由 `arr` 展开得到的一组行。 **示例** @@ -1537,7 +1575,7 @@ SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src **arrayJoin 会影响查询的所有部分** ```sql title=Query --- arrayJoin 函数会影响查询的所有部分,包括 WHERE 子句。请注意结果为 2,即使子查询仅返回了 1 行。 +-- The arrayJoin function affects all sections of the query, including the WHERE section. Notice the result 2, even though the subquery returned 1 row. SELECT sum(1) AS impressions FROM @@ -1556,7 +1594,7 @@ WHERE arrayJoin(cities) IN ['Istanbul', 'Berlin']; **同时使用多个 arrayJoin 函数** ```sql title=Query -- 查询可以使用多个 arrayJoin 函数。在这种情况下,转换将执行多次,行数会成倍增加。 +- A query can use multiple arrayJoin functions. In this case, the transformation is performed multiple times and the rows are multiplied. SELECT sum(1) AS impressions, @@ -1584,24 +1622,25 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -**优化导致的意外结果** +**优化引发的意外结果** ```sql title=Query --- 对同一表达式使用多个 arrayJoin 可能因优化而无法产生预期结果。 --- 对于这些情况,请考虑通过不影响连接结果的额外操作来修改重复的数组表达式。 -- 例如:arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, [])) +-- Using multiple arrayJoin with the same expression may not produce the expected result due to optimizations. +-- For these cases, consider modifying the repeated array expression with extra operations that do not affect join result. +- e.g. arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, [])) SELECT arrayJoin(dice) as first_throw, - /* arrayJoin(dice) as second_throw */ -- 技术上正确,但会导致结果集为空 - arrayJoin(arrayConcat(dice, [])) as second_throw -- 有意更改表达式以强制重新计算 + /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set + arrayJoin(arrayConcat(dice, [])) as second_throw -- intentionally changed expression to force re-evaluation FROM ( SELECT [1, 2, 3, 4, 5, 6] as dice ); ``` + ```response title=Response -┌─第一次投掷─┬─第二次投掷─┐ +┌─first_throw─┬─second_throw─┐ │ 1 │ 1 │ │ 1 │ 2 │ │ 1 │ 3 │ @@ -1644,8 +1683,8 @@ FROM ( **使用 ARRAY JOIN 语法** ```sql title=Query --- 注意下面 `SELECT` 查询中的 ARRAY JOIN 语法,它提供了更强大的功能。 --- ARRAY JOIN 允许您同时展开具有相同元素数量的多个数组。 +-- Note the ARRAY JOIN syntax in the `SELECT` query below, which provides broader possibilities. +-- ARRAY JOIN allows you to convert multiple arrays with the same number of elements at a time. SELECT sum(1) AS impressions, @@ -1673,10 +1712,10 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -**使用元组** +**Tuple 的使用** ```sql title=Query --- 也可以使用元组(Tuple) +-- You can also use Tuple SELECT sum(1) AS impressions, @@ -1701,11 +1740,12 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` + ## arrayLast {#arrayLast} -自 v1.1 引入 +版本引入于:v1.1 -返回源数组中最后一个使 lambda `func(x [, y1, y2, ... yN])` 返回 true 的元素,否则返回默认值。 +返回源数组中最后一个使 Lambda `func(x [, y1, y2, ... yN])` 返回 true 的元素;如果不存在这样的元素,则返回默认值。 **语法** @@ -1715,15 +1755,15 @@ arrayLast(func(x[, y1, ..., yN]), source[, cond1, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 一个作用于源数组 (`x`) 及条件数组 (`y`) 元素的 Lambda 函数。[Lambda 函数](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1, ... , condN]` — 可选。提供给 Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[Lambda 函数](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array). - `[, cond1, ... , condN]` — 可选。N 个条件数组,为 Lambda 函数提供附加参数。[`Array(T)`](/sql-reference/data-types/array). **返回值** -返回源数组中使 `func` 为 true 的最后一个元素,否则返回类型 `T` 的默认值。 +返回源数组中使 `func` 为真的最后一个元素,否则返回 `T` 的默认值。 **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayLast(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c']) @@ -1733,7 +1773,7 @@ SELECT arrayLast(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c']) c ``` -**未找到匹配项** +**无匹配项** ```sql title=Query SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) @@ -1743,11 +1783,12 @@ SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res) 0 UInt8 ``` + ## arrayLastIndex {#arrayLastIndex} -自 v1.1 引入 +引入版本:v1.1 -返回源数组中最后一个使 `func(x[, y1, y2, ... yN])` 返回 true 的元素的索引,否则返回 0。 +返回源数组中最后一个使 `func(x[, y1, y2, ... yN])` 的结果为 true 的元素的索引,否则返回 '0'。 **语法** @@ -1757,13 +1798,13 @@ arrayLastIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 一个作用于源数组 (`x`) 和条件数组 (`y`) 元素的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,作为传递给 lambda 函数的附加参数。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回使 `func` 返回 true 的源数组中最后一个元素的索引,否则返回 `0` [`UInt32`](/sql-reference/data-types/int-uint) +返回源数组中最后一个使 `func` 为 true 的元素的索引,否则返回 `0`。[`UInt32`](/sql-reference/data-types/int-uint) **示例** @@ -1787,11 +1828,12 @@ SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']); 0 ``` + ## arrayLastOrNull {#arrayLastOrNull} -引入版本:v1.1 +版本引入于:v1.1 -返回源数组中最后一个使得 lambda `func(x [, y1, y2, ... yN])` 返回 true 的元素,如果不存在这样的元素,则返回 `NULL`。 +返回源数组中最后一个使 Lambda `func(x [, y1, y2, ... yN])` 返回 true 的元素,否则返回 `NULL`。 **语法** @@ -1801,17 +1843,15 @@ arrayLastOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr] **参数** -* `func(x [, y1, ..., yN])` — 作用于源数组 (`x`) 和条件数组 (`y`) 元素的 lambda 函数。[Lambda 函数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 -* `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。 -* `[, cond1_arr, ... , condN_arr]` — 可选。提供给 lambda 函数的 N 个条件数组,作为额外参数。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x [, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda)。- `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array)。- `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,作为 Lambda 函数的附加参数。[`Array(T)`](/sql-reference/data-types/array)。 **返回值** -返回源数组中最后一个不满足 `λ` 条件的元素,否则返回 `NULL`。 +返回源数组中最后一个使 `λ` 为假的元素,否则返回 `NULL`。 **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT arrayLastOrNull(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c']) @@ -1831,9 +1871,10 @@ SELECT arrayLastOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res NULL Nullable(UInt8) ``` + ## arrayLevenshteinDistance {#arrayLevenshteinDistance} -自 v25.4 引入 +引入版本:v25.4 计算两个数组之间的 Levenshtein 距离。 @@ -1845,15 +1886,15 @@ arrayLevenshteinDistance(from, to) **参数** -* `from` — 第一个数组。[`Array(T)`](/sql-reference/data-types/array)。- `to` — 第二个数组。[`Array(T)`](/sql-reference/data-types/array)。 +* `from` — 第一个数组。[`Array(T)`](/sql-reference/data-types/array)。 - `to` — 第二个数组。[`Array(T)`](/sql-reference/data-types/array)。 **返回值** -第一个数组与第二个数组之间的 Levenshtein 距离。[`Float64`](/sql-reference/data-types/float) +第一个数组和第二个数组之间的 Levenshtein 距离。[`Float64`](/sql-reference/data-types/float) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayLevenshteinDistance([1, 2, 4], [1, 2, 3]) @@ -1863,12 +1904,13 @@ SELECT arrayLevenshteinDistance([1, 2, 4], [1, 2, 3]) 1 ``` + ## arrayLevenshteinDistanceWeighted {#arrayLevenshteinDistanceWeighted} -自 v25.4 版本引入 +引入版本:v25.4 -计算两个数组的 Levenshtein 距离,并为每个元素使用自定义权重。 -数组的元素数量应与其对应的权重数量一致。 +计算两个数组之间的 Levenshtein 距离,并为每个元素指定自定义权重。 +数组中的元素数量应与对应权重的数量一致。 **语法** @@ -1878,12 +1920,12 @@ arrayLevenshteinDistanceWeighted(from, to, from_weights, to_weights) **参数** -* `from` — 第一个数组。[`Array(T)`](/sql-reference/data-types/array)。 - `to` — 第二个数组。[`Array(T)`](/sql-reference/data-types/array)。 - `from_weights` — 第一个数组中各元素的权重。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) -* `to_weights` — 第二个数组中各元素的权重。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `from` — 第一个数组。[`Array(T)`](/sql-reference/data-types/array). - `to` — 第二个数组。[`Array(T)`](/sql-reference/data-types/array). - `from_weights` — 第一个数组的权重数组。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `to_weights` — 第二个数组的权重数组。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) **返回值** -第一个数组和第二个数组之间的 Levenshtein 距离,并对每个元素应用自定义权重。[`Float64`](/sql-reference/data-types/float) +第一个数组与第二个数组之间的 Levenshtein 距离,对每个元素使用自定义权重。[`Float64`](/sql-reference/data-types/float) **示例** @@ -1897,11 +1939,12 @@ SELECT arrayLevenshteinDistanceWeighted(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 14 ``` + ## arrayMap {#arrayMap} -自 v1.1 引入 +引入版本:v1.1 -通过对原始数组中的每个元素应用 lambda 函数,返回得到的新数组。 +通过对原始数组的每个元素应用 Lambda 函数,返回一个新的数组。 **语法** @@ -1911,12 +1954,12 @@ arrayMap(func, arr) **参数** -* `func` — 一个对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr` — 要处理的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回由 Lambda 函数结果组成的数组。[`Array(T)`](/sql-reference/data-types/array) +返回一个由 Lambda 结果组成的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -1930,7 +1973,7 @@ SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res; [3, 4, 5] ``` -**从不同数组的元素创建元组** +**将不同数组的元素组成元组** ```sql title=Query SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res @@ -1940,13 +1983,14 @@ SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res [(1, 4),(2, 5),(3, 6)] ``` + ## arrayMax {#arrayMax} -自 v21.1 引入 +引入于:v21.1 返回源数组中的最大元素。 -如果指定了 lambda 函数 `func`,则返回该 lambda 函数结果中的最大元素。 +如果指定了 Lambda 函数 `func`,则返回该函数结果中的最大值。 **语法** @@ -1956,9 +2000,9 @@ arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 可选。对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 可选。一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。作为附加参数传递给 Lambda 函数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** @@ -1976,7 +2020,7 @@ SELECT arrayMax([5, 3, 2, 7]); 7 ``` -**与 Lambda 函数配合使用** +**在 Lambda 函数中的用法** ```sql title=Query SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); @@ -1986,13 +2030,14 @@ SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); 12 ``` + ## arrayMin {#arrayMin} -自 v21.1 引入 +引入版本:v21.1 返回源数组中的最小元素。 -如果指定了 lambda 函数 `func`,则返回该 lambda 函数结果中的最小元素。 +如果指定了 Lambda 函数 `func`,则返回其结果中的最小元素。 **语法** @@ -2002,13 +2047,13 @@ arrayMin([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 可选。对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 可选。一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `cond1_arr, ...` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) +* `cond1_arr, ...` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回源数组中的最小元素;如果提供了 Lambda 函数,则返回其结果中的最小元素。 +返回源数组中的最小元素,或者在提供 Lambda 函数时返回其结果中的最小元素。 **示例** @@ -2022,7 +2067,7 @@ SELECT arrayMin([5, 3, 2, 7]); 2 ``` -**与 Lambda 函数配合使用** +**在 Lambda 函数中的用法** ```sql title=Query SELECT arrayMin(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); @@ -2032,9 +2077,10 @@ SELECT arrayMin(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]); 4 ``` + ## arrayNormalizedGini {#arrayNormalizedGini} -引入自:v25.1 +引入于 v25.1 计算归一化 Gini 系数。 @@ -2051,7 +2097,7 @@ arrayNormalizedGini(predicted, label) **返回值** -返回一个元组,包含预测值的 Gini 系数、归一化值的 Gini 系数,以及归一化 Gini 系数(= 前两个 Gini 系数的比值)。[`Tuple(Float64, Float64, Float64)`](/sql-reference/data-types/tuple) +一个元组,包含预测值的 Gini 系数、归一化后值的 Gini 系数,以及归一化 Gini 系数(即前两个 Gini 系数的比值)。[`Tuple(Float64, Float64, Float64)`](/sql-reference/data-types/tuple) **示例** @@ -2065,14 +2111,15 @@ SELECT arrayNormalizedGini([0.9, 0.3, 0.8, 0.7],[6, 1, 0, 2]); (0.18055555555555558, 0.2638888888888889, 0.6842105263157896) ``` + ## arrayPartialReverseSort {#arrayPartialReverseSort} -自 v23.2 版本引入 +引入于:v23.2 -此函数与 `arrayReverseSort` 相同,只是额外接受一个 `limit` 参数,用于进行部分排序。 +此函数与 `arrayReverseSort` 相同,只是多了一个 `limit` 参数,用于进行部分排序。 :::tip -若只需保留排序后的元素,请使用 `arrayResize`。 +如需只保留已排序的元素,请使用 `arrayResize`。 ::: **语法** @@ -2083,15 +2130,15 @@ arrayPartialReverseSort([f,] arr [, arr1, ... ,arrN], limit) **参数** -* `f(arr[, arr1, ... ,arrN])` — 应用于数组 `x` 各元素的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `f(arr[, arr1, ... ,arrN])` — 应用于数组 `arr` 元素的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr` — 要排序的数组。[`Array(T)`](/sql-reference/data-types/array) -* `arr1, ... ,arrN` — 当 `f` 接受多个参数时使用的 N 个额外数组。[`Array(T)`](/sql-reference/data-types/array) -* `limit` — 执行排序的索引上限值。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr1, ... ,arrN` — 当 `f` 接受多个参数时的 N 个附加数组。[`Array(T)`](/sql-reference/data-types/array) +* `limit` — 进行排序时包含在内的最大索引值。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -返回一个与原数组大小相同的数组,其中区间 `[1..limit]` 内的元素按降序排序。 -其余元素(区间 `(limit..N]`)的顺序未指定。 +返回一个与原数组大小相同的数组,其中索引区间 `[1..limit]` 内的元素按降序排列。 +其余索引在 `(limit..N]` 区间内的元素顺序未指定。 **示例** @@ -2125,7 +2172,7 @@ SELECT arrayResize(arrayPartialReverseSort(2, [5, 9, 1, 3]), 2) [9, 5] ``` -**lambda_simple** +**Lambda_simple** ```sql title=Query SELECT arrayPartialReverseSort((x) -> -x, 2, [5, 9, 1, 3]) @@ -2145,17 +2192,18 @@ SELECT arrayPartialReverseSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res [0, 1, 2] ``` + ## arrayPartialShuffle {#arrayPartialShuffle} 引入于:v23.2 -返回一个与原数组长度相同的数组,其中区间 `[1..limit]` 内的元素是从原数组中随机选取的一个子集。剩余的 `(limit..n]` 区间将以未定义的顺序包含不在 `[1..limit]` 区间内的其他元素。 -`limit` 的取值范围为 `[1..n]`。超出该范围的取值等价于执行完整的 `arrayShuffle`: +返回一个与原始数组大小相同的数组,其中区间 `[1..limit]` 内的元素是原始数组的一个随机子集。剩余的 `(limit..n]` 区间将以未定义顺序包含不在 `[1..limit]` 区间中的元素。 +`limit` 的取值范围应为 `[1..n]`。超出该范围的取值等价于执行完整的 `arrayShuffle`: :::note 此函数不会物化常量。 -`limit` 的取值范围应为 `[1..N]`。超出该范围的取值等价于执行完整的 [`arrayShuffle`](#arrayShuffle)。 +`limit` 的值应在 `[1..N]` 范围内。超出该范围的取值等价于执行完整的 [`arrayShuffle`](#arrayShuffle)。 ::: **语法** @@ -2166,13 +2214,13 @@ arrayPartialShuffle(arr [, limit[, seed]]) **参数** -* `arr` — 要进行洗牌的数组。[`Array(T)`](/sql-reference/data-types/array) -* `seed` — 可选。用于随机数生成的种子。如果未提供,则会使用一个随机种子。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `limit` — 可选。用于限制元素交换次数的数值,范围为 `[1..N]`。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — 要打乱顺序的数组。[`Array(T)`](/sql-reference/data-types/array) +* `seed` — 可选。用于生成随机数的种子。如果未提供,则会随机选择一个种子。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `limit` — 可选。元素交换次数的上限,取值范围为 `[1..N]`。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -元素被部分打乱顺序的数组。[`Array(T)`](/sql-reference/data-types/array) +元素顺序被部分打乱的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2216,7 +2264,7 @@ SELECT arrayPartialShuffle([1, 2, 3, 4], 2, 41) [3, 2, 1, 4] ``` -**物化** +**materialize** ```sql title=Query SELECT arrayPartialShuffle(materialize([1, 2, 3, 4]), 2, 42), arrayPartialShuffle([1, 2, 3], 2, 42) FROM numbers(10) @@ -2237,11 +2285,12 @@ SELECT arrayPartialShuffle(materialize([1, 2, 3, 4]), 2, 42), arrayPartialShuffl └──────────────────────────┴──────────────────────────┘ ``` + ## arrayPartialSort {#arrayPartialSort} -引入版本:v23.2 +引入于:v23.2 -此函数与 `arraySort` 相同,但增加了一个 `limit` 参数,用于只对部分元素进行排序。 +此函数与 `arraySort` 相同,但增加了一个 `limit` 参数,用于进行部分排序。 :::tip 若只想保留排序后的元素,请使用 `arrayResize`。 @@ -2255,14 +2304,15 @@ arrayPartialSort([f,] arr [, arr1, ... ,arrN], limit) **参数** -* `f(arr[, arr1, ... ,arrN])` — 应用于数组 `x` 各元素的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `f(arr[, arr1, ... ,arrN])` — 要应用于数组 `x` 元素的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `arr` — 要排序的数组。[`Array(T)`](/sql-reference/data-types/array) -* `arr1, ... ,arrN` — 当 `f` 接受多个参数时使用的 N 个附加数组。[`Array(T)`](/sql-reference/data-types/array) -* `limit` — 进行排序的索引上限值。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr1, ... ,arrN` — 当 `f` 接受多个参数时的 N 个附加数组。[`Array(T)`](/sql-reference/data-types/array) +* `limit` — 执行排序的索引上限值。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -返回一个与原数组大小相同的数组,其中区间 `[1..limit]` 中的元素按升序排序。其余索引在区间 `(limit..N]` 内的元素顺序不保证。 +返回一个与原始数组大小相同的数组,其中区间 `[1..limit]` 内的元素按升序排序。 +其余元素 `(limit..N]` 的顺序不确定。 **示例** @@ -2296,7 +2346,7 @@ SELECT arrayResize(arrayPartialSort(2, [5, 9, 1, 3]), 2) [1, 3] ``` -**lambda_simple** +**Lambda_simple** ```sql title=Query SELECT arrayPartialSort((x) -> -x, 2, [5, 9, 1, 3]) @@ -2306,7 +2356,7 @@ SELECT arrayPartialSort((x) -> -x, 2, [5, 9, 1, 3]) [9, 5, 1, 3] ``` -**lambda_complex** +**Lambda_complex** ```sql title=Query SELECT arrayPartialSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res @@ -2316,9 +2366,10 @@ SELECT arrayPartialSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res [2, 1, 0] ``` + ## arrayPopBack {#arrayPopBack} -自 v1.1 起引入 +引入于: v1.1 从数组中移除最后一个元素。 @@ -2334,7 +2385,7 @@ arrayPopBack(arr) **返回值** -返回一个与 `arr` 相同的数组,但不包含其最后一个元素。[`Array(T)`](/sql-reference/data-types/array) +返回一个与 `arr` 相同但去掉最后一个元素的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2348,11 +2399,12 @@ SELECT arrayPopBack([1, 2, 3]) AS res; [1, 2] ``` + ## arrayPopFront {#arrayPopFront} -自 v1.1 版本引入 +引入版本:v1.1 -从数组中移除第一个元素。 +从数组中删除第一个元素。 **语法** @@ -2362,11 +2414,11 @@ arrayPopFront(arr) **参数** -* `arr` — 要删除第一个元素的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 将从中移除第一个元素的数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个与 `arr` 相同的数组,但不包含其第一个元素。[`Array(T)`](/sql-reference/data-types/array) +返回一个与 `arr` 相同但不包含其第一个元素的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2380,13 +2432,14 @@ SELECT arrayPopFront([1, 2, 3]) AS res; [2, 3] ``` + ## arrayProduct {#arrayProduct} 引入版本:v21.1 返回源数组中各元素的乘积。 -如果指定了 lambda 函数 `func`,则返回该 lambda 函数结果数组中各元素的乘积。 +如果指定了 Lambda 函数 `func`,则返回对元素应用该 Lambda 后结果的乘积。 **语法** @@ -2396,13 +2449,13 @@ arrayProduct([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 可选。对源数组 (`x`) 及条件数组 (`y`) 的元素进行操作的 lambda 函数。[`Lambda 函数`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 可选。一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。传递给 lambda 函数的 N 个条件数组,用作额外参数。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回源数组中各元素的乘积;如果提供了 lambda 函数,则返回其结果各元素的乘积。[`Float64`](/sql-reference/data-types/float) +返回源数组中元素的乘积;如果提供了 Lambda 函数,则返回 Lambda 结果元素的乘积。[`Float64`](/sql-reference/data-types/float) **示例** @@ -2416,7 +2469,7 @@ SELECT arrayProduct([1, 2, 3, 4]); 24 ``` -**与 Lambda 函数配合使用** +**在 Lambda 函数中的用法** ```sql title=Query SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res; @@ -2426,11 +2479,12 @@ SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res; 16 ``` + ## arrayPushBack {#arrayPushBack} 引入版本:v1.1 -在数组末尾追加一个元素。 +在数组末尾添加一个元素。 **语法** @@ -2440,22 +2494,22 @@ arrayPushBack(arr, x) **参数** -* `arr` — 要在其末尾添加值 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 要在末尾添加值 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array) * `x` — * 要添加到数组末尾的单个值。[`Array(T)`](/sql-reference/data-types/array)。 :::note -* 只能向数值数组中添加数值,且只能向字符串数组中添加字符串。 -* 在添加数值时,ClickHouse 会根据数组的数据类型自动设置 `x` 的类型。 -* 可以为 `NULL`。函数会向数组中添加一个 `NULL` 元素,并将数组元素的类型转换为 `Nullable`。 +* 数值数组中只能添加数值,字符串数组中只能添加字符串。 +* 在添加数值时,ClickHouse 会自动将 `x` 的类型统一为该数组的数据类型。 +* 可以是 `NULL`。该函数会向数组添加一个 `NULL` 元素,并将数组元素的类型转换为 `Nullable`。 -有关 ClickHouse 中数据类型的更多信息,请参阅 [数据类型](/sql-reference/data-types)。 +有关 ClickHouse 中数据类型的更多信息,请参阅[数据类型](/sql-reference/data-types)。 ::: **返回值** -返回一个与 `arr` 相同的数组,但在数组末尾追加了一个值 `x` [`Array(T)`](/sql-reference/data-types/array) +返回一个与 `arr` 相同、但在数组末尾额外包含值 `x` 的数组 [`Array(T)`](/sql-reference/data-types/array)。 **示例** @@ -2469,9 +2523,10 @@ SELECT arrayPushBack(['a'], 'b') AS res; ['a','b'] ``` + ## arrayPushFront {#arrayPushFront} -自 v1.1 引入 +引入版本:v1.1 在数组开头添加一个元素。 @@ -2483,21 +2538,21 @@ arrayPushFront(arr, x) **参数** -* `arr` — 要在其末尾添加值 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array)。 +* `arr` — 要在其开头添加值 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array)。 * `x` — 要添加到数组开头的单个值。[`Array(T)`](/sql-reference/data-types/array)。 :::note -* 只能向数值数组中添加数值,且只能向字符串数组中添加字符串。 -* 添加数值时,ClickHouse 会自动将 `x` 的类型设置为该数组的数据类型。 -* 可以为 `NULL`。该函数会向数组添加一个 `NULL` 元素,并将数组元素类型转换为 `Nullable`。 +* 数值数组只能添加数值,字符串数组只能添加字符串。 +* 在添加数值时,ClickHouse 会根据数组的数据类型自动设置 `x` 的类型。 +* 可以为 `NULL`。该函数会向数组中添加一个 `NULL` 元素,数组元素的类型会被转换为 `Nullable`。 -有关 ClickHouse 中数据类型的更多信息,参见[数据类型](/sql-reference/data-types)。 +有关 ClickHouse 中数据类型的更多信息,请参阅 [Data types](/sql-reference/data-types)。 ::: **返回值** -返回一个与 `arr` 相同的数组,但在数组开头额外多了一个值 `x`。[`Array(T)`](/sql-reference/data-types/array) +返回一个与 `arr` 相同,但在数组开头额外包含值 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2511,16 +2566,17 @@ SELECT arrayPushFront(['b'], 'a') AS res; ['a','b'] ``` + ## arrayROCAUC {#arrayROCAUC} 引入版本:v20.4 -计算接收者操作特征(ROC)曲线下面积。 -ROC 曲线是通过在所有阈值下,以真正例率(TPR)为纵轴、假正例率(FPR)为横轴绘制得到的。 -结果数值范围为 0 到 1,数值越高表示模型性能越好。 +计算接收者操作特征(ROC)曲线下的面积。 +ROC 曲线是通过在所有阈值上,将真正率(TPR)绘制在 y 轴、将假正率(FPR)绘制在 x 轴而得到的。 +结果值范围为 0 到 1,值越大表示模型性能越好。 ROC AUC(也常被简称为 AUC)是机器学习中的一个概念。 -更多详情请参阅[此处](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[此处](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)以及[此处](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve)。 +更多详细信息,请参见[这里](https://developers.google.com/machine-learning/glossary#pr-auc-area-under-the-pr-curve)、[这里](https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc#expandable-1)以及[这里](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve)。 **语法** @@ -2528,36 +2584,36 @@ ROC AUC(也常被简称为 AUC)是机器学习中的一个概念。 arrayROCAUC(scores, labels[, scale[, partial_offsets]]) ``` -**别名**: `arrayAUC` +**别名**:`arrayAUC` **参数** -* `scores` — 预测模型给出的得分。[`Array((U)Int*)`](/sql-reference/data-types/array) 或 [`Array(Float*)`](/sql-reference/data-types/array) +* `scores` — 预测模型输出的分数。[`Array((U)Int*)`](/sql-reference/data-types/array) 或 [`Array(Float*)`](/sql-reference/data-types/array) * `labels` — 样本的标签,通常正样本为 1,负样本为 0。[`Array((U)Int*)`](/sql-reference/data-types/array) 或 [`Enum`](/sql-reference/data-types/enum) -* `scale` — 可选。决定是否返回归一化后的面积。如果为 false,则返回 TP(真阳性)- FP(假阳性)曲线下的面积。默认值:true。[`Bool`](/sql-reference/data-types/boolean) +* `scale` — 可选。决定是否返回归一化面积。若为 false,则返回 TP(真正例)x FP(假正例)曲线下的面积。默认值:true。[`Bool`](/sql-reference/data-types/boolean) * `partial_offsets` — -* 一个由四个非负整数组成的数组,用于计算 ROC 曲线下的局部面积(等价于 ROC 空间中的一条垂直带),而不是整个 AUC。此选项对 ROC AUC 的分布式计算非常有用。该数组必须包含以下元素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`, `total_negatives`]。非负 [整数](../data-types/int-uint.md) 的 [Array](/sql-reference/data-types/array)。可选。 - * `higher_partitions_tp`: 高得分分区中正标签的数量。 - * `higher_partitions_fp`: 高得分分区中负标签的数量。 - * `total_positives`: 整个数据集中正样本的总数。 - * `total_negatives`: 整个数据集中负样本的总数。 +* 四个非负整数构成的数组,用于计算 ROC 曲线下的局部面积(等价于 ROC 空间中的一条垂直带状区域),而不是整个 AUC。此选项适用于 ROC AUC 的分布式计算。数组必须包含以下元素 [`higher_partitions_tp`, `higher_partitions_fp`, `total_positives`, `total_negatives`]。[Array](/sql-reference/data-types/array),元素为非负 [Integers](../data-types/int-uint.md)。可选。 + * `higher_partitions_tp`:高分分区中的正标签数量。 + * `higher_partitions_fp`:高分分区中的负标签数量。 + * `total_positives`:整个数据集中正样本的总数。 + * `total_negatives`:整个数据集中负样本的总数。 :::note -当使用 `arr_partial_offsets` 时,`arr_scores` 和 `arr_labels` 应仅为整个数据集的一个分区,且包含某一得分区间内的数据。 -数据集应被划分为连续的分区,每个分区包含得分落在特定范围内的数据子集。 +当使用 `arr_partial_offsets` 时,`arr_scores` 和 `arr_labels` 应仅对应整个数据集中的一个分区,并且该分区只包含某一分数区间内的样本。 +数据集应被划分为连续的分区,每个分区包含其分数落在特定范围内的数据子集。 例如: -* 一个分区可以包含区间 [0, 0.5) 内的所有得分。 -* 另一个分区可以包含区间 [0.5, 1.0] 内的得分。 +* 一个分区可以包含所有位于区间 [0, 0.5) 内的分数。 +* 另一个分区可以包含所有位于区间 [0.5, 1.0] 内的分数。 ::: **返回值** -返回 ROC(受试者工作特征)曲线下的面积。[`Float64`](/sql-reference/data-types/float) +返回受试者工作特征(ROC)曲线下的面积。[`Float64`](/sql-reference/data-types/float) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayROCAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); @@ -2567,11 +2623,12 @@ SELECT arrayROCAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]); 0.75 ``` + ## arrayRandomSample {#arrayRandomSample} -自 v23.10 版本引入 +引入版本:v23.10 -返回由输入数组中 `samples` 个随机元素组成的子集。如果 `samples` 大于输入数组的大小,则样本大小会被限制为数组大小,即会返回数组中的所有元素,但不保证其顺序。该函数既可以处理一维数组,也可以处理嵌套数组。 +返回一个由输入数组中 `samples` 个随机元素组成的子集。如果 `samples` 超过输入数组的大小,则样本数量会被限制为数组的大小,即会返回数组中的所有元素,但不保证其顺序。该函数既可以处理一维数组,也可以处理嵌套数组。 **语法** @@ -2581,8 +2638,8 @@ arrayRandomSample(arr, samples) **参数** -* `arr` — 要从中抽取元素的输入数组或多维数组。[`Array(T)`](/sql-reference/data-types/array) -* `samples` — 随机样本中包含的元素数量(样本大小)。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — 要从中随机抽样的输入数组或多维数组。[`Array(T)`](/sql-reference/data-types/array) +* `samples` — 随机样本中要包含的元素数量。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** @@ -2610,13 +2667,14 @@ SELECT arrayRandomSample([[1, 2], [3, 4], [5, 6]], 2) as res; [[3,4],[5,6]] ``` + ## arrayReduce {#arrayReduce} -自 v1.1 引入 +引入版本:v1.1 -对数组元素执行聚合函数计算,并返回结果。 -聚合函数的名称以单引号括起来的字符串形式传入,例如 `'max'`、`'sum'`。 -使用参数化聚合函数时,在函数名后通过括号指定参数,例如 `'uniqUpTo(6)'`。 +对数组元素应用聚合函数并返回聚合结果。 +聚合函数的名称以单引号内的字符串形式传入,例如 `'max'`、`'sum'`。 +当使用参数化聚合函数时,在函数名后通过括号传递参数,例如 `'uniqUpTo(6)'`。 **语法** @@ -2626,16 +2684,16 @@ arrayReduce(agg_f, arr1 [, arr2, ... , arrN)]) **参数** -* `agg_f` — 聚合函数的名称,必须为常量。[`String`](/sql-reference/data-types/string) -* `arr1 [, arr2, ... , arrN)]` — 与 `agg_f` 的参数相对应的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) +* `agg_f` — 聚合函数的名称,必须是常量。[`String`](/sql-reference/data-types/string) +* `arr1 [, arr2, ... , arrN)]` — 与 `agg_f` 的参数对应的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回聚合函数的结果。 +返回聚合函数的计算结果。 **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayReduce('max', [1, 2, 3]); @@ -2647,10 +2705,10 @@ SELECT arrayReduce('max', [1, 2, 3]); └───────────────────────────────┘ ``` -**使用多参数聚合函数的示例** +**同时使用多个参数的聚合函数示例** ```sql title=Query ---如果聚合函数接受多个参数,则必须将该函数应用于大小相同的多个数组。 +--If an aggregate function takes multiple arguments, then this function must be applied to multiple arrays of the same size. SELECT arrayReduce('maxIf', [3, 5], [1, 0]); ``` @@ -2673,12 +2731,13 @@ SELECT arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); └─────────────────────────────────────────────────────────────┘ ``` + ## arrayReduceInRanges {#arrayReduceInRanges} -自 v20.4 引入 +引入于:v20.4 -对给定区间内的数组元素应用聚合函数,并返回一个数组,其中包含每个区间对应的结果。 -该函数返回的结果与对每个区间分别调用多次 `arrayReduce(agg_func, arraySlice(arr1, index, length), ...)` 所得到的结果相同。 +对给定范围内的数组元素应用聚合函数,并返回一个数组,每个元素为对应范围的结果。 +该函数的结果等价于多次调用 `arrayReduce(agg_func, arraySlice(arr1, index, length), ...)`。 **语法** @@ -2689,12 +2748,12 @@ arrayReduceInRanges(agg_f, ranges, arr1 [, arr2, ... ,arrN)]) **参数** * `agg_f` — 要使用的聚合函数名称。[`String`](/sql-reference/data-types/string) -* `ranges` — 要执行聚合的范围。为一个由元组 `(i, r)` 组成的数组,其中 `i` 为开始聚合的索引,`r` 为要聚合的范围。[`Array(T)`](/sql-reference/data-types/array) 或 [`Tuple(T)`](/sql-reference/data-types/tuple) +* `ranges` — 要执行聚合的范围。由元组 `(i, r)` 组成的数组,每个元组包含起始索引 `i` 以及执行聚合的范围 `r`。[`Array(T)`](/sql-reference/data-types/array) 或 [`Tuple(T)`](/sql-reference/data-types/tuple) * `arr1 [, arr2, ... ,arrN)]` — 作为聚合函数参数的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个数组,其中包含在指定范围内执行聚合函数所得的结果。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,包含聚合函数在指定范围上的结果。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2714,12 +2773,13 @@ SELECT arrayReduceInRanges( └─────────────────────────────┘ ``` + ## arrayRemove {#arrayRemove} -自 v25.11 引入 +引入于 v25.11 -从数组中删除所有与给定值相等的元素。 -NULL 也被视为相等。 +从数组中移除所有等于给定值的元素。 +将 NULL 视为相同。 **语法** @@ -2727,7 +2787,7 @@ NULL 也被视为相等。 arrayRemove(arr, elem) ``` -**别名**: `array_remove` +**别名**:`array_remove` **参数** @@ -2735,7 +2795,7 @@ arrayRemove(arr, elem) **返回值** -返回源数组 [`Array(T)`](/sql-reference/data-types/array) 的子集 +返回源数组的一个子集,类型为 [`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2759,11 +2819,12 @@ SELECT arrayRemove(['a', NULL, 'b', NULL], NULL) ['a', 'b'] ``` + ## arrayResize {#arrayResize} -在 v1.1 中引入 +首次引入于:v1.1 -修改数组长度。 +修改数组的长度。 **语法** @@ -2775,9 +2836,9 @@ arrayResize(arr, size[, extender]) * `arr` — 要调整大小的数组。[`Array(T)`](/sql-reference/data-types/array) * `size` — - 数组的新长度。 - 如果 `size` 小于数组的原始长度,则从右侧截断数组。 - 如果 `size` 大于数组的原始长度,则从右侧使用 `extender` 值或数组元素数据类型的默认值进行扩展。 + * 数组的新长度。 + 如果 `size` 小于数组的原始长度,则从右侧截断数组。 + 如果 `size` 大于数组的初始长度,则从右侧使用 `extender` 的值或数组元素数据类型的默认值进行扩展。 * `extender` — 用于扩展数组的值。可以为 `NULL`。 **返回值** @@ -2806,14 +2867,15 @@ SELECT arrayResize([1], 3, NULL); [1,NULL,NULL] ``` + ## arrayReverse {#arrayReverse} -自 v1.1 引入 +引入版本:v1.1 -将给定数组中的元素顺序反转。 +反转给定数组中元素的顺序。 :::note -函数 `reverse(arr)` 具有相同的功能,但除了数组之外,还适用于其他数据类型。 +函数 `reverse(arr)` 提供相同的功能,但除了 Arrays 之外,还适用于其他数据类型。 ::: **语法** @@ -2824,11 +2886,11 @@ arrayReverse(arr) **参数** -* `arr` — 要反转顺序的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 要反转的数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个与原数组大小相同的数组,其中元素顺序被反转。[`Array(T)`](/sql-reference/data-types/array) +返回一个与原数组大小相同的数组,其中的元素按相反顺序排列。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -2842,11 +2904,12 @@ SELECT arrayReverse([1, 2, 3]) [3,2,1] ``` + ## arrayReverseFill {#arrayReverseFill} -引入版本:v20.1 +引入于:v20.1 -`arrayReverseFill` 函数从源数组的最后一个元素开始依次处理到第一个元素,在每个位置上使用源数组和条件数组中的元素来对一个 lambda 表达式进行求值。当该条件在位置 i 上的结果为 false 时,函数会将该元素替换为当前数组状态下位置 i+1 的元素。无论条件如何,最后一个元素始终会被保留。 +`arrayReverseFill` FUNCTION 从源数组的最后一个元素到第一个元素依次处理,在每个位置基于源数组及条件数组中的元素计算一个 Lambda 条件。当在位置 i 上该条件的计算结果为 false 时,该 FUNCTION 会将该元素替换为当前数组状态中位置 i+1 的元素。无论条件为何,最后一个元素始终会被保留。 **语法** @@ -2856,17 +2919,17 @@ arrayReverseFill(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr **参数** -* `func(x[, y1, ..., yN])` — 一个对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)和条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, cond1_arr, ... , condN_arr]` — 可选。提供给 lambda 函数作为额外参数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个数组,其中源数组的元素被 lambda 函数的结果替换。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,其中源数组的元素被 Lambda 函数的结果所替换。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用单个数组的示例** +**单个数组示例** ```sql title=Query SELECT arrayReverseFill(x -> not isNull(x), [1, null, 2, null]) AS res @@ -2876,7 +2939,7 @@ SELECT arrayReverseFill(x -> not isNull(x), [1, null, 2, null]) AS res [1, 2, 2, NULL] ``` -**两个数组示例** +**包含两个数组的示例** ```sql title=Query SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res; @@ -2886,15 +2949,16 @@ SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [5, 6, 6, 2] ``` + ## arrayReverseSort {#arrayReverseSort} 引入版本:v1.1 -按降序对数组元素进行排序。 -如果指定了函数 `f`,则会根据该函数应用于数组元素的结果对输入数组进行排序,然后再将排序后的数组反转。 -如果 `f` 接受多个参数,则会向 `arrayReverseSort` 函数传入多个数组,这些数组将分别对应 `func` 的各个参数。 +对数组元素按降序排序。 +如果指定了函数 `f`,则会根据将该函数应用于数组元素得到的结果对给定数组进行排序,然后再将排序后的数组反转。 +如果 `f` 接受多个参数,则会将多个数组传递给 `arrayReverseSort` 函数,这些数组分别对应于 `func` 的各个参数。 -如果待排序的数组包含 `-Inf`、`NULL`、`NaN` 或 `Inf`,它们将按以下顺序排序: +如果待排序数组包含 `-Inf`、`NULL`、`NaN` 或 `Inf`,它们将按以下顺序排序: 1. `-Inf` 2. `Inf` @@ -2911,13 +2975,11 @@ arrayReverseSort([f,] arr [, arr1, ... ,arrN) **参数** -* `f(y1[, y2 ... yN])` — 要应用于数组 `x` 元素的 lambda 函数。 -* `arr` — 要排序的数组。[`Array(T)`](/sql-reference/data-types/array) -* `arr1, ..., yN` — 可选。当 `f` 接受多个参数时传入的 N 个附加数组。 +* `f(y1[, y2 ... yN])` — 要应用于数组 `x` 元素的 Lambda 函数。- `arr` — 要排序的数组。[`Array(T)`](/sql-reference/data-types/array) - `arr1, ..., yN` — 可选。当 `f` 接受多个参数时使用的额外 N 个数组。 **返回值** -如果未提供 lambda 函数,则返回按降序排序的数组 `x`;否则,先根据所提供的 lambda 函数的逻辑进行排序,然后将结果反转后的数组。[`Array(T)`](/sql-reference/data-types/array)。 +如果未提供 Lambda 函数,则返回按降序排序的数组 `x`;否则,返回根据所提供 Lambda 函数逻辑排序后再反转的数组。[`Array(T)`](/sql-reference/data-types/array)。 **示例** @@ -2941,11 +3003,12 @@ SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res; [4,3,5] ``` + ## arrayReverseSplit {#arrayReverseSplit} 引入版本:v20.1 -将源数组拆分为多个数组。当 `func(x[, y1, ..., yN])` 返回非零值时,数组会在该元素的右侧进行拆分。数组不会在最后一个元素之后被拆分。 +将源数组拆分为多个子数组。当 `func(x[, y1, ..., yN])` 的返回值非零时,数组会在该元素右侧被拆分。数组不会在最后一个元素之后被拆分。 **语法** @@ -2955,9 +3018,9 @@ arrayReverseSplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_ar **参数** -* `func(x[, y1, ..., yN])` — 对源数组 (`x`) 和条件数组 (`y`) 的元素进行操作的 lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) -* `[, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) +* `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** @@ -2975,11 +3038,12 @@ SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res [[1], [2, 3, 4], [5]] ``` + ## arrayRotateLeft {#arrayRotateLeft} -引入版本:v23.8 +首次引入于:v23.8 -将数组按指定的元素个数向左旋转。`n` 为负值时,等价于按其绝对值向右旋转。 +将数组向左旋转指定数量的元素。`n` 为负值时,等价于按其绝对值向右旋转。 **语法** @@ -2989,11 +3053,11 @@ arrayRotateLeft(arr, n) **参数** -* `arr` — 要进行元素旋转的数组。[`Array(T)`](/sql-reference/data-types/array)。- `n` — 要旋转的元素个数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。 +* `arr` — 要进行元素旋转的数组。[`Array(T)`](/sql-reference/data-types/array)。 - `n` — 要旋转的元素个数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。 **返回值** -向左旋转指定数量元素后得到的数组 [`Array(T)`](/sql-reference/data-types/array)。 +按指定元素个数向左旋转后的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3017,11 +3081,12 @@ SELECT arrayRotateLeft([1,2,3,4,5,6], -2) as res; [5,6,1,2,3,4] ``` + ## arrayRotateRight {#arrayRotateRight} -引入于:v23.8 +引入版本:v23.8 -将数组向右旋转指定数量的元素。`n` 的负值被视为按其绝对值个元素向左旋转。 +按指定的元素个数将数组向右旋转。`n` 为负值时,等价于将数组向左旋转其绝对值对应的元素个数。 **语法** @@ -3031,11 +3096,11 @@ arrayRotateRight(arr, n) **参数** -* `arr` — 要进行元素旋转的数组。[`Array(T)`](/sql-reference/data-types/array)。 - `n` — 需要旋转的元素个数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。 +* `arr` — 要进行元素旋转的数组。[`Array(T)`](/sql-reference/data-types/array)。 - `n` — 要旋转的元素个数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。 **返回值** -向右旋转指定数量元素后的数组 [`Array(T)`](/sql-reference/data-types/array) +按指定元素个数向右旋转后的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3059,13 +3124,14 @@ SELECT arrayRotateRight([1,2,3,4,5,6], -2) as res; [3,4,5,6,1,2] ``` + ## arrayShiftLeft {#arrayShiftLeft} -自 v23.8 起引入 +引入于 v23.8 -将数组左移指定数量的元素。 -新填充的元素使用提供的参数或数组元素类型的默认值。 -如果该数量为负数,则将数组右移。 +按指定的元素数量将数组向左移动。 +新元素使用提供的参数或数组元素类型的默认值进行填充。 +如果指定的元素数量为负数,则将数组向右移动。 **语法** @@ -3075,17 +3141,15 @@ arrayShiftLeft(arr, n[, default]) **参数** -* `arr` — 要进行元素移位的数组。[`Array(T)`](/sql-reference/data-types/array) -* `n` — 要移位的元素数量。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) -* `default` — 可选。新元素的默认值。 +* `arr` — 要进行元素移位的数组。[`Array(T)`](/sql-reference/data-types/array)。- `n` — 要移位的元素数量。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint)。- `default` — 可选。新元素的默认值。 **返回值** -一个向左移位指定数量元素的数组 [`Array(T)`](/sql-reference/data-types/array) +一个向左移位指定数量元素的数组 [`Array(T)`](/sql-reference/data-types/array)。 **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayShiftLeft([1,2,3,4,5,6], 2) as res; @@ -3115,13 +3179,14 @@ SELECT arrayShiftLeft([1,2,3,4,5,6], 2, 42) as res; [3,4,5,6,42,42] ``` + ## arrayShiftRight {#arrayShiftRight} -引入自:v23.8 +引入于:v23.8 -将数组向右移位指定数量的元素。 -新元素使用提供的参数或数组元素类型的默认值进行填充。 -如果元素数量为负值,数组将向左移位。 +按指定的元素个数将数组向右移动。 +新填充的位置使用提供的参数,或数组元素类型的默认值。 +如果指定的元素个数为负,则将数组向左移动。 **语法** @@ -3131,17 +3196,17 @@ arrayShiftRight(arr, n[, default]) **参数** -* `arr` — 要进行元素移位的数组。[`Array(T)`](/sql-reference/data-types/array) -* `n` — 向右移位的元素个数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) +* `arr` — 要右移元素的数组。[`Array(T)`](/sql-reference/data-types/array) +* `n` — 向右移动的元素个数。[`(U)Int8/16/32/64`](/sql-reference/data-types/int-uint) * `default` — 可选。新元素的默认值。 **返回值** -一个按指定元素个数向右移位后的数组 [`Array(T)`](/sql-reference/data-types/array) +向右移动指定元素个数后的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2) as res; @@ -3171,11 +3236,12 @@ SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2, 42) as res; [42, 42, 1, 2, 3, 4] ``` + ## arrayShingles {#arrayShingles} 引入版本:v24.1 -生成一个由 shingle 组成的数组(类似于字符串的 n-grams),即从输入数组中按指定长度提取的连续子数组。 +生成一个由 shingle 子数组组成的数组(类似于字符串的 n-gram),即从输入数组中按指定长度提取的连续子数组。 **语法** @@ -3185,12 +3251,12 @@ arrayShingles(arr, l) **参数** -* `arr` — 要从中生成 shingle 数组的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 用于生成 shingle 数组的数组。[`Array(T)`](/sql-reference/data-types/array) * `l` — 每个 shingle 的长度。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -生成的 shingle 数组。[`Array(T)`](/sql-reference/data-types/array) +生成的 shingle 数组 [`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3204,12 +3270,13 @@ SELECT arrayShingles([1, 2, 3, 4], 3) as res; [[1, 2, 3], [2, 3, 4]] ``` + ## arrayShuffle {#arrayShuffle} -自 v23.2 起引入 +版本引入:v23.2 -返回一个与原数组大小相同的数组,其元素顺序被打乱。 -元素会以一种方式重新排列,使得这些元素的每一种可能排列出现的概率都相同。 +返回一个与原数组大小相同的数组,其中包含按随机顺序排列的元素。 +元素会以这样一种方式重新排序:这些元素的每一种可能排列出现的概率都相同。 :::note 此函数不会将常量物化。 @@ -3223,16 +3290,16 @@ arrayShuffle(arr [, seed]) **参数** -* `arr` — 要打乱的数组。[`Array(T)`](/sql-reference/data-types/array) -* `seed (optional)` — 可选。用于随机数生成的种子。如果未指定,则会使用随机种子。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — 要打乱顺序的数组。[`Array(T)`](/sql-reference/data-types/array) +* `seed (optional)` — 可选。用于随机数生成的种子。如果未提供,则使用随机生成的种子。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -元素顺序被打乱的数组 [`Array(T)`](/sql-reference/data-types/array) +元素顺序已打乱的数组 [`Array(T)`](/sql-reference/data-types/array) **示例** -**未指定 seed 的示例(结果不稳定)** +**不带种子的示例(结果不稳定)** ```sql title=Query SELECT arrayShuffle([1, 2, 3, 4]); @@ -3242,7 +3309,7 @@ SELECT arrayShuffle([1, 2, 3, 4]); [1,4,2,3] ``` -**未使用种子的示例(稳定结果)** +**无种子示例(结果稳定)** ```sql title=Query SELECT arrayShuffle([1, 2, 3, 4], 41); @@ -3252,9 +3319,10 @@ SELECT arrayShuffle([1, 2, 3, 4], 41); [3,2,1,4] ``` + ## arraySimilarity {#arraySimilarity} -引入版本:v25.4 +引入于:v25.4 基于加权 Levenshtein 距离计算两个数组的相似度,取值范围为 `0` 到 `1`。 @@ -3268,12 +3336,12 @@ arraySimilarity(from, to, from_weights, to_weights) * `from` — 第一个数组 [`Array(T)`](/sql-reference/data-types/array) * `to` — 第二个数组 [`Array(T)`](/sql-reference/data-types/array) -* `from_weights` — 第一个数组的权重 [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) -* `to_weights` — 第二个数组的权重 [`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `from_weights` — 第一个数组的权重。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) +* `to_weights` — 第二个数组的权重。[`Array((U)Int*|Float*)`](/sql-reference/data-types/array) **返回值** -返回两个数组之间的相似度(基于加权 Levenshtein 距离),取值范围为 `0` 到 `1`,类型为 [`Float64`](/sql-reference/data-types/float) +返回基于加权 Levenshtein 距离的两个数组之间的相似度,取值范围为 `0` 到 `1`。[`Float64`](/sql-reference/data-types/float) **示例** @@ -3287,11 +3355,12 @@ SELECT arraySimilarity(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 2, 3], [3.0, 4, 5 0.2222222222222222 ``` + ## arraySlice {#arraySlice} -自 v1.1 起引入 +引入版本:v1.1 -返回数组的一个切片,其中包含 `NULL` 元素。 +返回数组的一个切片,包含其中的 `NULL` 元素。 **语法** @@ -3301,13 +3370,13 @@ arraySlice(arr, offset [, length]) **参数** -* `arr` — 要进行切片的数组。[`Array(T)`](/sql-reference/data-types/array) -* `offset` — 从数组边界起算的偏移量。正值表示从左侧开始的偏移,负值表示从右侧开始的偏移。数组元素的编号从 `1` 开始。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `length` — 所需切片的长度。如果指定为负值,函数返回切片 `[offset, array_length - length]`。如果省略该值,函数返回切片 `[offset, 数组末尾]`。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `arr` — 要切片的数组。[`Array(T)`](/sql-reference/data-types/array) +* `offset` — 相对于数组边界的偏移量。正值表示从左侧偏移,负值表示从右侧偏移。数组元素的编号从 `1` 开始。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `length` — 所需切片的长度。如果指定负值,函数返回切片 `[offset, array_length - length]`。如果省略该值,函数返回切片 `[offset, the_end_of_array]`。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -返回从指定 `offset` 开始、长度为 `length` 的数组切片 [`Array(T)`](/sql-reference/data-types/array) +从指定的 `offset` 开始,返回包含 `length` 个元素的数组切片。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3321,15 +3390,16 @@ SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res; [2, NULL, 4] ``` + ## arraySort {#arraySort} 引入于:v1.1 -对给定数组的元素按升序排序。 -如果指定了 lambda 函数 `f`,则排序顺序由对数组中每个元素应用该 lambda 后得到的结果决定。 -如果该 lambda 接受多个参数,则会向 `arraySort` 函数传入多个数组,这些数组将与 `f` 的各个参数一一对应。 +对给定数组中的元素进行升序排序。 +如果指定了 Lambda 函数 `f`,则排序顺序由将该 Lambda 应用于数组中每个元素所得到的结果决定。 +如果该 Lambda 接受多个参数,则会向 `arraySort` FUNCTION 传递多个数组,这些数组将对应于 `f` 的各个参数。 -如果要排序的数组包含 `-Inf`、`NULL`、`NaN` 或 `Inf`,它们将按照以下顺序排列: +如果待排序的数组包含 `-Inf`、`NULL`、`NaN` 或 `Inf`,它们将按如下顺序排序: 1. `-Inf` 2. `Inf` @@ -3346,11 +3416,11 @@ arraySort([f,] arr [, arr1, ... ,arrN]) **参数** -* `f(y1[, y2 ... yN])` — 应用于数组 `x` 元素的 lambda 函数。- `arr` — 要排序的数组。[`Array(T)`](/sql-reference/data-types/array) - `arr1, ..., yN` — 可选。当 `f` 接受多个参数时使用的 N 个附加数组。 +* `f(y1[, y2 ... yN])` — 应用于数组 `x` 元素的 Lambda 函数。- `arr` — 要排序的数组。[`Array(T)`](/sql-reference/data-types/array) - `arr1, ..., yN` — 可选。当 `f` 接受多个参数时,提供的 N 个附加数组。 **返回值** -如果未提供 lambda 函数,则返回按升序排序的数组 `arr`,否则返回根据所提供 lambda 函数逻辑排序的数组。[`Array(T)`](/sql-reference/data-types/array)。 +如果未提供 Lambda 函数,则返回按升序排序的数组 `arr`;否则,返回根据所提供 Lambda 函数逻辑排序后的数组。[`Array(T)`](/sql-reference/data-types/array)。 **示例** @@ -3384,11 +3454,12 @@ SELECT arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]); [-inf,-4,1,2,3,inf,nan,nan,NULL,NULL] ``` + ## arraySplit {#arraySplit} -引入版本:v20.1 +引入于:v20.1 -将源数组拆分为多个数组。当 `func(x [, y1, ..., yN])` 返回非零值时,数组会在该元素的左侧进行拆分。数组不会在第一个元素之前进行拆分。 +将源数组拆分为多个数组。当 `func(x [, y1, ..., yN])` 返回非零值时,数组会在该元素的左侧被拆分。数组不会在第一个元素之前进行拆分。 **语法** @@ -3398,11 +3469,11 @@ arraySplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 一个用于处理源数组 (`x`) 和条件数组 (`y`) 元素的 Lambda 函数。[Lambda 函数](/sql-reference/functions/overview#arrow-operator-and-lambda)。 - `source_arr` — 要拆分的源数组 [`Array(T)`](/sql-reference/data-types/array)。 - `[, cond1_arr, ... , condN_arr]` — 可选。作为传递给 Lambda 函数的附加参数的 N 个条件数组。[`Array(T)`](/sql-reference/data-types/array)。 +* `func(x[, y1, ..., yN])` — 一个对源数组(`x`)和条件数组(`y`)的元素进行操作的 Lambda 函数。[Lambda function](/sql-reference/functions/overview#arrow-operator-and-lambda). - `source_arr` — 要拆分的源数组 [`Array(T)`](/sql-reference/data-types/array). - `[, cond1_arr, ... , condN_arr]` — 可选。Lambda 函数的 N 个条件数组,作为附加参数。[`Array(T)`](/sql-reference/data-types/array). **返回值** -返回一个由数组组成的数组 [`Array(Array(T))`](/sql-reference/data-types/array) +返回数组的数组 [`Array(Array(T))`](/sql-reference/data-types/array) **示例** @@ -3416,13 +3487,14 @@ SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res [[1, 2, 3], [4, 5]] ``` + ## arraySum {#arraySum} -自 v21.1 引入 +引入版本:v21.1 返回源数组中各元素的总和。 -如果指定了 lambda 函数 `func`,则返回对数组元素应用该 lambda 后所得结果的总和。 +如果指定了 Lambda 函数 `func`,则返回其返回结果中各元素的总和。 **语法** @@ -3432,17 +3504,17 @@ arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr]) **参数** -* `func(x[, y1, ..., yN])` — 可选。一个对源数组 (`x`) 及条件数组 (`y`) 的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) +* `func(x[, y1, ..., yN])` — 可选。一个对源数组(`x`)及条件数组(`y`)的元素进行操作的 Lambda 函数。[`Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda) * `source_arr` — 要处理的源数组。[`Array(T)`](/sql-reference/data-types/array) * `, cond1_arr, ... , condN_arr]` — 可选。N 个条件数组,为 Lambda 函数提供额外参数。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回源数组中元素的总和;如果提供了 Lambda 函数,则返回该函数结果中各元素的总和。 +返回源数组中元素的和;如果提供了 Lambda 函数,则返回其结果数组元素的和。 **示例** -**基本示例** +**基础示例** ```sql title=Query SELECT arraySum([1, 2, 3, 4]); @@ -3452,7 +3524,7 @@ SELECT arraySum([1, 2, 3, 4]); 10 ``` -**与 Lambda 函数配合使用** +**在 Lambda 函数中的用法** ```sql title=Query SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]); @@ -3462,16 +3534,17 @@ SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]); 8 ``` + ## arraySymmetricDifference {#arraySymmetricDifference} 引入版本:v25.4 -接受多个数组作为输入,并返回一个数组,其中包含未同时出现在所有源数组中的元素。结果仅包含不重复的值。 +接受多个数组,并返回一个数组,其中包含**没有**出现在所有源数组中的元素。结果仅包含唯一值(不含重复)。 :::note -*多于两个集合* 的对称差 [在数学上的定义](https://en.wikipedia.org/wiki/Symmetric_difference#n-ary_symmetric_difference) -是由所有在奇数个输入集合中出现的输入元素构成的集合。 -相比之下,函数 `arraySymmetricDifference` 仅返回所有未在所有输入集合中同时出现的输入元素构成的集合。 +*多于两个 Set* 的对称差[在数学上定义](https://en.wikipedia.org/wiki/Symmetric_difference#n-ary_symmetric_difference) +为所有在输入 Set 中出现次数为奇数的元素所组成的集合。 +相比之下,函数 `arraySymmetricDifference` 仅返回那些**没有**出现在所有输入 Set 中的输入元素所组成的集合。 ::: **语法** @@ -3486,11 +3559,11 @@ arraySymmetricDifference(arr1, arr2, ... , arrN) **返回值** -返回一个数组,包含未在所有源数组中同时出现的唯一元素。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,包含未在所有源数组中同时出现的去重元素。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT @@ -3504,11 +3577,12 @@ arraySymmetricDifference([1, 2], [1, 2], [1, 3]) AS non_empty_symmetric_differen └────────────────────────────┴────────────────────────────────┘ ``` + ## arrayUnion {#arrayUnion} -自 v24.10 引入 +引入版本:v24.10 -接收多个数组作为参数,并返回一个数组,该数组包含所有源数组中出现过的元素。结果中仅包含不重复的元素。 +接受多个数组并返回一个数组,该数组包含任一源数组中出现的所有元素。结果仅包含唯一的值。 **语法** @@ -3518,11 +3592,11 @@ arrayUnion(arr1, arr2, ..., arrN) **参数** -* `arrN` — 用于构造新数组的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) +* `arrN` — 要合并成新数组的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个由源数组中所有不重复元素组成的新数组([`Array(T)`](/sql-reference/data-types/array))。 +返回一个包含源数组中去重元素的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3541,24 +3615,25 @@ arrayUnion([1, 3, NULL], [2, 3, NULL]) as null_example └─────────────┴────────────────┴──────────────┘ ``` + ## arrayUniq {#arrayUniq} -引入版本:v1.1 +引入于:v1.1 -对于传入的单个参数,统计数组中不同元素的数量。 -对于传入的多个参数,它会统计由多个数组中相同位置元素组成的不同**元组**的数量。 +当只传入一个参数时,计算数组中不同元素的数量。 +当传入多个参数时,计算由多个数组中相同位置元素组成的不同**元组**的数量。 -例如,`SELECT arrayUniq([1,2], [3,4], [5,6])` 会形成如下元组: +例如 `SELECT arrayUniq([1,2], [3,4], [5,6])` 将形成如下元组: * 位置 1: (1,3,5) * 位置 2: (2,4,6) -然后会统计唯一元组的数量。本例中为 `2`。 +然后会统计不同元组的数量。在本例中为 `2`。 -所有传入的数组必须具有相同的长度。 +传入的所有数组必须具有相同的长度。 :::tip -如果需要获得数组中唯一元素的列表,可以使用 `arrayReduce('groupUniqArray', arr)`。 +如果要获取数组中唯一元素的列表,可以使用 `arrayReduce('groupUniqArray', arr)`。 ::: **语法** @@ -3569,12 +3644,12 @@ arrayUniq(arr1[, arr2, ..., arrN]) **参数** -* `arr1` — 要统计其唯一元素数量的数组。[`Array(T)`](/sql-reference/data-types/array) -* `[, arr2, ..., arrN]` — 可选。用于统计多个数组中对应位置元素组成的唯一元组数量的附加数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr1` — 要统计其中唯一元素数量的数组。[`Array(T)`](/sql-reference/data-types/array) +* `[, arr2, ..., arrN]` — 可选。在多个数组的对应位置上统计唯一元素元组数量时使用的附加数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -对于单个参数,返回唯一元素的数量。对于多个参数,返回由多个数组中对应位置元素组成的唯一元组的数量。 +对于单个参数,返回唯一元素的数量。对于多个参数,返回由各数组对应位置元素组成的唯一元组数量。 [`UInt32`](/sql-reference/data-types/int-uint) **示例** @@ -3589,7 +3664,7 @@ SELECT arrayUniq([1, 1, 2, 2]) 2 ``` -**多个参数** +**多参数** ```sql title=Query SELECT arrayUniq([1, 2, 3, 1], [4, 5, 6, 4]) @@ -3599,11 +3674,12 @@ SELECT arrayUniq([1, 2, 3, 1], [4, 5, 6, 4]) 3 ``` + ## arrayWithConstant {#arrayWithConstant} -在 v20.1 版本中引入 +引入版本:v20.1 -创建一个长度为 `length`,且所有元素都为常量 `x` 的数组。 +创建一个长度为 `length`,元素值均为常量 `x` 的数组。 **语法** @@ -3613,12 +3689,12 @@ arrayWithConstant(N, x) **参数** -* `length` — 数组中的元素个数。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `x` — 数组中 `N` 个元素的值,可以是任意类型。 +* `length` — 数组中的元素数量 `N`。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `x` — 数组中 `N` 个元素的值,类型任意。 **返回值** -返回一个包含 `N` 个元素、且每个元素的值为 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array) +返回一个包含 `N` 个元素、且每个元素的值均为 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3632,11 +3708,12 @@ SELECT arrayWithConstant(3, 1) [1, 1, 1] ``` + ## arrayZip {#arrayZip} -自 v20.1 引入 +引入于:v20.1 -将多个数组组合为单个数组。结果数组包含源数组中对应位置的元素,这些元素按照参数列出的顺序被分组为元组。 +将多个数组组合成一个数组。结果数组包含源数组中对应位置的元素,这些元素按照参数列出的顺序分组为元组。 **语法** @@ -3646,11 +3723,11 @@ arrayZip(arr1, arr2, ... , arrN) **参数** -* `arr1, arr2, ... , arrN` — 要合并成单个数组的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr1, arr2, ... , arrN` — 要合并为单个数组的要拼接的 N 个数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个数组,其中的元素是由源数组按位置组合成的元组。元组中的数据类型与输入数组的类型相同,且顺序与数组的传入顺序一致。[`Array(T)`](/sql-reference/data-types/array) +返回一个数组,其元素为由源数组元素分组形成的元组。元组中的数据类型与输入数组的类型相同,并且顺序与数组传入的顺序一致。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3664,11 +3741,12 @@ SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1]); [('a', 5), ('b', 2), ('c', 1)] ``` + ## arrayZipUnaligned {#arrayZipUnaligned} -自 v20.1 引入 +引入于:v20.1 -将多个数组组合为一个数组,支持未对齐的数组(长度不同的数组)。结果数组包含源数组中对应位置的元素,并按参数列出的顺序将这些元素分组为元组。 +将多个数组合并为一个数组,允许输入长度不同的数组。结果数组按参数列出的顺序,将各源数组中对应位置的元素分组为元组。 **语法** @@ -3682,11 +3760,11 @@ arrayZipUnaligned(arr1, arr2, ..., arrN) **返回值** -返回一个数组,其元素为将源数组的元素分组后得到的元组。元组中的数据类型与输入数组的数据类型相同,且顺序与传入数组的顺序一致。[`Array(T)`](/sql-reference/data-types/array) 或 [`Tuple(T1, T2, ...)`](/sql-reference/data-types/tuple) +返回一个数组,其中的元素是从源数组中分组得到的元组。元组中的数据类型与输入数组的类型相同,且顺序与数组传入的顺序一致。[`Array(T)`](/sql-reference/data-types/array) 或 [`Tuple(T1, T2, ...)`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT arrayZipUnaligned(['a'], [1, 2, 3]); @@ -3696,13 +3774,14 @@ SELECT arrayZipUnaligned(['a'], [1, 2, 3]); [('a', 1),(NULL, 2),(NULL, 3)] ``` + ## countEqual {#countEqual} -自 v1.1 引入 +引入版本:v1.1 返回数组中等于 `x` 的元素数量。等价于 `arrayCount(elem -> elem = x, arr)`。 -将 `NULL` 元素视为独立的值进行处理。 +`NULL` 元素会被作为单独的值来处理。 **语法** @@ -3717,7 +3796,7 @@ countEqual(arr, x) **返回值** -返回数组中等于 `x` 的元素数量。类型为 [`UInt64`](/sql-reference/data-types/int-uint) +返回数组中等于 `x` 的元素数量。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -3731,6 +3810,7 @@ SELECT countEqual([1, 2, NULL, NULL], NULL) 2 ``` + ## empty {#empty} 引入于:v1.1 @@ -3740,7 +3820,7 @@ SELECT countEqual([1, 2, NULL, NULL], NULL) 如果数组不包含任何元素,则被视为空数组。 :::note -可以通过启用 [`optimize_functions_to_subcolumns` 设置](/operations/settings/settings#optimize_functions_to_subcolumns)来优化。将 `optimize_functions_to_subcolumns` 设置为 `1` 时,该函数只读取 [size0](/sql-reference/data-types/array#array-size) 子列,而无需读取并处理整个数组列。查询 `SELECT empty(arr) FROM TABLE;` 会被转换为 `SELECT arr.size0 = 0 FROM TABLE;`。 +可以通过启用 [`optimize_functions_to_subcolumns` setting](/operations/settings/settings#optimize_functions_to_subcolumns) 进行优化。当将 `optimize_functions_to_subcolumns` 设置为 1 时,该函数只会读取 [size0](/sql-reference/data-types/array#array-size) 子列,而不是读取并处理整个数组列。查询 `SELECT empty(arr) FROM TABLE;` 会被转换为 `SELECT arr.size0 = 0 FROM TABLE;`。 ::: 该函数同样适用于 String 或 UUID 类型。 @@ -3757,11 +3837,11 @@ empty(arr) **返回值** -如果数组为空则返回 `1`,如果数组非空则返回 `0`,类型为 [`UInt8`](/sql-reference/data-types/int-uint) +当数组为空时返回 `1`,否则(非空数组)返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT empty([]); @@ -3771,9 +3851,10 @@ SELECT empty([]); 1 ``` + ## emptyArrayDate {#emptyArrayDate} -引入版本:v1.1 +引入于:v1.1 返回空的 Date 数组 @@ -3789,11 +3870,11 @@ emptyArrayDate() **返回值** -空的 Date 数组。[`Array(T)`](/sql-reference/data-types/array) +一个空的 Date 类型数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayDate @@ -3803,9 +3884,10 @@ SELECT emptyArrayDate [] ``` + ## emptyArrayDateTime {#emptyArrayDateTime} -自 v1.1 引入 +引入于 v1.1 返回一个空的 DateTime 数组 @@ -3821,7 +3903,7 @@ emptyArrayDateTime() **返回值** -空 DateTime 数组。[`Array(T)`](/sql-reference/data-types/array) +空的 DateTime 类型数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -3835,9 +3917,10 @@ SELECT emptyArrayDateTime [] ``` + ## emptyArrayFloat32 {#emptyArrayFloat32} -在 v1.1 中引入 +引入于 v1.1 返回一个空的 Float32 数组 @@ -3853,11 +3936,11 @@ emptyArrayFloat32() **返回值** -空的 Float32 数组。[`Array(T)`](/sql-reference/data-types/array) +一个空的 Float32 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayFloat32 @@ -3867,11 +3950,12 @@ SELECT emptyArrayFloat32 [] ``` + ## emptyArrayFloat64 {#emptyArrayFloat64} -自 v1.1 起提供 +引入于:v1.1 -返回一个空的 Float64 数组 +返回空的 Float64 数组 **语法** @@ -3899,9 +3983,10 @@ SELECT emptyArrayFloat64 [] ``` + ## emptyArrayInt16 {#emptyArrayInt16} -自 v1.1 引入 +引入于:v1.1 返回一个空的 Int16 数组 @@ -3917,11 +4002,11 @@ emptyArrayInt16() **返回值** -空的 Int16 数组。[`Array(T)`](/sql-reference/data-types/array) +一个空的 Int16 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayInt16 @@ -3931,6 +4016,7 @@ SELECT emptyArrayInt16 [] ``` + ## emptyArrayInt32 {#emptyArrayInt32} 引入于:v1.1 @@ -3953,7 +4039,7 @@ emptyArrayInt32() **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayInt32 @@ -3963,11 +4049,12 @@ SELECT emptyArrayInt32 [] ``` + ## emptyArrayInt64 {#emptyArrayInt64} -自 v1.1 版本引入 +首次引入于:v1.1 -返回一个空的 Int64 数组。 +返回一个空的 Int64 数组 **语法** @@ -3981,11 +4068,11 @@ emptyArrayInt64() **返回值** -一个 Int64 类型的空数组。[`Array(T)`](/sql-reference/data-types/array) +空的 Int64 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayInt64 @@ -3995,6 +4082,7 @@ SELECT emptyArrayInt64 [] ``` + ## emptyArrayInt8 {#emptyArrayInt8} 引入于:v1.1 @@ -4013,11 +4101,11 @@ emptyArrayInt8() **返回值** -返回一个空的 Int8 数组。[`Array(T)`](/sql-reference/data-types/array) +一个空的 Int8 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayInt8 @@ -4027,11 +4115,12 @@ SELECT emptyArrayInt8 [] ``` + ## emptyArrayString {#emptyArrayString} -自 v1.1 起引入 +引入于:v1.1 -返回一个空字符串数组 +返回一个空的 String 数组 **语法** @@ -4049,7 +4138,7 @@ emptyArrayString() **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayString @@ -4059,11 +4148,12 @@ SELECT emptyArrayString [] ``` + ## emptyArrayToSingle {#emptyArrayToSingle} -自 v1.1 引入 +引入版本:v1.1 -接受一个空数组,并返回一个仅包含一个元素的数组,该元素等于默认值。 +接受一个空数组,并返回一个仅包含默认值的单元素数组。 **语法** @@ -4077,7 +4167,7 @@ emptyArrayToSingle(arr) **返回值** -一个仅包含单个元素的数组,其元素为该数组元素类型的默认值。[`Array(T)`](/sql-reference/data-types/array) +一个只包含单个值的数组,该值是该 Array 元素类型的默认值。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -4103,6 +4193,7 @@ SELECT emptyArrayToSingle(a), emptyArrayToSingle(b), emptyArrayToSingle(c) FROM └───────────────────────┴───────────────────────┴─────────────────────────┘ ``` + ## emptyArrayUInt16 {#emptyArrayUInt16} 引入于:v1.1 @@ -4121,11 +4212,11 @@ emptyArrayUInt16() **返回值** -一个空的 UInt16 数组。[`Array(T)`](/sql-reference/data-types/array) +空的 UInt16 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayUInt16 @@ -4135,11 +4226,12 @@ SELECT emptyArrayUInt16 [] ``` + ## emptyArrayUInt32 {#emptyArrayUInt32} -首次引入于:v1.1 +引入于:v1.1 -返回一个空的 UInt32 类型数组 +返回一个空的 UInt32 数组 **语法** @@ -4153,7 +4245,7 @@ emptyArrayUInt32() **返回值** -空的 UInt32 数组。[`Array(T)`](/sql-reference/data-types/array) +一个空的 UInt32 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -4167,9 +4259,10 @@ SELECT emptyArrayUInt32 [] ``` + ## emptyArrayUInt64 {#emptyArrayUInt64} -引入版本:v1.1 +引入于 v1.1 返回一个空的 UInt64 数组 @@ -4189,7 +4282,7 @@ emptyArrayUInt64() **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayUInt64 @@ -4199,11 +4292,12 @@ SELECT emptyArrayUInt64 [] ``` + ## emptyArrayUInt8 {#emptyArrayUInt8} -自 v1.1 版本起引入 +引入于 v1.1 -返回一个空的 UInt8 数组 +返回一个空的 `UInt8` 数组 **语法** @@ -4217,11 +4311,11 @@ emptyArrayUInt8() **返回值** -空的 UInt8 数组。[`Array(T)`](/sql-reference/data-types/array) +一个空的 UInt8 数组。[`Array(T)`](/sql-reference/data-types/array) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT emptyArrayUInt8 @@ -4231,11 +4325,12 @@ SELECT emptyArrayUInt8 [] ``` + ## has {#has} 引入版本:v1.1 -返回数组是否包含指定的元素。 +返回数组是否包含指定元素。 **语法** @@ -4246,15 +4341,15 @@ has(arr, x) **参数** * `arr` — 源数组。[`Array(T)`](/sql-reference/data-types/array) -* `x` — 要在数组中搜索的值。 +* `x` — 在数组中要查找的值。 **返回值** -如果数组包含指定元素则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果数组包含指定的元素,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** -**基本用法** +**基础用法** ```sql title=Query SELECT has([1, 2, 3], 2) @@ -4274,14 +4369,15 @@ SELECT has([1, 2, 3], 4) 0 ``` + ## hasAll {#hasAll} -自 v1.1 引入 +引入于:v1.1 -检查一个数组是否为另一个数组的子集。 +检查一个数组是否是另一个数组的子集。 -* 空数组是任何数组的子集。 -* `Null` 会作为普通值进行处理。 +* 空数组是任意数组的子集。 +* `Null` 被当作普通值处理。 * 两个数组中元素的顺序无关紧要。 **语法** @@ -4292,15 +4388,15 @@ hasAll(set, subset) **参数** -* `set` — 由任意类型元素组成的数组。[`Array(T)`](/sql-reference/data-types/array) -* `subset` — 由任意类型元素组成的数组,与 `set` 具有共同的超类型,包含需要检测是否为 `set` 子集的元素。[`Array(T)`](/sql-reference/data-types/array) +* `set` — 任意类型元素组成的数组,表示一个元素集合。[`Array(T)`](/sql-reference/data-types/array) +* `subset` — 任意类型元素组成的数组,其元素与 `set` 具有共同的超类型,包含要测试是否为 `set` 子集的元素。[`Array(T)`](/sql-reference/data-types/array) **返回值** -* 如果 `set` 包含 `subset` 的所有元素,则返回 `1`。 +* 若 `set` 包含 `subset` 中的所有元素,则返回 `1`。 * 否则返回 `0`。 -如果 `set` 与 `subset` 中的元素没有共同的超类型,则抛出 `NO_COMMON_TYPE` 异常。 +如果 `set` 和 `subset` 中的元素不具有共同的超类型,则抛出 `NO_COMMON_TYPE` 异常。 **示例** @@ -4314,7 +4410,7 @@ SELECT hasAll([], []) 1 ``` -**含有 NULL 值的数组** +**包含 NULL 值的数组** ```sql title=Query SELECT hasAll([1, Null], [Null]) @@ -4324,7 +4420,7 @@ SELECT hasAll([1, Null], [Null]) 1 ``` -**包含不同类型元素的数组** +**包含不同类型值的数组** ```sql title=Query SELECT hasAll([1.0, 2, 3, 4], [1, 3]) @@ -4344,17 +4440,17 @@ SELECT hasAll(['a', 'b'], ['a']) 1 ``` -**没有共同类型的数组** +**没有公共类型的数组** ```sql title=Query SELECT hasAll([1], ['a']) ``` ```response title=Response -抛出 NO_COMMON_TYPE 异常 +Raises a NO_COMMON_TYPE exception ``` -**数组的数组(嵌套数组)** +**数组的数组** ```sql title=Query SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]]) @@ -4364,14 +4460,15 @@ SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]]) 0 ``` + ## hasAny {#hasAny} -引入于:v1.1 +引入版本:v1.1 -检查两个数组是否存在相同元素(是否有交集)。 +检查两个数组是否存在公共元素。 -* `Null` 会被当作普通值处理。 -* 两个数组中元素的顺序不会影响结果。 +* 将 `Null` 作为普通值进行处理。 +* 两个数组中值的顺序无关紧要。 **语法** @@ -4381,19 +4478,19 @@ hasAny(arr_x, arr_y) **参数** -* `arr_x` — 包含一组元素的任意类型数组。[`Array(T)`](/sql-reference/data-types/array) -* `arr_y` — 与数组 `arr_x` 具有共同超类型的任意类型数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr_x` — 任意类型的数组,包含一组元素。[`Array(T)`](/sql-reference/data-types/array) +* `arr_y` — 任意类型的数组,与数组 `arr_x` 具有共同的超类型。[`Array(T)`](/sql-reference/data-types/array) **返回值** -* 如果 `arr_x` 和 `arr_y` 至少有一个相同元素,则为 `1`。 -* 否则为 `0`。 +* 如果 `arr_x` 和 `arr_y` 至少有一个相同的元素,则返回 `1`。 +* 否则返回 `0`。 -如果两个数组中存在元素对之间不具有共同超类型,则会抛出 `NO_COMMON_TYPE` 异常。 +如果两个数组中的任一元素不具有共同的超类型,则抛出 `NO_COMMON_TYPE` 异常。 **示例** -**一个数组为空** +**其中一个数组为空** ```sql title=Query SELECT hasAny([1], []) @@ -4423,17 +4520,17 @@ SELECT hasAny([-128, 1., 512], [1]) 1 ``` -**没有共同类型的数组** +**元素类型不一致的数组** ```sql title=Query SELECT hasAny([[1, 2], [3, 4]], ['a', 'c']) ``` ```response title=Response -抛出 `NO_COMMON_TYPE` 异常 +Raises a `NO_COMMON_TYPE` exception ``` -**数组的数组** +**嵌套数组** ```sql title=Query SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]]) @@ -4443,21 +4540,22 @@ SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]]) 1 ``` + ## hasSubstr {#hasSubstr} -引入于:v20.6 +版本引入:v20.6 检查 `array2` 的所有元素是否以完全相同的顺序出现在 `array1` 中。 因此,当且仅当 `array1 = prefix + array2 + suffix` 时,该函数返回 `1`。 -换句话说,该函数会像 `hasAll` 函数一样检查 `array1` 中是否包含 `array2` 的所有元素。 -此外,它还会检查 `array1` 和 `array2` 中元素出现的顺序是否一致。 +换句话说,该函数会像 `hasAll` 函数一样检查 `array2` 的所有元素是否都包含在 `array1` 中。 +此外,它还会检查在 `array1` 与 `array2` 中,这些元素是否以相同的顺序出现。 * 如果 `array2` 为空,函数返回 `1`。 -* `Null` 会作为一个值进行处理。换句话说,`hasSubstr([1, 2, NULL, 3, 4], [2,3])` 将返回 `0`。然而,`hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])` 将返回 `1`。 -* 两个数组中值的顺序会影响结果。 +* `Null` 会作为一个值进行处理。也就是说,`hasSubstr([1, 2, NULL, 3, 4], [2,3])` 将返回 `0`。然而,`hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])` 将返回 `1`。 +* 两个数组中值的顺序是有影响的。 -如果两个数组中的任意元素没有共享公共超类型,则抛出 `NO_COMMON_TYPE` 异常。 +如果两个数组中任意元素之间不存在共同的超类型,则抛出 `NO_COMMON_TYPE` 异常。 **语法** @@ -4467,12 +4565,12 @@ hasSubstr(arr1, arr2) **参数** -* `arr1` — 任意类型的数组,由一组元素组成。[`Array(T)`](/sql-reference/data-types/array) -* `arr2` — 任意类型的数组,由一组元素组成。[`Array(T)`](/sql-reference/data-types/array) +* `arr1` — 由任意类型元素组成的数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr2` — 由任意类型元素组成的数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -如果数组 `arr1` 包含数组 `arr2`,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果数组 `arr1` 包含数组 `arr2`,则返回 `1`;否则,返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -4496,7 +4594,7 @@ SELECT hasSubstr([1, Null], [Null]) 1 ``` -**包含不同类型值的数组** +**包含不同类型元素的数组** ```sql title=Query SELECT hasSubstr([1.0, 2, 3, 4], [1, 3]) @@ -4506,7 +4604,7 @@ SELECT hasSubstr([1.0, 2, 3, 4], [1, 3]) 0 ``` -**字符串数组** +**包含字符串的数组** ```sql title=Query SELECT hasSubstr(['a', 'b'], ['a']) @@ -4516,7 +4614,7 @@ SELECT hasSubstr(['a', 'b'], ['a']) 1 ``` -**可有效排序的数组** +**具有有效顺序的数组** ```sql title=Query SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'b']) @@ -4526,7 +4624,7 @@ SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'b']) 1 ``` -**具有无效排序的数组** +**排序无效的数组** ```sql title=Query SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'c']) @@ -4536,7 +4634,7 @@ SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'c']) 0 ``` -**数组的数组** +**嵌套数组** ```sql title=Query SELECT hasSubstr([[1, 2], [3, 4], [5, 6]], [[1, 2], [3, 4]]) @@ -4553,17 +4651,18 @@ SELECT hasSubstr([1, 2, NULL, 3, 4], ['a']) ``` ```response title=Response -抛出 `NO_COMMON_TYPE` 异常 +Raises a `NO_COMMON_TYPE` exception ``` + ## indexOf {#indexOf} 引入版本:v1.1 -如果数组中存在值为 'x' 的元素,则返回第一个等于 'x' 的元素的索引(从 1 开始)。 -如果数组不包含要查找的值,函数返回 `0`。 +如果数组中包含值为 'x' 的元素,则返回其首次出现的索引位置(从 1 开始计数)。 +如果数组不包含要查找的值,则函数返回 `0`。 -设置为 `NULL` 的元素会被当作普通值处理。 +被设置为 `NULL` 的元素会被当作普通值处理。 **语法** @@ -4574,15 +4673,15 @@ indexOf(arr, x) **参数** * `arr` — 要在其中搜索 `x` 的数组。[`Array(T)`](/sql-reference/data-types/array) -* `x` — `arr` 中第一个匹配元素的值,将返回该元素的索引。[`UInt64`](/sql-reference/data-types/int-uint) +* `x` — 要查找的值,函数返回在 `arr` 中首次出现该值的索引。[`UInt64`](/sql-reference/data-types/int-uint) **返回值** -如果存在,返回 `arr` 中第一个 `x` 的索引(从 1 开始编号)。否则返回 `0`。[`UInt64`](/sql-reference/data-types/int-uint) +如果存在,则返回 `arr` 中第一个 `x` 的索引(从 1 开始编号)。否则,返回 `0`。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**基础示例** +**基本示例** ```sql title=Query SELECT indexOf([5, 4, 1, 3], 3) @@ -4592,7 +4691,7 @@ SELECT indexOf([5, 4, 1, 3], 3) 4 ``` -**包含 NULL 值的数组** +**含 NULL 值的数组** ```sql title=Query SELECT indexOf([1, 3, NULL, NULL], NULL) @@ -4602,15 +4701,16 @@ SELECT indexOf([1, 3, NULL, NULL], NULL) 3 ``` + ## indexOfAssumeSorted {#indexOfAssumeSorted} 引入于:v24.12 -如果数组中存在值为 'x' 的元素,则返回该元素第一次出现时的索引(从 `1` 开始计数)。\ +如果数组中包含值为 'x' 的元素,则返回第一个此类元素的索引(从 `1` 开始计数)。 如果数组不包含要查找的值,则函数返回 `0`。 :::note -与 `indexOf` 函数不同,此函数假定数组按升序排序。\ +与 `indexOf` 函数不同,此函数假定数组已按升序排序。 如果数组未排序,则结果未定义。 ::: @@ -4623,15 +4723,15 @@ indexOfAssumeSorted(arr, x) **参数** * `arr` — 要搜索的已排序数组。[`Array(T)`](/sql-reference/data-types/array) -* `x` — 要匹配的值,函数将返回已排序 `arr` 中第一个等于该值的元素的索引。[`UInt64`](/sql-reference/data-types/int-uint) +* `x` — 在已排序数组 `arr` 中要查找的值。[`UInt64`](/sql-reference/data-types/int-uint) **返回值** -如果 `arr` 中存在 `x`,则返回第一个 `x` 的索引(从 1 开始编号)。否则,返回 `0`。[`UInt64`](/sql-reference/data-types/int-uint) +如果存在,则返回 `arr` 中第一个 `x` 的索引(从 1 开始编号)。否则,返回 `0`。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**基础示例** +**基本示例** ```sql title=Query SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) @@ -4641,19 +4741,21 @@ SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4) 5 ``` + ## length {#length} -引入版本:v1.1 +引入于:v1.1 计算字符串或数组的长度。 * 对于 String 或 FixedString 参数:计算字符串中的字节数。 -* 对于 Array 参数:计算数组中的元素个数。 +* 对于 Array 参数:计算数组中元素的个数。 * 如果应用于 FixedString 参数,该函数是一个常量表达式。 -请注意,字符串中的字节数不同于 Unicode “code points”的数量,也不同于 Unicode “grapheme clusters”(通常所说的“字符”)的数量,也不同于字符串的可见宽度。 +请注意,字符串中的字节数不同于 Unicode “code point”的数量,也不同于 Unicode “grapheme cluster”的数量 +(我们通常称之为“字符”),并且也不同于字符串的可见显示宽度。 -字符串中允许包含 ASCII 的 NULL 字节,这些字节也会被计入长度。 +字符串中允许包含 ASCII NULL 字节,这些字节也会被计数。 **语法** @@ -4665,11 +4767,11 @@ length(x) **参数** -* `x` — 要计算其字节数(对于 String/FixedString)或元素个数(对于 Array)的值。类型为 [`String`](/sql-reference/data-types/string)、[`FixedString`](/sql-reference/data-types/fixedstring) 或 [`Array(T)`](/sql-reference/data-types/array) +* `x` — 要计算其字节数(针对 String/FixedString)或元素个数(针对 Array)的值。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) 或 [`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个 [`UInt64`](/sql-reference/data-types/int-uint) 值,表示 String/FixedString `x` 中的字节数或数组 `x` 中的元素个数。 +返回 String/FixedString `x` 的字节数,或数组 `x` 的元素个数,类型为 [`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -4735,19 +4837,20 @@ SELECT 'ábc' AS str, length(str), lengthUTF8(str) └─────┴──────────────┴─────────────────┘ ``` + ## notEmpty {#notEmpty} -引入于:v1.1 +引入版本:v1.1 检查输入数组是否非空。 -如果数组至少包含一个元素,则被视为非空。 +如果数组至少包含一个元素,则认为该数组是非空的。 :::note -可以通过启用 [`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns) 设置进行优化。设置 `optimize_functions_to_subcolumns = 1` 时,该函数只读取 [size0](/sql-reference/data-types/array#array-size) 子列,而不是读取并处理整个数组列。查询 `SELECT notEmpty(arr) FROM table` 会被转换为 `SELECT arr.size0 != 0 FROM TABLE`。 +可以通过启用 [`optimize_functions_to_subcolumns`](/operations/settings/settings#optimize_functions_to_subcolumns) 设置进行优化。当将 `optimize_functions_to_subcolumns` 设置为 `1` 时,函数只读取 [size0](/sql-reference/data-types/array#array-size) 子列,而不是读取并处理整个数组列。查询 `SELECT notEmpty(arr) FROM table` 会被转换为 `SELECT arr.size0 != 0 FROM TABLE`。 ::: -该函数同样适用于字符串(String)或 UUID 类型。 +该函数同样适用于 String 或 UUID 类型。 **语法** @@ -4761,11 +4864,11 @@ notEmpty(arr) **返回值** -当数组非空时返回 `1`,当数组为空时返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +对于非空数组返回 `1`,对于空数组返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT notEmpty([1,2]); @@ -4775,23 +4878,24 @@ SELECT notEmpty([1,2]); 1 ``` + ## range {#range} -引入于:v1.1 +版本引入:v1.1 -按 `step` 返回一个从 `start` 到 `end - 1` 的数字数组。 +返回一个从 `start` 到 `end - 1`,步长为 `step` 的数字数组。 -支持的类型为: +支持的类型有: * `UInt8/16/32/64` * `Int8/16/32/64` -* 所有参数 `start`、`end`、`step` 必须是上述支持类型之一。返回数组的元素类型将是这些参数类型的超类型。 +* 所有参数 `start`、`end`、`step` 必须是上述支持类型之一。返回数组的元素类型将是这些参数类型的公共超类型。 -* 如果函数返回的数组总长度超过由设置 [`function_range_max_elements_in_block`](../../operations/settings/settings.md#function_range_max_elements_in_block) 指定的元素数量,则抛出异常。 +* 如果函数返回的数组总长度超过设置 [`function_range_max_elements_in_block`](../../operations/settings/settings.md#function_range_max_elements_in_block) 指定的元素数量,则会抛出异常。 -* 如果任一参数的类型为 Nullable(nothing),则返回 `NULL`。如果任一参数的值为 `NULL`(Nullable(T) 类型),则抛出异常。 +* 如果任一参数的类型为 Nullable(nothing),则返回 `NULL`。如果任一参数的值为 `NULL`(Nullable(T) 类型),则会抛出异常。 **语法** @@ -4801,11 +4905,11 @@ range([start, ] end [, step]) **参数** -* `start` — 可选。数组的第一个元素。如果使用了 `step`,则必填。默认值:`0`。 - `end` — 必填。构造数组时的上界(不包含该值)。 - `step` — 可选。指定数组中相邻元素之间的递增步长。默认值:`1`。 +* `start` — 可选。数组的第一个元素。如果使用 `step`,则必须提供。默认值:`0`。 - `end` — 必需。构造数组时的上界(不包含该值)。 - `step` — 可选。确定数组中各元素之间的增量步长。默认值:`1`。 **返回值** -从 `start` 到 `end - 1`,按 `step` 递增的数字数组。[`Array(T)`](/sql-reference/data-types/array) +从 `start` 开始到 `end - 1` 为止,按 `step` 递增的数字数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -4821,11 +4925,12 @@ SELECT range(5), range(1, 5), range(1, 5, 2), range(-1, 5, 2); └─────────────┴─────────────┴────────────────┴─────────────────┘ ``` + ## replicate {#replicate} -自 v1.1 起引入 +引入版本:v1.1 -创建仅包含单个值的数组。 +创建一个只包含单个值的数组。 **语法** @@ -4836,11 +4941,11 @@ replicate(x, arr) **参数** * `x` — 用于填充结果数组的值。[`Any`](/sql-reference/data-types) -* `arr` — 一个数组。[`Array(T)`](/sql-reference/data-types/array) +* `arr` — 数组。[`Array(T)`](/sql-reference/data-types/array) **返回值** -返回一个与 `arr` 长度相同、全部由值 `x` 填充的数组。[`Array(T)`](/sql-reference/data-types/array) +返回一个与 `arr` 长度相同、由值 `x` 填充的数组。[`Array(T)`](/sql-reference/data-types/array) **示例** @@ -4856,11 +4961,12 @@ SELECT replicate(1, ['a', 'b', 'c']); └─────────────────────────────────┘ ``` + ## reverse {#reverse} -引入版本:v1.1 +引入于 v1.1 -将输入数组的元素顺序或输入字符串的字符顺序反转。 +将输入数组中元素的顺序或输入字符串中的字符顺序反转。 **语法** @@ -4874,7 +4980,7 @@ reverse(arr | str) **返回值** -返回一个数组或字符串,其元素或字符的顺序被反转。 +返回一个元素或字符顺序被反转的数组或字符串。 **示例** @@ -4900,6 +5006,7 @@ SELECT reverse('abcd'); {/*AUTOGENERATED_END*/ } + ## 距离函数 {#distance-functions} -所有受支持的函数均在[距离函数文档](../../sql-reference/functions/distance-functions.md)中有详细说明。 +所有支持的函数详见[“距离函数”文档](../../sql-reference/functions/distance-functions.md)。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md index 9436230e078..9602fec2e4e 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/array-join.md @@ -1,24 +1,24 @@ --- -description: "arrayJoin 函数文档" -sidebar_label: "arrayJoin" +description: 'arrayJoin 函数文档' +sidebar_label: 'arrayJoin' slug: /sql-reference/functions/array-join -title: "arrayJoin 函数" -doc_type: "reference" +title: 'arrayJoin 函数' +doc_type: 'reference' --- # arrayJoin 函数 {#arrayjoin-function} -这是一个比较特殊的函数。 +这是一个非常特殊的函数。 普通函数不会改变行集,只会改变每一行中的值(map)。 -聚合函数会压缩行集(fold 或 reduce)。 -`arrayJoin` 函数则会从每一行生成一组新的行(unfold)。 +聚合函数会压缩一个行集(fold 或 reduce)。 +`arrayJoin` 函数会将每一行展开为一个行集(unfold)。 此函数以数组作为参数,并根据数组中元素的数量,将原始行展开为多行。 -除应用此函数的那一列外,其余列中的所有值都会被直接复制;该列的值则会被数组中对应的元素所替代。 +除应用此函数的那一列外,其他列中的所有值都会被简单复制;该列的值则会被对应的数组元素取代。 :::note -如果数组为空,`arrayJoin` 不会产生任何行。 +如果数组为空,`arrayJoin` 不会生成任何行。 若要返回一行包含该数组类型默认值的记录,可以将其包裹在 [emptyArrayToSingle](./array-functions.md#emptyArrayToSingle) 中,例如:`arrayJoin(emptyArrayToSingle(...))`。 ::: @@ -86,21 +86,21 @@ GROUP BY ### 最佳实践 {#important-note} 对同一表达式多次使用 `arrayJoin` 时,由于公用子表达式消除优化,可能无法得到预期结果。 -在这种情况下,可以考虑为重复的数组表达式添加一些不会影响展开结果的额外操作。例如:`arrayJoin(arraySort(arr))`、`arrayJoin(arrayConcat(arr, []))` +在这种情况下,可以对重复的数组表达式添加不会影响 `arrayJoin` 结果的额外操作。例如:`arrayJoin(arraySort(arr))`、`arrayJoin(arrayConcat(arr, []))` 示例: ```sql SELECT arrayJoin(dice) AS first_throw, - /* arrayJoin(dice) as second_throw */ -- 技术上正确,但会使结果集为空 - arrayJoin(arrayConcat(dice, [])) AS second_throw -- 有意更改表达式以强制重新计算 + /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set + arrayJoin(arrayConcat(dice, [])) AS second_throw -- intentionally changed expression to force re-evaluation FROM ( SELECT [1, 2, 3, 4, 5, 6] AS dice ); ``` -注意在 SELECT 查询中使用的 [`ARRAY JOIN`](../statements/select/array-join.md) 语法,它提供了更丰富的功能。 +注意在 SELECT 查询中使用的 [`ARRAY JOIN`](../statements/select/array-join.md) 语法,它可以提供更丰富的用法。 `ARRAY JOIN` 允许一次性转换多个具有相同元素数量的数组。 示例: @@ -132,7 +132,7 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -也可以使用 [`Tuple`](../data-types/tuple.md) +或者可以使用 [`Tuple`](../data-types/tuple.md) 示例: @@ -160,4 +160,4 @@ GROUP BY └─────────────┴──────────┴─────────┘ ``` -ClickHouse 中的 `arrayJoin` 这个名称源于它在概念上与 JOIN 操作的相似性,只不过是应用在同一行内的数组上。传统的 JOIN 会合并来自不同表的行,而 `arrayJoin` 则是将一行中的数组元素逐个“连接”,生成多行——每个数组元素对应一行——同时复制该行中的其他列值。ClickHouse 还提供了 [`ARRAY JOIN`](/sql-reference/statements/select/array-join) 子句语法,通过使用熟悉的 SQL JOIN 术语,使其与传统 JOIN 操作之间的关系更加直观。这个过程也被称为对数组进行“展开”,但在函数名和子句中都采用了 “join” 一词,因为其行为类似于将表与数组元素进行连接,从而以类似 JOIN 操作的方式扩展数据集。 +ClickHouse 中的 `arrayJoin` 这一名称源于它在概念上与 JOIN 操作的相似性,只不过它是应用于单行中的数组。传统的 JOIN 是将来自不同表的行进行组合,而 `arrayJoin` 则是对一行中数组的每个元素进行“连接”,生成多行——每个数组元素对应一行——同时复制该行中的其他列值。ClickHouse 还提供了 [`ARRAY JOIN`](/sql-reference/statements/select/array-join) 子句语法,通过使用熟悉的 SQL JOIN 术语,使其与传统 JOIN 操作之间的关系更加直观。这个过程也被称为将数组“展开”,但在函数名和子句中都使用了 “join” 这一术语,因为其行为类似于将表与数组元素进行连接,从而以类似 JOIN 操作的方式有效地扩展数据集。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md index 7ede0998b05..cc80bd065db 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/hash-functions.md @@ -3,19 +3,19 @@ description: '哈希函数文档' sidebar_label: '哈希' slug: /sql-reference/functions/hash-functions title: '哈希函数' -doc_type: 'reference' +doc_type: '参考' --- # 哈希函数 {#hash-functions} -哈希函数可用于以确定性的伪随机方式打乱元素顺序(洗牌)。 +哈希函数可用于对元素进行确定性的伪随机打乱(洗牌)。 -Simhash 是一种哈希函数,对于相近(相似)的参数会返回相近的哈希值。 +Simhash 是一种哈希函数,对于接近(相似)的参数会返回接近的哈希值。 大多数哈希函数可以接受任意数量、任意类型的参数。 :::note -NULL 的哈希值为 NULL。要对 Nullable 列获取非 NULL 的哈希值,请将其包装在一个元组(tuple)中: +NULL 的哈希值是 NULL。要获取 Nullable 列的非 NULL 哈希值,请将其包裹在一个元组中: ```sql SELECT cityHash64(tuple(NULL)) @@ -24,13 +24,13 @@ SELECT cityHash64(tuple(NULL)) ::: :::note -要计算整张表全部内容的哈希,可以使用 `sum(cityHash64(tuple(*)))`(或其他哈希函数)。`tuple` 确保包含 NULL 值的行不会被忽略,`sum` 确保行的顺序不会影响结果。 +要计算整个表所有内容的哈希值,请使用 `sum(cityHash64(tuple(*)))`(或其他哈希函数)。`tuple` 可确保包含 NULL 值的行不会被跳过,`sum` 则可确保行的顺序不影响结果。 ::: {/* - 下面标签内的内容会在文档框架构建期间被替换为 - 从 system.functions 生成的文档。请不要修改或删除这些标签。 - 请参见: https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md + 下面标签内部的内容会在文档框架构建时 + 被从 system.functions 生成的文档所替换。请不要修改或删除这些标签。 + 参见:https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } {/*AUTOGENERATED_START*/ } @@ -39,10 +39,10 @@ SELECT cityHash64(tuple(NULL)) 引入版本:v22.10 -计算 BLAKE3 哈希值,并将得到的字节数组作为 FixedString 返回。 +计算 BLAKE3 哈希值,并以 FixedString 的形式返回得到的字节序列。 该密码学哈希函数通过 BLAKE3 Rust 库集成到 ClickHouse 中。 -该函数速度相当快,与 SHA-2 相比性能大约快两倍,同时生成的哈希长度与 SHA-256 相同。 -它返回一个类型为 FixedString(32) 的字节数组形式的 BLAKE3 哈希值。 +该函数速度相当快,与 SHA-2 相比性能大约快两倍,同时生成与 SHA-256 相同长度的哈希值。 +它以类型为 FixedString(32) 的字节数组形式返回 BLAKE3 哈希值。 **语法** @@ -56,7 +56,7 @@ BLAKE3(message) **返回值** -返回输入字符串的 32 字节长 BLAKE3 哈希值,类型为定长字符串。[`FixedString(32)`](/sql-reference/data-types/fixedstring) +返回输入字符串的 BLAKE3 哈希值(32 字节),类型为固定长度字符串 [`FixedString(32)`](/sql-reference/data-types/fixedstring)。 **示例** @@ -74,7 +74,7 @@ SELECT hex(BLAKE3('ABC')) ## MD4 {#MD4} -在 v21.11 中引入 +引入版本:v21.11 计算给定字符串的 MD4 哈希值。 @@ -90,11 +90,11 @@ MD4(s) **返回值** -返回给定输入字符串的 MD4 哈希值,结果为定长字符串。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 MD4 哈希值,类型为定长字符串。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT HEX(MD4('abc')); @@ -108,7 +108,7 @@ SELECT HEX(MD4('abc')); ## MD5 {#MD5} -自 v1.1 起提供 +自 v1.1 版本引入。 计算给定字符串的 MD5 哈希值。 @@ -120,11 +120,11 @@ MD5(s) **参数** -* `s` — 用于计算哈希的输入字符串。[`String`](/sql-reference/data-types/string) +* `s` — 要计算哈希的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回给定输入字符串的 MD5 哈希值,作为定长字符串。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 MD5 哈希值,类型为定长字符串。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **示例** @@ -142,7 +142,7 @@ SELECT HEX(MD5('abc')); ## RIPEMD160 {#RIPEMD160} -自 v24.10 起引入 +自 v24.10 引入 计算给定字符串的 RIPEMD-160 哈希值。 @@ -158,14 +158,14 @@ RIPEMD160(s) **返回值** -返回给定输入字符串的 RIPEMD160 哈希值,作为定长字符串。[`FixedString(20)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 RIPEMD160 哈希值,类型为定长字符串。[`FixedString(20)`](/sql-reference/data-types/fixedstring) **示例** **用法示例** ```sql title=Query -SELECT HEX(RIPEMD160('敏捷的棕色狐狸跳过了懒狗')); +SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog')); ``` ```response title=Response @@ -176,7 +176,7 @@ SELECT HEX(RIPEMD160('敏捷的棕色狐狸跳过了懒狗')); ## SHA1 {#SHA1} -引入版本:v1.1 +在 v1.1 中引入。 计算给定字符串的 SHA1 哈希值。 @@ -188,15 +188,15 @@ SHA1(s) **参数** -* `s` — 要进行哈希运算的输入字符串 [`String`](/sql-reference/data-types/string) +* `s` — 要哈希的输入字符串 [`String`](/sql-reference/data-types/string) **返回值** -返回给定输入字符串的 SHA1 哈希值,类型为定长字符串。[`FixedString(20)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 SHA1 哈希值,以定长字符串形式表示。[`FixedString(20)`](/sql-reference/data-types/fixedstring) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT HEX(SHA1('abc')); @@ -217,16 +217,16 @@ SELECT HEX(SHA1('abc')); **语法** ```sql -SHA224(串) +SHA224(s) ``` **参数** -* `s` — 要计算哈希值的输入字符串。[`String`](/sql-reference/data-types/string) +* `s` — 要进行哈希运算的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回给定输入字符串的 SHA224 哈希值,以定长字符串形式表示。[`FixedString(28)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 SHA224 哈希值,作为定长字符串返回。[`FixedString(28)`](/sql-reference/data-types/fixedstring) **示例** @@ -244,14 +244,14 @@ SELECT HEX(SHA224('abc')); ## SHA256 {#SHA256} -自 v1.1 引入 +自 v1.1 版本引入 计算给定字符串的 SHA256 哈希值。 **语法** ```sql -SHA256(s) +SHA256(s) ``` **参数** @@ -260,7 +260,7 @@ SHA256(s) **返回值** -返回给定输入字符串的 SHA-256 哈希值,作为定长字符串。[`FixedString(32)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 SHA256 哈希值,作为定长字符串返回。[`FixedString(32)`](/sql-reference/data-types/fixedstring) **示例** @@ -278,19 +278,19 @@ SELECT HEX(SHA256('abc')); ## SHA384 {#SHA384} -引入版本:v1.1 +引入于:v1.1 计算给定字符串的 SHA384 哈希值。 **语法** ```sql -SHA384(字节) +SHA384(s) ``` **参数** -* `s` — 要进行哈希的输入字符串。[`String`](/sql-reference/data-types/string) +* `s` — 要进行哈希计算的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** @@ -312,7 +312,7 @@ SELECT HEX(SHA384('abc')); ## SHA512 {#SHA512} -自 v1.1 起引入 +自 v1.1 版本引入。 计算给定字符串的 SHA512 哈希值。 @@ -324,11 +324,11 @@ SHA512(s) **参数** -* `s` — 要进行哈希计算的输入字符串 [`String`](/sql-reference/data-types/string) +* `s` — 要计算哈希值的输入字符串 [`String`](/sql-reference/data-types/string) **返回值** -返回给定输入字符串的 SHA512 哈希,结果为定长字符串类型 [`FixedString(64)`](/sql-reference/data-types/fixedstring)。 +返回给定输入字符串的 SHA512 哈希值,类型为长度为 64 的定长字符串。[`FixedString(64)`](/sql-reference/data-types/fixedstring) **示例** @@ -346,7 +346,7 @@ SELECT HEX(SHA512('abc')); ## SHA512_256 {#SHA512_256} -在 v1.1 中引入 +自 v1.1 版本引入。 计算给定字符串的 SHA512_256 哈希值。 @@ -362,11 +362,11 @@ SHA512_256(s) **返回值** -返回给定输入字符串的 SHA512_256 哈希值,作为固定长度字符串。[`FixedString(32)`](/sql-reference/data-types/fixedstring) +返回给定输入字符串的 SHA512_256 哈希值,作为定长字符串返回。[`FixedString(32)`](/sql-reference/data-types/fixedstring) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT HEX(SHA512_256('abc')); @@ -380,16 +380,16 @@ SELECT HEX(SHA512_256('abc')); ## URLHash {#URLHash} -引入于:v1.1 +首次引入版本:v1.1 -一种针对通过某种归一化方式从 URL 获取的字符串的快速、质量良好的非加密哈希函数。 +一种针对经过某种规范化处理后从 URL 中获取的字符串的快速、质量较好的非加密哈希函数。 -此哈希函数有两种模式: +该哈希函数有两种模式: -| 模式 | 描述 | -| ----------------- | --------------------------------------------------------------------------------------------- | -| `URLHash(url)` | 从字符串计算哈希值,如果末尾存在 `/`、`?` 或 `#` 中的一个符号,则会先去掉该符号。 | -| `URLHash(url, N)` | 从字符串计算哈希值,计算到 URL 层级中的第 N 级为止;如果末尾存在 `/`、`?` 或 `#` 中的一个符号,则会先去掉该符号。层级的定义与 `URLHierarchy` 中相同。 | +| Mode | Description | +| ----------------- | ------------------------------------------------------------------------------------------------- | +| `URLHash(url)` | 从字符串计算哈希值,如果末尾存在 `/`、`?` 或 `#`,则去掉末尾的一个该符号后再计算。 | +| `URLHash(url, N)` | 从字符串计算哈希值,字符串仅保留到 URL 层级结构中的第 N 级,如果末尾存在 `/`、`?` 或 `#`,则去掉末尾的一个该符号后再计算。层级与 `URLHierarchy` 中的定义相同。 | **语法** @@ -399,8 +399,8 @@ URLHash(url[, N]) **参数** -* `url` — 要进行哈希计算的 URL 字符串。[`String`](/sql-reference/data-types/string) -* `N` — 可选。URL 层级中的深度级别。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `url` — 需要进行哈希运算的 URL 字符串。[`String`](/sql-reference/data-types/string) +* `N` — 可选。URL 层级中的级别。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** @@ -420,7 +420,7 @@ SELECT URLHash('https://www.clickhouse.com') └──────────────────────────┘ ``` -**按指定级别计算的 URL 哈希值** +**按指定层级计算 URL 的哈希值** ```sql title=Query SELECT URLHash('https://www.clickhouse.com/docs', 0); @@ -428,11 +428,11 @@ SELECT URLHash('https://www.clickhouse.com/docs', 1); ``` ```response title=Response --- https://www.clickhouse.com 的哈希值 +-- hash of https://www.clickhouse.com ┌─URLHash('htt⋯m/docs', 0)─┐ │ 13614512636072854701 │ └──────────────────────────┘ --- https://www.clickhouse.com/docs 的哈希值 +-- hash of https://www.clickhouse.com/docs ┌─URLHash('htt⋯m/docs', 1)─┐ │ 13167253331440520598 │ └──────────────────────────┘ @@ -440,23 +440,23 @@ SELECT URLHash('https://www.clickhouse.com/docs', 1); ## cityHash64 {#cityHash64} -引入于:v1.1 +引入版本:v1.1 -生成 64 位的 [CityHash](https://github.com/google/cityhash) 哈希值。 +生成一个 64 位的 [CityHash](https://github.com/google/cityhash) 哈希值。 -这是一种快速的非加密哈希函数。 -它对字符串参数使用 CityHash 算法,对其他数据类型的参数使用依赖具体实现的快速非加密哈希函数。 -该函数使用 CityHash 组合函数来得到最终结果。 +这是一个快速的非加密哈希函数。 +它对字符串参数使用 CityHash 算法,对其他数据类型的参数使用与具体实现相关的快速非加密哈希函数。 +该函数使用 CityHash 组合函数来获得最终结果。 :::info -在 CityHash 被集成进 ClickHouse 之后,Google 更改了 CityHash 的算法。 -换句话说,ClickHouse 的 cityHash64 与 Google 上游的 CityHash 现在会产生不同的结果。 +Google 在将 CityHash 加入 ClickHouse 之后更改了 CityHash 的算法。 +换句话说,ClickHouse 的 cityHash64 和 Google 上游的 CityHash 现在会产生不同的结果。 ClickHouse 的 cityHash64 对应 CityHash v1.0.2。 ::: :::note -对于相同输入值但参数类型不同的情况,计算得到的哈希值可能相同。 -例如,这会影响不同大小的整数类型、具有相同数据的具名和未具名 `Tuple`,以及具有相同数据的 `Map` 和对应的 `Array(Tuple(key, value))` 类型。 +对于不同参数类型但输入值相同的情况,计算出的哈希值可能相同。 +例如,这会影响不同大小的整数类型、具有相同数据的已命名和未命名 `Tuple`,以及具有相同数据的 `Map` 和对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -467,11 +467,11 @@ cityHash64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 用于计算哈希值的可变数量的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 需要计算哈希的一组可变数量的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回对输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回输入参数的哈希计算结果。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -487,7 +487,7 @@ SELECT cityHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:0 └──────────────────────┴────────┘ ``` -**计算整张表的校验和(精确到行顺序)** +**计算整张表的校验和,精确到行顺序** ```sql title=Query CREATE TABLE users ( @@ -517,15 +517,15 @@ SELECT groupBitXor(cityHash64(*)) FROM users; 引入版本:v20.12 -使用 `Fingerprint64` 方法生成一个 64 位的 [FarmHash](https://github.com/google/farmhash) 值。 +使用 `Fingerprint64` 方法生成 64 位的 [FarmHash](https://github.com/google/farmhash) 值。 :::tip -与 [`farmHash64`](#farmHash64) 相比,`farmFingerprint64` 更适合用于生成稳定且可移植的值。 +与 [`farmHash64`](#farmHash64) 相比,`farmFingerprint64` 更适合用于获得稳定且可移植的值。 ::: :::note -对于不同参数类型但输入值相同的情况,计算得到的哈希值可能相同。 -例如,这会影响不同大小的整数类型、具有相同数据的具名和未具名 `Tuple`,以及具有相同数据的 `Map` 类型和对应的 `Array(Tuple(key, value))` 类型。 +对于不同参数类型中相同的输入值,计算得到的哈希值可能会相同。 +例如,这会影响不同大小的整数类型、具有相同数据的具名和未具名 `Tuple`,以及具有相同数据的 `Map` 与其对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -536,7 +536,7 @@ farmFingerprint64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 数量可变的输入参数,用于计算其哈希值。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 用于计算哈希的可变数量输入参数。[`Any`](/sql-reference/data-types) **返回值** @@ -544,31 +544,31 @@ farmFingerprint64(arg1[, arg2, ...]) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT farmFingerprint64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmFingerprint, toTypeName(FarmFingerprint) AS type; ``` ```response title=Response -┌─────FarmFingerprint─┬─类型───┐ +┌─────FarmFingerprint─┬─type───┐ │ 5752020380710916328 │ UInt64 │ └─────────────────────┴────────┘ ``` ## farmHash64 {#farmHash64} -引入版本:v1.1 +引入于:v1.1 -使用 `Hash64` 方法生成 64 位的 [FarmHash](https://github.com/google/farmhash)。 +使用 `Hash64` 方法生成 64 位的 [FarmHash](https://github.com/google/farmhash) 值。 :::tip -如需稳定且可移植的值,推荐使用 [`farmFingerprint64`](#farmFingerprint64)。 +为了获得稳定且具可移植性的值,建议优先使用 [`farmFingerprint64`](#farmFingerprint64)。 ::: :::note -对于不同参数类型但输入值相同的情况,计算得到的哈希值可能会相同。 -例如,不同大小的整数类型、具有相同数据的已命名和未命名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型,都会受到影响。 +当参数类型不同但输入值相同时,计算得到的哈希值可能相等。 +例如,这会影响不同大小的整数类型、具有相同数据的具名和非具名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -579,15 +579,15 @@ farmHash64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 需要计算哈希值的数量可变的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 若干个需要计算哈希值的输入参数,可变数量。[`Any`](/sql-reference/data-types) **返回值** -返回输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回对输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmHash, toTypeName(FarmHash) AS type; @@ -601,11 +601,11 @@ SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:0 ## gccMurmurHash {#gccMurmurHash} -自 v20.1 引入 +自 v20.1 起引入。 使用与 [GCC](https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/libstdc%2B%2B-v3/include/bits/functional_hash.h#L191) 相同的种子,计算输入值的 64 位 [MurmurHash2](https://github.com/aappleby/smhasher) 哈希值。 -在使用 Clang 和 GCC 构建的程序之间具有可移植性。 +在 Clang 和 GCC 的构建之间具有可移植性。 **语法** @@ -615,15 +615,15 @@ gccMurmurHash(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 数量可变的参数,用于计算哈希值。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 用于计算哈希的数量可变的参数。[`Any`](/sql-reference/data-types) **返回值** -返回对输入参数计算所得的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回对输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT @@ -641,13 +641,13 @@ SELECT 引入于:v1.1 -将所有输入参数[重新解释](/sql-reference/functions/type-conversion-functions#reinterpretasstring)为字符串,并为每个参数计算 MD5 哈希值。然后将这些哈希值组合起来,对所得字符串计算哈希,取其前 8 个字节,并按大端字节序将其解释为 [UInt64](/sql-reference/data-types/int-uint)。该函数相对较慢(每个处理器核心每秒约 500 万个短字符串)。 +将所有输入参数[解释](/sql-reference/functions/type-conversion-functions#reinterpretasstring)为字符串,并对每个参数计算 MD5 哈希值。然后将这些哈希值组合,对得到的结果字符串再次计算哈希,取该哈希值的前 8 个字节,并按大端字节序将其解释为 [UInt64](/sql-reference/data-types/int-uint)。该函数相对较慢(每个处理器核心每秒约 500 万个短字符串)。 建议改用 [`sipHash64`](#sipHash64) 函数。 -该函数接收可变数量的输入参数。 +该函数接受数量可变的输入参数。 参数可以是任意受支持的数据类型。 -对于某些数据类型,即使参数类型不同(不同大小的整数、具有相同数据的具名和未具名 Tuple、以及具有相同数据的 Map 与对应的 Array(Tuple(key, value)) 类型),在相同取值时计算得到的哈希值也可能相同。 +对于某些数据类型,即使参数类型不同(例如不同大小的整数、具有相同数据的具名与未具名 Tuple、以及具有相同数据的 Map 和对应的 Array(Tuple(key, value)) 类型),在相同取值下计算得到的哈希值也可能相同。 **语法** @@ -657,15 +657,15 @@ halfMD5(arg1[, arg2, ..., argN]) **参数** -* `arg1[, arg2, ..., argN]` — 要计算哈希值的可变数量的参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ..., argN]` — 需要计算哈希的可变数量参数。[`Any`](/sql-reference/data-types) **返回值** -返回对给定输入参数计算得到的半 MD5 哈希值,结果以大端字节序的 `UInt64` 类型返回。[`UInt64`](/sql-reference/data-types/int-uint) +返回对给定输入参数计算得到的 half MD5 哈希值,以大端字节序的 `UInt64` 返回。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT HEX(halfMD5('abc', 'cde', 'fgh')); @@ -679,15 +679,15 @@ SELECT HEX(halfMD5('abc', 'cde', 'fgh')); ## hiveHash {#hiveHash} -引入于:v20.1 +首次引入版本:v20.1 -从字符串计算一个 “HiveHash” 值。 -它只是将符号位清零的 [`JavaHash`](#javaHash)。 -此函数用于 3.0 之前版本的 [Apache Hive](https://en.wikipedia.org/wiki/Apache_Hive)。 +从字符串计算一个 “HiveHash”。 +它只是将 [`JavaHash`](#javaHash) 的符号位清零后的结果。 +该函数在 3.0 之前版本的 [Apache Hive](https://en.wikipedia.org/wiki/Apache_Hive) 中被使用。 :::caution -此哈希函数性能较差。 -仅在其他系统已使用该算法且你需要计算相同结果时才使用它。 +此哈希函数效率较低。 +仅当该算法已经在其他系统中使用且你需要得到相同结果时才使用它。 ::: **语法** @@ -698,11 +698,11 @@ hiveHash(arg) **参数** -* `arg` — 要进行哈希计算的输入字符串。[`String`](/sql-reference/data-types/string) +* `arg` — 用于哈希计算的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回输入字符串计算得到的 “Hive 哈希值”。[`Int32`](/sql-reference/data-types/int-uint) +返回输入字符串计算得到的 hive 哈希值。[`Int32`](/sql-reference/data-types/int-uint) **示例** @@ -720,23 +720,23 @@ SELECT hiveHash('Hello, world!'); ## icebergHash {#icebergHash} -自 v25.5 版本引入 +引入版本:v25.5 -实现 iceberg [哈希变换](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements) 的逻辑 +实现了 Iceberg 中[哈希转换](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements)的逻辑 **语法** ```sql -icebergHash(值) +icebergHash(value) ``` **参数** -* `value` — 要计算哈希值的源值,类型可以是 [`Integer`](/sql-reference/data-types/int-uint)、[`Bool`](/sql-reference/data-types/boolean)、[`Decimal`](/sql-reference/data-types/decimal)、[`Float*`](/sql-reference/data-types/float)、[`String`](/sql-reference/data-types/string)、[`FixedString`](/sql-reference/data-types/fixedstring)、[`UUID`](/sql-reference/data-types/uuid)、[`Date`](/sql-reference/data-types/date)、[`Time`](/sql-reference/data-types/time) 或 [`DateTime`](/sql-reference/data-types/datetime) +* `value` — 用于计算哈希的源值,可以是 [`Integer`](/sql-reference/data-types/int-uint)、[`Bool`](/sql-reference/data-types/boolean)、[`Decimal`](/sql-reference/data-types/decimal)、[`Float*`](/sql-reference/data-types/float)、[`String`](/sql-reference/data-types/string)、[`FixedString`](/sql-reference/data-types/fixedstring)、[`UUID`](/sql-reference/data-types/uuid)、[`Date`](/sql-reference/data-types/date)、[`Time`](/sql-reference/data-types/time) 或 [`DateTime`](/sql-reference/data-types/datetime) **返回值** -返回一个 32 位的 Murmur3 哈希值,x86 变体,种子为 0,类型为 [`Int32`](/sql-reference/data-types/int-uint) +返回一个 32 位 Murmur3 哈希值(x86 变体),种子为 0,类型为 [`Int32`](/sql-reference/data-types/int-uint) **示例** @@ -752,11 +752,11 @@ SELECT icebergHash(1.0 :: Float32) ## intHash32 {#intHash32} -在 v1.1 中引入 +引入版本:v1.1 -计算整数的 32 位哈希值。 +计算一个整数的 32 位哈希值。 -该哈希函数速度较快,但并非密码学哈希函数。 +该哈希函数速度较快,但不是密码学哈希函数。 **语法** @@ -770,11 +770,11 @@ intHash32(arg) **返回值** -返回输入整数计算得到的 32 位哈希码 [`UInt32`](/sql-reference/data-types/int-uint) +返回输入整数计算得到的 32 位哈希值 [`UInt32`](/sql-reference/data-types/int-uint) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT intHash32(42); @@ -788,11 +788,11 @@ SELECT intHash32(42); ## intHash64 {#intHash64} -自 v1.1 起引入。 +引入版本:v1.1 计算整数的 64 位哈希值。 -该哈希函数相对较快(甚至比 [`intHash32`](#intHash32) 还要快),但不是加密哈希函数。 +该哈希函数相对较快(甚至比 [`intHash32`](#intHash32) 更快),但不是密码学哈希函数。 **语法** @@ -824,9 +824,9 @@ SELECT intHash64(42); ## javaHash {#javaHash} -引入版本:v20.1 +引入于:v20.1 -从以下类型计算 JavaHash 值: +从以下类型计算 JavaHash: * [string](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452), * [Byte](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Byte.java#l405), @@ -835,13 +835,13 @@ SELECT intHash64(42); * [Long](https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/Long.java#l1060)。 :::caution -此哈希函数性能不佳。 +该哈希函数性能较低。 仅当该算法已在其他系统中使用且你需要计算相同结果时才使用它。 ::: :::note -Java 仅支持对有符号整数计算哈希, -因此如果你想对无符号整数计算哈希,必须先将它们转换为 ClickHouse 中对应的有符号类型。 +Java 只支持计算有符号整数的哈希值, +因此如果你想计算无符号整数的哈希值,必须先将其转换为相应的有符号 ClickHouse 类型。 ::: **语法** @@ -852,11 +852,11 @@ javaHash(arg) **参数** -* `arg` — 用于哈希计算的输入值。[`Any`](/sql-reference/data-types) +* `arg` — 要哈希的输入值。[`Any`](/sql-reference/data-types) **返回值** -返回 `arg` 的哈希值。[`Int32`](/sql-reference/data-types/int-uint) +返回 `arg` 的哈希值,类型为 [`Int32`](/sql-reference/data-types/int-uint)。 **示例** @@ -886,9 +886,9 @@ SELECT javaHash('Hello, world!'); ## javaHashUTF16LE {#javaHashUTF16LE} -引入于:v20.1 +自 v20.1 引入。 -在假定字符串的字节表示为 UTF-16LE 编码的前提下,从字符串计算 [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452)。 +在假定输入字符串的字节采用 UTF-16LE 编码的前提下,计算该字符串的 [JavaHash](http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/478a4add975b/src/share/classes/java/lang/String.java#l1452)。 **语法** @@ -898,15 +898,15 @@ javaHashUTF16LE(arg) **参数** -* `arg` — 使用 UTF-16LE 编码的字符串。[`String`](/sql-reference/data-types/string) +* `arg` — UTF-16LE 编码的字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回对 UTF-16LE 编码字符串计算得到的哈希值。[`Int32`](/sql-reference/data-types/int-uint) +返回该 UTF-16LE 编码字符串计算得到的哈希值。[`Int32`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le')); @@ -920,20 +920,20 @@ SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le')); ## jumpConsistentHash {#jumpConsistentHash} -自 v1.1 版本引入 +自 v1.1 起引入。 -为一个整数计算其 [jump consistent hash](https://arxiv.org/pdf/1406.2294.pdf)。 +计算整数的 [jump consistent hash](https://arxiv.org/pdf/1406.2294.pdf)。 **语法** ```sql -jumpConsistentHash(键, 桶) +jumpConsistentHash(key, buckets) ``` **参数** * `key` — 输入键值。[`UInt64`](/sql-reference/data-types/int-uint) -* `buckets` — 桶数。[`Int32`](/sql-reference/data-types/int-uint) +* `buckets` — 桶的数量。[`Int32`](/sql-reference/data-types/int-uint) **返回值** @@ -955,9 +955,9 @@ SELECT jumpConsistentHash(256, 4) ## kafkaMurmurHash {#kafkaMurmurHash} -自 v23.4 起引入 +引入于:v23.4 -使用与 [Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482) 相同的种子,对输入值计算 32 位 [MurmurHash2](https://github.com/aappleby/smhasher) 哈希值,并清除最高位,以便与 [Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328) 兼容。 +使用与 [Kafka](https://github.com/apache/kafka/blob/461c5cfe056db0951d9b74f5adc45973670404d7/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L482) 相同的种子计算输入值的 32 位 [MurmurHash2](https://github.com/aappleby/smhasher) 哈希值,并移除最高位,以与 [Default Partitioner](https://github.com/apache/kafka/blob/139f7709bd3f5926901a21e55043388728ccca78/clients/src/main/java/org/apache/kafka/clients/producer/internals/BuiltInPartitioner.java#L328) 保持兼容。 **语法** @@ -967,11 +967,11 @@ kafkaMurmurHash(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 需要计算哈希值的数量可变的参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 需要计算哈希值的一组数量可变的参数。[`Any`](/sql-reference/data-types) **返回值** -返回基于输入参数计算得到的哈希值。[`UInt32`](/sql-reference/data-types/int-uint) +返回根据输入参数计算得到的哈希值。[`UInt32`](/sql-reference/data-types/int-uint) **示例** @@ -991,10 +991,10 @@ SELECT ## keccak256 {#keccak256} -引入版本:v25.4 +引入自:v25.4 计算给定字符串的 Keccak-256 密码学哈希值。 -此哈希函数广泛应用于区块链场景,尤其是以太坊(Ethereum)。 +此哈希函数广泛用于区块链应用,尤其是在以太坊(Ethereum)中。 **语法** @@ -1004,11 +1004,11 @@ keccak256(message) **参数** -* `message` — 要进行哈希计算的输入字符串。[`String`](/sql-reference/data-types/string) +* `message` — 要进行哈希运算的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回输入字符串的 32 字节 Keccak-256 哈希值,作为固定长度字符串。[`FixedString(32)`](/sql-reference/data-types/fixedstring) +返回输入字符串的 Keccak-256 哈希值(32 字节),类型为定长字符串。[`FixedString(32)`](/sql-reference/data-types/fixedstring) **示例** @@ -1026,10 +1026,10 @@ SELECT hex(keccak256('hello')) ## kostikConsistentHash {#kostikConsistentHash} -引入版本:v22.6 +在 v22.6 中引入 -由 Konstantin 'Kostik' Oblakov 设计的 O(1) 时间和空间复杂度的一致性哈希算法。 -仅在 `n <= 32768` 时效率较高。 +由 Konstantin 'Kostik' Oblakov 提出的时间与空间复杂度均为 O(1) 的一致性哈希算法。 +仅在 `n <= 32768` 时性能较好。 **语法** @@ -1037,12 +1037,12 @@ SELECT hex(keccak256('hello')) kostikConsistentHash(input, n) ``` -**别名**:`yandexConsistentHash` +**别名**: `yandexConsistentHash` **参数** * `input` — 整数键。[`UInt64`](/sql-reference/data-types/int-uint) -* `n` — 桶的数量。[`UInt16`](/sql-reference/data-types/int-uint) +* `n` — 桶(bucket)数量。[`UInt16`](/sql-reference/data-types/int-uint) **返回值** @@ -1069,8 +1069,8 @@ SELECT kostikConsistentHash(16045690984833335023, 2); 生成一个 64 位的 [MetroHash](http://www.jandrewrogers.com/2015/05/27/metrohash/) 哈希值。 :::note -对于不同参数类型但输入值相同的情况,计算得到的哈希值可能相同。 -例如,这会影响不同大小的整数类型、包含相同数据的具名和非具名 `Tuple`,以及具有相同数据的 `Map` 与其对应的 `Array(Tuple(key, value))` 类型。 +对于相同的输入值,即使参数类型不同,计算出的哈希值也可能相同。 +例如,这会影响不同位宽的整数类型、包含相同数据的具名和非具名 `Tuple`,以及具有相同数据的 `Map` 与其对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -1081,7 +1081,7 @@ metroHash64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 数量可变的一组输入参数,用于计算哈希值。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 需要计算哈希值的数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** @@ -1089,27 +1089,27 @@ metroHash64(arg1[, arg2, ...]) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT metroHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MetroHash, toTypeName(MetroHash) AS type; ``` ```response title=Response -┌────────────MetroHash─┬─类型───┐ +┌────────────MetroHash─┬─type───┐ │ 14235658766382344533 │ UInt64 │ └──────────────────────┴────────┘ ``` ## murmurHash2_32 {#murmurHash2_32} -自 v18.5 版本引入 +引入版本:v18.5 计算输入值的 [MurmurHash2](https://github.com/aappleby/smhasher) 哈希值。 :::note -对于不同参数类型但具有相同输入值的情况,计算得到的哈希值可能相同。 -例如,这会影响不同长度的整数类型、包含相同数据的具名和非具名 `Tuple`,以及包含相同数据的 `Map` 与其对应的 `Array(Tuple(key, value))` 类型。 +对于相同的输入值,如果参数类型不同,计算得到的哈希值可能会相同。 +例如,这会影响不同大小的整数类型、具有相同数据的具名和未具名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -1120,7 +1120,7 @@ murmurHash2_32(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 要计算哈希的数量可变的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 用于计算哈希值的可变数量输入参数。[`Any`](/sql-reference/data-types) **返回值** @@ -1144,11 +1144,11 @@ SELECT murmurHash2_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: 引入版本:v18.10 -计算输入值的 [MurmurHash2](https://github.com/aappleby/smhasher) 散列值。 +计算输入值的 [MurmurHash2](https://github.com/aappleby/smhasher) 哈希值。 :::note -对于不同参数类型的相同输入值,计算得到的散列值可能会相同。 -例如,这会影响不同大小的整数类型、具有相同数据的具名和非具名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型。 +对于不同参数类型但具有相同输入值的情况,计算得到的哈希值可能相同。 +例如,这会影响不同大小的整数类型、具有相同数据的已命名和未命名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -1159,29 +1159,29 @@ murmurHash2_64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 需要计算哈希值的一组数量可变的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 需要计算哈希的一组数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回根据输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回对输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT murmurHash2_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash2, toTypeName(MurmurHash2) AS type; ``` ```response title=Response -┌──────────MurmurHash2─┬─类型───┐ +┌──────────MurmurHash2─┬─type───┐ │ 11832096901709403633 │ UInt64 │ └──────────────────────┴────────┘ ``` ## murmurHash3_128 {#murmurHash3_128} -在 v18.10 中引入 +自 v18.10 起引入。 计算输入值的 128 位 [MurmurHash3](https://github.com/aappleby/smhasher) 哈希值。 @@ -1193,15 +1193,15 @@ murmurHash3_128(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 要计算哈希值的数量可变的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 用于计算哈希值的一组数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回输入参数计算得到的 128 位 `MurmurHash3` 哈希值。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +返回根据输入参数计算得到的 128 位 `MurmurHash3` 哈希值。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT hex(murmurHash3_128('foo', 'foo', 'foo')); @@ -1215,13 +1215,13 @@ SELECT hex(murmurHash3_128('foo', 'foo', 'foo')); ## murmurHash3_32 {#murmurHash3_32} -自 v18.10 引入 +引入版本:v18.10 生成一个 [MurmurHash3](https://github.com/aappleby/smhasher) 哈希值。 :::note -对于参数类型不同但输入值相同的情况,计算得到的哈希值可能会相同。 -例如,这会影响不同大小的整数类型、具有相同数据的命名和未命名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型。 +对于不同参数类型的相同输入值,计算得到的哈希值可能相同。 +例如,这会影响不同位宽的整数类型、包含相同数据的已命名和未命名 `Tuple`,以及包含相同数据的 `Map` 与其对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -1232,15 +1232,15 @@ murmurHash3_32(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 用于计算哈希值的数量不定的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 要计算哈希值的一组可变数量的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回对输入参数计算得到的哈希值。[`UInt32`](/sql-reference/data-types/int-uint) +返回通过对输入参数计算得到的哈希值。[`UInt32`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type; @@ -1254,13 +1254,13 @@ SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23: ## murmurHash3_64 {#murmurHash3_64} -引入于:v18.10 +首次引入于:v18.10 计算输入值的 [MurmurHash3](https://github.com/aappleby/smhasher) 哈希值。 :::note -对于不同参数类型但输入值相同的情况,计算得到的哈希值可能会相同。 -例如,这会影响不同大小的整数类型、具有相同数据的具名和非具名 `Tuple`,以及具有相同数据的 `Map` 和对应的 `Array(Tuple(key, value))` 类型。 +对于不同参数类型但输入值相同的情况,计算得到的哈希值可能相同。 +例如,不同大小的整数类型、具有相同数据的具名和未具名 `Tuple`,以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型,都会受到影响。 ::: **语法** @@ -1271,36 +1271,36 @@ murmurHash3_64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 需要计算哈希值的可变数量的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 要计算哈希值的数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回输入参数的计算哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT murmurHash3_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type; ``` ```response title=Response -┌──────────MurmurHash3─┬─类型───┐ +┌──────────MurmurHash3─┬─type───┐ │ 11832096901709403633 │ UInt64 │ └──────────────────────┴────────┘ ``` ## ngramMinHash {#ngramMinHash} -引入自:v21.1 +引入版本:v21.1 -将一个 ASCII 字符串按 `ngramsize` 个字符拆分为 n-gram,并为每个 n-gram 计算哈希值,返回包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希值来计算最小哈希,使用 `hashnum` 个最大哈希值来计算最大哈希。 +将 ASCII 字符串按 `ngramsize` 个字符拆分为 n-gram,并为每个 n-gram 计算哈希值,返回包含这些哈希的元组。 +使用 `hashnum` 个最小哈希来计算整体最小哈希,并使用 `hashnum` 个最大哈希来计算整体最大哈希。 区分大小写。 -可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起使用来检测近似重复字符串。 -对于两个字符串,如果返回的哈希值完全相同,则认为这两个字符串相同。 +可配合 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 检测近似重复的字符串。 +对于两个字符串,如果返回的哈希在两者中完全相同,则这两个字符串相同。 **语法** @@ -1311,8 +1311,8 @@ ngramMinHash(string[, ngramsize, hashnum]) **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — 可选。n-gram 的大小,取值范围为从 `1` 到 `25` 的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为从 `1` 到 `25` 的任意数值。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -1334,10 +1334,10 @@ SELECT ngramMinHash('ClickHouse') AS Tuple; ## ngramMinHashArg {#ngramMinHashArg} -引入于:v21.1 +引入版本:v21.1 -将 ASCII 字符串拆分成由 `ngramsize` 个符号组成的 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由使用相同输入的 [`ngramMinHash`](#ngramMinHash) 函数计算得到。 -区分大小写。 +将一个 ASCII 字符串按 `ngramsize` 个字符划分为 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由基于相同输入的 [`ngramMinHash`](#ngramMinHash) 函数计算得到。 +该函数区分大小写。 **语法** @@ -1347,20 +1347,20 @@ ngramMinHashArg(string[, ngramsize, hashnum]) **参数** -* `string` — 需要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值为 `1` 到 `25` 之间的任意整数,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值为 `1` 到 `25` 之间的任意整数,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25` 之间的任意值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小哈希和最大哈希的数量,取值范围为 `1` 到 `25` 之间的任意值。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个元组的元组,每个元组中包含 `hashnum` 个 n-gram。[`Tuple(String)`](/sql-reference/data-types/tuple) +返回一个由两个元组组成的元组,每个元组包含 `hashnum` 个 n-gram。[`Tuple(String)`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query -SELECT ngramMinHashArg('ClickHouse') AS 元组; +SELECT ngramMinHashArg('ClickHouse') AS Tuple; ``` ```response title=Response @@ -1373,8 +1373,8 @@ SELECT ngramMinHashArg('ClickHouse') AS 元组; 引入版本:v21.1 -将一个 ASCII 字符串拆分成由 `ngramsize` 个符号组成的 n-gram 片段,并返回哈希值最小和最大的 n-gram,这些哈希值由使用相同输入的 [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) 函数计算得出。 -该函数对大小写不敏感。 +将 ASCII 字符串拆分为长度为 `ngramsize` 的 n-gram,并返回具有最小和最大哈希值的 n-gram,这些哈希值是通过对相同输入调用 [`ngramMinHashCaseInsensitive`](#ngramMinHashCaseInsensitive) FUNCTION 计算得到的。 +该函数不区分大小写。 **语法** @@ -1384,17 +1384,17 @@ ngramMinHashArgCaseInsensitive(string[, ngramsize, hashnum]) **参数** -* `string` — 需要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的长度,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小哈希和最大哈希的个数,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个元组的元组,每个元组各包含 `hashnum` 个 n-gram。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个包含两个元组的元组,其中每个元组包含 `hashnum` 个 n-gram。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple; @@ -1408,9 +1408,9 @@ SELECT ngramMinHashArgCaseInsensitive('ClickHouse') AS Tuple; ## ngramMinHashArgCaseInsensitiveUTF8 {#ngramMinHashArgCaseInsensitiveUTF8} -引入版本:v21.1 +引入于:v21.1 -将 UTF-8 字符串按 `ngramsize` 个符号划分为若干 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由使用相同输入的 ngramMinHashCaseInsensitiveUTF8 函数计算得出。 +将 UTF-8 字符串拆分为长度为 `ngramsize` 的 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由对相同输入调用 ngramMinHashCaseInsensitiveUTF8 函数计算得到。 该函数不区分大小写。 **语法** @@ -1421,17 +1421,17 @@ ngramMinHashArgCaseInsensitiveUTF8(string[, ngramsize, hashnum]) **参数** -* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值为 `1` 到 `25` 之间的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值为 `1` 到 `25` 之间的任意数值。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希的字符串值。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 可选。n-gram 的长度,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小哈希和最大哈希的数量,取值范围为 `1` 到 `25`,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个元组,其中包含两个元组,每个元组中有 `hashnum` 个 n-gram。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个元组,其中包含两个元组,每个元组包含 `hashnum` 个 n-gram。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple; @@ -1447,7 +1447,7 @@ SELECT ngramMinHashArgCaseInsensitiveUTF8('ClickHouse') AS Tuple; 引入版本:v21.1 -将 UTF-8 字符串拆分为由 `ngramsize` 个符号组成的 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值由使用相同输入的 `ngramMinHashUTF8` 函数计算。 +将 UTF-8 字符串拆分为由 `ngramsize` 个字符组成的 n-gram,并返回哈希值最小和最大的 n-gram,这些哈希值是通过对相同输入使用 `ngramMinHashUTF8` 函数计算得到的。 区分大小写。 **语法** @@ -1458,17 +1458,17 @@ ngramMinHashArgUTF8(string[, ngramsize, hashnum]) **参数** -* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值为 `1` 到 `25` 之间的任意值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小哈希值和最大哈希值的数量,取值为 `1` 到 `25` 之间的任意值。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 需要计算哈希的字符串。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希的数量,取值范围为 `1` 到 `25`,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个元组,其中包含两个元组,每个元组包含 `hashnum` 个 n-gram。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个包含两个元组的元组,每个元组包含 `hashnum` 个 n-gram。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple; @@ -1484,22 +1484,22 @@ SELECT ngramMinHashArgUTF8('ClickHouse') AS Tuple; 引入于:v21.1 -将一个 ASCII 字符串按长度为 `ngramsize` 的 n-gram 片段拆分,并计算每个 n-gram 的哈希值,返回包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希值来计算最小哈希,并使用 `hashnum` 个最大哈希值来计算最大哈希。 -该函数不区分大小写。 +将 ASCII 字符串拆分为由 `ngramsize` 个字符组成的 n-gram,计算每个 n-gram 的哈希值,并返回一个包含这些哈希的元组。 +使用 `hashnum` 个最小哈希来计算最小哈希,使用 `hashnum` 个最大哈希来计算最大哈希。 +该函数对大小写不敏感。 -可以配合 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 用于检测近似重复的字符串。 -对于两个字符串,如果返回的哈希在两者之间完全相同,则这两个字符串相同。 +可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起使用来检测近似重复的字符串。 +对于两个字符串,如果它们返回的哈希相同,则认为这两个字符串相同。 **语法** ```sql -ngramMinHashCaseInsensitive(字符串[, n-gram大小, 哈希数]) +ngramMinHashCaseInsensitive(string[, ngramsize, hashnum]) ``` **参数** -* `string` — 字符串。[String](../data-types/string.md)。- `ngramsize` — n-gram 的大小。可选。可取值:从 `1` 到 `25` 的任意数。默认值:`3`。[UInt8](../data-types/int-uint.md)。- `hashnum` — 用于计算结果的最小和最大哈希值的数量。可选。可取值:从 `1` 到 `25` 的任意数。默认值:`6`。[UInt8](../data-types/int-uint.md)。 +* `string` — 字符串。[String](../data-types/string.md)。- `ngramsize` — n-gram 的大小。可选。取值范围:`1` 到 `25` 的任意数值。默认值:`3`。[UInt8](../data-types/int-uint.md)。- `hashnum` — 用于计算结果的最小和最大哈希的数量。可选。取值范围:`1` 到 `25` 的任意数值。默认值:`6`。[UInt8](../data-types/int-uint.md)。 **返回值** @@ -1514,7 +1514,7 @@ SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple; ``` ```response title=Response -┌─元组──────────────────────────────────────┐ +┌─Tuple──────────────────────────────────────┐ │ (2106263556442004574,13203602793651726206) │ └────────────────────────────────────────────┘ ``` @@ -1523,28 +1523,28 @@ SELECT ngramMinHashCaseInsensitive('ClickHouse') AS Tuple; 引入版本:v21.1 -将 UTF-8 字符串按 `ngramsize` 个字符拆分为 n-gram,并为每个 n-gram 计算哈希值,返回一个包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希值来计算最小哈希,并使用 `hashnum` 个最大哈希值来计算最大哈希。 -对大小写不敏感。 +将一个 UTF-8 字符串按 `ngramsize` 个字符拆分为 n-gram,并为每个 n-gram 计算哈希值,返回包含这些哈希值的元组。 +使用 `hashnum` 个最小哈希来计算最小哈希值,并使用 `hashnum` 个最大哈希来计算最大哈希值。 +该函数不区分大小写。 -可以与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 结合使用以检测近似重复字符串。 -对于两个字符串,如果返回的哈希在两者中完全相同,则这两个字符串被视为相同。 +可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起使用,以检测近似重复的字符串。 +对于两个字符串,如果返回的哈希值完全相同,则这两个字符串相同。 **语法** ```sql -ngramMinHashCaseInsensitiveUTF8(字符串 [, ngram大小, 哈希数]) +ngramMinHashCaseInsensitiveUTF8(string [, ngramsize, hashnum]) ``` **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的长度,取值为 `1` 到 `25` 之间的任意数。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值的个数,取值为 `1` 到 `25` 之间的任意数。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个哈希值(最小值和最大值)的元组。[`Tuple`](/sql-reference/data-types/tuple) +返回一个包含两个哈希值的元组,分别为最小哈希和最大哈希。[`Tuple`](/sql-reference/data-types/tuple) **示例** @@ -1555,21 +1555,21 @@ SELECT ngramMinHashCaseInsensitiveUTF8('ClickHouse') AS Tuple; ``` ```response title=Response -┌─元组───────────────────────────────────────┐ +┌─Tuple───────────────────────────────────────┐ │ (12493625717655877135,13203602793651726206) │ └─────────────────────────────────────────────┘ ``` ## ngramMinHashUTF8 {#ngramMinHashUTF8} -引入于:v21.1 +引入版本:v21.1 -将一个 UTF-8 字符串划分为由 `ngramsize` 个符号组成的 n-gram,并为每个 n-gram 计算哈希值,然后返回包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希来计算最小哈希,并使用 `hashnum` 个最大哈希来计算最大哈希。 -区分大小写。 +将一个 UTF-8 字符串拆分为由 `ngramsize` 个字符组成的 n-gram,为每个 n-gram 计算哈希值,并返回一个包含这些哈希值的元组。 +使用 `hashnum` 个最小哈希值来计算最小哈希,使用 `hashnum` 个最大哈希值来计算最大哈希。 +该函数区分大小写。 -可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起用于检测近似重复字符串。 -对于两个字符串,如果两者返回的哈希完全相同,则认为这两个字符串相同。 +可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 配合使用,用于检测近似重复的字符串。 +对于两个字符串,如果它们返回的哈希值相同,则认为这两个字符串相同。 **语法** @@ -1579,13 +1579,13 @@ ngramMinHashUTF8(string[, ngramsize, hashnum]) **参数** -* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值为 `1` 到 `25` 的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值为 `1` 到 `25` 的任意数值。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25` 之间的任意整数。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希值数量,取值范围为 `1` 到 `25` 之间的任意整数。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个哈希值(最小值和最大值)的元组。[`Tuple`](/sql-reference/data-types/tuple) +返回一个包含两个哈希值的元组——最小值和最大值。[`Tuple`](/sql-reference/data-types/tuple) **示例** @@ -1596,18 +1596,18 @@ SELECT ngramMinHashUTF8('ClickHouse') AS Tuple; ``` ```response title=Response -┌─元组──────────────────────────────────────┐ +┌─Tuple──────────────────────────────────────┐ │ (18333312859352735453,6742163577938632877) │ └────────────────────────────────────────────┘ ``` ## ngramSimHash {#ngramSimHash} -在 v21.1 中引入 +引入版本:v21.1 -将一个 ASCII 字符串拆分为由 `ngramsize` 个字符组成的 n-gram,并返回其 n-gram 的 `simhash` 值。 +将 ASCII 字符串按 `ngramsize` 个符号切分为长度为 `ngramsize` 的 n-gram,并返回这些 n-gram 的 `simhash`。 -可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 一起用于检测近似重复字符串。两个字符串计算得到的 `simhash` 之间的 [汉明距离](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串越有可能相同。 +可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 结合使用来检测近似重复的字符串。两个字符串计算得到的 `simhashes` 之间的 [Hamming 距离](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串相同的可能性就越大。 **语法** @@ -1617,12 +1617,12 @@ ngramSimHash(string[, ngramsize]) **参数** -* `string` — 要计算区分大小写 `simhash` 的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的长度,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 需要计算区分大小写 `simhash` 的字符串。[`String`](/sql-reference/data-types/string) +* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25` 的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回输入字符串的计算哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回输入字符串计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -1642,21 +1642,21 @@ SELECT ngramSimHash('ClickHouse') AS Hash; 引入于:v21.1 -将一个 ASCII 字符串按 `ngramsize` 个符号拆分为 n-gram,并返回这些 n-gram 的 `simhash`。 -不区分大小写。 +将一个 ASCII 字符串按 `ngramsize` 个符号拆分为 n-gram 子串,并返回这些 n-gram 的 `simhash`。 +该函数不区分大小写。 -可与 [`bitHammingDistance`](/sql-reference/functions/bit-functions#bitHammingDistance) 一起用于检测近似重复的字符串。 -两个字符串计算得到的 `simhash` 之间的 [汉明距离](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串相同的可能性就越大。 +可结合 [`bitHammingDistance`](/sql-reference/functions/bit-functions#bitHammingDistance) 用于检测近似重复的字符串。 +两个字符串计算得到的 `simhashes` 之间的 [Hamming distance](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串相同的可能性就越大。 **语法** ```sql -ngramSimHashCaseInsensitive(字符串[, n元大小]) +ngramSimHashCaseInsensitive(string[, ngramsize]) ``` **参数** -* `string` — 要计算不区分大小写的 `simhash` 的字符串。[`String`](/sql-reference/data-types/string) +* `string` — 要计算其不区分大小写 `simhash` 值的字符串。[`String`](/sql-reference/data-types/string) * `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -1672,30 +1672,30 @@ SELECT ngramSimHashCaseInsensitive('ClickHouse') AS Hash; ``` ```response title=Response -┌──────哈希─┐ +┌──────Hash─┐ │ 562180645 │ └───────────┘ ``` ## ngramSimHashCaseInsensitiveUTF8 {#ngramSimHashCaseInsensitiveUTF8} -引入于:v21.1 +引入版本:v21.1 -将一个 UTF-8 字符串拆分为由 `ngramsize` 个符号组成的 n-gram,并返回这些 n-gram 的 `simhash` 值。\ -此函数不区分大小写。 +将 UTF-8 字符串按 `ngramsize` 个字符切分为 n-gram,并返回这些 n-gram 的 `simhash`。 +该函数对大小写不敏感。 -可与 [bitHammingDistance](../functions/bit-functions.md/#bitHammingDistance) 一起用于检测近似重复字符串。两个字符串计算得到的 `simhashes` 之间的 [Hamming Distance](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串相同的可能性就越大。 +可与 [bitHammingDistance](../functions/bit-functions.md/#bitHammingDistance) 配合使用,用于检测近似重复的字符串。两个字符串计算得到的 `simhash` 值之间的 [Hamming Distance](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串为同一内容的可能性就越大。 **语法** ```sql -ngramSimHashCaseInsensitiveUTF8(字符串[, n元语法大小]) +ngramSimHashCaseInsensitiveUTF8(string[, ngramsize]) ``` **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25` 的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — 可选。n-gram 的长度,取值为 `1` 到 `25` 之间的任意数值,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -1706,24 +1706,24 @@ ngramSimHashCaseInsensitiveUTF8(字符串[, n元语法大小]) **使用示例** ```sql title=Query -SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS 哈希值; +SELECT ngramSimHashCaseInsensitiveUTF8('ClickHouse') AS Hash; ``` ```response title=Response -┌───────哈希─┐ +┌───────Hash─┐ │ 1636742693 │ └────────────┘ ``` ## ngramSimHashUTF8 {#ngramSimHashUTF8} -引入于:v21.1 +引入版本:v21.1 -将一个 UTF-8 编码的字符串按 `ngramsize` 个字符拆分为 n-gram,并返回对应的 n-gram `simhash` 值。 -该函数区分大小写。 +将 UTF-8 编码的字符串按每 `ngramsize` 个符号切分为 n-gram,并返回该 n-gram 的 `simhash`。 +区分大小写。 -可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 搭配使用,以检测近似重复的字符串。 -两个字符串计算得到的 `simhashes` 的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,这两个字符串相同的可能性就越大。 +可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 配合使用,用于检测近似重复的字符串。 +两个字符串计算得到的 `simhashes` 之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,这两个字符串相同的可能性就越大。 **语法** @@ -1734,7 +1734,7 @@ ngramSimHashUTF8(string[, ngramsize]) **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `ngramsize` — 可选。n-gram 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `ngramsize` — 可选。n-gram 的长度,取值范围为 `1` 到 `25` 之间的任意整数。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -1742,7 +1742,7 @@ ngramSimHashUTF8(string[, ngramsize]) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT ngramSimHashUTF8('ClickHouse') AS Hash; @@ -1758,11 +1758,11 @@ SELECT ngramSimHashUTF8('ClickHouse') AS Hash; 引入版本:v1.1 -与 [`sipHash64`](#sipHash64) 类似,但会生成 128 位哈希值,即最终的异或折叠状态保留到 128 位。 +与 [`sipHash64`](#sipHash64) 类似,但生成 128 位哈希值,即最终的 xor 折叠状态为 128 位。 :::tip 新项目请使用 sipHash128Reference -这个 128 位变体与参考实现不同,且更弱。 -之所以存在该版本,是因为在编写它时,SipHash 还没有官方的 128 位扩展。 +此 128 位变体与参考实现不同,且更弱。 +该版本存在的原因是,在其编写时,SipHash 尚无官方的 128 位扩展。 建议新项目使用 [`sipHash128Reference`](#sipHash128Reference)。 ::: @@ -1774,11 +1774,11 @@ sipHash128(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 要计算哈希值的可变数量的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 需要计算哈希的可变数量输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回一个 128 位的 `SipHash` 哈希值。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +返回 128 位的 `SipHash` 哈希值。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **示例** @@ -1796,14 +1796,14 @@ SELECT hex(sipHash128('foo', '\x01', 3)); ## sipHash128Keyed {#sipHash128Keyed} -引入于:v23.2 +引入版本:v23.2 -与 [`sipHash128`](#sipHash128) 相同,但额外接受一个显式的密钥参数,而不是使用固定的密钥。 +与 [`sipHash128`](#sipHash128) 相同,但额外接收一个显式密钥参数,而不是使用固定密钥。 -:::tip 新项目请使用 sipHash128ReferenceKeyed -这个 128 位变体与参考实现不同,安全性也更弱。 -该版本之所以存在,是因为在其编写时,SipHash 还没有官方的 128 位扩展。 -新项目应当优先使用 [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed)。 +:::tip 在新项目中使用 sipHash128ReferenceKeyed +这个 128 位变体与参考实现不同,而且更弱。 +该版本存在的原因是,在编写它时,SipHash 还没有官方的 128 位扩展。 +新项目应优先考虑使用 [`sipHash128ReferenceKeyed`](#sipHash128ReferenceKeyed)。 ::: **语法** @@ -1814,8 +1814,8 @@ sipHash128Keyed((k0, k1), [arg1, arg2, ...]) **参数** -* `(k0, k1)` — 表示键的两个 UInt64 值构成的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[, arg2, ...]` — 需要计算哈希的数量可变的输入参数。[`Any`](/sql-reference/data-types) +* `(k0, k1)` — 由两个 UInt64 值组成、表示密钥的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +* `arg1[, arg2, ...]` — 数量可变的一组输入参数,用于计算哈希值。[`Any`](/sql-reference/data-types) **返回值** @@ -1823,7 +1823,7 @@ sipHash128Keyed((k0, k1), [arg1, arg2, ...]) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT hex(sipHash128Keyed((506097522914230528, 1084818905618843912),'foo', '\x01', 3)); @@ -1837,9 +1837,9 @@ SELECT hex(sipHash128Keyed((506097522914230528, 1084818905618843912),'foo', '\x0 ## sipHash128Reference {#sipHash128Reference} -在 v23.2 中引入 +自 v23.2 引入 -与 [`sipHash128`](/sql-reference/functions/hash-functions#sipHash128) 类似,但实现的是 SipHash 原作者提出的 128 位算法。 +与 [`sipHash128`](/sql-reference/functions/hash-functions#sipHash128) 类似,但实现了 SipHash 原始作者提出的 128 位算法。 **语法** @@ -1849,7 +1849,7 @@ sipHash128Reference(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 个数不定的输入参数,用于计算哈希值。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 要计算哈希值的一组数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** @@ -1857,7 +1857,7 @@ sipHash128Reference(arg1[, arg2, ...]) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT hex(sipHash128Reference('foo', '', 3)); @@ -1871,9 +1871,9 @@ SELECT hex(sipHash128Reference('foo', '', 3)); ## sipHash128ReferenceKeyed {#sipHash128ReferenceKeyed} -自 v23.2 引入 +引入版本:v23.2 -与 [`sipHash128Reference`](#sipHash128Reference) 相同,但多接受一个显式的密钥参数,而不是使用固定密钥。 +与 [`sipHash128Reference`](#sipHash128Reference) 相同,但另外需要显式提供一个密钥参数,而不是使用固定密钥。 **语法** @@ -1883,8 +1883,8 @@ sipHash128ReferenceKeyed((k0, k1), arg1[, arg2, ...]) **参数** -* `(k0, k1)` — 由两个值组成、表示键的元组 [`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[, arg2, ...]` — 需要计算哈希的一组可变数量的输入参数。[`Any`](/sql-reference/data-types) +* `(k0, k1)` — 由两个值组成的密钥元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +* `arg1[, arg2, ...]` — 需要计算哈希的可变数量输入参数。[`Any`](/sql-reference/data-types) **返回值** @@ -1892,7 +1892,7 @@ sipHash128ReferenceKeyed((k0, k1), arg1[, arg2, ...]) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT hex(sipHash128Reference('foo', '', 3)); @@ -1910,18 +1910,18 @@ SELECT hex(sipHash128Reference('foo', '', 3)); 生成一个 64 位的 [SipHash](https://en.wikipedia.org/wiki/SipHash) 哈希值。 -这是一个密码学哈希函数。其运行速度至少是 [`MD5`](#MD5) 哈希函数的三倍。 +这是一个密码学哈希函数,其速度至少比 [`MD5`](#MD5) 哈希函数快三倍。 -该函数会将所有输入参数都[按字符串解释](/sql-reference/functions/type-conversion-functions#reinterpretasstring),并为每个参数计算哈希值。 -然后通过以下算法组合这些哈希值: +该函数会将所有输入参数[解释](/sql-reference/functions/type-conversion-functions#reinterpretasstring)为字符串,并为每个参数计算哈希值。 +然后使用以下算法组合这些哈希值: -1. 将第一个和第二个哈希值拼接成一个数组并对其进行哈希。 -2. 将前一步计算出的哈希值与第三个输入参数的哈希值以类似方式进行哈希。 -3. 对原始输入剩余的所有哈希值重复此计算。 +1. 将第一个和第二个哈希值拼接成一个数组并对该数组进行哈希。 +2. 以类似方式,将前一步计算得到的哈希值与第三个输入参数的哈希值进行哈希。 +3. 对原始输入剩余的所有哈希值重复此计算过程。 :::note -对于参数类型不同但输入值相同的情况,计算得到的哈希值可能会相同。 -这会影响例如不同大小的整数类型、具有相同数据的已命名和未命名 `Tuple`、以及具有相同数据的 `Map` 与对应的 `Array(Tuple(key, value))` 类型。 +对于不同参数类型但值相同的输入,计算出的哈希值可能会相同。 +例如,这会影响到不同大小的整数类型、具有相同数据的具名和未具名 `Tuple`,以及具有相同数据的 `Map` 和对应的 `Array(Tuple(key, value))` 类型。 ::: **语法** @@ -1932,11 +1932,11 @@ sipHash64(arg1[, arg2, ...]) **参数** -* `arg1[, arg2, ...]` — 不定数量的输入参数。[`Any`](/sql-reference/data-types) +* `arg1[, arg2, ...]` — 数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回根据输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回对输入参数计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -1947,16 +1947,16 @@ SELECT sipHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00 ``` ```response title=Response -┌──────────────SipHash─┬─类型───┐ +┌──────────────SipHash─┬─type───┐ │ 11400366955626497465 │ UInt64 │ └──────────────────────┴────────┘ ``` ## sipHash64Keyed {#sipHash64Keyed} -自 v23.2 起引入 +引入于:v23.2 -与 [`sipHash64`](#sipHash64) 类似,但多了一个显式密钥参数,而不是使用固定密钥。 +与 [`sipHash64`](#sipHash64) 类似,但额外接受一个显式的密钥参数,而不是使用固定密钥。 **语法** @@ -1966,12 +1966,12 @@ sipHash64Keyed((k0, k1), arg1[,arg2, ...]) **参数** -* `(k0, k1)` — 表示键的、由两个值组成的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) -* `arg1[,arg2, ...]` — 可变数量的输入参数。[`Any`](/sql-reference/data-types) +* `(k0, k1)` — 由两个值组成的元组,用于表示密钥。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +* `arg1[,arg2, ...]` — 数量可变的输入参数。[`Any`](/sql-reference/data-types) **返回值** -返回对输入值计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回输入值计算得到的哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -1982,21 +1982,21 @@ SELECT sipHash64Keyed((506097522914230528, 1084818905618843912), array('e','x',' ``` ```response title=Response -┌─────────────SipHash─┬─类型───┐ +┌─────────────SipHash─┬─type───┐ │ 8017656310194184311 │ UInt64 │ └─────────────────────┴────────┘ ``` ## wordShingleMinHash {#wordShingleMinHash} -引入于:v21.1 +引入版本:v21.1 -将一个 ASCII 字符串按 `shinglesize` 个单词划分成若干片段(shingle),计算每个单词片段的哈希值,并返回包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希来计算最小哈希值,使用 `hashnum` 个最大哈希来计算最大哈希值。 -该函数区分大小写。 +将 ASCII 字符串按单词划分为由 `shinglesize` 个单词组成的片段(shingle),对每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。 +使用 `hashnum` 个最小哈希值来计算最小哈希,并使用 `hashnum` 个最大哈希值来计算最大哈希。 +区分大小写。 -可结合 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 用于检测部分重复的字符串。 -对于两个字符串,如果返回的哈希值完全相同,则认为这两个字符串相同。 +可配合 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 用于检测部分重复的字符串。 +对于两个字符串,如果两者返回的哈希值完全相同,则认为这两个字符串相同。 **语法** @@ -2006,20 +2006,20 @@ wordShingleMinHash(string[, shinglesize, hashnum]) **参数** -* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词 shingle 的长度,取值范围为 `1` 到 `25` 的任意整数,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值数量,取值范围为 `1` 到 `25` 的任意整数,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算其哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。词 shingle(词片段)的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个哈希值(最小值和最大值)的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +返回包含两个哈希值(最小值和最大值)的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query -SELECT wordShingleMinHash('ClickHouse® 是用于联机分析处理(OLAP)查询的列式数据库管理系统(DBMS)。') AS Tuple; +SELECT wordShingleMinHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2032,8 +2032,8 @@ SELECT wordShingleMinHash('ClickHouse® 是用于联机分析处理(OLAP)查 引入版本:v1.1 -将一个 ASCII 字符串按每 `shinglesize` 个单词拆分为若干部分(shingle),并返回其中单词哈希值最小和最大的这些 shingle,这些哈希值是通过在相同输入上调用 wordShingleMinHash 函数计算得到的。 -区分大小写。 +将 ASCII 字符串按每 `shinglesize` 个单词切分为若干 shingle 片段,并返回其中单词哈希值最小和最大的 shingle,这些哈希值是通过对相同输入调用 wordShingleMinHash 函数计算得到的。 +该函数区分大小写。 **语法** @@ -2044,24 +2044,24 @@ wordShingleMinHashArg(string[, shinglesize, hashnum]) **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。单词 shingle 的大小,取值范围为 `1` 到 `25` 的任意数字,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值范围为 `1` 到 `25` 的任意数字,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 可选。词片(word shingle)的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个元组的元组,每个元组包含 `hashnum` 个单词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个元组,其中包含两个元组,每个元组包含 `hashnum` 个词片(word shingle)。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** **使用示例** ```sql title=Query -SELECT wordShingleMinHashArg('ClickHouse® 是一款列式数据库管理系统 (DBMS),用于联机分析处理 (OLAP) 查询。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArg('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple─────────────────────────────────────────────────────────────────┐ -│ (('OLAP','数据库','分析型'),('在线','面向','处理')) │ +│ (('OLAP','database','analytical'),('online','oriented','processing')) │ └───────────────────────────────────────────────────────────────────────┘ ``` @@ -2069,8 +2069,8 @@ SELECT wordShingleMinHashArg('ClickHouse® 是一款列式数据库管理系统 引入版本:v21.1 -将一个 ASCII 字符串按每 `shinglesize` 个单词拆分为若干部分(shingles),并返回其中单词哈希值最小和最大的 shingles,这些哈希值是通过使用相同输入的 [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) 函数计算得到的。 -该函数不区分大小写。 +将 ASCII 字符串按每 `shinglesize` 个单词拆分成若干片段(shingle),并返回其中单词哈希值最小和最大的这些 shingle,这些哈希值是通过使用相同输入调用 [`wordShingleMinHashCaseInsensitive`](#wordShingleMinHashCaseInsensitive) 函数计算得到的。 +该函数对大小写不敏感。 **语法** @@ -2080,34 +2080,34 @@ wordShingleMinHashArgCaseInsensitive(string[, shinglesize, hashnum]) **参数** -* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词 shingle 的长度,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希的数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。单词 shingle 的长度,取值范围为 `1` 到 `25` 的任意整数。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小/最大哈希值的数量,取值范围为 `1` 到 `25` 的任意整数。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个元组的元组,每个元组中包含 `hashnum` 个词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个元组,其中包含两个元组,每个元组包含 `hashnum` 个单词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** -**用法示例** +**使用示例** ```sql title=Query -SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® 是一款列式数据库管理系统(DBMS),用于对查询进行联机分析处理(OLAP)。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple──────────────────────────────────────────────────────────────────┐ -│ (('查询','数据库','分析型'),('面向','处理','数据库管理系统')) │ +│ (('queries','database','analytical'),('oriented','processing','DBMS')) │ └────────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashArgCaseInsensitiveUTF8 {#wordShingleMinHashArgCaseInsensitiveUTF8} -引入版本:v21.1 +引入于:v21.1 -将一个 UTF-8 字符串按每段包含 `shinglesize` 个单词拆分为多个部分(shingle),并返回按单词哈希值计算出的最小和最大的 shingle。这些哈希值由在相同输入下调用的 [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) 函数计算。 -该函数对大小写不敏感。 +将一个 UTF-8 字符串拆分成由 `shinglesize` 个单词组成的分区片段(shingles),并返回其中单词哈希值最小和最大的这些分区片段,这些哈希值由使用相同输入的 [`wordShingleMinHashCaseInsensitiveUTF8`](#wordShingleMinHashCaseInsensitiveUTF8) 函数计算得出。 +该函数大小写不敏感。 **语法** @@ -2118,32 +2118,32 @@ wordShingleMinHashArgCaseInsensitiveUTF8(string[, shinglesize, hashnum]) **参数** * `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词 shingle 的长度,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小哈希和最小哈希数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 可选。词 shingle 的大小,可以是从 `1` 到 `25` 的任意数值,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,可以是从 `1` 到 `25` 的任意数值,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个元组的元组,每个元组包含 `hashnum` 个词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个元组,其中包含两个元组,每个内部元组包含 `hashnum` 个词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query -SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® 是一款面向联机分析处理 (OLAP) 查询的列式数据库管理系统 (DBMS)。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple──────────────────────────────────────────────────────────────────┐ -│ (('查询','数据库','分析型'),('面向','处理','数据库管理系统')) │ +│ (('queries','database','analytical'),('oriented','processing','DBMS')) │ └────────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashArgUTF8 {#wordShingleMinHashArgUTF8} -引入版本:v21.1 +引入于:v21.1 -将一个 UTF-8 字符串按每 `shinglesize` 个单词拆分为若干部分(shingles),并返回其中具有最小和最大单词哈希值的 shingles,这些哈希值由使用相同输入的 [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) 函数计算得到。 +将 UTF-8 字符串按每 `shinglesize` 个单词划分为一个 shingle(片段),并返回其中单词哈希值最小和最大的 shingle,这些哈希值由使用相同输入的 [`wordShingleMinHashUTF8`](#wordShingleMinHashUTF8) 函数计算得到。 区分大小写。 **语法** @@ -2154,61 +2154,61 @@ wordShingleMinHashArgUTF8(string[, shinglesize, hashnum]) **参数** -* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。单词 shingle 的大小,取值为 `1` 到 `25` 之间的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值为 `1` 到 `25` 之间的任意数值。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。单词 shingle 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个元组的元组,每个元组中有 `hashnum` 个单词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) +返回一个包含两个元组的元组,每个内层元组各包含 `hashnum` 个单词 shingle。[`Tuple(Tuple(String))`](/sql-reference/data-types/tuple) **示例** **使用示例** ```sql title=Query -SELECT wordShingleMinHashArgUTF8('ClickHouse® 是一款用于联机分析处理 (OLAP) 查询的列式数据库管理系统 (DBMS)。', 1, 3) AS Tuple; +SELECT wordShingleMinHashArgUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).', 1, 3) AS Tuple; ``` ```response title=Response ┌─Tuple─────────────────────────────────────────────────────────────────┐ -│ (('OLAP','数据库','分析型'),('联机','面向','处理')) │ +│ (('OLAP','database','analytical'),('online','oriented','processing')) │ └───────────────────────────────────────────────────────────────────────┘ ``` ## wordShingleMinHashCaseInsensitive {#wordShingleMinHashCaseInsensitive} -引入于:v21.1 +引入版本:v21.1 -将一个 ASCII 字符串按 `shinglesize` 个单词切分成若干部分(shingle),为每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希来计算最小哈希,使用 `hashnum` 个最大哈希来计算最大哈希。 -该函数不区分大小写。 +将一个 ASCII 字符串按 `shinglesize` 个单词拆分为若干片段(shingle),对每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组(tuple)。 +使用 `hashnum` 个最小哈希值来计算最小哈希,并使用 `hashnum` 个最大哈希值来计算最大哈希。 +该函数对大小写不敏感。 -可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起用于检测部分重复(近似重复)字符串。 -对于两个字符串,如果二者返回的哈希值完全相同,则这两个字符串相同。 +可配合 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起使用,用于检测近似重复字符串。 +对于两个字符串,如果返回的哈希值完全相同,则可认为这两个字符串相同。 **语法** ```sql -wordShingleMinHashCaseInsensitive(字符串[, 片段大小, 哈希数量]) +wordShingleMinHashCaseInsensitive(string[, shinglesize, hashnum]) ``` **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。单词 shingle 的大小,取值为 `1` 到 `25` 之间的任意整数。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值为 `1` 到 `25` 之间的任意整数。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 可选。词 shingle 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个哈希值(最小值和最大值)的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +返回一个包含两个哈希值的元组——最小值和最大值。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **示例** **用法示例** ```sql title=Query -SELECT wordShingleMinHashCaseInsensitive('ClickHouse® 是一款列式数据库管理系统 (DBMS),用于对查询执行联机分析处理 (OLAP)。') AS Tuple; +SELECT wordShingleMinHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2221,12 +2221,12 @@ SELECT wordShingleMinHashCaseInsensitive('ClickHouse® 是一款列式数据库 引入版本:v21.1 -将 UTF-8 字符串按 `shinglesize` 个单词拆分为若干单词片段(shingles),对每个单词 shingle 计算哈希值,并返回一个包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希来计算最小哈希值,使用 `hashnum` 个最大哈希来计算最大哈希值。 -该函数大小写不敏感。 +将 UTF-8 字符串按 `shinglesize` 个单词拆分为片段(shingle),为每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。 +使用 `hashnum` 个最小哈希来计算最小哈希,使用 `hashnum` 个最大哈希来计算最大哈希。 +该函数对大小写不敏感。 -可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 搭配使用,用于检测近似重复的字符串。 -对于两个字符串,如果它们返回的哈希完全一致,则认为这两个字符串相同。 +可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起使用以检测近似重复的字符串。 +对于两个字符串,如果它们返回的哈希完全相同,则认为这两个字符串相同。 **语法** @@ -2236,20 +2236,20 @@ wordShingleMinHashCaseInsensitiveUTF8(string[, shinglesize, hashnum]) **参数** -* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词 shingle 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。词 shingle(词片)的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个哈希的元组——最小值和最大值。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +返回一个包含两个哈希值(最小哈希值和最大哈希值)的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **示例** **用法示例** ```sql title=Query -SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® 是一款面向列的数据库管理系统(DBMS),用于执行查询的联机分析处理(OLAP)。') AS Tuple; +SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2260,14 +2260,14 @@ SELECT wordShingleMinHashCaseInsensitiveUTF8('ClickHouse® 是一款面向列的 ## wordShingleMinHashUTF8 {#wordShingleMinHashUTF8} -引入自:v21.1 +引入版本:v21.1 -将一个 UTF-8 字符串按 `shinglesize` 个单词拆分为若干片段(shingle),为每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。 -使用 `hashnum` 个最小哈希值来计算最小哈希,并使用 `hashnum` 个最大哈希值来计算最大哈希。 +将一个 UTF-8 字符串拆分为由 `shinglesize` 个单词组成的片段(shingle),对每个单词 shingle 计算哈希值,并返回包含这些哈希值的元组。 +使用 `hashnum` 个最小哈希来计算最小哈希,使用 `hashnum` 个最大哈希来计算最大哈希。 区分大小写。 -可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起用于检测近似重复的字符串。 -对于两个字符串,如果二者返回的哈希值完全相同,则这两个字符串相同。 +可与 [`tupleHammingDistance`](../functions/tuple-functions.md#tupleHammingDistance) 一起用于检测近似重复字符串。 +对于两个字符串,如果返回的哈希值完全相同,则这两个字符串相同。 **语法** @@ -2277,20 +2277,20 @@ wordShingleMinHashUTF8(string[, shinglesize, hashnum]) **参数** -* `string` — 需要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词 shingle 的长度,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) -* `hashnum` — 可选。用于计算结果的最小和最大哈希值的数量,取值范围为 `1` 到 `25`,默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。词 shingle 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `hashnum` — 可选。用于计算结果的最小和最大哈希数量,取值范围为 `1` 到 `25`。默认值为 `6`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个包含两个哈希值(最小值和最大值)的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) +返回包含两个哈希值(最小值和最大值)的元组。[`Tuple(UInt64, UInt64)`](/sql-reference/data-types/tuple) **示例** **使用示例** ```sql title=Query -SELECT wordShingleMinHashUTF8('ClickHouse® 是一款面向联机分析处理 (OLAP) 查询的列式数据库管理系统 (DBMS)。') AS Tuple; +SELECT wordShingleMinHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Tuple; ``` ```response title=Response @@ -2301,13 +2301,13 @@ SELECT wordShingleMinHashUTF8('ClickHouse® 是一款面向联机分析处理 (O ## wordShingleSimHash {#wordShingleSimHash} -自 v21.1 起引入 +引入于:v21.1 -将 ASCII 字符串按每 `shinglesize` 个单词切分为若干片段(shingle),并返回这些单词 shingle 的 `simhash` 值。 +将 ASCII 字符串按单词切分为由 `shinglesize` 个单词组成的 shingle 片段,并返回这些单词 shingle 的 `simhash` 值。 区分大小写。 -可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 一起用于检测近似重复字符串。 -两个字符串计算得到的 `simhash` 值之间的 [Hamming 距离](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串越有可能相同。 +可配合 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 用于检测相似(半重复)字符串。 +两个字符串计算得到的 `simhashes` 之间的 [汉明距离](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串相同的可能性就越大。 **语法** @@ -2317,8 +2317,8 @@ wordShingleSimHash(string[, shinglesize]) **参数** -* `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。单词 shingle 的大小,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。word shingle(单词片段)的长度,取值范围为 `1` 到 `25`。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -2326,10 +2326,10 @@ wordShingleSimHash(string[, shinglesize]) **示例** -**用法示例** +**使用示例** ```sql title=Query -SELECT wordShingleSimHash('ClickHouse® 是一款列式数据库管理系统(DBMS),用于联机分析处理(OLAP)查询。') AS Hash; +SELECT wordShingleSimHash('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2340,13 +2340,13 @@ SELECT wordShingleSimHash('ClickHouse® 是一款列式数据库管理系统(D ## wordShingleSimHashCaseInsensitive {#wordShingleSimHashCaseInsensitive} -引入版本:v21.1 +引入于:v21.1 -将一个 ASCII 字符串按 `shinglesize` 个单词拆分成若干部分(shingle),并返回这些单词 shingle 的 `simhash`。 +将 ASCII 字符串按 `shinglesize` 个单词拆分成 shingle 片段(shingles),并返回这些单词 shingle 的 `simhash`。 该函数不区分大小写。 -可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 一起用于检测近似重复字符串。 -两个字符串计算得到的 `simhashes` 之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,这两个字符串越有可能相同。 +可结合 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 用于检测部分重复(相似)字符串。 +两个字符串计算得到的 `simhashes` 之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,它们是同一字符串的可能性就越大。 **语法** @@ -2356,8 +2356,8 @@ wordShingleSimHashCaseInsensitive(string[, shinglesize]) **参数** -* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词组(shingle)的长度,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 用于计算哈希值的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。词片(word shingle)的大小,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -2368,7 +2368,7 @@ wordShingleSimHashCaseInsensitive(string[, shinglesize]) **用法示例** ```sql title=Query -SELECT wordShingleSimHashCaseInsensitive('ClickHouse® 是用于联机分析处理(OLAP)查询的列式数据库管理系统(DBMS)。') AS Hash; +SELECT wordShingleSimHashCaseInsensitive('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2381,22 +2381,22 @@ SELECT wordShingleSimHashCaseInsensitive('ClickHouse® 是用于联机分析处 引入版本:v1.1 -将 UTF-8 编码的字符串按 `shinglesize` 个单词拆分成多个部分(shingles),并返回这些单词 shingle 的 `simhash`。 -该函数不区分大小写。 +将一个 UTF-8 编码的字符串按 `shinglesize` 个单词划分为连续词片(shingles),并返回这些词片的 `simhash`。 +该函数对大小写不敏感。 -可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 一起用于检测部分重复的字符串。 -两个字符串计算得到的 `simhashes` 之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,这两个字符串越有可能相同。 +可配合 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 用于检测近似重复字符串。 +两个字符串计算得到的 `simhash` 之间的 [Hamming Distance(汉明距离)](https://en.wikipedia.org/wiki/Hamming_distance) 越小,这两个字符串越有可能是相同的。 **语法** ```sql -wordShingleSimHashCaseInsensitiveUTF8(字符串[, shingle大小]) +wordShingleSimHashCaseInsensitiveUTF8(string[, shinglesize]) ``` **参数** * `string` — 要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选。词 shingle 的长度,取值范围为 `1` 到 `25` 的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `shinglesize` — 可选。word shingle 的长度,取值范围为 `1` 到 `25` 的任意数值。默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -2404,10 +2404,10 @@ wordShingleSimHashCaseInsensitiveUTF8(字符串[, shingle大小]) **示例** -**用法示例** +**使用示例** ```sql title=Query -SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® 是一款列式数据库管理系统 (DBMS),用于联机分析处理 (OLAP) 查询。') AS Hash; +SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2418,13 +2418,13 @@ SELECT wordShingleSimHashCaseInsensitiveUTF8('ClickHouse® 是一款列式数据 ## wordShingleSimHashUTF8 {#wordShingleSimHashUTF8} -引入于:v21.1 +引入版本:v21.1 -将一个 UTF-8 字符串按 `shinglesize` 个单词划分为若干部分(shingle),并返回这些词片段的 `simhash`。 +将 UTF-8 字符串按 `shinglesize` 个单词拆分成若干部分(shingles),并返回这些单词 shingles 的 `simhash` 值。 区分大小写。 -可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 结合使用,用于检测近似重复字符串。 -两个字符串计算得到的 `simhash` 值之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,这两个字符串越有可能相同。 +可与 [`bitHammingDistance`](../functions/bit-functions.md/#bitHammingDistance) 配合使用来检测近似重复的字符串。 +两个字符串计算得到的 `simhashes` 之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)越小,这两个字符串相同的可能性就越大。 **语法** @@ -2434,8 +2434,8 @@ wordShingleSimHashUTF8(string[, shinglesize]) **参数** -* `string` — 需要计算哈希值的字符串。[`String`](/sql-reference/data-types/string) -* `shinglesize` — 可选参数。单词 shingle 的长度,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) +* `string` — 要计算哈希的字符串。[`String`](/sql-reference/data-types/string) +* `shinglesize` — 可选。词片段(shingle)的大小,取值范围为 `1` 到 `25`,默认值为 `3`。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** @@ -2443,10 +2443,10 @@ wordShingleSimHashUTF8(string[, shinglesize]) **示例** -**使用示例** +**用法示例** ```sql title=Query -SELECT wordShingleSimHashUTF8('ClickHouse® 是用于对查询进行联机分析处理 (OLAP) 的列式数据库管理系统 (DBMS)。') AS Hash; +SELECT wordShingleSimHashUTF8('ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).') AS Hash; ``` ```response title=Response @@ -2457,9 +2457,9 @@ SELECT wordShingleSimHashUTF8('ClickHouse® 是用于对查询进行联机分析 ## wyHash64 {#wyHash64} -自 v22.7 引入 +在 v22.7 版本中引入。 -计算 64 位 [wyHash64](https://github.com/wangyi-fudan/wyhash) 哈希值。 +计算 64 位的 [wyHash64](https://github.com/wangyi-fudan/wyhash) 哈希值。 **语法** @@ -2469,18 +2469,18 @@ wyHash64(arg) **参数** -* `arg` — 要计算哈希值的字符串参数。[`String`](/sql-reference/data-types/string) +* `arg` — 需要计算哈希值的字符串参数。[`String`](/sql-reference/data-types/string) **返回值** -返回计算得到的 64 位哈希值 [`UInt64`](/sql-reference/data-types/int-uint) +返回计算得到的 64 位哈希值,类型为 [`UInt64`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query -SELECT wyHash64('ClickHouse') AS 哈希; +SELECT wyHash64('ClickHouse') AS Hash; ``` ```response title=Response @@ -2489,11 +2489,11 @@ SELECT wyHash64('ClickHouse') AS 哈希; ## xxHash32 {#xxHash32} -引入版本:v20.1 +自 v20.1 版本引入。 计算字符串的 [xxHash](http://cyan4973.github.io/xxHash/) 哈希值。 -64 位版本请参见 [`xxHash64`](#xxHash64) +关于 64 位版本,请参阅 [`xxHash64`](#xxHash64)。 **语法** @@ -2503,11 +2503,11 @@ xxHash32(arg) **参数** -* `arg` — 用于计算哈希值的输入字符串。[`String`](/sql-reference/data-types/string) +* `arg` — 要哈希的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回输入字符串计算得到的 32 位哈希值。[`UInt32`](/sql-reference/data-types/int-uint) +返回输入字符串的 32 位哈希值。[`UInt32`](/sql-reference/data-types/int-uint) **示例** @@ -2525,11 +2525,11 @@ SELECT xxHash32('Hello, world!'); ## xxHash64 {#xxHash64} -自 v20.1 起提供 +自 v20.1 版本引入 -根据字符串计算一个 [xxHash](http://cyan4973.github.io/xxHash/)。 +计算字符串的 [xxHash](http://cyan4973.github.io/xxHash/)。 -32 位版本请参阅 [`xxHash32`](#xxHash32) +32 位版本参见 [`xxHash32`](#xxHash32) **语法** @@ -2543,11 +2543,11 @@ xxHash64(arg) **返回值** -返回对输入字符串计算得到的 64 位哈希值。[`UInt64`](/sql-reference/data-types/int-uint) +返回输入字符串计算得到的 64 位哈希值。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT xxHash64('Hello, world!'); @@ -2561,9 +2561,9 @@ SELECT xxHash64('Hello, world!'); ## xxh3 {#xxh3} -自 v22.12 引入 +引入版本:v22.12 -计算一个 [XXH3](https://github.com/Cyan4973/xxHash) 64 位哈希值。 +计算 [XXH3](https://github.com/Cyan4973/xxHash) 64 位哈希值。 **语法** @@ -2573,7 +2573,7 @@ xxh3(expr) **参数** -* `expr` — 任意数据类型的表达式列表。[`Any`](/sql-reference/data-types) +* `expr` — 由任意数据类型组成的表达式列表。[`Any`](/sql-reference/data-types) **返回值** @@ -2581,7 +2581,7 @@ xxh3(expr) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT xxh3('ClickHouse') diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md index 32abb4993f7..7cecc5b8c06 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/ip-address-functions.md @@ -1,16 +1,16 @@ --- -description: '关于用于处理 IPv4 和 IPv6 地址的函数的文档。' +description: '用于处理 IPv4 和 IPv6 地址的函数文档。' sidebar_label: 'IP 地址' slug: /sql-reference/functions/ip-address-functions -title: '用于处理 IPv4 和 IPv6 地址的函数' +title: 'IPv4 和 IPv6 地址处理函数' doc_type: 'reference' --- -# 处理 IPv4 和 IPv6 地址的函数 {#functions-for-working-with-ipv4-and-ipv6-addresses} +# 用于处理 IPv4 和 IPv6 地址的函数 {#functions-for-working-with-ipv4-and-ipv6-addresses} {/* - 下面这些标签的内部内容会在文档框架构建时 - 被从 system.functions 自动生成的文档替换。请勿修改或删除这些标签。 + 下面这些标签内的内容会在文档框架构建过程中被替换为 + 从 system.functions 生成的文档。请不要修改或删除这些标签。 参见:https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } @@ -20,7 +20,7 @@ doc_type: 'reference' 引入版本:v20.1 -接收一个带有无类别域间路由(Classless Inter-Domain Routing,CIDR)前缀长度的 IPv4 地址,并返回该子网的地址范围,形式为一个包含两个 IPv4 值的元组:该子网中的第一个地址和最后一个地址。 +接受一个带有无类别域间路由(CIDR)前缀长度的 IPv4 地址,并以包含两个 IPv4 值的元组形式返回该子网的地址范围:子网中的第一个地址和最后一个地址。 IPv6 版本请参见 [`IPv6CIDRToRange`](#IPv4CIDRToRange)。 **语法** @@ -36,7 +36,7 @@ IPv4CIDRToRange(ipv4, cidr) **返回值** -返回一个包含两个 IPv4 地址的元组,用于表示子网范围。[`Tuple(IPv4, IPv4)`](/sql-reference/data-types/tuple) +返回一个包含两个 IPv4 地址、用于表示子网范围的元组。[`Tuple(IPv4, IPv4)`](/sql-reference/data-types/tuple) **示例** @@ -56,8 +56,8 @@ SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16); 自 v1.1 版本引入 -将一个 32 位整数转换为其点分十进制表示形式的 IPv4 地址字符串(A.B.C.D 格式)。 -采用大端字节序来解析输入值。 +将一个 32 位整数转换为其 IPv4 地址在点分十进制表示中的字符串形式(A.B.C.D 格式)。 +使用大端字节序解释输入值。 **语法** @@ -69,15 +69,15 @@ IPv4NumToString(num) **参数** -* `num` — 以 UInt32 数字表示的 IPv4 地址。[`UInt32`](/sql-reference/data-types/int-uint) +* `num` — 以 UInt32 数值表示的 IPv4 地址。[`UInt32`](/sql-reference/data-types/int-uint) **返回值** -返回一个表示 IPv4 地址的字符串;如果格式无效则返回 `0`。[`String`](/sql-reference/data-types/string) +返回表示 MAC 地址的字符串,如果格式无效则返回 `0`。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query IPv4NumToString(3232235521) @@ -89,10 +89,10 @@ IPv4NumToString(3232235521) ## IPv4NumToStringClassC {#IPv4NumToStringClassC} -自 v1.1 起提供 +引入版本:v1.1 -将一个 32 位整数转换为以点分十进制表示法(A.B.C.D 格式)的 IPv4 地址字符串, -类似于 [`IPv4NumToString`](#IPv4NumToString),但使用 `xxx` 替代最后一个八位组。 +将 32 位整数转换为点分十进制表示法(A.B.C.D 格式)的 IPv4 地址字符串, +类似于 [`IPv4NumToString`](#IPv4NumToString),但使用 `xxx` 替代最后一个字节。 **语法** @@ -102,15 +102,15 @@ IPv4NumToStringClassC(num) **参数** -* `num` — 以 UInt32 无符号整数表示的 IPv4 地址。[`UInt32`](/sql-reference/data-types/int-uint) +* `num` — 以 UInt32 数字表示的 IPv4 地址。[`UInt32`](/sql-reference/data-types/int-uint) **返回值** -返回将最后一个八位组替换为 `xxx` 的 IPv4 地址字符串。[`String`](/sql-reference/data-types/string) +返回 IPv4 地址字符串,其中最后一个八位组被 xxx 替换。[`String`](/sql-reference/data-types/string) **示例** -**包含聚合的基本示例** +**带聚合的基本示例** ```sql title=Query SELECT @@ -139,10 +139,10 @@ LIMIT 10 ## IPv4StringToNum {#IPv4StringToNum} -引入于:v1.1 +自 v1.1 版本引入 -将点分十进制表示(A.B.C.D 格式)的 IPv4 地址字符串转换为对应的 32 位整数表示。(是 [`IPv4NumToString`](#IPv4NumToString) 的逆操作)。 -如果 IPv4 地址格式无效,将抛出异常。 +将点分十进制表示的 IPv4 地址字符串(A.B.C.D 格式)转换为对应的 32 位整数表示。(为 [`IPv4NumToString`](#IPv4NumToString) 的反向操作)。 +如果 IPv4 地址格式无效,则会抛出异常。 **语法** @@ -158,11 +158,11 @@ IPv4StringToNum(string) **返回值** -返回 IPv4 地址的数值表示。[`UInt32`](/sql-reference/data-types/int-uint) +返回该 IPv4 地址对应的整数值。[`UInt32`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query IPv4StringToNum('192.168.0.1') @@ -174,9 +174,9 @@ IPv4StringToNum('192.168.0.1') ## IPv4StringToNumOrDefault {#IPv4StringToNumOrDefault} -引入于:v22.3 +引入版本:v22.3 -将点分十进制表示法(A.B.C.D 格式)的 IPv4 地址字符串转换为对应的 32 位整数表示形式。如果 IPv4 地址格式无效,则返回 `0`。 +将点分十进制表示法(A.B.C.D 格式)的 IPv4 地址字符串转换为对应的 32 位整数表示。如果 IPv4 地址格式无效,则返回 `0`。 **语法** @@ -186,11 +186,11 @@ IPv4StringToNumOrDefault(string) **参数** -* `string` — IPv4 地址的字符串形式。[`String`](/sql-reference/data-types/string) +* `string` — IPv4 地址字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回 IPv4 地址,如果无效则返回 `0`。[`UInt32`](/sql-reference/data-types/int-uint) +返回 IPv4 地址,无效时返回 `0`。[`UInt32`](/sql-reference/data-types/int-uint) **示例** @@ -212,7 +212,7 @@ SELECT 引入于:v22.3 -将 32 位整数转换为其 IPv4 地址的点分十进制字符串表示(A.B.C.D 格式),但如果 IPv4 地址格式无效,则返回 `NULL`。 +将一个 32 位整数转换为 IPv4 地址的点分十进制字符串表示(A.B.C.D 格式);如果 IPv4 地址格式无效,则返回 `NULL`。 **语法** @@ -226,7 +226,7 @@ IPv4StringToNumOrNull(string) **返回值** -返回 IPv4 地址,如果无效则返回 `NULL`。[`Nullable(UInt32)`](/sql-reference/data-types/nullable) +返回 IPv4 地址,如果地址无效则返回 `NULL`。[`Nullable(UInt32)`](/sql-reference/data-types/nullable) **示例** @@ -239,21 +239,21 @@ IPv4StringToNumOrNull('invalid') AS invalid; ``` ```response title=Response -┌──────有效─┬─无效────┐ +┌──────valid─┬─invalid─┐ │ 2130706433 │ ᴺᵁᴸᴸ │ └────────────┴─────────┘ ``` ## IPv4ToIPv6 {#IPv4ToIPv6} -自 v1.1 引入 +引入版本:v1.1 -将(大端序)32 位整数解释为 IPv4 地址,然后再将其转换为对应的 IPv6 地址,并以 `FixedString(16)` 格式表示。 +将一个(大端序)32 位整数解析为 IPv4 地址,然后再将其视为对应的 IPv6 地址,并以 `FixedString(16)` 格式表示。 **语法** ```sql -IPv4 转 IPv6(x) +IPv4ToIPv6(x) ``` **参数** @@ -262,7 +262,7 @@ IPv4 转 IPv6(x) **返回值** -以二进制格式返回 IPv6 地址。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +返回二进制格式的 IPv6 地址。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **示例** @@ -280,10 +280,10 @@ SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr; ## IPv6CIDRToRange {#IPv6CIDRToRange} -自 v20.1 版本引入。 +引入版本:v20.1 -接受一个 IPv6 地址及其无类别域间路由(Classless Inter-Domain Routing,CIDR)前缀长度,并返回该子网的地址范围,形式为包含两个 IPv6 值的元组:该子网中的最小地址和最大地址。 -有关 IPv4 版本,请参见 [`IPv4CIDRToRange`](#IPv4CIDRToRange)。 +接收一个带有无类别域间路由(CIDR)前缀长度的 IPv6 地址,并返回该子网的地址范围,作为包含两个 IPv6 值的元组:该子网中最小和最大地址。 +IPv4 版本请参见 [`IPv4CIDRToRange`](#IPv4CIDRToRange)。 **语法** @@ -298,11 +298,11 @@ IPv6CIDRToRange(ipv6, cidr) **返回值** -返回一个由两个 IPv6 地址组成的元组,表示子网的地址范围。[`Tuple(IPv6, IPv6)`](/sql-reference/data-types/tuple) +返回一个包含两个 IPv6 地址的元组,表示子网范围。[`Tuple(IPv6, IPv6)`](/sql-reference/data-types/tuple) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32); @@ -316,10 +316,10 @@ SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32); ## IPv6NumToString {#IPv6NumToString} -自 v1.1 引入 +引入版本:v1.1 -将 IPv6 地址从二进制格式(FixedString(16))转换为其标准文本表示法。 -IPv4 映射的 IPv6 地址以 `::ffff:111.222.33.44` 的格式显示。 +将 IPv6 地址从二进制格式(FixedString(16))转换为其标准文本表示形式。 +IPv4 映射的 IPv6 地址以 `::ffff:111.222.33.44` 的形式显示。 **语法** @@ -327,7 +327,7 @@ IPv4 映射的 IPv6 地址以 `::ffff:111.222.33.44` 的格式显示。 IPv6NumToString(x) ``` -**别名**:`INET6_NTOA` +**别名**: `INET6_NTOA` **参数** @@ -351,7 +351,7 @@ SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), └──────────────┘ ``` -**基于 IPv6 的 hits 分析** +**IPv6 命中情况分析** ```sql title=Query SELECT @@ -412,19 +412,19 @@ LIMIT 10 引入版本:v1.1 将 IPv6 地址从其标准文本表示形式转换为二进制格式(`FixedString(16)`)。 -接受格式为 `::ffff:111.222.33.44.` 的 IPv4 映射 IPv6 地址。 +接受 `::ffff:111.222.33.44.` 格式的 IPv4 映射的 IPv6 地址。 如果 IPv6 地址格式无效,则会抛出异常。 -如果输入字符串包含有效的 IPv4 地址,则返回其对应的 IPv6 表示。 -十六进制字符可以是大写或小写。 +如果输入字符串包含有效的 IPv4 地址,则返回其对应的等价 IPv6 地址。 +十六进制(HEX)可以是大写或小写。 **语法** ```sql -IPv6StringToNum(字符串) +IPv6StringToNum(string) ``` -**别名**: `INET6_ATON` +**别名**:`INET6_ATON` **参数** @@ -436,7 +436,7 @@ IPv6StringToNum(字符串) **示例** -**基础示例** +**基本示例** ```sql title=Query SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr; @@ -452,10 +452,10 @@ SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '1 ## IPv6StringToNumOrDefault {#IPv6StringToNumOrDefault} -自 v22.3 引入 +引入版本:v22.3 -将 IPv6 地址从其标准文本表示转换为二进制格式(`FixedString(16)`)。 -接受 IPv4 映射的 IPv6 地址,格式为 `::ffff:111.222.33.44.`。 +将 IPv6 地址从其标准文本表示形式转换为二进制格式(`FixedString(16)`)。 +支持格式为 `::ffff:111.222.33.44.` 的 IPv4 映射 IPv6 地址。 如果 IPv6 地址格式无效,则返回默认值 `::`。 **语法** @@ -470,7 +470,7 @@ IPv6StringToNumOrDefault(string) **返回值** -二进制格式的 IPv6 地址;若无效则返回全零的 FixedString(16)。[`FixedString(16)`](/sql-reference/data-types/fixedstring) +二进制格式的 IPv6 地址;如果无效,则返回零填充的 FixedString(16)。[`FixedString(16)`](/sql-reference/data-types/fixedstring) **示例** @@ -490,10 +490,10 @@ SELECT ## IPv6StringToNumOrNull {#IPv6StringToNumOrNull} -引入于:v22.3 +自 v22.3 起引入。 将 IPv6 地址从其标准文本表示形式转换为二进制格式(`FixedString(16)`)。 -接受以 `::ffff:111.222.33.44.` 形式表示的 IPv4 映射 IPv6 地址。 +接受格式为 `::ffff:111.222.33.44.` 的 IPv4 映射的 IPv6 地址。 如果 IPv6 地址格式无效,则返回 `NULL`。 **语法** @@ -508,7 +508,7 @@ IPv6StringToNumOrNull(string) **返回值** -返回 IPv6 地址的二进制表示形式,如果地址无效则返回 `NULL`。[`Nullable(FixedString(16))`](/sql-reference/data-types/nullable) +返回二进制格式的 IPv6 地址,如果无效则返回 `NULL`。[`Nullable(FixedString(16))`](/sql-reference/data-types/nullable) **示例** @@ -530,7 +530,7 @@ SELECT 引入版本:v1.1 -接受一个以二进制格式存储 IPv6 地址的 `FixedString(16)` 值。 +接受一个 `FixedString(16)` 类型的值,其中包含以二进制格式表示的 IPv6 地址。 返回一个字符串,其中包含删除指定字节数后的地址(文本格式)。 **语法** @@ -542,16 +542,16 @@ cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4) **参数** * `x` — 二进制格式的 IPv6 地址。[`FixedString(16)`](/sql-reference/data-types/fixedstring) 或 [`IPv6`](/sql-reference/data-types/ipv6) -* `bytesToCutForIPv6` — 要从 IPv6 地址中截去的字节数。[`UInt8`](/sql-reference/data-types/int-uint) -* `bytesToCutForIPv4` — 要从 IPv4 地址中截去的字节数。[`UInt8`](/sql-reference/data-types/int-uint) +* `bytesToCutForIPv6` — 从 IPv6 地址中要删除的字节数。[`UInt8`](/sql-reference/data-types/int-uint) +* `bytesToCutForIPv4` — 从 IPv4 地址中要删除的字节数。[`UInt8`](/sql-reference/data-types/int-uint) **返回值** -返回一个字符串,其中包含以文本格式表示的 IPv6 地址,且已移除指定的字节。[`String`](/sql-reference/data-types/string) +返回一个字符串,其中包含文本格式表示的 IPv6 地址,并已删除指定的字节。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query WITH @@ -570,11 +570,11 @@ SELECT ## isIPAddressInRange {#isIPAddressInRange} -引入版本:v21.4 +引入于:v21.4 -判断某个 IP 地址是否属于使用 [无类别域间路由(CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 表示法表示的网络。 +判断某个 IP 地址是否位于使用 [无类域间路由(Classless Inter-Domain Routing,CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) 表示的网络范围内。 -此函数接受以字符串形式表示的 IPv4 和 IPv6 地址及网络。如果地址与 CIDR 的 IP 版本不匹配,则返回 `0`。 +此函数接受以字符串形式表示的 IPv4 和 IPv6 地址(以及网络)。如果地址和 CIDR 的 IP 版本不匹配,则返回 `0`。 **语法** @@ -585,7 +585,7 @@ isIPAddressInRange(address, prefix) **参数** * `address` — 一个 IPv4 或 IPv6 地址。[`String`](/sql-reference/data-types/string) -* `prefix` — 采用 CIDR 表示法的 IPv4 或 IPv6 网络前缀。[`String`](/sql-reference/data-types/string) +* `prefix` — CIDR 格式的 IPv4 或 IPv6 网络前缀。[`String`](/sql-reference/data-types/string) **返回值** @@ -613,7 +613,7 @@ SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16') 0 ``` -**IPv6 地址不在有效范围内** +**IPv6 地址不在指定范围内** ```sql title=Query SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128') @@ -625,10 +625,10 @@ SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128') ## isIPv4String {#isIPv4String} -自 v21.1 起提供 +引入版本:v21.1 判断输入字符串是否为 IPv4 地址。 -IPv6 版本请参见 [`isIPv6String`](#isIPv6String)。 +有关 IPv6 版本,请参阅 [`isIPv6String`](#isIPv6String)。 **语法** @@ -642,7 +642,7 @@ isIPv4String(string) **返回值** -若 `string` 为 IPv4 地址,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果 `string` 是 IPv4 地址,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -666,10 +666,10 @@ ARRAY JOIN addr; ## isIPv6String {#isIPv6String} -引入自:v21.1 +引入版本:v21.1 用于判断输入字符串是否为 IPv6 地址。 -关于 IPv4 版本,请参阅 [`isIPv4String`](#isIPv4String)。 +IPv4 版本请参阅 [`isIPv4String`](#isIPv4String)。 **语法** @@ -683,7 +683,7 @@ isIPv6String(string) **返回值** -如果 `string` 是 IPv6 地址则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果 `string` 是 IPv6 地址,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -706,10 +706,10 @@ ARRAY JOIN addr; ## toIPv4 {#toIPv4} -引入版本:v20.1 +引入于:v20.1 -将 IPv4 地址的字符串形式或 `UInt32` 形式转换为 `IPv4` 类型。 -该函数类似于 [`IPv4StringToNum`](/sql-reference/functions/ip-address-functions#IPv4StringToNum) 和 [`IPv4NumToString`](/sql-reference/functions/ip-address-functions#IPv4NumToString),但它同时支持字符串和无符号整数数据类型作为输入参数。 +将 IPv4 地址的字符串形式或 UInt32 形式转换为 IPv4 类型。 +此函数类似于 [`IPv4StringToNum`](/sql-reference/functions/ip-address-functions#IPv4StringToNum) 和 [`IPv4NumToString`](/sql-reference/functions/ip-address-functions#IPv4NumToString),但它同时支持字符串和无符号整数数据类型作为输入参数。 **语法** @@ -719,11 +719,11 @@ toIPv4(x) **参数** -* `x` — 一个 IPv4 地址,类型为 [`String`](/sql-reference/data-types/string) 或 [`UInt8/16/32`](/sql-reference/data-types/int-uint) +* `x` — IPv4 地址,类型为 [`String`](/sql-reference/data-types/string) 或 [`UInt8/16/32`](/sql-reference/data-types/int-uint) **返回值** -返回一个 IPv4 地址。[`IPv4`](/sql-reference/data-types/ipv4) +返回 IPv4 地址。[`IPv4`](/sql-reference/data-types/ipv4) **示例** @@ -739,7 +739,7 @@ SELECT toIPv4('171.225.130.45'); └──────────────────────────┘ ``` -**与 IPv4StringToNum 和 IPv4NumToString 函数的对比** +**与 IPv4StringToNum 和 IPv4NumToString 函数的比较。** ```sql title=Query WITH @@ -755,7 +755,7 @@ SELECT └───────────────────────────────────┴──────────────────────────┘ ``` -**从整数进行转换** +**从整数转换** ```sql title=Query SELECT toIPv4(2130706433); @@ -769,10 +769,10 @@ SELECT toIPv4(2130706433); ## toIPv4OrDefault {#toIPv4OrDefault} -自 v22.3 引入 +引入版本:v22.3 -将 IPv4 地址的字符串或 `UInt32` 形式转换为 [`IPv4`](../data-types/ipv4.md) 类型。 -如果 IPv4 地址格式无效,则返回 `0.0.0.0`(IPv4 0),或返回提供的 IPv4 默认值。 +将字符串或 `UInt32` 形式的 IPv4 地址转换为 [`IPv4`](../data-types/ipv4.md) 类型。 +如果 IPv4 地址格式无效,则返回 `0.0.0.0`(IPv4 值 0),或返回指定的 IPv4 默认值。 **语法** @@ -782,12 +782,12 @@ toIPv4OrDefault(string[, default]) **参数** -* `string` — 要转换的 IPv4 地址字符串。[`String`](/sql-reference/data-types/string) -* `default` — 可选。如果 `string` 不是有效的 IPv4 地址,则返回该值。[`IPv4`](/sql-reference/data-types/ipv4) +* `string` — 要转换的 IP 地址字符串。[`String`](/sql-reference/data-types/string) +* `default` — 可选。如果字符串是无效的 IPv4 地址,则返回该值。[`IPv4`](/sql-reference/data-types/ipv4) **返回值** -返回由字符串转换得到的 IPv4 地址;如果转换失败,则返回默认值。[`IPv4`](/sql-reference/data-types/ipv4) +返回由字符串转换得到的 IPv4 地址,如果转换失败则返回默认值。[`IPv4`](/sql-reference/data-types/ipv4) **示例** @@ -812,14 +812,14 @@ SELECT ## toIPv4OrNull {#toIPv4OrNull} -自 v22.3 引入 +引入版本:v22.3 将输入值转换为 `IPv4` 类型的值,但在发生错误时返回 `NULL`。 类似于 [`toIPv4`](#toIPv4),但在转换出错时返回 `NULL`,而不是抛出异常。 支持的参数: -* 以点分十进制表示的 IPv4 地址字符串。 +* 使用点分十进制表示的 IPv4 地址字符串。 * IPv4 地址的整数表示。 不支持的参数(返回 `NULL`): @@ -837,11 +837,11 @@ toIPv4OrNull(x) **参数** -* `x` — IPv4 地址的字符串或整数表示形式。[`String`](/sql-reference/data-types/string) 或 [`Integer`](/sql-reference/data-types/int-uint) +* `x` — IPv4 地址的字符串或整数形式。[`String`](/sql-reference/data-types/string) 或 [`Integer`](/sql-reference/data-types/int-uint) **返回值** -成功时返回 IPv4 地址,否则返回 `NULL`。[`IPv4`](/sql-reference/data-types/ipv4) 或 [`NULL`](/sql-reference/syntax#null) +如果成功,则返回 IPv4 地址,否则返回 `NULL`。[`IPv4`](/sql-reference/data-types/ipv4) 或 [`NULL`](/sql-reference/syntax#null) **示例** @@ -863,19 +863,19 @@ SELECT 引入版本:v23.1 -将输入值转换为 [IPv4](../data-types/ipv4.md) 类型的值,但在出错时返回全零 IPv4 地址。 -类似于 [`toIPv4`](#toIPv4),但在转换出错时不会抛出异常,而是返回全零 IPv4 地址(`0.0.0.0`)。 +将输入值转换为 [IPv4](../data-types/ipv4.md) 类型的值,但如果出错则返回全零 IPv4 地址。 +类似于 [`toIPv4`](#toIPv4),但在转换出错时返回全零 IPv4 地址 (`0.0.0.0`),而不是抛出异常。 支持的参数: -* 点分十进制表示的 IPv4 地址字符串。 -* IPv4 地址的整数表示。 +* 采用点分十进制表示的 IPv4 地址字符串。 +* IPv4 地址的整数表示形式。 -不支持的参数(返回全零 IPv4 地址): +不支持的参数(返回全零 IPv4): * 无效的 IP 地址格式。 * IPv6 地址。 -* 超出范围的值。 +* 超出取值范围的值。 **语法** @@ -889,11 +889,11 @@ toIPv4OrZero(x) **返回值** -成功时返回 IPv4 地址,否则返回全零 IPv4 地址(`0.0.0.0`)。[`IPv4`](/sql-reference/data-types/ipv4) +成功时返回一个 IPv4 地址,否则返回全零 IPv4 地址 (`0.0.0.0`)。[`IPv4`](/sql-reference/data-types/ipv4) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT @@ -909,13 +909,13 @@ SELECT ## toIPv6 {#toIPv6} -引入于:v20.1 +引入版本:v20.1 -将字符串或 `UInt128` 形式的 IPv6 地址转换为 [`IPv6`](../data-types/ipv6.md) 类型。 -对于字符串,如果 IPv6 地址格式无效,则返回空结果。 -类似于 [`IPv6StringToNum`](/sql-reference/functions/ip-address-functions#IPv6StringToNum) 和 [`IPv6NumToString`](/sql-reference/functions/ip-address-functions#IPv6NumToString) 函数,它们在 IPv6 地址与二进制格式(即 `FixedString(16)`)之间进行转换。 +将 IPv6 地址的字符串形式或 `UInt128` 形式转换为 [`IPv6`](../data-types/ipv6.md) 类型。 +对于字符串,如果 IPv6 地址格式无效,则返回空值。 +类似于 [`IPv6StringToNum`](/sql-reference/functions/ip-address-functions#IPv6StringToNum) 和 [`IPv6NumToString`](/sql-reference/functions/ip-address-functions#IPv6NumToString) 函数,这些函数用于在 IPv6 地址和二进制格式(即 `FixedString(16)`)之间进行转换。 -如果输入字符串中包含有效的 IPv4 地址,则返回对应的 IPv6 等价地址。 +如果输入字符串包含有效的 IPv4 地址,则会返回该 IPv4 地址对应的 IPv6 地址。 **语法** @@ -925,15 +925,15 @@ toIPv6(x) **参数** -* `x` — IP 地址。[`String`](/sql-reference/data-types/string) 或 [`UInt128`](/sql-reference/data-types/int-uint) +* `x` — 一个 IP 地址。[`String`](/sql-reference/data-types/string) 或 [`UInt128`](/sql-reference/data-types/int-uint) **返回值** -返回一个 IPv6 地址。[`IPv6`](/sql-reference/data-types/ipv6) +返回 IPv6 地址。[`IPv6`](/sql-reference/data-types/ipv6) **示例** -**使用示例** +**用法示例** ```sql title=Query WITH '2001:438:ffff::407d:1bc1' AS IPv6_string @@ -948,7 +948,7 @@ SELECT └───────────────────────────────────┴──────────────────────────────────┘ ``` -**IPv4 到 IPv6 的映射** +**IPv4 到 IPv6 映射** ```sql title=Query SELECT toIPv6('127.0.0.1'); @@ -964,8 +964,8 @@ SELECT toIPv6('127.0.0.1'); 引入版本:v22.3 -将 IPv6 地址的字符串形式或 UInt128 形式转换为 [`IPv6`](../data-types/ipv6.md) 类型。 -如果 IPv6 地址格式无效,则返回 `::`(全零 IPv6 地址)或指定的 IPv6 默认值。 +将字符串或 IPv6 地址的 UInt128 形式转换为 [`IPv6`](../data-types/ipv6.md) 类型。 +如果 IPv6 地址格式无效,则返回 `::`(IPv6 的 0 值)或使用提供的 IPv6 默认值。 **语法** @@ -976,11 +976,11 @@ toIPv6OrDefault(string[, default]) **参数** * `string` — 要转换的 IP 地址字符串。 -* `default` — 可选。当 `string` 格式无效时返回的值。 +* `default` — 可选。`string` 的格式无效时返回的值。 **返回值** -返回 IPv6 地址;如果 `string` 参数格式无效,则返回 `::` 或提供的可选默认值。[`IPv6`](/sql-reference/data-types/ipv6) +返回 IPv6 地址;如果参数 `string` 的格式无效,则返回 `::` 或提供的可选默认值。[`IPv6`](/sql-reference/data-types/ipv6) **示例** @@ -1005,23 +1005,23 @@ SELECT ## toIPv6OrNull {#toIPv6OrNull} -引入于:v22.3 +引入版本:v22.3 -将输入值转换为 `IPv6` 类型的值,但在发生错误时返回 `NULL`。 -与 [`toIPv6`](#toIPv6) 类似,但在转换出错时返回 `NULL`,而不是抛出异常。 +将输入值转换为 `IPv6` 类型的值,但在出错时返回 `NULL`。 +类似于 [`toIPv6`](#toIPv6),但在转换出错时返回 `NULL`,而不是抛出异常。 支持的参数: -* 标准表示法的 IPv6 地址字符串。 -* IPv4 地址的字符串表示(转换为 IPv4 映射的 IPv6 地址)。 -* IPv6 地址的二进制表示。 +* IPv6 地址的标准字符串表示。 +* IPv4 地址的字符串表示(会被转换为 IPv4 映射的 IPv6 地址)。 +* IPv6 地址的二进制表示形式。 不支持的参数(返回 `NULL`): * 无效的 IP 地址格式。 * 格式错误的 IPv6 地址。 -* 超出取值范围的值。 -* 无效的表示法。 +* 超出范围的数值。 +* 无效的表示形式。 **语法** @@ -1039,7 +1039,7 @@ toIPv6OrNull(x) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT @@ -1055,18 +1055,18 @@ SELECT ## toIPv6OrZero {#toIPv6OrZero} -引入于:v23.1 +引入版本:v23.1 -将输入值转换为 [IPv6](../data-types/ipv6.md) 类型的值,但在出错时返回全零 IPv6 地址。 +将输入值转换为 [IPv6](../data-types/ipv6.md) 类型,但在出错时返回全零的 IPv6 地址。 类似于 [`toIPv6`](#toIPv6),但在转换出错时返回全零 IPv6 地址(`::`),而不是抛出异常。 支持的参数: * 标准表示法的 IPv6 地址字符串。 -* IPv4 地址的字符串表示(会转换为 IPv4 映射的 IPv6 地址)。 +* IPv4 地址的字符串表示(会被转换为 IPv4 映射的 IPv6 地址)。 * IPv6 地址的二进制表示。 -不支持的参数(将返回全零 IPv6 地址): +不支持的参数(返回全零 IPv6 地址): * 无效的 IP 地址格式。 * 格式错误的 IPv6 地址。 @@ -1084,11 +1084,11 @@ toIPv6OrZero(x) **返回值** -成功时返回一个 IPv6 地址,否则返回全零 IPv6 地址 (`::`)。[`IPv6`](/sql-reference/data-types/ipv6) +如果成功则返回一个 IPv6 地址,否则返回零 IPv6 地址(`::`)。 [`IPv6`](/sql-reference/data-types/ipv6) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md index e718bbb3e2d..8274828458d 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/functions/string-functions.md @@ -10,25 +10,25 @@ import VersionBadge from '@theme/badges/VersionBadge'; # 用于处理字符串的函数 {#functions-for-working-with-strings} -用于在字符串中[搜索](string-search-functions.md)和[替换](string-replace-functions.md)的函数另有单独说明。 +用于在字符串中[搜索](string-search-functions.md)和[替换](string-replace-functions.md)的函数在单独的文档中说明。 :::note -以下文档由 `system.functions` 系统表生成。 +下文文档是从 `system.functions` 系统表生成的。 ::: {/* - 下面标签内的内容会在构建文档框架时被替换为 - 由 system.functions 生成的文档。请不要修改或删除这些标签。 - 详情请参阅:https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md + 以下标签中的内容会在构建文档框架时被 + 从 system.functions 生成的文档替换。请勿修改或删除这些标签。 + 参见:https://github.com/ClickHouse/clickhouse-docs/blob/main/contribute/autogenerated-documentation-from-source.md */ } {/*AUTOGENERATED_START*/ } ## CRC32 {#CRC32} -自 v20.1 版本引入 +自 v20.1 引入 -使用 CRC-32-IEEE 802.3 多项式和初始值 `0xffffffff`(zlib 实现)计算字符串的 CRC32 校验和。 +使用 CRC-32-IEEE 802.3 多项式和初始值 `0xffffffff`(zlib 实现)来计算字符串的 CRC32 校验和。 **语法** @@ -46,7 +46,7 @@ CRC32(s) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT CRC32('ClickHouse') @@ -60,9 +60,9 @@ SELECT CRC32('ClickHouse') ## CRC32IEEE {#CRC32IEEE} -自 v20.1 起引入 +首次引入于:v20.1 -使用 CRC-32-IEEE 802.3 多项式计算字符串的 CRC32 校验和。 +使用 CRC-32-IEEE 802.3 多项式计算字符串的 CRC32 校验值。 **语法** @@ -72,15 +72,15 @@ CRC32IEEE(s) **参数** -* `s` — 要计算 CRC32 值的字符串。[`String`](/sql-reference/data-types/string) +* `s` — 用于计算 CRC32 的字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回字符串的 CRC32 校验和。[`UInt32`](/sql-reference/data-types/int-uint) +返回该字符串的 CRC32 校验和。[`UInt32`](/sql-reference/data-types/int-uint) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT CRC32IEEE('ClickHouse'); @@ -110,7 +110,7 @@ CRC64(s) **返回值** -返回该字符串的 CRC64 校验和。[`UInt64`](/sql-reference/data-types/int-uint) +返回字符串的 CRC64 校验和。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -128,7 +128,7 @@ SELECT CRC64('ClickHouse'); ## appendTrailingCharIfAbsent {#appendTrailingCharIfAbsent} -引入于:v1.1 +自 v1.1 起引入 如果字符串 `s` 非空且不以字符 `c` 结尾,则将字符 `c` 追加到字符串 `s` 的末尾。 @@ -141,11 +141,11 @@ appendTrailingCharIfAbsent(s, c) **参数** * `s` — 输入字符串。[`String`](/sql-reference/data-types/string) -* `c` — 当不存在时要追加的字符。[`String`](/sql-reference/data-types/string) +* `c` — 若不存在则追加的字符。[`String`](/sql-reference/data-types/string) **返回值** -返回字符串 `s`,如果 `s` 不以 `c` 结尾,则在末尾追加字符 `c`。[`String`](/sql-reference/data-types/string) +返回字符串 `s`,如果 `s` 不以字符 `c` 结尾,则在末尾追加字符 `c`。[`String`](/sql-reference/data-types/string) **示例** @@ -163,9 +163,9 @@ SELECT appendTrailingCharIfAbsent('https://example.com', '/'); ## ascii {#ascii} -引入版本:v22.11 +自 v22.11 起引入 -返回字符串 `s` 的第一个字符的 ASCII 码点,返回类型为 `Int32`。 +返回字符串 `s` 第一个字符的 ASCII 码点,类型为 `Int32`。 **语法** @@ -179,7 +179,7 @@ ascii(s) **返回值** -返回第一个字符的 ASCII 代码点。如果 `s` 为空,则结果为 `0`。如果第一个字符不是 ASCII 字符,或者不在 UTF-16 的 Latin-1 补充范围内,则结果未定义。[`Int32`](/sql-reference/data-types/int-uint) +返回第一个字符的 ASCII 码点。若 `s` 为空,结果为 `0`。如果第一个字符不是 ASCII 字符,或不属于 UTF-16 的 Latin-1 补充块,则结果未定义。[`Int32`](/sql-reference/data-types/int-uint) **示例** @@ -199,8 +199,8 @@ SELECT ascii('234') 引入版本:v25.6 -解码一个采用 [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6)(RFC 4648)编码的字符串。 -如果字符串不是有效的 Base32 编码,则会抛出异常。 +对 [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6)(RFC 4648)字符串进行解码。 +如果字符串不是有效的 Base32 编码格式,将抛出异常。 **语法** @@ -210,11 +210,11 @@ base32Decode(encoded) **参数** -* `encoded` — 字符串列或常量。[`String`](/sql-reference/data-types/string) +* `encoded` — 字符串类型的列或常量。[`String`](/sql-reference/data-types/string) **返回值** -返回一个包含参数解码后值的字符串。[`String`](/sql-reference/data-types/string) +返回一个字符串,包含参数的解码结果。[`String`](/sql-reference/data-types/string) **示例** @@ -226,13 +226,13 @@ SELECT base32Decode('IVXGG33EMVSA===='); ```response title=Response ┌─base32Decode('IVXGG33EMVSA====')─┐ -│ 已编码 │ +│ Encoded │ └──────────────────────────────────┘ ``` ## base32Encode {#base32Encode} -自 v25.6 起提供 +自 v25.6 引入 使用 [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) 对字符串进行编码。 @@ -244,11 +244,11 @@ base32Encode(plaintext) **参数** -* `plaintext` — 要编码的明文。[`String`](/sql-reference/data-types/string) +* `plaintext` — 待编码的明文。[`String`](/sql-reference/data-types/string) **返回值** -返回一个字符串,其中包含参数编码后的值。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) +返回一个包含该参数编码值的字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) **示例** @@ -266,10 +266,10 @@ SELECT base32Encode('Encoded') ## base58Decode {#base58Decode} -自 v22.7 版本引入 +自 v22.7 起引入 对 [Base58](https://datatracker.ietf.org/doc/html/draft-msporny-base58-03#section-3) 字符串进行解码。 -如果字符串不是有效的 Base58 编码格式,则会抛出异常。 +如果字符串不是有效的 Base58 编码,则会抛出异常。 **语法** @@ -279,15 +279,15 @@ base58Decode(encoded) **参数** -* `encoded` — 要解码的字符串类型列或常量值。[`String`](/sql-reference/data-types/string) +* `encoded` — 要解码的字符串类型列或常量。[`String`](/sql-reference/data-types/string) **返回值** -返回一个包含参数解码结果的字符串。[`String`](/sql-reference/data-types/string) +返回一个包含参数解码后值的字符串。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT base58Decode('JxF12TrwUP45BMd'); @@ -301,9 +301,9 @@ SELECT base58Decode('JxF12TrwUP45BMd'); ## base58Encode {#base58Encode} -自 v22.7 版本引入 +引入版本:v22.7 -对字符串进行 [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html) 编码。 +使用 [Base58](https://tools.ietf.org/id/draft-msporny-base58-01.html) 编码字符串。 **语法** @@ -313,11 +313,11 @@ base58Encode(plaintext) **参数** -* `plaintext` — 要编码的明文。[`String`](/sql-reference/data-types/string) +* `plaintext` — 要进行编码的明文。[`String`](/sql-reference/data-types/string) **返回值** -返回一个包含该参数编码值的字符串。[`String`](/sql-reference/data-types/string) +返回一个包含该参数编码后值的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -337,8 +337,8 @@ SELECT base58Encode('ClickHouse'); 引入版本:v18.16 -根据 RFC 4648,从 [Base64](https://en.wikipedia.org/wiki/Base64) 编码表示中解码字符串。 -如果发生错误,则抛出异常。 +根据 RFC 4648,从 [Base64](https://en.wikipedia.org/wiki/Base64) 表示形式解码字符串。 +在出错时抛出异常。 **语法** @@ -346,11 +346,11 @@ SELECT base58Encode('ClickHouse'); base64Decode(encoded) ``` -**别名**:`FROM_BASE64` +**别名**: `FROM_BASE64` **参数** -* `encoded` — 要解码的字符串列或常量。如果该字符串不是有效的 Base64 编码格式,将抛出异常。[`String`](/sql-reference/data-types/string) +* `encoded` — 要解码的字符串列或常量。如果字符串不是有效的 Base64 编码字符串,则会抛出异常。[`String`](/sql-reference/data-types/string) **返回值** @@ -372,9 +372,9 @@ SELECT base64Decode('Y2xpY2tob3VzZQ==') ## base64Encode {#base64Encode} -引入版本:v18.16 +自 v18.16 引入。 -使用 [Base64](https://en.wikipedia.org/wiki/Base64) 表示法对字符串进行编码,符合 RFC 4648 标准。 +使用 [Base64](https://en.wikipedia.org/wiki/Base64) 表示法对字符串进行编码,遵循 RFC 4648。 **语法** @@ -382,7 +382,7 @@ SELECT base64Decode('Y2xpY2tob3VzZQ==') base64Encode(plaintext) ``` -**别名**:`TO_BASE64` +**别名**: `TO_BASE64` **参数** @@ -390,11 +390,11 @@ base64Encode(plaintext) **返回值** -返回一个字符串,其中包含参数的编码值。[`String`](/sql-reference/data-types/string) +返回一个包含参数编码值的字符串。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT base64Encode('clickhouse') @@ -410,7 +410,7 @@ SELECT base64Encode('clickhouse') 引入版本:v24.6 -使用符合 RFC 4648 的 URL 安全字母表,对 [Base64](https://en.wikipedia.org/wiki/Base64) 编码表示的字符串进行解码。 +使用符合 RFC 4648 规定的 URL 安全字母表,从 [Base64](https://en.wikipedia.org/wiki/Base64) 表示中解码字符串。 在发生错误时抛出异常。 **语法** @@ -421,15 +421,15 @@ base64URLDecode(encoded) **参数** -* `encoded` — 要解码的 Base64 编码字符串列或常量。如果字符串不是有效的 Base64 编码,将抛出异常。[`String`](/sql-reference/data-types/string) +* `encoded` — 要编码的字符串列或常量。如果该字符串不是有效的 Base64 编码字符串,则会抛出异常。[`String`](/sql-reference/data-types/string) **返回值** -返回一个字符串,包含参数解码后的值。[`String`](/sql-reference/data-types/string) +返回一个包含参数解码结果的字符串。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') @@ -445,7 +445,7 @@ SELECT base64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') 自 v18.16 引入 -使用适用于 URL 的 Base64 字符集,将字符串编码为 [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4)(RFC 4648)表示形式。 +使用适用于 URL 的安全字母表,将字符串编码为 [Base64](https://datatracker.ietf.org/doc/html/rfc4648#section-4)(RFC 4648)表示形式。 **语法** @@ -459,11 +459,11 @@ base64URLEncode(plaintext) **返回值** -返回一个包含该参数编码后值的字符串。[`String`](/sql-reference/data-types/string) +返回一个包含参数编码后值的字符串。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT base64URLEncode('https://clickhouse.com') @@ -477,10 +477,10 @@ SELECT base64URLEncode('https://clickhouse.com') ## basename {#basename} -自 v20.1 版本引入 +自 v20.1 起引入 -提取字符串中最后一个斜杠或反斜杠之后的子串。 -此函数常用于从路径中提取文件名。 +提取字符串中最后一个正斜杠或反斜杠之后的部分。 +该函数通常用于从路径中提取文件名。 **语法** @@ -490,11 +490,11 @@ basename(expr) **参数** -* `expr` — 字符串表达式。反斜杠必须转义。[`String`](/sql-reference/data-types/string) +* `expr` — 字符串表达式。反斜杠必须进行转义。[`String`](/sql-reference/data-types/string) **返回值** -返回输入字符串在最后一个正斜杠或反斜杠之后的尾部子串。如果输入字符串以正斜杠或反斜杠结尾,则函数返回空字符串。如果没有正斜杠或反斜杠,则返回原始字符串。[`String`](/sql-reference/data-types/string) +返回输入字符串中最后一个正斜杠或反斜杠之后的部分。如果输入字符串以正斜杠或反斜杠结尾,则函数返回空字符串。如果没有正斜杠或反斜杠,则返回原始字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -510,7 +510,7 @@ SELECT 'some/long/path/to/file' AS a, basename(a) └────────────────────────┴────────────────────────────────────┘ ``` -**从 Windows 路径中提取文件名** +**从 Windows 路径提取文件名** ```sql title=Query SELECT 'some\\long\\path\\to\\file' AS a, basename(a) @@ -522,7 +522,7 @@ SELECT 'some\\long\\path\\to\\file' AS a, basename(a) └────────────────────────┴────────────────────────────────────────┘ ``` -**不含路径分隔符的字符串** +**不包含路径分隔符的字符串** ```sql title=Query SELECT 'some-file-name' AS a, basename(a) @@ -536,9 +536,9 @@ SELECT 'some-file-name' AS a, basename(a) ## byteHammingDistance {#byteHammingDistance} -自 v23.9 版本起引入 +自 v23.9 起引入。 -计算两个字节串之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)。 +计算两个字节字符串之间的[汉明距离](https://en.wikipedia.org/wiki/Hamming_distance)。 **语法** @@ -555,7 +555,7 @@ byteHammingDistance(s1, s2) **返回值** -返回两个字符串的汉明距离值。[`UInt64`](/sql-reference/data-types/int-uint) +返回两个字符串之间的汉明距离 (Hamming distance)。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -573,9 +573,9 @@ SELECT byteHammingDistance('karolin', 'kathrin') ## compareSubstrings {#compareSubstrings} -引入于:v25.2 +在 v25.2 中引入 -按字典序比较两个字符串。 +按字典顺序比较两个字符串。 **语法** @@ -587,17 +587,17 @@ compareSubstrings(s1, s2, s1_offset, s2_offset, num_bytes) * `s1` — 要比较的第一个字符串。[`String`](/sql-reference/data-types/string) * `s2` — 要比较的第二个字符串。[`String`](/sql-reference/data-types/string) -* `s1_offset` — 在 `s1` 中开始比较的起始位置(从 0 开始计数)。[`UInt*`](/sql-reference/data-types/int-uint) -* `s2_offset` — 在 `s2` 中开始比较的起始位置(从 0 开始计数的索引)。[`UInt*`](/sql-reference/data-types/int-uint) -* `num_bytes` — 在两个字符串中最多比较的字节数。如果 `s1_offset`(或 `s2_offset`)+ `num_bytes` 超过输入字符串的末尾,`num_bytes` 会相应减小。[`UInt*`](/sql-reference/data-types/int-uint) +* `s1_offset` — 在 `s1` 中开始比较的偏移位置(从 0 开始)。[`UInt*`](/sql-reference/data-types/int-uint) +* `s2_offset` — 在 `s2` 中开始比较的偏移位置(从 0 开始的索引)。[`UInt*`](/sql-reference/data-types/int-uint) +* `num_bytes` — 在两个字符串中要比较的最大字节数。如果 `s1_offset`(或 `s2_offset`)+ `num_bytes` 超过输入字符串的末尾,则会自动相应减少 `num_bytes`。[`UInt*`](/sql-reference/data-types/int-uint) **返回值** 返回: -* 当 `s1`[`s1_offset` : `s1_offset` + `num_bytes`] < `s2`[`s2_offset` : `s2_offset` + `num_bytes`] 时返回 `-1`。 -* 当 `s1`[`s1_offset` : `s1_offset` + `num_bytes`] = `s2`[`s2_offset` : `s2_offset` + `num_bytes`] 时返回 `0`。 -* 当 `s1`[`s1_offset` : `s1_offset` + `num_bytes`] > `s2`[`s2_offset` : `s2_offset` + `num_bytes`] 时返回 `1`。 +* 当 `s1`[`s1_offset` : `s1_offset` + `num_bytes`] < `s2`[`s2_offset` : `s2_offset` + `num_bytes`] 时为 `-1`。 +* 当 `s1`[`s1_offset` : `s1_offset` + `num_bytes`] = `s2`[`s2_offset` : `s2_offset` + `num_bytes`] 时为 `0`。 +* 当 `s1`[`s1_offset` : `s1_offset` + `num_bytes`] > `s2`[`s2_offset` : `s2_offset` + `num_bytes`] 时为 `1`。 [`Int8`](/sql-reference/data-types/int-uint) **示例** @@ -616,12 +616,12 @@ SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result ## concat {#concat} -引入于:v1.1 +引入版本:v1.1 将给定的参数连接为一个字符串。 -不是 [`String`](../data-types/string.md) 或 [`FixedString`](../data-types/fixedstring.md) 类型的参数会通过其默认序列化方式转换为字符串。 -由于这会降低性能,不推荐使用非 String/FixedString 类型的参数。 +不是 [`String`](../data-types/string.md) 或 [`FixedString`](../data-types/fixedstring.md) 类型的参数,会通过其默认序列化方式转换为字符串。 +由于这会降低性能,不建议使用非 String/FixedString 类型的参数。 **语法** @@ -631,11 +631,11 @@ concat([s1, s2, ...]) **参数** -* `s1, s2, ...` — 任意数量的任意类型的值。[`Any`](/sql-reference/data-types) +* `s1, s2, ...` — 任意数量、任意类型的值。[`Any`](/sql-reference/data-types) **返回值** -返回通过将各个参数连接起来所创建的 String。如果任一参数为 `NULL`,则函数返回 `NULL`。如果没有参数,则返回空字符串。[`Nullable(String)`](/sql-reference/data-types/nullable) +返回通过将各个参数连接起来创建的 String。如果任意参数为 `NULL`,则函数返回 `NULL`。如果没有参数,则返回空字符串。[`Nullable(String)`](/sql-reference/data-types/nullable) **示例** @@ -651,7 +651,7 @@ SELECT concat('Hello, ', 'World!') └─────────────────────────────┘ ``` -**数值拼接** +**数字拼接** ```sql title=Query SELECT concat(42, 144) @@ -665,12 +665,12 @@ SELECT concat(42, 144) ## concatAssumeInjective {#concatAssumeInjective} -自 v1.1 版本引入 +引入版本:v1.1 与 [`concat`](#concat) 类似,但假设 `concat(s1, s2, ...) → sn` 是单射, 即对不同的参数返回不同的结果。 -可用于优化 `GROUP BY`。 +可用于对 `GROUP BY` 的优化。 **语法** @@ -684,7 +684,7 @@ concatAssumeInjective([s1, s2, ...]) **返回值** -返回通过将各个参数连接起来创建的字符串。如果任一参数值为 `NULL`,则函数返回 `NULL`。如果未传入任何参数,则返回空字符串。[`String`](/sql-reference/data-types/string) +返回通过连接参数创建的字符串。如果任一参数值为 `NULL`,则函数返回 `NULL`。如果不传入任何参数,则返回空字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -704,9 +704,9 @@ SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjectiv ## concatWithSeparator {#concatWithSeparator} -自 v22.12 引入 +引入版本:v22.12 -将提供的字符串连接起来,并使用指定的分隔符将它们分隔开。 +将提供的字符串用指定的分隔符连接起来。 **语法** @@ -719,7 +719,7 @@ concatWithSeparator(sep[, exp1, exp2, ...]) **参数** * `sep` — 要使用的分隔符。[`const String`](/sql-reference/data-types/string) 或 [`const FixedString`](/sql-reference/data-types/fixedstring) -* `exp1, exp2, ...` — 要拼接的表达式。不是 `String` 或 `FixedString` 类型的参数会使用其默认序列化方式被转换为字符串。由于这会降低性能,不推荐使用非 String/FixedString 参数。[`Any`](/sql-reference/data-types) +* `exp1, exp2, ...` — 要连接的表达式。不是 `String` 或 `FixedString` 类型的参数将使用其默认序列化方式转换为字符串。由于这会降低性能,不建议传入非 `String`/`FixedString` 类型的参数。[`Any`](/sql-reference/data-types) **返回值** @@ -741,10 +741,10 @@ SELECT concatWithSeparator('a', '1', '2', '3', '4') ## concatWithSeparatorAssumeInjective {#concatWithSeparatorAssumeInjective} -自 v22.12 引入 +引入版本:v22.12 类似于 [`concatWithSeparator`](#concatWithSeparator),但假定 `concatWithSeparator(sep[,exp1, exp2, ... ]) → result` 是单射。 -如果一个函数对不同的参数总是返回不同的结果,则称该函数为单射。 +如果对不同的参数返回不同的结果,则称该函数为单射(injective)。 可用于优化 `GROUP BY`。 @@ -757,15 +757,15 @@ concatWithSeparatorAssumeInjective(sep[, exp1, exp2, ... ]) **参数** * `sep` — 要使用的分隔符。[`const String`](/sql-reference/data-types/string) 或 [`const FixedString`](/sql-reference/data-types/fixedstring) -* `exp1, exp2, ...` — 要连接的表达式。非 `String` 或 `FixedString` 类型的参数会使用其默认序列化方式转换为字符串。由于这会降低性能,不建议使用非 String/FixedString 类型的参数。类型为 [`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) +* `exp1, exp2, ...` — 要连接的表达式。不是 `String` 或 `FixedString` 类型的参数会使用其默认序列化方式转换为字符串。由于这会降低性能,不推荐使用非 String/FixedString 类型的参数。参数类型:[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) **返回值** -返回由各参数连接而成的字符串。如果任意参数值为 `NULL`,则函数返回 `NULL`。返回类型为 [`String`](/sql-reference/data-types/string) +返回通过连接各个参数创建的字符串。如果任一参数值为 `NULL`,则函数返回 `NULL`。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query CREATE TABLE user_data ( @@ -802,10 +802,10 @@ GROUP BY concatWithSeparatorAssumeInjective('-', first_name, last_name); 引入版本:v1.1 -在不同进制之间转换数字。 +在不同进制之间转换数值。 -该函数将一个数从一种进制转换为另一种进制。支持的进制范围为 2 到 36。 -对于大于 10 的进制,使用字母 A-Z(不区分大小写)来表示数字 10-35。 +该函数将一个数值从一种进制转换为另一种进制。它支持从 2 到 36 的进制。 +对于大于 10 的进制,使用字母 A-Z(不区分大小写)来表示数值 10-35。 此函数与 MySQL 的 CONV() 函数兼容。 @@ -817,15 +817,15 @@ conv(number, from_base, to_base) **参数** -* `number` — 要转换的数字,可以为字符串或数值类型。 - `from_base` — 源进制(2-36),必须为整数。 - `to_base` — 目标进制(2-36),必须为整数。 +* `number` — 要转换的数值。可以是字符串或数值类型。 - `from_base` — 源进制(2–36)。必须是整数。 - `to_base` — 目标进制(2–36)。必须是整数。 **返回值** -该数字在目标进制下的字符串表示形式。 +该数值在目标进制下的字符串表示形式。 **示例** -**将十进制转换为二进制** +**将十进制数转换为二进制** ```sql title=Query SELECT conv('10', 10, 2) @@ -845,7 +845,7 @@ SELECT conv('FF', 16, 10) 255 ``` -**使用负数转换** +**使用负数进行转换** ```sql title=Query SELECT conv('-1', 10, 16) @@ -855,7 +855,7 @@ SELECT conv('-1', 10, 16) FFFFFFFFFFFFFFFF ``` -**将二进制转换为八进制** +**将二进制数转换为八进制数** ```sql title=Query SELECT conv('1010', 2, 8) @@ -867,9 +867,9 @@ SELECT conv('1010', 2, 8) ## convertCharset {#convertCharset} -自 v1.1 起引入 +自 v1.1 版本引入 -返回将字符串 `s` 从编码 `from` 转换为编码 `to` 后的结果。 +返回将字符串 `s` 从编码 `from` 转换为编码 `to` 后的字符串。 **语法** @@ -885,7 +885,7 @@ convertCharset(s, from, to) **返回值** -返回将字符串 `s` 从编码 `from` 转换为编码 `to` 后得到的字符串。[`String`](/sql-reference/data-types/string) +返回字符串 `s` 从编码 `from` 转换为编码 `to` 后的结果。[`String`](/sql-reference/data-types/string) **示例** @@ -903,7 +903,7 @@ SELECT convertCharset('Café', 'UTF-8', 'ISO-8859-1'); ## damerauLevenshteinDistance {#damerauLevenshteinDistance} -在 v24.1 中引入 +自 v24.1 起提供 计算两个字节字符串之间的 [Damerau-Levenshtein 距离](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance)。 @@ -938,9 +938,9 @@ SELECT damerauLevenshteinDistance('clickhouse', 'mouse') ## decodeHTMLComponent {#decodeHTMLComponent} -自 v23.9 版本引入 +引入版本:v23.9 -将字符串中的 HTML 实体解码为对应的字符。 +将字符串中的 HTML 实体解码为相应字符。 **语法** @@ -954,11 +954,11 @@ decodeHTMLComponent(s) **返回值** -返回 HTML 实体解码后的字符串。[`String`](/sql-reference/data-types/string) +返回解码 HTML 实体后的字符串。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT decodeHTMLComponent('<div>Hello & "World"</div>') @@ -974,7 +974,7 @@ SELECT decodeHTMLComponent('<div>Hello & "World"</div> 自 v21.2 起引入 -将字符串中的 XML 实体解码为相应的字符。 +将字符串中的 XML 实体解码为对应的字符。 **语法** @@ -984,15 +984,15 @@ decodeXMLComponent(s) **参数** -* `s` — 包含要解码 XML 实体的字符串。[`String`](/sql-reference/data-types/string) +* `s` — 包含需解码 XML 实体的字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回将其中 XML 实体解码后的字符串。[`String`](/sql-reference/data-types/string) +返回解码了 XML 实体的字符串。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT decodeXMLComponent('<tag>Hello & World</tag>') @@ -1006,9 +1006,9 @@ SELECT decodeXMLComponent('<tag>Hello & World</tag>') ## editDistance {#editDistance} -自 v23.9 起引入 +引入于:v23.9 -计算两个字节字符串之间的[编辑距离](https://en.wikipedia.org/wiki/Edit_distance)。 +计算两个字节串之间的[编辑距离](https://en.wikipedia.org/wiki/Edit_distance)。 **语法** @@ -1025,11 +1025,11 @@ editDistance(s1, s2) **返回值** -返回两个字符串之间的编辑距离。[`UInt64`](/sql-reference/data-types/int-uint) +返回两个字符串的编辑距离。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT editDistance('clickhouse', 'mouse') @@ -1043,9 +1043,9 @@ SELECT editDistance('clickhouse', 'mouse') ## editDistanceUTF8 {#editDistanceUTF8} -自 v24.6 版本引入 +自 v24.6 起引入 -计算两个 UTF-8 字符串之间的 [编辑距离](https://en.wikipedia.org/wiki/Edit_distance)。 +计算两个 UTF-8 字符串之间的[编辑距离](https://en.wikipedia.org/wiki/Edit_distance)。 **语法** @@ -1053,7 +1053,7 @@ SELECT editDistance('clickhouse', 'mouse') editDistanceUTF8(s1, s2) ``` -**别名**:`levenshteinDistanceUTF8` +**别名**: `levenshteinDistanceUTF8` **参数** @@ -1062,11 +1062,11 @@ editDistanceUTF8(s1, s2) **返回值** -返回两个 UTF8 字符串之间的编辑距离。[`UInt64`](/sql-reference/data-types/int-uint) +返回两个 UTF-8 字符串之间的编辑距离。[`UInt64`](/sql-reference/data-types/int-uint) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT editDistanceUTF8('我是谁', '我是我') @@ -1080,9 +1080,9 @@ SELECT editDistanceUTF8('我是谁', '我是我') ## encodeXMLComponent {#encodeXMLComponent} -引入版本:v21.1 +自 v21.1 起引入 -对字符串中的字符进行转义,以便将其放入 XML 文本节点或属性中。 +用于对字符串中的字符进行转义,以便将字符串放入 XML 文本节点或属性中。 **语法** @@ -1109,16 +1109,16 @@ SELECT ``` ```response title=Response -┌─原始───────────────────────┬─xml编码──────────────────────────────────────────────┐ +┌─original───────────────────┬─xml_encoded──────────────────────────────────────────┐ │ Hello & "World" │ <tag>Hello & "World"</tag> │ └────────────────────────────┴──────────────────────────────────────────────────────┘ ``` ## endsWith {#endsWith} -自 v1.1 引入 +自 v1.1 版本引入 -检查字符串是否以给定的后缀结尾。 +检查字符串是否以指定后缀结束。 **语法** @@ -1129,7 +1129,7 @@ endsWith(s, suffix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `suffix` — 要检查的后缀字符串。[`String`](/sql-reference/data-types/string) +* `suffix` — 要检查是否为结尾的后缀。[`String`](/sql-reference/data-types/string) **返回值** @@ -1151,9 +1151,9 @@ SELECT endsWith('ClickHouse', 'House'); ## endsWithCaseInsensitive {#endsWithCaseInsensitive} -引入版本:v25.9 +引入于:v25.9 -检查字符串是否以指定的(不区分大小写的)后缀结尾。 +检查字符串是否以给定的、不区分大小写的后缀结尾。 **语法** @@ -1164,11 +1164,11 @@ endsWithCaseInsensitive(s, suffix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `suffix` — 检查用的后缀,比较时不区分大小写。[`String`](/sql-reference/data-types/string) +* `suffix` — 要检查的、不区分大小写的后缀。[`String`](/sql-reference/data-types/string) **返回值** -如果 `s` 以(比较时不区分大小写的)`suffix` 结尾,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +当 `s` 以 `suffix`(不区分大小写)结尾时返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -1186,11 +1186,11 @@ SELECT endsWithCaseInsensitive('ClickHouse', 'HOUSE'); ## endsWithCaseInsensitiveUTF8 {#endsWithCaseInsensitiveUTF8} -自 v25.9 引入 +引入版本:v25.9 -返回字符串 `s` 是否以不区分大小写的 `suffix` 结尾。 -假设该字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,不会抛出异常,结果是未定义的。 +返回字符串 `s` 是否以不区分大小写的后缀 `suffix` 结尾。 +假定字符串包含有效的 UTF-8 编码文本。 +如果该假设不成立,不会抛出异常,结果未定义。 **语法** @@ -1201,11 +1201,11 @@ endsWithCaseInsensitiveUTF8(s, suffix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `suffix` — 要检查的后缀字符串(不区分大小写)。[`String`](/sql-reference/data-types/string) +* `suffix` — 要检查的后缀(不区分大小写)。[`String`](/sql-reference/data-types/string) **返回值** -如果 `s` 以(不区分大小写的)`suffix` 结尾,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果在不区分大小写的情况下,`s` 以 `suffix` 结尾,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -1226,7 +1226,7 @@ SELECT endsWithCaseInsensitiveUTF8('данных', 'ых'); 引入版本:v23.8 返回字符串 `s` 是否以 `suffix` 结尾。 -假定该字符串包含有效的 UTF-8 编码文本。 +假设该字符串包含有效的 UTF-8 编码文本。 如果该假设不成立,则不会抛出异常,且结果未定义。 **语法** @@ -1242,7 +1242,7 @@ endsWithUTF8(s, suffix) **返回值** -如果 `s` 以 `suffix` 结尾则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果 `s` 以 `suffix` 结尾,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -1260,21 +1260,21 @@ SELECT endsWithUTF8('данных', 'ых'); ## extractTextFromHTML {#extractTextFromHTML} -引入于:v21.3 +自 v21.3 引入 从 HTML 或 XHTML 中提取文本内容。 -此函数会移除 HTML 标签、注释以及 script/style 元素,仅保留文本内容。它会处理: +此函数会移除 HTML 标签、注释以及 script/style 元素,只保留文本内容。它会执行以下操作: * 移除所有 HTML/XML 标签 * 移除注释(``) * 移除 script 和 style 元素及其内容 -* 处理 CDATA 段(按原文复制) +* 处理 CDATA 段(按原样复制) * 正确处理并规范化空白字符 -注意:HTML 实体不会被解码,如有需要应使用单独的函数进行处理。 +注意:HTML 实体不会被解码,如有需要,应使用单独的函数进行处理。 -**语法** +**Syntax** ```sql extractTextFromHTML(html) @@ -1282,7 +1282,7 @@ extractTextFromHTML(html) **参数** -* `html` — 包含要提取文本的 HTML 内容的字符串。[`String`](/sql-reference/data-types/string) +* `html` — 包含要从中提取文本的 HTML 内容字符串。[`String`](/sql-reference/data-types/string) **返回值** @@ -1290,14 +1290,14 @@ extractTextFromHTML(html) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT extractTextFromHTML(' - 页面标题 + Page Title -

你好世界

+

Hello World!

@@ -1307,13 +1307,13 @@ SELECT extractTextFromHTML(' ```response title=Response ┌─extractTextFromHTML('...')─┐ -│ 页面标题 你好世界! │ +│ Page Title Hello World! │ └────────────────────────────────────────┘ ``` ## firstLine {#firstLine} -自 v23.7 起引入 +首次引入:v23.7 返回多行字符串的第一行。 @@ -1347,11 +1347,11 @@ SELECT firstLine('foo\\nbar\\nbaz') ## idnaDecode {#idnaDecode} -自 v24.1 起提供 +引入版本:v24.1 -根据 [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)机制,返回域名的 Unicode(UTF-8)表示形式(ToUnicode 算法)。 -如果出现错误(例如输入无效),则返回原始输入字符串。 -请注意,由于大小写归一化,反复应用 [`idnaEncode()`](#idnaEncode) 和 [`idnaDecode()`](#idnaDecode) 不一定会返回最初的字符串。 +根据 [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)机制,使用 ToUnicode 算法返回域名的 Unicode(UTF-8)表示。 +如果出现错误(例如输入无效),则返回输入字符串本身。 +请注意,由于大小写规范化,反复调用 [`idnaEncode()`](#idnaEncode) 和 [`idnaDecode()`](#idnaDecode) 不一定会返回原始字符串。 **语法** @@ -1365,7 +1365,7 @@ idnaDecode(s) **返回值** -根据输入值的 IDNA 规则,返回输入字符串的 Unicode(UTF-8)表示形式。[`String`](/sql-reference/data-types/string) +按照输入值的 IDNA 机制转换后,返回该字符串的 Unicode(UTF-8)表示形式。[`String`](/sql-reference/data-types/string) **示例** @@ -1383,10 +1383,10 @@ SELECT idnaDecode('xn--strae-oqa.xn--mnchen-3ya.de') ## idnaEncode {#idnaEncode} -引入于:v24.1 +引入版本:v24.1 -根据 [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)机制,返回域名的 ASCII 表示(ToASCII 算法)。 -输入字符串必须是 UTF 编码且能够转换为 ASCII 字符串,否则将抛出异常。 +根据[应用中的国际化域名](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)机制,返回域名的 ASCII 表示形式(使用 ToASCII 算法)。 +输入字符串必须是 UTF 编码,并且可以转换为 ASCII 字符串,否则会抛出异常。 :::note 不会执行百分号解码,也不会去除制表符、空格或控制字符。 @@ -1404,11 +1404,11 @@ idnaEncode(s) **返回值** -根据输入值的 IDNA 规则,返回该输入字符串的 ASCII 表示形式。[`String`](/sql-reference/data-types/string) +根据输入值的 IDNA 规范,返回输入字符串的 ASCII 表示形式。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT idnaEncode('straße.münchen.de') @@ -1422,14 +1422,14 @@ SELECT idnaEncode('straße.münchen.de') ## initcap {#initcap} -引入版本:v23.7 +引入自:v23.7 将每个单词的首字母转换为大写,其余字母转换为小写。 -单词被视为由非字母数字字符分隔的字母数字字符序列。 +单词是指由非字母数字字符分隔的字母数字字符序列。 :::note -由于 `initcap` 仅将每个单词的首字母转换为大写,对于包含撇号或大写字母的单词,你可能会观察到意外的行为。 -这是已知行为,目前暂无修复计划。 +由于 `initcap` 只将每个单词的首字母转换为大写,对于包含撇号或本身带有大写字母的单词,可能会出现非预期行为。 +这是已知行为,目前没有修复计划。 ::: **语法** @@ -1444,7 +1444,7 @@ initcap(s) **返回值** -返回一个字符串,其值为将 `s` 中每个单词的首字母转换为大写后的结果。[`String`](/sql-reference/data-types/string) +返回将 `s` 中每个单词的首字母转换为大写后的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -1460,7 +1460,7 @@ SELECT initcap('building for fast') └──────────────────────────────┘ ``` -**带有撇号或大写字母的单词的已知行为示例** +**关于包含撇号或大写字母的单词的已知行为示例** ```sql title=Query SELECT initcap('John''s cat won''t eat.'); @@ -1474,15 +1474,15 @@ SELECT initcap('John''s cat won''t eat.'); ## initcapUTF8 {#initcapUTF8} -引入于:v23.7 +引入版本:v23.7 -与 [`initcap`](#initcap) 类似,`initcapUTF8` 将每个单词的首字母转换为大写,其余字母转换为小写。 +与 [`initcap`](#initcap) 类似,`initcapUTF8` 会将每个单词的首字母转换为大写,其余字母转换为小写。 假定字符串包含有效的 UTF-8 编码文本。 -如果这一假设不成立,不会抛出异常,结果是未定义的。 +如果该假设不成立,不会抛出异常,结果未定义。 :::note -此函数不会自动检测语言,例如对于土耳其语,结果可能不完全正确(i/İ 与 i/I)。 -如果某个码点在大小写形式下对应的 UTF-8 字节序列长度不同,则该码点的结果可能不正确。 +该函数不会检测语言,例如对于土耳其语,结果可能不完全正确(i/İ 与 i/I)。 +如果某个码点的大写和小写形式的 UTF-8 字节序列长度不同,该码点的结果可能不正确。 ::: **语法** @@ -1501,7 +1501,7 @@ initcapUTF8(s) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT initcapUTF8('не тормозит') @@ -1515,7 +1515,7 @@ SELECT initcapUTF8('не тормозит') ## isValidASCII {#isValidASCII} -自 v25.9 起引入 +引入版本:v25.9 如果输入的 String 或 FixedString 仅包含 ASCII 字节(0x00–0x7F),则返回 1,否则返回 0。 @@ -1524,7 +1524,7 @@ SELECT initcapUTF8('не тормозит') ```sql ``` -**别名**: `isASCII` +**别名**:`isASCII` **参数** @@ -1547,7 +1547,7 @@ SELECT isValidASCII('hello') AS is_ascii, isValidASCII('你好') AS is_not_ascii 引入版本:v20.1 -检查该字节序列是否构成有效的 UTF-8 编码文本。 +检查这组字节是否构成有效的 UTF-8 编码文本。 **语法** @@ -1557,7 +1557,7 @@ isValidUTF8(s) **参数** -* `s` — 要检查是否为有效 UTF-8 编码的字符串。[`String`](/sql-reference/data-types/string) +* `s` — 待检查 UTF-8 编码有效性的字符串。[`String`](/sql-reference/data-types/string) **返回值** @@ -1568,7 +1568,7 @@ isValidUTF8(s) **使用示例** ```sql title=Query -SELECT isValidUTF8('\\xc3\\xb1') AS 有效, isValidUTF8('\\xc3\\x28') AS 无效 +SELECT isValidUTF8('\\xc3\\xb1') AS valid, isValidUTF8('\\xc3\\x28') AS invalid ``` ```response title=Response @@ -1579,9 +1579,9 @@ SELECT isValidUTF8('\\xc3\\xb1') AS 有效, isValidUTF8('\\xc3\\x28') AS 无效 ## jaroSimilarity {#jaroSimilarity} -引入于:v24.1 +自 v24.1 引入 -计算两个字节串之间的 [Jaro 相似度](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity)。 +计算两个字节字符串之间的 [Jaro 相似度](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance#Jaro_similarity)。 **语法** @@ -1596,7 +1596,7 @@ jaroSimilarity(s1, s2) **返回值** -返回两个字符串的 Jaro 相似度。[`Float64`](/sql-reference/data-types/float) +返回两个字符串之间的 Jaro 相似度。[`Float64`](/sql-reference/data-types/float) **示例** @@ -1614,9 +1614,9 @@ SELECT jaroSimilarity('clickhouse', 'click') ## jaroWinklerSimilarity {#jaroWinklerSimilarity} -引入版本:v24.1 +自 v24.1 起引入 -计算两个字节串之间的 [Jaro-Winkler 相似度](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance)。 +计算两个字节字符串之间的 [Jaro-Winkler 相似度](https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance)。 **语法** @@ -1635,7 +1635,7 @@ jaroWinklerSimilarity(s1, s2) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT jaroWinklerSimilarity('clickhouse', 'click') @@ -1649,9 +1649,9 @@ SELECT jaroWinklerSimilarity('clickhouse', 'click') ## left {#left} -引入版本:v22.1 +自 v22.1 引入 -返回字符串 `s` 中从左侧起、从指定 `offset` 位置开始的子字符串。 +返回从左侧起、偏移量为 `offset` 的字符串 `s` 的子串。 **语法** @@ -1661,16 +1661,16 @@ left(s, offset) **参数** -* `s` — 要从中截取子字符串的字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) -* `offset` — 偏移量的字节数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `s` — 要从中获取子字符串的字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) +* `offset` — 偏移的字节数。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** 返回: -* 对于正的 `offset`,返回从字符串左侧开始、包含 `offset` 个字节的 `s` 的子字符串。 -* 对于负的 `offset`,返回从字符串左侧开始、包含 `length(s) - |offset|` 个字节的 `s` 的子字符串。 -* 当 `length` 为 `0` 时,返回空字符串。 +* 当 `offset` 为正数时,从字符串左侧开始,返回长度为 `offset` 字节的 `s` 的子字符串。 +* 当 `offset` 为负数时,从字符串左侧开始,返回长度为 `length(s) - |offset|` 字节的 `s` 的子字符串。 +* 如果 `length` 为 `0`,返回空字符串。 [`String`](/sql-reference/data-types/string) **示例** @@ -1685,7 +1685,7 @@ SELECT left('Hello World', 5) Hello ``` -**负偏移量** +**负偏移** ```sql title=Query SELECT left('Hello World', -6) @@ -1697,9 +1697,9 @@ Hello ## leftPad {#leftPad} -自 v21.8 起引入 +引入于:v21.8 -从左侧开始为字符串填充空格或指定的字符串(必要时可重复多次),直到结果字符串达到指定的 `length`。 +在左侧使用空格或指定字符串(必要时重复多次)对字符串进行填充,直到结果字符串达到指定的 `length`。 **语法** @@ -1713,15 +1713,15 @@ leftPad(string, length[, pad_string]) * `string` — 需要进行填充的输入字符串。[`String`](/sql-reference/data-types/string) * `length` — 结果字符串的长度。如果该值小于输入字符串的长度,则输入字符串会被截断为 `length` 个字符。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — 可选。用于填充输入字符串的字符串。如果未指定,则使用空格对输入字符串进行填充。[`String`](/sql-reference/data-types/string) +* `pad_string` — 可选。用于对输入字符串进行填充的字符串。如果未指定,则使用空格对输入字符串进行填充。[`String`](/sql-reference/data-types/string) **返回值** -返回一个指定长度的左侧填充后的字符串。[`String`](/sql-reference/data-types/string) +返回一个按给定长度左侧填充后的字符串。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT leftPad('abc', 7, '*'), leftPad('def', 7) @@ -1735,10 +1735,10 @@ SELECT leftPad('abc', 7, '*'), leftPad('def', 7) ## leftPadUTF8 {#leftPadUTF8} -引入版本:v21.8 +引入于:v21.8 -从左侧开始使用空格或指定字符串(必要时可重复多次)填充一个 UTF-8 字符串,直到结果字符串达到给定长度。 -与按字节计算字符串长度的 [`leftPad`](#leftPad) 不同,此处的字符串长度按 Unicode 码点计算。 +从左侧使用空格或指定字符串(必要时可重复多次)填充 UTF-8 字符串,直到结果字符串达到给定长度。 +与按字节计算字符串长度的 [`leftPad`](#leftPad) 不同,这里的字符串长度是按 Unicode 码点数量来计算的。 **语法** @@ -1754,11 +1754,11 @@ leftPadUTF8(string, length[, pad_string]) **返回值** -返回指定长度的左侧填充字符串。[`String`](/sql-reference/data-types/string) +返回按指定长度左侧填充后的字符串。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7) @@ -1772,9 +1772,9 @@ SELECT leftPadUTF8('абвг', 7, '*'), leftPadUTF8('дежз', 7) ## leftUTF8 {#leftUTF8} -自 v22.1 起引入 +引入版本:v22.1 -返回 UTF-8 编码字符串 `s` 中,从左侧开始、在指定 `offset` 处的子串。 +返回 UTF-8 编码字符串 `s` 中,从左侧偏移 `offset` 后开始的子字符串。 **语法** @@ -1784,15 +1784,15 @@ leftUTF8(s, offset) **参数** -* `s` — 要从中计算子字符串的 UTF-8 编码字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) +* `s` — 用于截取子字符串的 UTF-8 编码字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) * `offset` — 偏移量的字节数。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** 返回: -* 当 `offset` 为正数时,返回从字符串左侧开始、包含 `offset` 个字节的 `s` 的子字符串。 -* 当 `offset` 为负数时,返回从字符串左侧开始、包含 `length(s) - |offset|` 个字节的 `s` 的子字符串。 +* 当 `offset` 为正时,返回从字符串左侧开始、长度为 `offset` 字节的 `s` 的子字符串。 +* 当 `offset` 为负时,返回从字符串左侧开始、长度为 `length(s) - |offset|` 字节的 `s` 的子字符串。 * 当 `length` 为 0 时,返回空字符串。 [`String`](/sql-reference/data-types/string) @@ -1820,11 +1820,11 @@ SELECT leftUTF8('Привет', -4) ## lengthUTF8 {#lengthUTF8} -引入版本:v1.1 +自 v1.1 起引入 -返回字符串的长度,按 Unicode 码点计数,而不是按字节或字符计数。 +返回字符串按 Unicode 码点计算的长度,而不是按字节或字符计算。 该函数假定字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,函数不会抛出异常,结果将是未定义的。 +如果该假设不成立,则不会抛出异常,且结果未定义。 **语法** @@ -1840,7 +1840,7 @@ lengthUTF8(s) **返回值** -字符串 `s` 的长度,以 Unicode 码点的数量表示。[`UInt64`](/sql-reference/data-types/int-uint) +字符串 `s` 的长度,以 Unicode 码点个数计。[`UInt64`](/sql-reference/data-types/int-uint) **示例** @@ -1868,7 +1868,7 @@ SELECT lengthUTF8('Здравствуй, мир!') lower(s) ``` -**别名**:`lcase` +**别名**: `lcase` **参数** @@ -1876,11 +1876,11 @@ lower(s) **返回值** -返回由 `s` 转换得到的小写字符串。[`String`](/sql-reference/data-types/string) +返回将 `s` 转换为小写后的字符串。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT lower('CLICKHOUSE') @@ -1894,9 +1894,9 @@ SELECT lower('CLICKHOUSE') ## lowerUTF8 {#lowerUTF8} -引入版本:v1.1 +自 v1.1 引入 -将字符串转换为小写,前提是假定该字符串包含有效的 UTF-8 编码文本。若该假设不成立,则不会抛出异常,其结果未定义。 +将字符串转换为小写形式,前提是假定该字符串包含有效的 UTF-8 编码文本。如果该假设不成立,则不会抛出异常,结果未定义。 **语法** @@ -1906,7 +1906,7 @@ lowerUTF8(input) **参数** -* `input` — 要转换为小写形式的输入字符串。[`String`](/sql-reference/data-types/string) +* `input` — 要转换为小写的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** @@ -1914,7 +1914,7 @@ lowerUTF8(input) **示例** -**first** +**示例一** ```sql title=Query SELECT lowerUTF8('München') as Lowerutf8; @@ -1928,7 +1928,7 @@ münchen 引入于:v21.11 -根据 [NFC 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行规范化。 +根据 [NFC 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行规范化处理。 **语法** @@ -1938,11 +1938,11 @@ normalizeUTF8NFC(str) **参数** -* `str` — UTF-8 编码的输入字符串。[`String`](/sql-reference/data-types/string) +* `str` — 采用 UTF-8 编码的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回该 UTF-8 字符串的 NFC 归一化形式。[`String`](/sql-reference/data-types/string) +返回 UTF-8 字符串的 NFC 归一化形式。[`String`](/sql-reference/data-types/string) **示例** @@ -1950,7 +1950,7 @@ normalizeUTF8NFC(str) ```sql title=Query SELECT -'é' AS original, -- e + 组合尖音符 (U+0065 + U+0301) +'é' AS original, -- e + combining acute accent (U+0065 + U+0301) length(original), normalizeUTF8NFC('é') AS nfc_normalized, -- é (U+00E9) length(nfc_normalized); @@ -1964,9 +1964,9 @@ length(nfc_normalized); ## normalizeUTF8NFD {#normalizeUTF8NFD} -引入于:v21.11 +引入版本:v21.11 -根据 [NFD 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行规范化处理。 +根据 [NFD 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)将 UTF-8 字符串进行规范化。 **语法** @@ -1980,17 +1980,17 @@ normalizeUTF8NFD(str) **返回值** -返回 UTF-8 字符串的 NFD 规范形式。[`String`](/sql-reference/data-types/string) +返回该 UTF-8 字符串的 NFD 归一化形式。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT 'é' AS original, -- é (U+00E9) length(original), - normalizeUTF8NFD('é') AS nfd_normalized, -- e + 组合重音符 (U+0065 + U+0301) + normalizeUTF8NFD('é') AS nfd_normalized, -- e + combining acute (U+0065 + U+0301) length(nfd_normalized); ``` @@ -2002,9 +2002,9 @@ SELECT ## normalizeUTF8NFKC {#normalizeUTF8NFKC} -首次在 v21.11 中引入。 +引入版本:v21.11 -根据 [NFKC 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行规范化处理。 +按照 [NFKC 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行归一化处理。 **语法** @@ -2014,7 +2014,7 @@ normalizeUTF8NFKC(str) **参数** -* `str` — 采用 UTF-8 编码的输入字符串。[`String`](/sql-reference/data-types/string) +* `str` — 以 UTF-8 编码的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** @@ -2022,12 +2022,12 @@ normalizeUTF8NFKC(str) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT - '① ② ③' AS original, -- 圆圈数字字符 - normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- 转换为 1 2 3 + '① ② ③' AS original, -- Circled number characters + normalizeUTF8NFKC('① ② ③') AS nfkc_normalized; -- Converts to 1 2 3 ``` ```response title=Response @@ -2038,9 +2038,9 @@ SELECT ## normalizeUTF8NFKD {#normalizeUTF8NFKD} -引入版本:v21.11 +引入自:v21.11 -按照 [NFKD 规范化形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行规范化处理。 +根据 [NFKD 规范分解形式](https://en.wikipedia.org/wiki/Unicode_equivalence#Normal_forms)对 UTF-8 字符串进行规范化。 **语法** @@ -2050,7 +2050,7 @@ normalizeUTF8NFKD(str) **参数** -* `str` — 采用 UTF-8 编码的输入字符串。[`String`](/sql-reference/data-types/string) +* `str` — UTF-8 编码的输入字符串。[`String`](/sql-reference/data-types/string) **返回值** @@ -2062,8 +2062,8 @@ normalizeUTF8NFKD(str) ```sql title=Query SELECT - 'H₂O²' AS original, -- H + 下标 2 + O + 上标 2 - normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- 转换为 H 2 O 2 + 'H₂O²' AS original, -- H + subscript 2 + O + superscript 2 + normalizeUTF8NFKD('H₂O²') AS nfkd_normalized; -- Converts to H 2 O 2 ``` ```response title=Response @@ -2074,9 +2074,9 @@ SELECT ## punycodeDecode {#punycodeDecode} -引入版本:v24.1 +自 v24.1 起引入 -返回 UTF-8 编码的明文字符串,该字符串是对 [Punycode](https://en.wikipedia.org/wiki/Punycode) 编码字符串解码得到的结果。 +返回 [Punycode](https://en.wikipedia.org/wiki/Punycode) 编码字符串对应的 UTF-8 编码明文。 如果未提供有效的 Punycode 编码字符串,则会抛出异常。 **语法** @@ -2087,11 +2087,11 @@ punycodeDecode(s) **参数** -* `s` — 使用 Punycode 编码的字符串。[`String`](/sql-reference/data-types/string) +* `s` — 经 Punycode 编码的字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回输入值解码后的原始字符串。[`String`](/sql-reference/data-types/string) +返回输入值对应的明文字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -2109,10 +2109,10 @@ SELECT punycodeDecode('Mnchen-3ya') ## punycodeEncode {#punycodeEncode} -引入于:v24.1 +引入版本:v24.1 返回字符串的 [Punycode](https://en.wikipedia.org/wiki/Punycode) 表示形式。 -字符串必须为 UTF-8 编码,否则行为未定义。 +字符串必须为 UTF-8 编码,否则其行为未定义。 **语法** @@ -2130,7 +2130,7 @@ punycodeEncode(s) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT punycodeEncode('München') @@ -2144,9 +2144,9 @@ SELECT punycodeEncode('München') ## regexpExtract {#regexpExtract} -自 v23.2 起引入 +自 v23.2 起引入。 -从 `haystack` 中提取与正则表达式模式匹配且对应给定正则组索引的第一个字符串。 +从 `haystack` 中提取与正则表达式匹配、并对应指定正则捕获组索引的第一个字符串。 **语法** @@ -2158,13 +2158,13 @@ regexpExtract(haystack, pattern[, index]) **参数** -* `haystack` — 将在其中匹配正则表达式模式的字符串。[`String`](/sql-reference/data-types/string) -* `pattern` — 正则表达式字符串。`pattern` 可以包含多个正则分组,`index` 指示要提取的正则分组。索引为 0 表示匹配整个正则表达式。[`const String`](/sql-reference/data-types/string) -* `index` — 可选。一个大于或等于 0 的整数,默认值为 1。表示要提取的正则分组。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `haystack` — 要在其中匹配正则表达式模式的字符串。[`String`](/sql-reference/data-types/string) +* `pattern` — 正则表达式字符串。`pattern` 可以包含多个正则捕获组,`index` 表示要提取的捕获组。索引为 0 表示匹配整个正则表达式。[`const String`](/sql-reference/data-types/string) +* `index` — 可选。大于或等于 0 的整数,默认值为 1。表示要提取的正则捕获组编号。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -返回匹配到的字符串。[`String`](/sql-reference/data-types/string) +返回匹配的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -2186,9 +2186,9 @@ SELECT ## repeat {#repeat} -自 v20.1 起引入 +引入于:v20.1 -按指定次数将字符串与自身连接。 +按指定次数将字符串与其自身连接。 **语法** @@ -2199,11 +2199,11 @@ repeat(s, n) **参数** * `s` — 要重复的字符串。[`String`](/sql-reference/data-types/string) -* `n` — 重复该字符串的次数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `n` — 字符串重复的次数。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -一个将字符串 `s` 重复 `n` 次得到的字符串。如果 `n` 为负数,则函数返回空字符串。[`String`](/sql-reference/data-types/string) +一个由字符串 `s` 重复 `n` 次组成的字符串。如果 `n` 为负数,则函数返回空字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -2223,9 +2223,9 @@ SELECT repeat('abc', 10) 引入版本:v1.1 -反转字符串中 Unicode 码点的序列。 +对字符串中的 Unicode 码点序列进行反转。 假设字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,则不会抛出异常,结果未定义。 +如果该假设不成立,不会抛出异常,结果未定义。 **语法** @@ -2239,11 +2239,11 @@ reverseUTF8(s) **返回值** -返回一个字符串,内容为反转后的 Unicode 码点序列。[`String`](/sql-reference/data-types/string) +返回一个字符串,其 Unicode 码点序列被反转。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT reverseUTF8('ClickHouse') @@ -2257,7 +2257,7 @@ esuoHkcilC 引入版本:v22.1 -返回字符串 `s` 末尾(从右侧开始)长度为指定 `offset` 的子字符串。 +返回字符串 `s` 从右侧(末尾)开始、长度为 `offset` 的子串。 **语法** @@ -2274,9 +2274,9 @@ right(s, offset) 返回: -* 当 `offset` 为正数时,返回从字符串右侧开始、长度为 `offset` 个字节的 `s` 的子字符串。 -* 当 `offset` 为负数时,返回从字符串右侧开始、长度为 `length(s) - |offset|` 个字节的 `s` 的子字符串。 -* 当 `length` 为 `0` 时,返回空字符串。 +* 对于正值的 `offset`,返回从字符串右侧开始、长度为 `offset` 字节的 `s` 的子字符串。 +* 对于负值的 `offset`,返回从字符串右侧开始、长度为 `length(s) - |offset|` 字节的 `s` 的子字符串。 +* 如果 `length` 为 `0`,则返回空字符串。 [`String`](/sql-reference/data-types/string) **示例** @@ -2305,7 +2305,7 @@ lo 引入版本:v21.8 -在右侧使用空格或指定字符串(必要时可重复多次)对一个字符串进行填充,直到结果字符串达到指定的 `length`。 +从右侧开始使用空格或指定字符串(必要时可重复多次)对字符串进行填充,直到结果字符串达到指定的 `length`。 **语法** @@ -2317,13 +2317,13 @@ rightPad(string, length[, pad_string]) **参数** -* `string` — 需要进行填充的输入字符串。[`String`](/sql-reference/data-types/string) +* `string` — 待填充的输入字符串。[`String`](/sql-reference/data-types/string) * `length` — 结果字符串的长度。如果该值小于输入字符串的长度,则输入字符串会被截断为 `length` 个字符。[`(U)Int*`](/sql-reference/data-types/int-uint) * `pad_string` — 可选。用于填充输入字符串的字符串。如果未指定,则使用空格填充输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回一个在右侧填充到指定长度的字符串。[`String`](/sql-reference/data-types/string) +返回在右侧填充到指定长度的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -2343,8 +2343,8 @@ SELECT rightPad('abc', 7, '*'), rightPad('abc', 7) 自 v21.8 引入 -从右侧使用空格或指定字符串进行填充(如有需要可多次重复),直到结果字符串达到给定长度。 -与按字节计字符串长度的 [`rightPad`](#rightPad) 不同,这里的字符串长度按 Unicode 码点计数。 +从右侧开始使用空格或指定字符串(必要时可重复多次)对字符串进行填充,直到结果字符串达到给定长度。 +与按字节计算字符串长度的 [`rightPad`](#rightPad) 不同,此处的字符串长度按代码点(Unicode 码点)计算。 **语法** @@ -2354,13 +2354,13 @@ rightPadUTF8(string, length[, pad_string]) **参数** -* `string` — 需要被填充的输入字符串。[`String`](/sql-reference/data-types/string) +* `string` — 要填充的输入字符串。[`String`](/sql-reference/data-types/string) * `length` — 结果字符串的长度。如果该值小于输入字符串的长度,则输入字符串会被截断为 `length` 个字符。[`(U)Int*`](/sql-reference/data-types/int-uint) -* `pad_string` — 可选。用于对输入字符串进行填充的字符串。如果未指定,则使用空格对输入字符串进行填充。[`String`](/sql-reference/data-types/string) +* `pad_string` — 可选。用于填充输入字符串的字符串。如果未指定,则使用空格对输入字符串进行填充。[`String`](/sql-reference/data-types/string) **返回值** -返回按指定长度右侧填充后的字符串。[`String`](/sql-reference/data-types/string) +返回一个在右侧填充到指定长度的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -2380,7 +2380,7 @@ SELECT rightPadUTF8('абвг', 7, '*'), rightPadUTF8('абвг', 7) 引入于:v22.1 -返回 UTF-8 编码字符串 `s` 从右侧按指定 `offset` 开始的子字符串。 +返回对 UTF-8 编码字符串 `s` 从右侧按指定 `offset` 偏移后得到的子字符串。 **语法** @@ -2390,15 +2390,15 @@ rightUTF8(s, offset) **参数** -* `s` — 从中截取子字符串的 UTF-8 编码字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) +* `s` — 用于截取子字符串的 UTF-8 编码字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) * `offset` — 偏移量的字节数。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** 返回: -* 当 `offset` 为正数时,从字符串右侧开始的、长度为 `offset` 字节的 `s` 的子字符串。 -* 当 `offset` 为负数时,从字符串右侧开始的、长度为 `length(s) - |offset|` 字节的 `s` 的子字符串。 +* 对于正的 `offset`,返回从字符串右侧开始,长度为 `offset` 字节的 `s` 的子字符串。 +* 对于负的 `offset`,返回从字符串右侧开始,长度为 `length(s) - |offset|` 字节的 `s` 的子字符串。 * 当 `length` 为 `0` 时,返回空字符串。 [`String`](/sql-reference/data-types/string) @@ -2426,7 +2426,7 @@ SELECT rightUTF8('Привет', -4) ## soundex {#soundex} -自 v23.4 版本起引入 +自 v23.4 起引入 返回字符串的 [Soundex 代码](https://en.wikipedia.org/wiki/Soundex)。 @@ -2462,7 +2462,7 @@ SELECT soundex('aksel') 引入版本:v23.5 -按照指定次数将空格字符(` `)与自身连接。 +将空格字符(` `)按指定次数重复拼接。 **语法** @@ -2472,11 +2472,11 @@ space(n) **参数** -* `n` — 空格重复的次数。[`(U)Int*`](/sql-reference/data-types/int-uint) +* `n` — 要重复空格的次数。[`(U)Int*`](/sql-reference/data-types/int-uint) **返回值** -返回一个由空格重复 `n` 次组成的字符串。如果 `n <= 0`,函数返回空字符串。[`String`](/sql-reference/data-types/string) +返回一个包含空格重复 `n` 次的字符串。如果 `n <= 0`,函数返回空字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -2494,11 +2494,11 @@ SELECT space(3) AS res, length(res); ## sparseGrams {#sparseGrams} -引入版本:v25.5 +自 v25.5 引入 查找给定字符串中所有长度至少为 `n` 的子串, -其中该子串边界处的 (n-1)-gram 的哈希值 -都严格大于该子串内部任何 (n-1)-gram 的哈希值。 +这些子串需要满足:其边界上的 (n-1)-gram 的哈希值 +都严格大于子串内部任意 (n-1)-gram 的哈希值。 使用 `CRC32` 作为哈希函数。 **语法** @@ -2510,12 +2510,12 @@ sparseGrams(s[, min_ngram_length, max_ngram_length]) **参数** * `s` — 输入字符串。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 可选。提取的 n-gram 的最小长度。默认值和最小值为 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 可选。提取的 n-gram 的最大长度。默认值为 100。值不得小于 `min_ngram_length`。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — 可选。提取的 n-gram 的最小长度。默认值也是允许的最小值,为 3。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — 可选。提取的 n-gram 的最大长度。默认值为 100。该值不得小于 `min_ngram_length`。[`UInt*`](/sql-reference/data-types/int-uint) **返回值** -返回选定子字符串的数组。[`Array(String)`](/sql-reference/data-types/array) +返回所选子串的数组。[`Array(String)`](/sql-reference/data-types/array) **示例** @@ -2533,11 +2533,11 @@ SELECT sparseGrams('alice', 3) ## sparseGramsHashes {#sparseGramsHashes} -引入于:v25.5 +引入版本:v25.5 查找给定字符串中所有长度至少为 `n` 的子串的哈希值, -并且这些子串在边界处的 (n-1)-gram 的哈希值 -都严格大于该子串内部任意 (n-1)-gram 的哈希值。 +其中要求该子串边界处的 (n-1)-gram 的哈希值 +严格大于子串内部任意 (n-1)-gram 的哈希值。 使用 `CRC32` 作为哈希函数。 **语法** @@ -2554,11 +2554,11 @@ sparseGramsHashes(s[, min_ngram_length, max_ngram_length]) **返回值** -返回一个由所选子串的 CRC32 哈希值组成的数组。[`Array(UInt32)`](/sql-reference/data-types/array) +返回所选子串的 CRC32 哈希数组。[`Array(UInt32)`](/sql-reference/data-types/array) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT sparseGramsHashes('alice', 3) @@ -2574,8 +2574,8 @@ SELECT sparseGramsHashes('alice', 3) 引入版本:v25.5 -查找给定 UTF-8 字符串中所有长度至少为 `n` 的子字符串的哈希值,这些子字符串需满足:其边界处的 (n-1)-gram 的哈希值都严格大于该子字符串内部任意一个 (n-1)-gram 的哈希值。 -输入应为 UTF-8 字符串,如遇到无效 UTF-8 序列则抛出异常。 +查找给定 UTF-8 字符串中所有长度至少为 `n` 的子串的哈希值,这些子串需要满足:其边界处的 (n-1)-gram 的哈希值都严格大于该子串内部任意 (n-1)-gram 的哈希值。 +该函数要求输入为 UTF-8 编码的字符串,如果遇到无效的 UTF-8 序列则抛出异常。 使用 `CRC32` 作为哈希函数。 **语法** @@ -2587,12 +2587,12 @@ sparseGramsHashesUTF8(s[, min_ngram_length, max_ngram_length]) **参数** * `s` — 输入字符串。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 可选。提取的 ngram 的最小长度。默认值和最小值为 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 可选。提取的 ngram 的最大长度。默认值为 100。其值不得小于 `min_ngram_length`。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — 可选。提取的 ngram 的最小长度。默认值和最小允许值为 3。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — 可选。提取的 ngram 的最大长度。默认值为 100。必须不小于 `min_ngram_length`。[`UInt*`](/sql-reference/data-types/int-uint) **返回值** -返回一个数组,包含选定 UTF-8 子串的 CRC32 哈希值。[`Array(UInt32)`](/sql-reference/data-types/array) +返回一个数组,其中包含所选 UTF-8 子串的 CRC32 哈希值。[`Array(UInt32)`](/sql-reference/data-types/array) **示例** @@ -2610,10 +2610,10 @@ SELECT sparseGramsHashesUTF8('алиса', 3) ## sparseGramsUTF8 {#sparseGramsUTF8} -引入版本:v25.5 +引入于:v25.5 -在给定的 UTF-8 字符串中查找所有长度至少为 `n` 的子串,这些子串的边界处的 (n-1)-gram 的哈希值严格大于该子串内部任意 (n-1)-gram 的哈希值。 -该函数要求输入为 UTF-8 字符串,如果遇到无效的 UTF-8 序列则会抛出异常。 +查找给定 UTF-8 字符串中所有长度至少为 `n` 的子字符串,这些子字符串在边界处的 (n-1)-gram 的哈希值严格大于子字符串内部任意 (n-1)-gram 的哈希值。 +要求输入为 UTF-8 字符串,如遇到无效的 UTF-8 序列则抛出异常。 使用 `CRC32` 作为哈希函数。 **语法** @@ -2625,12 +2625,12 @@ sparseGramsUTF8(s[, min_ngram_length, max_ngram_length]) **参数** * `s` — 输入字符串。[`String`](/sql-reference/data-types/string) -* `min_ngram_length` — 可选。要提取的 ngram 的最小长度。默认值和最小值为 3。[`UInt*`](/sql-reference/data-types/int-uint) -* `max_ngram_length` — 可选。要提取的 ngram 的最大长度。默认值为 100,且不得小于 `min_ngram_length`。[`UInt*`](/sql-reference/data-types/int-uint) +* `min_ngram_length` — 可选。提取的 ngram 的最小长度。默认值和最小值为 3。[`UInt*`](/sql-reference/data-types/int-uint) +* `max_ngram_length` — 可选。提取的 ngram 的最大长度。默认值为 100。不得小于 `min_ngram_length`。[`UInt*`](/sql-reference/data-types/int-uint) **返回值** -返回选定的 UTF-8 子字符串数组。[`Array(String)`](/sql-reference/data-types/array) +返回选取的 UTF-8 子串数组。[`Array(String)`](/sql-reference/data-types/array) **示例** @@ -2648,9 +2648,9 @@ SELECT sparseGramsUTF8('алиса', 3) ## startsWith {#startsWith} -自 v1.1 起引入 +自 v1.1 引入 -检查一个字符串是否以给定字符串开头。 +判断字符串是否以给定的字符串开头。 **语法** @@ -2661,7 +2661,7 @@ startsWith(s, prefix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `prefix` — 要检查的前缀字符串。[`String`](/sql-reference/data-types/string) +* `prefix` — 要检查的前缀。[`String`](/sql-reference/data-types/string) **返回值** @@ -2669,7 +2669,7 @@ startsWith(s, prefix) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT startsWith('ClickHouse', 'Click'); @@ -2683,9 +2683,9 @@ SELECT startsWith('ClickHouse', 'Click'); ## startsWithCaseInsensitive {#startsWithCaseInsensitive} -自 v25.9 引入 +引入于:v25.9 -检查字符串是否以给定字符串(不区分大小写)开头。 +检查某个字符串是否以给定字符串(不区分大小写)开头。 **语法** @@ -2696,11 +2696,11 @@ startsWithCaseInsensitive(s, prefix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `prefix` — 要检查的前缀,大小写不敏感。[`String`](/sql-reference/data-types/string) +* `prefix` — 要检查的、不区分大小写的前缀。[`String`](/sql-reference/data-types/string) **返回值** -如果 `s` 以大小写不敏感的 `prefix` 开头,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) +如果 `s` 以 `prefix`(不区分大小写)开头,则返回 `1`,否则返回 `0`。[`UInt8`](/sql-reference/data-types/int-uint) **示例** @@ -2718,11 +2718,11 @@ SELECT startsWithCaseInsensitive('ClickHouse', 'CLICK'); ## startsWithCaseInsensitiveUTF8 {#startsWithCaseInsensitiveUTF8} -引入版本:v25.9 +引入于:v25.9 -检查字符串是否以给定的不区分大小写的前缀开头。 +检查字符串是否以给定的、大小写不敏感的前缀开始。 假定字符串包含有效的 UTF-8 编码文本。 -当该假设不成立时,不会抛出异常,结果未定义。 +如果该假设不成立,不会抛出异常,结果未定义。 **语法** @@ -2733,7 +2733,7 @@ startsWithCaseInsensitiveUTF8(s, prefix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `prefix` — 要检查的不区分大小写的前缀。[`String`](/sql-reference/data-types/string) +* `prefix` — 要检查的前缀(不区分大小写)。[`String`](/sql-reference/data-types/string) **返回值** @@ -2741,7 +2741,7 @@ startsWithCaseInsensitiveUTF8(s, prefix) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT startsWithCaseInsensitiveUTF8('приставка', 'при') @@ -2755,11 +2755,11 @@ SELECT startsWithCaseInsensitiveUTF8('приставка', 'при') ## startsWithUTF8 {#startsWithUTF8} -引入自:v23.8 +引入于:v23.8 检查字符串是否以指定前缀开头。 -假设该字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,则不会抛出异常,结果未定义。 +假定字符串包含有效的 UTF-8 编码文本。 +如果该假设不成立,不会抛出异常,且结果未定义。 **语法** @@ -2770,7 +2770,7 @@ startsWithUTF8(s, prefix) **参数** * `s` — 要检查的字符串。[`String`](/sql-reference/data-types/string) -* `prefix` — 要检查的前缀字符串。[`String`](/sql-reference/data-types/string) +* `prefix` — 要检查的前缀。[`String`](/sql-reference/data-types/string) **返回值** @@ -2778,7 +2778,7 @@ startsWithUTF8(s, prefix) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT startsWithUTF8('приставка', 'при') @@ -2792,9 +2792,9 @@ SELECT startsWithUTF8('приставка', 'при') ## stringBytesEntropy {#stringBytesEntropy} -自 v25.6 版本起引入 +引入版本:v25.6 -计算字符串中字节分布的 Shannon 熵。 +计算字符串中字节分布的香农熵。 **语法** @@ -2808,7 +2808,7 @@ stringBytesEntropy(s) **返回值** -返回字符串中字节分布的 Shannon 熵值。[`Float64`](/sql-reference/data-types/float) +返回字符串中字节分布的香农熵。[`Float64`](/sql-reference/data-types/float) **示例** @@ -2826,9 +2826,9 @@ SELECT stringBytesEntropy('Hello, world!') ## stringBytesUniq {#stringBytesUniq} -在 v25.6 中引入 +引入版本:v25.6 -统计字符串中不同字节的数量。 +统计字符串中不同字节的个数。 **语法** @@ -2842,7 +2842,7 @@ stringBytesUniq(s) **返回值** -返回字符串中不同字节的个数。[`UInt16`](/sql-reference/data-types/int-uint) +返回字符串中不同字节的数量。[`UInt16`](/sql-reference/data-types/int-uint) **示例** @@ -2860,9 +2860,9 @@ SELECT stringBytesUniq('Hello') ## stringJaccardIndex {#stringJaccardIndex} -自 v23.11 引入 +引入版本:v23.11 -计算两个字节串之间的 [Jaccard 相似系数](https://en.wikipedia.org/wiki/Jaccard_index)。 +计算两个字节字符串之间的 [Jaccard 相似系数](https://en.wikipedia.org/wiki/Jaccard_index)。 **语法** @@ -2895,9 +2895,9 @@ SELECT stringJaccardIndex('clickhouse', 'mouse') ## stringJaccardIndexUTF8 {#stringJaccardIndexUTF8} -在 v23.11 中引入 +引入于:v23.11 -与 [`stringJaccardIndex`](#stringJaccardIndex) 类似,但用于 UTF8 编码的字符串。 +与 [`stringJaccardIndex`](#stringJaccardIndex) 类似,但适用于 UTF-8 编码的字符串。 **语法** @@ -2907,12 +2907,12 @@ stringJaccardIndexUTF8(s1, s2) **参数** -* `s1` — 第一个输入 UTF8 字符串。[`String`](/sql-reference/data-types/string) -* `s2` — 第二个输入 UTF8 字符串。[`String`](/sql-reference/data-types/string) +* `s1` — 第一个 UTF8 输入字符串。[`String`](/sql-reference/data-types/string) +* `s2` — 第二个 UTF8 输入字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回这两个 UTF8 字符串之间的 Jaccard 相似系数。[`Float64`](/sql-reference/data-types/float) +返回两个 UTF8 字符串之间的杰卡德相似系数。[`Float64`](/sql-reference/data-types/float) **示例** @@ -2932,13 +2932,13 @@ SELECT stringJaccardIndexUTF8('我爱你', '我也爱你') 引入版本:v1.1 -返回字符串 `s` 中从指定字节索引 `offset` 开始的子串。 -字节计数从 1 开始,逻辑如下: +返回字符串 `s` 从指定字节索引 `offset` 开始的子串。 +字节计数从 1 开始,遵循以下规则: * 如果 `offset` 为 `0`,则返回空字符串。 * 如果 `offset` 为负数,则子串从字符串末尾起第 `pos` 个字符处开始,而不是从开头开始。 -可选参数 `length` 指定返回子串所允许的最大字节数。 +可选参数 `length` 指定返回子串的最大字节数上限。 **语法** @@ -2974,9 +2974,9 @@ SELECT 'database' AS db, substr(db, 5), substr(db, 5, 1) ## substringIndex {#substringIndex} -自 v23.7 引入 +首次引入于:v23.7 -返回字符串 `s` 中,在分隔符 `delim` 第 `count` 次出现之前的子串,其行为与 Spark 或 MySQL 中相同。 +返回字符串 `s` 中在分隔符 `delim` 第 `count` 次出现之前的子字符串,其行为与 Spark 或 MySQL 中的同名函数相同。 **语法** @@ -2988,13 +2988,13 @@ substringIndex(s, delim, count) **参数** -* `s` — 要从中提取子字符串的源字符串。[`String`](/sql-reference/data-types/string) -* `delim` — 用于分割的分隔符字符串。[`String`](/sql-reference/data-types/string) -* `count` — 在提取子字符串之前要统计的分隔符出现次数。如果 `count` 为正,则返回最后一个分隔符(从左侧计数)左边的所有内容。如果 `count` 为负,则返回最后一个分隔符(从右侧计数)右边的所有内容。[`UInt`](/sql-reference/data-types/int-uint) 或 [`Int`](/sql-reference/data-types/int-uint) +* `s` — 要从中提取子字符串的字符串。[`String`](/sql-reference/data-types/string) +* `delim` — 用于分割的分隔符字符。[`String`](/sql-reference/data-types/string) +* `count` — 在提取子字符串之前需要统计的分隔符出现次数。如果 `count` 为正,则返回从左向右计数时最后一个(即第 `count` 个)分隔符左侧的所有内容。如果 `count` 为负,则返回从右向左计数时最后一个(即第 `|count|` 个)分隔符右侧的所有内容。[`UInt`](/sql-reference/data-types/int-uint) 或 [`Int`](/sql-reference/data-types/int-uint) **返回值** -返回 `s` 中在 `delim` 第 `count` 次出现之前的子字符串。[`String`](/sql-reference/data-types/string) +返回 `s` 中在第 `count` 次出现的 `delim` 之前的子字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3014,9 +3014,9 @@ SELECT substringIndex('www.clickhouse.com', '.', 2) 引入版本:v23.7 -返回字符串 `s` 中在分隔符 `delim` 第 `count` 次出现之前的子字符串,专门针对 Unicode 码位进行处理。 +返回字符串 `s` 中,在分隔符 `delim` 第 `count` 次出现之前的子字符串,按 Unicode 码点进行处理。 假定字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,不会抛出异常,结果未定义。 +如果该假设不成立,则不会抛出异常,结果未定义。 **语法** @@ -3027,16 +3027,16 @@ substringIndexUTF8(s, delim, count) **参数** * `s` — 要从中提取子字符串的字符串。[`String`](/sql-reference/data-types/string) -* `delim` — 用于分隔的字符。[`String`](/sql-reference/data-types/string) -* `count` — 在提取子字符串之前,需要统计的分隔符出现次数。如果 `count` 为正数,则返回从左侧开始计数时,最后一个分隔符左侧的所有内容。如果 `count` 为负数,则返回从右侧开始计数时,最后一个分隔符右侧的所有内容。[`UInt`](/sql-reference/data-types/int-uint) 或 [`Int`](/sql-reference/data-types/int-uint) +* `delim` — 用于分割的分隔字符。[`String`](/sql-reference/data-types/string) +* `count` — 在提取子字符串之前要统计的分隔符出现次数。如果 `count` 为正数,则返回从左侧计数时最后一个分隔符左侧的所有内容。如果 `count` 为负数,则返回从右侧计数时最后一个分隔符右侧的所有内容。[`UInt`](/sql-reference/data-types/int-uint) 或 [`Int`](/sql-reference/data-types/int-uint) **返回值** -返回 `s` 中在第 `count` 次出现 `delim` 之前的子字符串。[`String`](/sql-reference/data-types/string) +返回 `s` 中在出现 `count` 次 `delim` 之前的子字符串。[`String`](/sql-reference/data-types/string) **示例** -**UTF-8 示例** +**UTF8 示例** ```sql title=Query SELECT substringIndexUTF8('www.straßen-in-europa.de', '.', 2) @@ -3050,17 +3050,17 @@ www.straßen-in-europa 引入版本:v1.1 -返回字符串 `s` 的子串,该子串从指定的字节索引 `offset`(按 Unicode 码点)开始。 -字节计数从 `1` 开始,遵循以下规则: +返回字符串 `s` 的子字符串,其起始位置为按 Unicode 码点计算的字节索引 `offset`。 +字节计数从 `1` 开始,并遵循以下逻辑: * 如果 `offset` 为 `0`,则返回空字符串。 -* 如果 `offset` 为负数,则子串从字符串末尾往前数 `pos` 个字符处开始,而不是从开头开始。 +* 如果 `offset` 为负数,则子字符串从字符串末尾向前数第 `pos` 个字符处开始,而不是从开头开始。 -可选参数 `length` 用于指定返回子串允许包含的最大字节数。 +可选参数 `length` 指定返回的子字符串最多可以包含的字节数。 :::note 此函数假定字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,不会抛出异常,且结果未定义。 +如果不满足该假设,则不会抛出异常,且结果未定义。 ::: **语法** @@ -3073,7 +3073,7 @@ substringUTF8(s, offset[, length]) * `s` — 要从中截取子字符串的字符串。[`String`](/sql-reference/data-types/string) 或 [`FixedString`](/sql-reference/data-types/fixedstring) 或 [`Enum`](/sql-reference/data-types/enum) * `offset` — 子字符串在 `s` 中的起始位置。[`Int`](/sql-reference/data-types/int-uint) 或 [`UInt`](/sql-reference/data-types/int-uint) -* `length` — 子字符串的最大长度(可选)。[`Int`](/sql-reference/data-types/int-uint) 或 [`UInt`](/sql-reference/data-types/int-uint) +* `length` — 子字符串的最大长度,可选。[`Int`](/sql-reference/data-types/int-uint) 或 [`UInt`](/sql-reference/data-types/int-uint) **返回值** @@ -3081,7 +3081,7 @@ substringUTF8(s, offset[, length]) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT 'Täglich grüßt das Murmeltier.' AS str, substringUTF8(str, 9), substringUTF8(str, 9, 5) @@ -3093,10 +3093,10 @@ Täglich grüßt das Murmeltier. grüßt das Murmeltier. grüßt ## toValidUTF8 {#toValidUTF8} -引入于:v20.1 +自 v20.1 起引入 -通过将任何无效的 UTF-8 字符替换为替换字符 `�` (U+FFFD),将字符串转换为有效的 UTF-8 编码。 -当发现多个连续的无效字符时,会被折叠为一个替换字符。 +通过将所有无效的 UTF-8 字符替换为替换字符 `�`(U+FFFD),将字符串转换为有效的 UTF-8 编码。 +当发现多个连续的无效字符时,它们会被合并为单个替换字符。 **语法** @@ -3114,7 +3114,7 @@ toValidUTF8(s) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT toValidUTF8('\\x61\\xF0\\x80\\x80\\x80b') @@ -3129,10 +3129,10 @@ c ## trimBoth {#trimBoth} -自 v20.1 版本引入。 +引入版本:v20.1 -从字符串的开头和结尾删除指定的字符。 -默认情况下,删除常见的 ASCII 空白字符。 +从字符串的开头和结尾移除指定字符。 +默认会移除常见的空白 ASCII 字符。 **语法** @@ -3144,12 +3144,12 @@ trimBoth(s[, trim_characters]) **参数** -* `s` — 要进行修剪的字符串。[`String`](/sql-reference/data-types/string) -* `trim_characters` — 可选。要从字符串两端移除的字符。如果未指定,则会移除常见的空白字符。[`String`](/sql-reference/data-types/string) +* `s` — 要处理的字符串。[`String`](/sql-reference/data-types/string) +* `trim_characters` — 可选。要去除的字符。如果未指定,则会移除常见的空白字符。[`String`](/sql-reference/data-types/string) **返回值** -返回从两端移除了指定字符的字符串。[`String`](/sql-reference/data-types/string) +返回在两端去除了指定字符的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3167,10 +3167,10 @@ SELECT trimBoth('$$ClickHouse$$', '$') ## trimLeft {#trimLeft} -自 v20.1 起引入 +自 v20.1 引入 -从字符串开头移除指定字符。 -默认情况下,移除常见的空白(ASCII)字符。 +从字符串的开头移除指定字符。 +默认情况下,会移除常见的空白(ASCII)字符。 **语法** @@ -3182,16 +3182,16 @@ trimLeft(input[, trim_characters]) **参数** -* `input` — 要进行裁剪的字符串。[`String`](/sql-reference/data-types/string) -* `trim_characters` — 可选。要裁剪的字符。如果未指定,则会移除常见的空白字符。[`String`](/sql-reference/data-types/string) +* `input` — 要去除字符的字符串。[`String`](/sql-reference/data-types/string) +* `trim_characters` — 可选。要去除的字符。如果未指定,则会移除常见的空白字符。[`String`](/sql-reference/data-types/string) **返回值** -返回在左侧裁剪了指定字符后的字符串。[`String`](/sql-reference/data-types/string) +返回一个从左侧去除了指定字符的字符串。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT trimLeft('ClickHouse', 'Click'); @@ -3208,7 +3208,7 @@ SELECT trimLeft('ClickHouse', 'Click'); 自 v20.1 起引入 从字符串末尾移除指定字符。 -默认情况下,移除常见的 ASCII 空白字符。 +默认情况下,移除常见的空白(ASCII)字符。 **语法** @@ -3220,12 +3220,12 @@ trimRight(s[, trim_characters]) **参数** -* `s` — 待处理的字符串。[`String`](/sql-reference/data-types/string) -* `trim_characters` — 可选,要去除的字符。如果未指定,则会移除常见的空白字符。[`String`](/sql-reference/data-types/string) +* `s` — 要进行修剪的字符串。[`String`](/sql-reference/data-types/string) +* `trim_characters` — 可选,要从字符串中删除的字符。如果未指定,则会移除常见的空白字符。[`String`](/sql-reference/data-types/string) **返回值** -返回从右侧去除指定字符后的字符串。[`String`](/sql-reference/data-types/string) +返回从右侧删除了指定字符后的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3245,7 +3245,7 @@ SELECT trimRight('ClickHouse','House'); 引入版本:v25.6 -接受一个字符串,并使用 [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) 编码方案对其进行解码。 +接受一个字符串,并按照 [Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) 编码方案对其进行解码。 **语法** @@ -3255,15 +3255,15 @@ tryBase32Decode(encoded) **参数** -* `encoded` — 要解码的字符串列或常量。如果字符串不是有效的 Base32 编码,则在出错时返回空字符串。[`String`](/sql-reference/data-types/string) +* `encoded` — 要解码的字符串列或常量。如果字符串不是有效的 Base32 编码,出错时将返回空字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回一个字符串,包含参数解码后的值。[`String`](/sql-reference/data-types/string) +返回一个包含参数解码后值的字符串。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT tryBase32Decode('IVXGG33EMVSA===='); @@ -3277,9 +3277,9 @@ SELECT tryBase32Decode('IVXGG33EMVSA===='); ## tryBase58Decode {#tryBase58Decode} -自 v22.10 引入 +引入于:v22.10 -类似于 [`base58Decode`](#base58Decode),但在发生错误时返回空字符串。 +与 [`base58Decode`](#base58Decode) 类似,但在发生错误时返回空字符串。 **语法** @@ -3293,7 +3293,7 @@ tryBase58Decode(encoded) **返回值** -返回一个包含该参数解码结果的字符串。[`String`](/sql-reference/data-types/string) +返回一个包含参数解码结果的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3305,15 +3305,15 @@ SELECT tryBase58Decode('3dc8KtHrwM') AS res, tryBase58Decode('invalid') AS res_i ```response title=Response ┌─res─────┬─res_invalid─┐ -│ 已编码 │ │ +│ Encoded │ │ └─────────┴─────────────┘ ``` ## tryBase64Decode {#tryBase64Decode} -自 v18.16 版本起提供 +引入版本:v18.16 -类似于 [`base64Decode`](#base64Decode),但在出错时返回空字符串。 +与 [`base64Decode`](#base64Decode) 类似,但在出错时返回空字符串。 **语法** @@ -3323,11 +3323,11 @@ tryBase64Decode(encoded) **参数** -* `encoded` — 要解码的 String 列或常量。如果字符串不是有效的 Base64 编码,出错时返回空字符串。[`String`](/sql-reference/data-types/string) +* `encoded` — 要解码的字符串列或常量。如果该字符串不是有效的 Base64 编码,发生错误时会返回空字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回一个包含参数解码后值的字符串。[`String`](/sql-reference/data-types/string) +返回一个包含该参数解码后值的字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3345,9 +3345,9 @@ SELECT tryBase64Decode('Y2xpY2tob3VzZQ==') ## tryBase64URLDecode {#tryBase64URLDecode} -引入版本:v18.16 +自 v18.16 版本引入 -与 [`base64URLDecode`](#base64URLDecode) 类似,但在发生错误时返回空字符串。 +类似于 [`base64URLDecode`](#base64URLDecode),但在出错时返回空字符串。 **语法** @@ -3357,11 +3357,11 @@ tryBase64URLDecode(encoded) **参数** -* `encoded` — 要解码的字符串列或常量。如果该字符串不是有效的 Base64 编码字符串,发生错误时返回空字符串。[`String`](/sql-reference/data-types/string) +* `encoded` — 要解码的字符串列或常量。如果字符串不是有效的 Base64 编码格式,出错时返回空字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回一个字符串,其中包含参数解码后的结果。[`String`](/sql-reference/data-types/string) +返回一个字符串,内容为参数解码后的值。[`String`](/sql-reference/data-types/string) **示例** @@ -3379,10 +3379,10 @@ SELECT tryBase64URLDecode('aHR0cHM6Ly9jbGlja2hvdXNlLmNvbQ') ## tryIdnaEncode {#tryIdnaEncode} -自 v24.1 起提供 +自 v24.1 引入 -根据 [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)机制,返回域名的 Unicode(UTF-8)表示形式(ToUnicode 算法)。 -在发生错误时,会返回空字符串,而不是抛出异常。 +按照 [Internationalized Domain Names in Applications](https://en.wikipedia.org/wiki/Internationalized_domain_name#Internationalizing_Domain_Names_in_Applications)(IDNA)机制,返回域名的 Unicode(UTF-8)表示(使用 ToUnicode 算法)。 +在出错时不会抛出异常,而是返回空字符串。 **语法** @@ -3396,7 +3396,7 @@ tryIdnaEncode(s) **返回值** -返回根据 IDNA 机制对输入值进行转换后得到的 ASCII 表示。如果输入无效,则返回空字符串。[`String`](/sql-reference/data-types/string) +根据 IDNA 机制返回输入字符串的 ASCII 表示形式;如果输入无效,则返回空字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3414,9 +3414,9 @@ SELECT tryIdnaEncode('straße.münchen.de') ## tryPunycodeDecode {#tryPunycodeDecode} -自 v24.1 起提供 +自 v24.1 起引入。 -与 `punycodeDecode` 类似,但如果未给出有效的 Punycode 编码字符串,则返回空字符串。 +与 `punycodeDecode` 类似,但在未给出有效的 Punycode 编码字符串时返回空字符串。 **语法** @@ -3426,11 +3426,11 @@ tryPunycodeDecode(s) **参数** -* `s` — 使用 Punycode 编码的字符串。[`String`](/sql-reference/data-types/string) +* `s` — 经过 Punycode 编码的字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回输入值的明文;如果输入无效,则返回空字符串。[`String`](/sql-reference/data-types/string) +返回输入值对应的原始文本;如果输入无效,则返回空字符串。[`String`](/sql-reference/data-types/string) **示例** @@ -3448,9 +3448,9 @@ SELECT tryPunycodeDecode('Mnchen-3ya') ## upper {#upper} -引入版本:v1.1 +引入于:v1.1 -将字符串中的 ASCII 拉丁字符转换为大写。 +将字符串中的 ASCII 拉丁字符转换为大写形式。 **语法** @@ -3458,19 +3458,19 @@ SELECT tryPunycodeDecode('Mnchen-3ya') upper(s) ``` -**别名**:`ucase` +**别名**: `ucase` **参数** -* `s` — 要转换为大写形式的字符串。[`String`](/sql-reference/data-types/string) +* `s` — 要转换为大写的字符串。[`String`](/sql-reference/data-types/string) **返回值** -返回由 `s` 转换为大写形式得到的字符串。[`String`](/sql-reference/data-types/string) +返回 `s` 的大写形式。[`String`](/sql-reference/data-types/string) **示例** -**用法示例** +**使用示例** ```sql title=Query SELECT upper('clickhouse') @@ -3486,11 +3486,11 @@ SELECT upper('clickhouse') 引入版本:v1.1 -将字符串转换为大写,前提是假设该字符串包含有效的 UTF-8 编码文本。 -如果该假设不成立,不会抛出异常,其结果是未定义的。 +在假定字符串包含有效 UTF-8 编码文本的前提下,将字符串转换为大写。 +如果这一假设不成立,不会抛出异常,结果是未定义的。 :::note -该函数不会检测具体语言,例如对于土耳其语,结果可能不完全正确(i/İ vs. i/I)。 +此函数不会自动检测语言,例如对于土耳其语,结果可能不完全正确(i/İ 与 i/I)。 如果某个码点的大写和小写形式的 UTF-8 字节序列长度不同(例如 `ẞ` 和 `ß`),则该码点的结果可能不正确。 ::: @@ -3506,11 +3506,11 @@ upperUTF8(s) **返回值** -`String` 数据类型的值。[`String`](/sql-reference/data-types/string) +返回一个 `String` 类型的值。[`String`](/sql-reference/data-types/string) **示例** -**使用示例** +**用法示例** ```sql title=Query SELECT upperUTF8('München') AS Upperutf8 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md index b8c91d788b4..1173e6c4a77 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/statements/check-table.md @@ -7,40 +7,42 @@ title: 'CHECK TABLE 语句' doc_type: 'reference' --- -ClickHouse 中的 `CHECK TABLE` 查询用于对特定表或其分区执行校验。它通过验证校验和以及其他内部数据结构来确保数据完整性。 +ClickHouse 中的 `CHECK TABLE` 查询用于对指定表或其分区执行校验检查。它通过验证校验和以及其他内部数据结构来确保数据完整性。 -尤其是,它会将实际文件大小与存储在服务器上的预期值进行比较。如果文件大小与存储值不匹配,则意味着数据已损坏。例如,这可能是由于在查询执行期间系统崩溃造成的。 +尤其是,它会将实际文件大小与存储在服务器上的预期值进行比较。如果文件大小与存储值不匹配,则表示数据已损坏。这可能是由于在查询执行期间系统崩溃等原因造成的。 :::warning -`CHECK TABLE` 查询可能会读取表中的所有数据并占用较多资源,因此资源消耗较高。 -在执行该查询之前,请考虑其对性能和资源使用的潜在影响。 -该查询不会提升系统性能,如果未完全理解其影响,请不要执行该查询。 +`CHECK TABLE` 查询可能会读取表中的所有数据并占用一定资源,因此是一个资源密集型操作。 +在执行此查询之前,请仔细权衡其对性能和资源使用的潜在影响。 +此查询不会改善系统性能,如不确定自身操作,请勿执行。 ::: + + ## 语法 {#syntax} -查询的基本语法如下: +该查询的基本语法如下: ```sql CHECK TABLE table_name [PARTITION partition_expression | PART part_name] [FORMAT format] [SETTINGS check_query_single_value_result = (0|1) [, other_settings]] ``` * `table_name`:指定要检查的表名。 -* `partition_expression`:(可选)如果要检查表中的某个特定分区,可以使用该表达式来指定分区。 -* `part_name`:(可选)如果要检查表中的某个特定数据分片,可以添加字符串字面量来指定分片名称。 +* `partition_expression`:(可选)如果你只想检查表的特定分区,可以使用此表达式来指定该分区。 +* `part_name`:(可选)如果你想检查表中的特定 part,可以添加字符串字面量来指定该 part 的名称。 * `FORMAT format`:(可选)用于指定结果的输出格式。 -* `SETTINGS`:(可选)用于设置附加参数。 - * **`check_query_single_value_result`**:(可选)该设置允许你在详细结果(`0`)和汇总结果(`1`)之间切换。 - * 也可以应用其他设置。如果你不需要结果具有确定性的顺序,可以将 `max_threads` 设为大于 1 的值以加快查询速度。 +* `SETTINGS`:(可选)用于指定其他设置。 + * **`check_query_single_value_result`**:(可选)此设置允许你在详细结果(`0`)和汇总结果(`1`)之间切换。 + * 也可以应用其他设置。如果你不需要结果具有确定性的顺序,可以将 `max_threads` 设置为大于 1 的值以加快查询速度。 -查询的响应结果取决于 `check_query_single_value_result` 设置的取值。 -当 `check_query_single_value_result = 1` 时,仅返回包含单行的 `result` 列。如果完整性检查通过,该行中的值为 `1`;如果数据损坏,则为 `0`。 +查询响应取决于 `check_query_single_value_result` 设置的值。 +当 `check_query_single_value_result = 1` 时,只会返回只有一行的 `result` 列。当完整性检查通过时,该行中的值为 `1`;当数据损坏时,值为 `0`。 当 `check_query_single_value_result = 0` 时,查询会返回以下列: -* `part_path`:表示数据分片的路径或文件名。 -* `is_passed`:如果该分片的检查成功则返回 1,否则返回 0。 -* `message`:与检查相关的任何附加消息,例如错误或成功消息。 +* `part_path`:表示数据 part 的路径或文件名。 +* `is_passed`:如果该 part 的检查通过则返回 1,否则返回 0。 +* `message`:与检查相关的任何附加消息,例如错误或成功信息。 `CHECK TABLE` 查询支持以下表引擎: @@ -49,13 +51,14 @@ CHECK TABLE table_name [PARTITION partition_expression | PART part_name] [FORMAT * [StripeLog](../../engines/table-engines/log-family/stripelog.md) * [MergeTree family](../../engines/table-engines/mergetree-family/mergetree.md) -在使用其他表引擎的表上执行该查询会引发 `NOT_IMPLEMENTED` 异常。 +在使用其他表引擎的表上执行该查询会导致抛出 `NOT_IMPLEMENTED` 异常。 + +`*Log` 系列中的引擎在发生故障时不提供自动数据恢复。请使用 `CHECK TABLE` 查询以便及时跟踪数据丢失。 -`*Log` 家族中的引擎在发生故障时不提供自动数据恢复。使用 `CHECK TABLE` 查询来及时跟踪数据丢失情况。 ## 示例 {#examples} -默认情况下,`CHECK TABLE` 查询会显示表的整体检查状态: +默认情况下,`CHECK TABLE` 查询会显示表的总体检查状态: ```sql CHECK TABLE test_table; @@ -67,9 +70,9 @@ CHECK TABLE test_table; └────────┘ ``` -如果你想查看每个数据分片的检查状态,可以使用 `check_query_single_value_result` 设置。 +如果你想查看每个单独数据 part 的检查状态,可以使用 `check_query_single_value_result` 设置。 -另外,如果要检查表的某个特定分区,可以使用 `PARTITION` 关键字。 +另外,要检查表的特定分区,可以使用 `PARTITION` 关键字。 ```sql CHECK TABLE t0 PARTITION ID '201003' @@ -86,7 +89,7 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴─────────┘ ``` -同样,你可以使用 `PART` 关键字来检查表的特定部件。 +同样,你可以使用 `PART` 关键字检查表中的某个特定部分。 ```sql CHECK TABLE t0 PART '201003_7_7_0' @@ -102,23 +105,23 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴─────────┘ ``` -请注意,如果该 part 不存在,查询将返回错误: +请注意,如果某个 part 不存在,查询会返回错误: ```sql CHECK TABLE t0 PART '201003_111_222_0' ``` ```text -DB::Exception: 表 'default.t0' 中不存在要检查的数据分区 '201003_111_222_0'。(NO_SUCH_DATA_PART) +DB::Exception: No such data part '201003_111_222_0' to check in table 'default.t0'. (NO_SUCH_DATA_PART) ``` ### 遇到“Corrupted”结果 {#receiving-a-corrupted-result} :::warning -免责声明:此处描述的操作流程(包括直接在数据目录中手动修改或删除文件)仅适用于实验或开发环境。**不要**在生产服务器上尝试此操作,否则可能导致数据丢失或其他意外后果。 +免责声明:此处描述的过程(包括直接在数据目录中手动操作或删除文件)仅适用于实验或开发环境。请**不要**在生产服务器上尝试,否则可能导致数据丢失或产生其他意想不到的后果。 ::: -删除现有的校验文件: +删除现有的校验和文件: ```bash rm /var/lib/clickhouse-server/data/default/t0/201003_3_3_0/checksums.txt @@ -130,7 +133,7 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 -输出: +Output: ```text ┌─part_path────┬─is_passed─┬─message──────────────────────────────────┐ @@ -139,9 +142,9 @@ SETTINGS check_query_single_value_result = 0 └──────────────┴───────────┴──────────────────────────────────────────┘ ```` -如果缺少 `checksums.txt` 文件,可以将其恢复。它会在针对特定分区执行 `CHECK TABLE` 命令时被重新计算并重写,且状态仍将报告为 'is_passed = 1'。 +如果缺少 checksums.txt 文件,可以将其恢复。在针对特定分区执行 CHECK TABLE 命令期间,该文件会被重新计算并重写,状态仍会被报告为 'is_passed = 1'。 -可以通过使用 `CHECK ALL TABLES` 查询一次性检查所有现有的 `(Replicated)MergeTree` 表。 +可以使用 `CHECK ALL TABLES` 查询一次性检查所有现有的 `(Replicated)MergeTree` 表。 ```sql CHECK ALL TABLES @@ -149,6 +152,7 @@ FORMAT PrettyCompactMonoBlock SETTINGS check_query_single_value_result = 0 ``` + ```text ┌─database─┬─table────┬─part_path───┬─is_passed─┬─message─┐ │ default │ t2 │ all_1_95_3 │ 1 │ │ @@ -164,11 +168,12 @@ SETTINGS check_query_single_value_result = 0 └──────────┴──────────┴─────────────┴───────────┴─────────┘ ``` + ## 如果数据已损坏 {#if-the-data-is-corrupted} -如果表已损坏,可以将未损坏的数据复制到另一张表。操作步骤如下: +如果表已损坏,你可以将未损坏的数据复制到另一张表中。为此,请执行以下操作: -1. 创建一个与损坏表结构相同的新表。执行查询:`CREATE TABLE AS `。 -2. 将 `max_threads` 的值设置为 1,以便下一条查询以单线程方式执行。执行查询:`SET max_threads = 1`。 -3. 执行查询:`INSERT INTO SELECT * FROM `。此查询会将未损坏的数据从损坏表复制到另一张表中,只会复制到损坏位置之前的数据。 -4. 重启 `clickhouse-client` 以重置 `max_threads` 的值。 +1. 创建一个与损坏表结构相同的新表。为此,执行查询 `CREATE TABLE AS `。 +2. 将 `max_threads` 的值设置为 1,以单线程处理下一条查询。为此,运行查询 `SET max_threads = 1`。 +3. 执行查询 `INSERT INTO SELECT * FROM `。此查询会将未损坏的数据从损坏表复制到另一张表中。只有在损坏部分之前的数据会被复制。 +4. 重启 `clickhouse-client` 以重置 `max_threads` 的值。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md index 949cac5a9a8..93b4afca351 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/sql-reference/table-functions/azureBlobStorage.md @@ -1,5 +1,5 @@ --- -description: '提供类似于表的接口,用于在 Azure Blob Storage 中查询和插入文件。类似于 s3 函数。' +description: '提供类似表的接口,用于在 Azure Blob Storage 中查询/插入文件。类似于 s3 函数。' keywords: ['azure blob storage'] sidebar_label: 'azureBlobStorage' sidebar_position: 10 @@ -11,9 +11,12 @@ doc_type: 'reference' import ExperimentalBadge from '@theme/badges/ExperimentalBadge'; import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; + # azureBlobStorage 表函数 {#azureblobstorage-table-function} -提供类似表的接口,用于在 [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 中查询/插入文件。此表函数类似于 [s3 函数](../../sql-reference/table-functions/s3.md)。 +提供类似表的接口,用于在 [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) 中查询和插入文件。此表函数类似于 [s3 表函数](../../sql-reference/table-functions/s3.md)。 + + ## 语法 {#syntax} @@ -21,31 +24,36 @@ import CloudNotSupportedBadge from '@theme/badges/CloudNotSupportedBadge'; azureBlobStorage(- connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression, structure, partition_strategy, partition_columns_in_data_file, extra_credentials(client_id=, tenant_id=)]) ``` + ## 参数 {#arguments} -| 参数 | 说明 | +| Argument | Description | |---------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `connection_string`\| `storage_account_url` | `connection_string` 包含账户名称和密钥([创建 connection string](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)),也可以在此处提供存储账户的 URL,并将账户名称和账户密钥作为单独参数提供(参见参数 `account_name` 和 `account_key`)。 | +| `connection_string`\| `storage_account_url` | `connection_string` 包含账户名称和密钥([创建连接字符串](https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json#configure-a-connection-string-for-an-azure-storage-account)),或者你也可以在此处提供存储账户的 URL,并将账户名称和账户密钥作为单独的参数提供(参见参数 `account_name` 和 `account_key`)。 | | `container_name` | 容器名称 | -| `blobpath` | 文件路径。在只读模式下支持以下通配符:`*`、`**`、`?`、`{abc,def}` 和 `{N..M}`,其中 `N`、`M` 为数字,`'abc'`、`'def'` 为字符串。 | -| `account_name` | 如果使用了 `storage_account_url`,则可以在此指定账户名称。 | -| `account_key` | 如果使用了 `storage_account_url`,则可以在此指定账户密钥。 | -| `format` | 文件的[格式](/sql-reference/formats)。 | -| `compression` | 支持的值:`none`、`gzip/gz`、`brotli/br`、`xz/LZMA`、`zstd/zst`。默认情况下,会根据文件扩展名自动检测压缩方式(等同于设置为 `auto`)。 | -| `structure` | 表结构。格式:`'column1_name column1_type, column2_name column2_type, ...'`。 | -| `partition_strategy` | 可选参数。支持的值:`WILDCARD` 或 `HIVE`。`WILDCARD` 要求路径中包含 `{_partition_id}`,该占位符会被分区键替换。`HIVE` 不允许使用通配符,假定路径为表的根路径,并生成 Hive 风格的分区目录,使用 Snowflake ID 作为文件名,文件格式作为扩展名。默认值为 `WILDCARD`。 | -| `partition_columns_in_data_file` | 可选参数。仅在使用 `HIVE` 分区策略时生效。用于告知 ClickHouse 数据文件中是否会写入分区列。默认值为 `false`。 | -| `extra_credentials` | 使用 `client_id` 和 `tenant_id` 进行身份验证。如果提供了 `extra_credentials`,则其优先级高于 `account_name` 和 `account_key`。 | +| `blobpath` | 文件路径。只读模式下支持以下通配符:`*`、`**`、`?`、`{abc,def}` 和 `{N..M}`,其中 `N`、`M` 为数字,`'abc'`、`'def'` 为字符串。 | +| `account_name` | 如果使用了 `storage_account_url`,则可以在此处指定账户名称。 | +| `account_key` | 如果使用了 `storage_account_url`,则可以在此处指定账户密钥。 | +| `format` | 文件的[格式](/sql-reference/formats)。 | +| `compression` | 支持的值:`none`、`gzip/gz`、`brotli/br`、`xz/LZMA`、`zstd/zst`。默认情况下,将通过文件扩展名自动检测压缩格式(等同于将其设置为 `auto`)。 | +| `structure` | 表的结构。格式:`'column1_name column1_type, column2_name column2_type, ...'`。 | +| `partition_strategy` | 可选参数。支持的值:`WILDCARD` 或 `HIVE`。`WILDCARD` 要求路径中包含 `{_partition_id}`,该占位符会被分区键替换。`HIVE` 不允许使用通配符,假定路径为表的根路径,并生成 Hive 风格的分区目录,使用 Snowflake ID 作为文件名、文件格式作为扩展名。默认值为 `WILDCARD`。 | +| `partition_columns_in_data_file` | 可选参数。仅在使用 `HIVE` 分区策略时生效。用于指示 ClickHouse 是否应当在数据文件中写入分区列。默认值为 `false`。 | +| `extra_credentials` | 使用 `client_id` 和 `tenant_id` 进行身份验证。如果提供了 `extra_credentials`,则其优先级高于 `account_name` 和 `account_key`。 | + + ## 返回值 {#returned_value} 具有指定结构的表,用于在指定文件中读写数据。 + + ## 示例 {#examples} -与 [AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage) 表引擎类似,用户可以使用 Azurite 模拟器进行本地 Azure 存储的开发。更多详情参见[此处](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)。下面我们假设可以通过主机名 `azurite1` 访问 Azurite。 +与 [AzureBlobStorage](/engines/table-engines/integrations/azureBlobStorage) 表引擎类似,用户可以使用 Azurite 模拟器在本地进行 Azure Storage 开发。更多细节见[此处](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=docker-hub%2Cblob-storage)。下面我们假设 Azurite 可通过主机名 `azurite1` 访问。 -使用以下方式将数据写入 Azure Blob Storage: +使用以下方式将数据写入 Azure Blob 存储: ```sql INSERT INTO TABLE FUNCTION azureBlobStorage('http://azurite1:10000/devstoreaccount1', @@ -67,7 +75,7 @@ SELECT * FROM azureBlobStorage('http://azurite1:10000/devstoreaccount1', └───────────┴────────────┴───────────┘ ``` -或使用连接字符串(connection_string) +或者使用连接字符串 ```sql SELECT count(*) FROM azureBlobStorage('DefaultEndpointsProtocol=https;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;EndPointSuffix=core.windows.net', @@ -80,22 +88,25 @@ SELECT count(*) FROM azureBlobStorage('DefaultEndpointsProtocol=https;AccountNam └─────────┘ ``` + ## 虚拟列 {#virtual-columns} - `_path` — 文件路径。类型:`LowCardinality(String)`。 - `_file` — 文件名。类型:`LowCardinality(String)`。 -- `_size` — 文件大小(字节)。类型:`Nullable(UInt64)`。如果文件大小未知,则值为 `NULL`。 -- `_time` — 文件最后一次修改时间。类型:`Nullable(DateTime)`。如果时间未知,则值为 `NULL`。 +- `_size` — 文件大小(以字节为单位)。类型:`Nullable(UInt64)`。如果文件大小未知,则值为 `NULL`。 +- `_time` — 文件的最后一次修改时间。类型:`Nullable(DateTime)`。如果该时间未知,则值为 `NULL`。 + + ## 分区写入 {#partitioned-write} ### 分区策略 {#partition-strategy} -仅支持 INSERT 语句。 +仅适用于 INSERT 查询。 `WILDCARD`(默认):将文件路径中的 `{_partition_id}` 通配符替换为实际的分区键。 -`HIVE` 在读写时采用 Hive 风格分区。生成的文件格式如下:`//.`。 +`HIVE` 实现用于读写的 Hive 风格分区。它使用以下格式生成文件:`//.`。 **`HIVE` 分区策略示例** @@ -112,27 +123,29 @@ select _path, * from azureBlobStorage(azure_conf2, storage_account_url = 'http:/ └─────────────────────────────────────────────────────────────────────────────────┴────┴──────┴─────────┘ ``` + ## use_hive_partitioning 设置 {#hive-style-partitioning} -这是一个设置,用于让 ClickHouse 在读取时解析 Hive 风格分区文件。它对写入没有任何影响。若要在读写两侧保持对称,请使用 `partition_strategy` 参数。 +这是一个提示配置,用于让 ClickHouse 在读取时解析 Hive 风格的分区文件。它对写入没有影响。若要实现读写对称,请使用 `partition_strategy` 参数。 -当将 `use_hive_partitioning` 设置为 1 时,ClickHouse 会在路径中检测 Hive 风格分区(`/name=value/`),并允许在查询中将分区列作为虚拟列来使用。这些虚拟列的名称将与分区路径中的名称相同,但会以 `_` 作为前缀。 +当将 SETTING `use_hive_partitioning` 设为 1 时,ClickHouse 会在路径中检测 Hive 风格的分区(`/name=value/`),并允许在查询中将分区列作为虚拟列使用。这些虚拟列的名称与分区路径中的名称相同,但会以 `_` 开头。 **示例** -在查询中使用由 Hive 风格分区创建的虚拟列 +使用 Hive 风格分区创建的虚拟列 ```sql SELECT * FROM azureBlobStorage(config, storage_account_url='...', container='...', blob_path='http://data/path/date=*/country=*/code=*/*.parquet') WHERE _date > '2020-01-01' AND _country = 'Netherlands' AND _code = 42; ``` + ## 使用共享访问签名 (SAS) {#using-shared-access-signatures-sas-sas-tokens} -共享访问签名 (Shared Access Signature,SAS) 是一个 URI,用于授予对 Azure Storage 容器或文件的受限访问权限。使用它可以在不共享存储账户密钥的情况下,为存储账户资源提供限定时间的访问权限。详细信息请参阅[此处](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature)。 +共享访问签名 (SAS) 是一个 URI,用于授予对 Azure Storage 容器或文件的受限访问权限。使用它可以在不共享存储账户密钥的情况下,为存储账户资源提供限时访问。更多详情见[此处](https://learn.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature)。 `azureBlobStorage` 函数支持共享访问签名 (SAS)。 -[Blob SAS 令牌](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers)包含对请求进行身份验证所需的全部信息,包括目标 blob、权限以及有效期。要构造 blob URL,请将 SAS 令牌追加到 blob 服务端点之后。例如,如果端点为 `https://clickhousedocstest.blob.core.windows.net/`,则请求变为: +[Blob SAS token](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers) 包含对请求进行身份验证所需的全部信息,包括目标 blob、权限以及有效期。要构造 blob URL,将 SAS token 追加到 blob 服务端点后。例如,如果端点是 `https://clickhousedocstest.blob.core.windows.net/`,则请求变为: ```sql SELECT count() @@ -142,10 +155,10 @@ FROM azureBlobStorage('BlobEndpoint=https://clickhousedocstest.blob.core.windows │ 10 │ └─────────┘ -返回 1 行。用时:0.425 秒。 +1 row in set. Elapsed: 0.425 sec. ``` -或者,您可以使用生成的 [Blob SAS URL](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers): +或者,用户还可以使用生成的 [Blob SAS URL](https://learn.microsoft.com/en-us/azure/ai-services/translator/document-translation/how-to-guides/create-sas-tokens?tabs=Containers): ```sql SELECT count() @@ -155,8 +168,9 @@ FROM azureBlobStorage('https://clickhousedocstest.blob.core.windows.net/?sp=r&st │ 10 │ └─────────┘ -1 行结果,耗时 0.153 秒。 +1 row in set. Elapsed: 0.153 sec. ``` -## 相关内容 {#related} + +## 相关 {#related} - [AzureBlobStorage 表引擎](engines/table-engines/integrations/azureBlobStorage.md) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md index d0b531f16e0..fa6d5eb70ff 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/deployment/docker-compose.md @@ -48,10 +48,10 @@ import JSONSupport from '@site/i18n/zh/docusaurus-plugin-content-docs/current/us ### 克隆仓库 {#clone-the-repo} -要使用 Docker Compose 进行部署,先克隆 HyperDX 仓库,进入该目录并运行 `docker-compose up`: +要使用 Docker Compose 进行部署,先克隆 ClickStack 仓库,进入该目录并运行 `docker-compose up`: ```shell -git clone git@github.com:hyperdxio/hyperdx.git +git clone https://github.com/ClickHouse/ClickStack.git docker compose up ``` @@ -61,7 +61,7 @@ docker compose up 创建一个用户,并提供满足要求的用户名和密码。 -点击 `Create` 后,会为通过 Helm 图表部署的 ClickHouse 实例自动创建数据源。 +点击 `Create` 后,会为通过 Docker Compose 部署的 ClickHouse 实例自动创建数据源。 :::note 覆盖默认连接 您可以替换到集成 ClickHouse 实例的默认连接。有关详细信息,请参阅 ["Using ClickHouse Cloud"](#using-clickhouse-cloud)。 @@ -88,34 +88,31 @@ docker compose up 用户可以通过环境变量文件来修改该栈的设置,例如使用的版本。 ```shell -user@example-host hyperdx % cat .env -# 供 docker-compose.yml 使用 {#used-by-docker-composeyml} -# 供 docker-compose.yml 使用 {#used-by-docker-composeyml} -HDX_IMAGE_REPO=docker.hyperdx.io -IMAGE_NAME=ghcr.io/hyperdxio/hyperdx -IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx -LOCAL_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-local -LOCAL_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-local -ALL_IN_ONE_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-all-in-one -ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-all-in-one -OTEL_COLLECTOR_IMAGE_NAME=ghcr.io/hyperdxio/hyperdx-otel-collector -OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=hyperdx/hyperdx-otel-collector -CODE_VERSION=2.0.0-beta.16 -IMAGE_VERSION_SUB_TAG=.16 -IMAGE_VERSION=2-beta +user@example-host clickstack % cat .env + +# Used by docker-compose.yml +IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one +LOCAL_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-local +ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one +OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-otel-collector +CODE_VERSION=2.8.0 +IMAGE_VERSION_SUB_TAG=.8.0 +IMAGE_VERSION=2 IMAGE_NIGHTLY_TAG=2-nightly +IMAGE_LATEST_TAG=latest -# 配置域名 URL {#set-up-domain-urls} -HYPERDX_API_PORT=8000 # 可选(不应被其他服务占用) +# Set up domain URLs +HYPERDX_API_PORT=8000 #optional (should not be taken by other services) HYPERDX_APP_PORT=8080 HYPERDX_APP_URL=http://localhost HYPERDX_LOG_LEVEL=debug HYPERDX_OPAMP_PORT=4320 -# OTel/ClickHouse 配置 {#otelclickhouse-config} +# Otel/Clickhouse config HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default ``` + ### 配置 OpenTelemetry collector {#configuring-collector} 如有需要,可以修改 OTel collector 的配置——请参阅[“修改配置”](/use-cases/observability/clickstack/ingesting-data/otel-collector#modifying-otel-collector-configuration)。 @@ -124,13 +121,13 @@ HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default 此发行版可以与 ClickHouse Cloud 一起使用。用户应当: -* 从 `docker-compose.yaml` 文件中移除 ClickHouse 服务。如果只是测试,这一步是可选的,因为已部署的 ClickHouse 实例只是会被忽略——不过仍会占用本地资源。如果移除该服务,请确保同时移除对该服务的所有引用,例如 `depends_on`。 +* 从 `docker-compose.yml` 文件中移除 ClickHouse 服务。如果只是测试,这一步是可选的,因为已部署的 ClickHouse 实例只是会被忽略——不过仍会占用本地资源。如果移除该服务,请确保同时移除对该服务的所有引用,例如 `depends_on`。 * 通过在 Compose 文件中设置环境变量 `CLICKHOUSE_ENDPOINT`、`CLICKHOUSE_USER` 和 `CLICKHOUSE_PASSWORD`,修改 OTel collector 以使用 ClickHouse Cloud 实例。具体来说,将这些环境变量添加到 OTel collector 服务中: ```shell otel-collector: - image: ${OTEL_COLLECTOR_IMAGE_NAME}:${IMAGE_VERSION} + image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: CLICKHOUSE_ENDPOINT: '' # https endpoint here CLICKHOUSE_USER: '' @@ -155,25 +152,25 @@ HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=default -要进行这些设置,请修改 `docker-compose.yaml` 中相关的服务: +要进行这些设置,请修改 `docker-compose.yml` 中相关的服务: ```yaml app: - image: ${HDX_IMAGE_REPO}/${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} + image: ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} ports: - ${HYPERDX_API_PORT}:${HYPERDX_API_PORT} - ${HYPERDX_APP_PORT}:${HYPERDX_APP_PORT} environment: - BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # 启用 JSON + BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # enable JSON FRONTEND_URL: ${HYPERDX_APP_URL}:${HYPERDX_APP_PORT} HYPERDX_API_KEY: ${HYPERDX_API_KEY} HYPERDX_API_PORT: ${HYPERDX_API_PORT} - # 为简洁起见省略部分内容 + # truncated for brevity otel-collector: - image: ${HDX_IMAGE_REPO}/${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} + image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: - OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # 启用 JSON + OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # enable JSON CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s' - # 为简洁起见省略部分内容 + # truncated for brevity ``` diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 823b05fe3af..dd66d9aed4d 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -23,156 +23,154 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p 此示例数据集也可与 ClickHouse Cloud 中的 HyperDX 搭配使用,只需对流程进行少量调整(见文中的说明)。如果在 ClickHouse Cloud 中使用 HyperDX,用户需要按照[该部署模型的入门指南](/use-cases/observability/clickstack/deployment/hyperdx-clickhouse-cloud)的说明,在本地运行一个 OpenTelemetry collector 实例。 ::: - - -## 创建自定义 OpenTelemetry 配置 {#create-otel-configuration} - -创建一个 `custom-local-config.yaml` 文件,内容如下: - -```yaml -receivers: - filelog: - include: - - /host/var/log/**/*.log # 主机 Linux 日志 - - /host/var/log/syslog - - /host/var/log/messages - - /host/private/var/log/*.log # 主机 macOS 日志 - start_at: beginning - resource: - service.name: "system-logs" - - hostmetrics: - collection_interval: 1s - scrapers: - cpu: - metrics: - system.cpu.time: - enabled: true - system.cpu.utilization: - enabled: true - memory: - metrics: - system.memory.usage: - enabled: true - system.memory.utilization: - enabled: true - filesystem: - metrics: - system.filesystem.usage: - enabled: true - system.filesystem.utilization: - enabled: true - paging: - metrics: - system.paging.usage: - enabled: true - system.paging.utilization: - enabled: true - system.paging.faults: - enabled: true - disk: - load: - network: - processes: - -service: - pipelines: - logs/local: - receivers: [filelog] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - metrics/hostmetrics: - receivers: [hostmetrics] - processors: - - memory_limiter - - batch - exporters: - - clickhouse -``` - -此配置收集 OSX 和 Linux 系统的系统日志和指标,并将结果发送至 ClickStack。该配置通过添加新的接收器和管道来扩展 ClickStack 采集器——您需引用基础 ClickStack 采集器中已配置的现有 `clickhouse` 导出器和处理器(`memory_limiter`、`batch`)。 - -:::note 摄取时间戳 -此配置会在摄取时调整时间戳,为每个事件分配更新后的时间值。建议用户在日志文件中使用 OTel 处理器或操作符[预处理或解析时间戳](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching),以确保保留准确的事件时间。 - -在此示例配置中,如果接收器或文件处理器配置为从文件开头开始读取,所有现有日志条目都将被分配相同的调整后时间戳——即处理时间而非原始事件时间。追加到文件的新事件将获得接近其实际生成时间的时间戳。 - -为避免此行为,您可以在接收器配置中将起始位置设置为 `end`。这可确保仅摄取新条目,并在接近其真实到达时间时为其添加时间戳。 -::: - -有关 OpenTelemetry (OTel) 配置结构的更多详细信息,请参阅[官方指南](https://opentelemetry.io/docs/collector/configuration/)。 - -## 使用自定义配置启动 ClickStack {#start-clickstack} - -运行以下 docker 命令以使用自定义配置启动一体化容器: - -```shell -docker run -d --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-all-in-one:latest -``` - -:::note Root 用户 -我们以 root 用户身份运行采集器以访问所有系统日志——这是从 Linux 系统的受保护路径捕获日志所必需的。但是,不建议在生产环境中采用此方式。在生产环境中,应将 OpenTelemetry Collector 部署为本地代理,并仅授予访问目标日志源所需的最小权限。 - -请注意,我们将宿主机的 `/var/log` 挂载到容器内的 `/host/var/log`,以避免与容器自身的日志文件产生冲突。 -::: - -如果在 ClickHouse Cloud 中使用 HyperDX 并配合独立采集器,请改用以下命令: - -```shell -docker run -d \ - -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ - -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ - -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ - -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-otel-collector:latest -``` - -收集器将立即开始收集本地系统日志和指标。 - -## 导航到 HyperDX UI {#navigate-to-the-hyperdx-ui} - -本地部署时,访问 [http://localhost:8080](http://localhost:8080) 即可进入 HyperDX UI。若在 ClickHouse Cloud 中使用 HyperDX,请在左侧菜单中依次选择您的服务和 `HyperDX`。 - -## 探索系统日志 {#explore-system-logs} - -搜索界面应填充本地系统日志。展开过滤器以选择 `system.log`: - -HyperDX 本地日志 - -## 探索系统指标 {#explore-system-metrics} - -我们可以使用图表探索指标数据。 + + ## 创建自定义 OpenTelemetry 配置 {#create-otel-configuration} + + 创建一个 `custom-local-config.yaml` 文件,内容如下: + + ```yaml + receivers: + filelog: + include: + - /host/var/log/**/*.log # 主机 Linux 日志 + - /host/var/log/syslog + - /host/var/log/messages + - /host/private/var/log/*.log # 主机 macOS 日志 + start_at: beginning + resource: + service.name: "system-logs" + + hostmetrics: + collection_interval: 1s + scrapers: + cpu: + metrics: + system.cpu.time: + enabled: true + system.cpu.utilization: + enabled: true + memory: + metrics: + system.memory.usage: + enabled: true + system.memory.utilization: + enabled: true + filesystem: + metrics: + system.filesystem.usage: + enabled: true + system.filesystem.utilization: + enabled: true + paging: + metrics: + system.paging.usage: + enabled: true + system.paging.utilization: + enabled: true + system.paging.faults: + enabled: true + disk: + load: + network: + processes: + + service: + pipelines: + logs/local: + receivers: [filelog] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + metrics/hostmetrics: + receivers: [hostmetrics] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + ``` + + 此配置收集 OSX 和 Linux 系统的系统日志和指标,并将结果发送至 ClickStack。该配置通过添加新的接收器和管道来扩展 ClickStack 采集器——您需引用基础 ClickStack 采集器中已配置的现有 `clickhouse` 导出器和处理器(`memory_limiter`、`batch`)。 + + :::note 摄取时间戳 + 此配置会在摄取时调整时间戳,为每个事件分配更新后的时间值。建议用户在日志文件中使用 OTel 处理器或操作符[预处理或解析时间戳](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching),以确保保留准确的事件时间。 + + 在此示例配置中,如果接收器或文件处理器配置为从文件开头开始读取,所有现有日志条目都将被分配相同的调整后时间戳——即处理时间而非原始事件时间。追加到文件的新事件将获得接近其实际生成时间的时间戳。 + + 为避免此行为,您可以在接收器配置中将起始位置设置为 `end`。这可确保仅摄取新条目,并在接近其真实到达时间时为其添加时间戳。 + ::: + + 有关 OpenTelemetry (OTel) 配置结构的更多详细信息,请参阅[官方指南](https://opentelemetry.io/docs/collector/configuration/)。 + + ## 使用自定义配置启动 ClickStack {#start-clickstack} + + 运行以下 docker 命令以使用自定义配置启动一体化容器: + + ```shell + docker run -d --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-all-in-one:latest + ``` + + :::note Root 用户 + 我们以 root 用户身份运行采集器以访问所有系统日志——这是从 Linux 系统的受保护路径捕获日志所必需的。但是,不建议在生产环境中采用此方式。在生产环境中,应将 OpenTelemetry Collector 部署为本地代理,并仅授予访问目标日志源所需的最小权限。 + + 请注意,我们将宿主机的 `/var/log` 挂载到容器内的 `/host/var/log`,以避免与容器自身的日志文件产生冲突。 + ::: + + 如果在 ClickHouse Cloud 中使用 HyperDX 并配合独立采集器,请改用以下命令: + + ```shell + docker run -d \ + -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ + -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ + -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ + -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-otel-collector:latest + ``` + + 收集器将立即开始收集本地系统日志和指标。 + + ## 导航到 HyperDX UI {#navigate-to-the-hyperdx-ui} + + 本地部署时,访问 [http://localhost:8080](http://localhost:8080) 即可进入 HyperDX UI。若在 ClickHouse Cloud 中使用 HyperDX,请在左侧菜单中依次选择您的服务和 `HyperDX`。 + + ## 探索系统日志 {#explore-system-logs} + + 搜索界面应填充本地系统日志。展开过滤器以选择 `system.log`: + + HyperDX 本地日志 + + ## 探索系统指标 {#explore-system-metrics} -通过左侧菜单导航至 Chart Explorer。选择数据源 `Metrics`,聚合类型选择 `Maximum`。 + 我们可以使用图表探索指标数据。 -在 `Select a Metric` 菜单中,输入 `memory`,然后选择 `system.memory.utilization (Gauge)`。 + 通过左侧菜单导航至 Chart Explorer。选择数据源 `Metrics`,聚合类型选择 `Maximum`。 -点击运行按钮以可视化内存使用率随时间的变化。 + 在 `Select a Metric` 菜单中,输入 `memory`,然后选择 `system.memory.utilization (Gauge)`。 -内存使用随时间变化 + 点击运行按钮以可视化内存使用率随时间的变化。 -注意,数字以浮点数 `%` 的形式返回。为了更清晰地显示,请选择 `设置数字格式`。 + 内存使用随时间变化 -数字格式 + 注意,数字以浮点数 `%` 的形式返回。为了更清晰地显示,请选择 `设置数字格式`。 -在随后的菜单中,从 `Output format` 下拉列表中选择 `Percentage`,然后点击 `Apply`。 + 数字格式 -内存时间占比 + 在随后的菜单中,从 `Output format` 下拉列表中选择 `Percentage`,然后点击 `Apply`。 + 内存时间占比 \ No newline at end of file From ff5e52d790dbcd99666ff88967a70785b50314b8 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 5 Dec 2025 19:54:50 +0100 Subject: [PATCH 2/5] fix build --- .../clickstack/example-datasets/local-data.md | 2 ++ .../integration-examples/redis-metrics.md | 26 ++++++++++--------- .../clickstack/example-datasets/local-data.md | 2 ++ .../clickstack/example-datasets/local-data.md | 2 ++ 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 20ec6b6ea5a..902fcbcb7f8 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -24,6 +24,7 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p ::: + ## カスタムOpenTelemetry設定を作成する {#create-otel-configuration} 以下の内容で `custom-local-config.yaml` ファイルを作成します: @@ -173,4 +174,5 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p 表示されたメニューで、`Output format`ドロップダウンから`Percentage`を選択し、`Apply`をクリックします。 メモリに費やした時間の割合(%) + \ No newline at end of file diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md index d59deb0eca7..79342509608 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md @@ -44,7 +44,8 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke - 認証を有効にしている場合の Redis パスワード - #### Redis接続の確認 + + #### Redis接続の確認 {#verify-redis} まず、Redisに接続できること、およびINFOコマンドが機能することを確認します: @@ -70,7 +71,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke * **Docker**: コンテナ名またはサービス名を指定します(例: `redis:6379`) * **リモート**: `:6379` - #### カスタムOTel collector設定を作成する + #### カスタムOTel collector設定を作成する {#custom-otel} ClickStackでは、カスタム設定ファイルをマウントして環境変数を設定することで、ベースのOpenTelemetryコレクター設定を拡張できます。カスタム設定は、HyperDXがOpAMP経由で管理するベース設定にマージされます。 @@ -151,7 +152,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke * 必要に応じて `collection_interval` を調整します(デフォルトは 10s。値を小さくするとデータ量が増加します) * 複数の Redis インスタンスがある場合は、それらを区別するために `service.name` をカスタマイズしてください(例: `"redis-cache"`、`"redis-sessions"`) - #### ClickStackにカスタム設定を読み込ませる + #### ClickStackにカスタム設定を読み込ませる {#load-custom} 既存のClickStackデプロイメントでカスタムコレクター設定を有効にするには、次の手順を実行してください: @@ -159,7 +160,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke 2. 環境変数 `CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml` を設定してください 3. ClickStack と Redis 間のネットワーク接続を確保する - ##### オプション1: Docker Compose + ##### オプション1: Docker Compose {#docker-compose} ClickStackのデプロイメント設定を更新します: @@ -187,7 +188,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke # command: redis-server --requirepass your-redis-password ``` - ##### オプション2:Docker run(オールインワンイメージ) + ##### オプション2:Docker run(オールインワンイメージ) {#all-in-one} `docker run`でオールインワンイメージを使用する場合: @@ -217,7 +218,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke clickhouse/clickstack-all-in-one:latest ``` - #### HyperDXでメトリクスを確認する + #### HyperDXでメトリクスを確認する {#verifying-metrics} 設定完了後、HyperDXにログインし、メトリクスが正常に送信されていることを確認します: @@ -226,6 +227,7 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke 3. 設定した収集間隔でメトリクスのデータポイントが表示されるはずです {/* Redis メトリクスビュー */ } + ## デモ用データセット {#demo-dataset} @@ -325,7 +327,7 @@ ClickStack で Redis の監視を始めるにあたり、Redis Metrics 用の基 ## トラブルシューティング {#troubleshooting} -### カスタム設定が読み込まれない +### カスタム設定が読み込まれない {#troubleshooting-not-loading} 環境変数 `CUSTOM_OTELCOL_CONFIG_FILE` が正しく設定されていることを確認してください。 @@ -345,12 +347,12 @@ docker exec ls -lh /etc/otelcol-contrib/custom.config.yaml docker exec <コンテナ名> cat /etc/otelcol-contrib/custom.config.yaml ``` -### HyperDX にメトリクスが表示されない +### HyperDX にメトリクスが表示されない {#no-metrics} collector から Redis にアクセスできることを確認してください: ```bash -# ClickStackコンテナから {#download-sum-metrics-commands-connections-keyspace-stats} +# ClickStackコンテナから docker exec redis-cli -h ping # 期待される出力: PONG ``` @@ -372,10 +374,10 @@ docker exec cat /etc/otel/supervisor-data/effective.yaml | grep -A 1 ```bash docker exec cat /etc/otel/supervisor-data/agent.log | grep -i redis -# 接続エラーまたは認証失敗を確認します {#load-gauge-metrics-memory-fragmentation} +# 接続エラーまたは認証失敗を確認します ``` -### 認証エラー +### 認証エラー {#auth-errors} ログに認証エラーが表示されている場合: @@ -399,7 +401,7 @@ receivers: password: ${env:REDIS_PASSWORD} ``` -### ネットワーク接続の問題 +### ネットワーク接続の問題 {#network-issues} ClickStack が Redis に接続できない場合: diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 4cfef04d411..f32688c602c 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -24,6 +24,7 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p ::: + ## Создание пользовательской конфигурации OpenTelemetry {#create-otel-configuration} Создайте файл `custom-local-config.yaml` со следующим содержимым: @@ -173,4 +174,5 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p В открывшемся меню выберите `Percentage` из выпадающего списка `Output format`, после чего нажмите `Apply`. Память, % времени выполнения + \ No newline at end of file diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index dd66d9aed4d..55515f63eb7 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -24,6 +24,7 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p ::: + ## 创建自定义 OpenTelemetry 配置 {#create-otel-configuration} 创建一个 `custom-local-config.yaml` 文件,内容如下: @@ -173,4 +174,5 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p 在随后的菜单中,从 `Output format` 下拉列表中选择 `Percentage`,然后点击 `Apply`。 内存时间占比 + \ No newline at end of file From fb1eeeff7dabc00d65e04d5ad81498419b0feb82 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:03:59 +0100 Subject: [PATCH 3/5] fix build --- .../observability/clickstack/example-datasets/local-data.md | 2 +- .../clickstack/integration-examples/redis-metrics.md | 2 +- .../observability/clickstack/example-datasets/local-data.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 902fcbcb7f8..a3269224675 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -23,7 +23,7 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p このサンプルデータセットは、記載されているとおり手順にわずかな調整を加えるだけで、ClickHouse Cloud 上の HyperDX でも使用できます。ClickHouse Cloud で HyperDX を使用する場合は、[このデプロイメントモデル向けの入門ガイド](/use-cases/observability/clickstack/deployment/hyperdx-clickhouse-cloud)で説明されているように、ローカルで実行される OpenTelemetry collector が必要です。 ::: - + ## カスタムOpenTelemetry設定を作成する {#create-otel-configuration} diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md index 79342509608..b6954ba70b8 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md @@ -144,13 +144,13 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke * `redis.connections.rejected` - 拒否された接続数 :::note - * カスタム設定では、新しい receiver、processor、pipeline のみを定義します * `memory_limiter` と `batch` の各 processor、および `clickhouse` exporter は、ベースの ClickStack 構成内ですでに定義されているため、名前を指定するだけで参照できます * `resource` プロセッサは、OpenTelemetry のセマンティック規約に従い、必須の `service.name` 属性を設定します * 認証付きの本番運用環境では、パスワードを環境変数 `${env:REDIS_PASSWORD}` に保存してください。 * 必要に応じて `collection_interval` を調整します(デフォルトは 10s。値を小さくするとデータ量が増加します) * 複数の Redis インスタンスがある場合は、それらを区別するために `service.name` をカスタマイズしてください(例: `"redis-cache"`、`"redis-sessions"`) + ::: #### ClickStackにカスタム設定を読み込ませる {#load-custom} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index 55515f63eb7..fb4feeb991b 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -23,7 +23,7 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p 此示例数据集也可与 ClickHouse Cloud 中的 HyperDX 搭配使用,只需对流程进行少量调整(见文中的说明)。如果在 ClickHouse Cloud 中使用 HyperDX,用户需要按照[该部署模型的入门指南](/use-cases/observability/clickstack/deployment/hyperdx-clickhouse-cloud)的说明,在本地运行一个 OpenTelemetry collector 实例。 ::: - + ## 创建自定义 OpenTelemetry 配置 {#create-otel-configuration} From 4e8bfe2801582ffadc68e28126c5ddba8ac8e2b9 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Fri, 5 Dec 2025 20:33:30 +0100 Subject: [PATCH 4/5] fix build --- .../clickstack/example-datasets/local-data.md | 280 +++++++++--------- .../integration-examples/redis-metrics.md | 2 +- .../clickstack/example-datasets/local-data.md | 280 +++++++++--------- 3 files changed, 281 insertions(+), 281 deletions(-) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index a3269224675..8c76b9f11b5 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -25,154 +25,154 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p - ## カスタムOpenTelemetry設定を作成する {#create-otel-configuration} - - 以下の内容で `custom-local-config.yaml` ファイルを作成します: - - ```yaml - receivers: - filelog: - include: - - /host/var/log/**/*.log # ホストからのLinuxログ - - /host/var/log/syslog - - /host/var/log/messages - - /host/private/var/log/*.log # ホストからのmacOSログ - start_at: beginning - resource: - service.name: "system-logs" - - hostmetrics: - collection_interval: 1s - scrapers: - cpu: - metrics: - system.cpu.time: - enabled: true - system.cpu.utilization: - enabled: true - memory: - metrics: - system.memory.usage: - enabled: true - system.memory.utilization: - enabled: true - filesystem: - metrics: - system.filesystem.usage: - enabled: true - system.filesystem.utilization: - enabled: true - paging: - metrics: - system.paging.usage: - enabled: true - system.paging.utilization: - enabled: true - system.paging.faults: - enabled: true - disk: - load: - network: - processes: - - service: - pipelines: - logs/local: - receivers: [filelog] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - metrics/hostmetrics: - receivers: [hostmetrics] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - ``` - - この設定は、macOSおよびLinuxシステムのシステムログとメトリクスを収集し、結果をClickStackに送信します。この設定では、新しいレシーバーとパイプラインを追加することでClickStackコレクターを拡張します。ベースのClickStackコレクターで既に設定されている`clickhouse`エクスポーターとプロセッサー(`memory_limiter`、`batch`)を参照してください。 - - :::note インジェストのタイムスタンプ - この設定はインジェスト時にタイムスタンプを調整し、各イベントに更新された時刻値を割り当てます。正確なイベント時刻を保持するために、ユーザーはログファイル内の[タイムスタンプを前処理または解析](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching)する際に、OTelプロセッサーまたはオペレーターを使用することを推奨します。 - - この設定例では、receiverまたはfileプロセッサがファイルの先頭から開始するように構成されている場合、既存のすべてのログエントリには同一の調整済みタイムスタンプ(元のイベント時刻ではなく処理時刻)が割り当てられます。ファイルに追加される新しいイベントには、実際の生成時刻に近似したタイムスタンプが付与されます。 - - この動作を回避するには、レシーバー設定で開始位置を `end` に設定します。これにより、新しいエントリのみが取り込まれ、実際の到着時刻に近いタイムスタンプが付与されます。 - ::: - - OpenTelemetry (OTel) の設定構造の詳細については、[公式ガイド](https://opentelemetry.io/docs/collector/configuration/)を参照してください。 - - ## カスタム設定でClickStackを起動する {#start-clickstack} - - カスタム設定でオールインワンコンテナを起動するには、以下のdockerコマンドを実行します: - - ```shell - docker run -d --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-all-in-one:latest - ``` - - :::note rootユーザー - すべてのシステムログにアクセスするため、コレクターをrootユーザーとして実行します。これは、Linuxベースのシステムにおいて保護されたパスからログを取得するために必要です。ただし、この方法は本番環境では推奨されません。本番環境では、OpenTelemetry Collectorは、意図するログソースへのアクセスに必要な最小限の権限のみを持つローカルエージェントとしてデプロイする必要があります。 - - ホストの `/var/log` をコンテナ内の `/host/var/log` にマウントすることで、コンテナ自身のログファイルとの競合を回避しています。 - ::: - - スタンドアロンコレクターでClickHouse CloudのHyperDXを使用する場合は、代わりに以下のコマンドを使用してください: - - ```shell - docker run -d \ - -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ - -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ - -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ - -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-otel-collector:latest - ``` - - コレクターは即座にローカルシステムのログとメトリクスの収集を開始します。 - - ## HyperDX UIへ移動する {#navigate-to-the-hyperdx-ui} - - ローカルにデプロイする場合は、[http://localhost:8080](http://localhost:8080)にアクセスしてHyperDX UIを開きます。ClickHouse CloudでHyperDXを使用する場合は、サービスを選択し、左メニューから`HyperDX`を選択します。 - - ## システムログの確認 {#explore-system-logs} - - 検索UIにローカルシステムログが表示されます。フィルタを展開して`system.log`を選択します: - - HyperDX ローカルログ - - ## システムメトリクスを確認する {#explore-system-metrics} +## カスタムOpenTelemetry設定を作成する {#create-otel-configuration} + +以下の内容で `custom-local-config.yaml` ファイルを作成します: + +```yaml +receivers: + filelog: + include: + - /host/var/log/**/*.log # ホストからのLinuxログ + - /host/var/log/syslog + - /host/var/log/messages + - /host/private/var/log/*.log # ホストからのmacOSログ + start_at: beginning + resource: + service.name: "system-logs" + + hostmetrics: + collection_interval: 1s + scrapers: + cpu: + metrics: + system.cpu.time: + enabled: true + system.cpu.utilization: + enabled: true + memory: + metrics: + system.memory.usage: + enabled: true + system.memory.utilization: + enabled: true + filesystem: + metrics: + system.filesystem.usage: + enabled: true + system.filesystem.utilization: + enabled: true + paging: + metrics: + system.paging.usage: + enabled: true + system.paging.utilization: + enabled: true + system.paging.faults: + enabled: true + disk: + load: + network: + processes: + +service: + pipelines: + logs/local: + receivers: [filelog] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + metrics/hostmetrics: + receivers: [hostmetrics] + processors: + - memory_limiter + - batch + exporters: + - clickhouse +``` + +この設定は、macOSおよびLinuxシステムのシステムログとメトリクスを収集し、結果をClickStackに送信します。この設定では、新しいレシーバーとパイプラインを追加することでClickStackコレクターを拡張します。ベースのClickStackコレクターで既に設定されている`clickhouse`エクスポーターとプロセッサー(`memory_limiter`、`batch`)を参照してください。 + +:::note インジェストのタイムスタンプ +この設定はインジェスト時にタイムスタンプを調整し、各イベントに更新された時刻値を割り当てます。正確なイベント時刻を保持するために、ユーザーはログファイル内の[タイムスタンプを前処理または解析](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching)する際に、OTelプロセッサーまたはオペレーターを使用することを推奨します。 + +この設定例では、receiverまたはfileプロセッサがファイルの先頭から開始するように構成されている場合、既存のすべてのログエントリには同一の調整済みタイムスタンプ(元のイベント時刻ではなく処理時刻)が割り当てられます。ファイルに追加される新しいイベントには、実際の生成時刻に近似したタイムスタンプが付与されます。 + +この動作を回避するには、レシーバー設定で開始位置を `end` に設定します。これにより、新しいエントリのみが取り込まれ、実際の到着時刻に近いタイムスタンプが付与されます。 +::: + +OpenTelemetry (OTel) の設定構造の詳細については、[公式ガイド](https://opentelemetry.io/docs/collector/configuration/)を参照してください。 + +## カスタム設定でClickStackを起動する {#start-clickstack} + +カスタム設定でオールインワンコンテナを起動するには、以下のdockerコマンドを実行します: + +```shell +docker run -d --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-all-in-one:latest +``` + +:::note rootユーザー +すべてのシステムログにアクセスするため、コレクターをrootユーザーとして実行します。これは、Linuxベースのシステムにおいて保護されたパスからログを取得するために必要です。ただし、この方法は本番環境では推奨されません。本番環境では、OpenTelemetry Collectorは、意図するログソースへのアクセスに必要な最小限の権限のみを持つローカルエージェントとしてデプロイする必要があります。 + +ホストの `/var/log` をコンテナ内の `/host/var/log` にマウントすることで、コンテナ自身のログファイルとの競合を回避しています。 +::: + +スタンドアロンコレクターでClickHouse CloudのHyperDXを使用する場合は、代わりに以下のコマンドを使用してください: + +```shell +docker run -d \ + -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ + -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ + -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ + -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-otel-collector:latest +``` + +コレクターは即座にローカルシステムのログとメトリクスの収集を開始します。 + +## HyperDX UIへ移動する {#navigate-to-the-hyperdx-ui} + +ローカルにデプロイする場合は、[http://localhost:8080](http://localhost:8080)にアクセスしてHyperDX UIを開きます。ClickHouse CloudでHyperDXを使用する場合は、サービスを選択し、左メニューから`HyperDX`を選択します。 + +## システムログの確認 {#explore-system-logs} + +検索UIにローカルシステムログが表示されます。フィルタを展開して`system.log`を選択します: + +HyperDX ローカルログ + +## システムメトリクスを確認する {#explore-system-metrics} - チャートを使用してメトリクスを確認できます。 +チャートを使用してメトリクスを確認できます。 - 左側のメニューから Chart Explorer に移動します。ソースとして `Metrics` を選択し、集計タイプとして `Maximum` を選択します。 +左側のメニューから Chart Explorer に移動します。ソースとして `Metrics` を選択し、集計タイプとして `Maximum` を選択します。 - `Select a Metric`メニューで、`system.memory.utilization (Gauge)`を選択する前に`memory`と入力します。 +`Select a Metric`メニューで、`system.memory.utilization (Gauge)`を選択する前に`memory`と入力します。 - 実行ボタンを押して、時系列でのメモリ使用率を可視化します。 +実行ボタンを押して、時系列でのメモリ使用率を可視化します。 - メモリ使用量の推移 +メモリ使用量の推移 - 数値は浮動小数点の`%`として返されます。より明確に表示するには、`数値形式を設定`を選択してください。 +数値は浮動小数点の`%`として返されます。より明確に表示するには、`数値形式を設定`を選択してください。 - 数値形式 +数値形式 - 表示されたメニューで、`Output format`ドロップダウンから`Percentage`を選択し、`Apply`をクリックします。 +表示されたメニューで、`Output format`ドロップダウンから`Percentage`を選択し、`Apply`をクリックします。 - メモリに費やした時間の割合(%) +メモリに費やした時間の割合(%) \ No newline at end of file diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md index b6954ba70b8..fec826df5ba 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md @@ -292,7 +292,7 @@ cat redis-metrics-sum.csv | docker exec -i clickstack-demo \ - **20:00** - メモリプレッシャー(キーの削除が発生し始める) ::: - + ## ダッシュボードと可視化 {#dashboards} diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md index fb4feeb991b..823b05fe3af 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/example-datasets/local-data.md @@ -25,154 +25,154 @@ import hyperdx_23 from '@site/static/images/use-cases/observability/hyperdx-23.p - ## 创建自定义 OpenTelemetry 配置 {#create-otel-configuration} - - 创建一个 `custom-local-config.yaml` 文件,内容如下: - - ```yaml - receivers: - filelog: - include: - - /host/var/log/**/*.log # 主机 Linux 日志 - - /host/var/log/syslog - - /host/var/log/messages - - /host/private/var/log/*.log # 主机 macOS 日志 - start_at: beginning - resource: - service.name: "system-logs" - - hostmetrics: - collection_interval: 1s - scrapers: - cpu: - metrics: - system.cpu.time: - enabled: true - system.cpu.utilization: - enabled: true - memory: - metrics: - system.memory.usage: - enabled: true - system.memory.utilization: - enabled: true - filesystem: - metrics: - system.filesystem.usage: - enabled: true - system.filesystem.utilization: - enabled: true - paging: - metrics: - system.paging.usage: - enabled: true - system.paging.utilization: - enabled: true - system.paging.faults: - enabled: true - disk: - load: - network: - processes: - - service: - pipelines: - logs/local: - receivers: [filelog] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - metrics/hostmetrics: - receivers: [hostmetrics] - processors: - - memory_limiter - - batch - exporters: - - clickhouse - ``` - - 此配置收集 OSX 和 Linux 系统的系统日志和指标,并将结果发送至 ClickStack。该配置通过添加新的接收器和管道来扩展 ClickStack 采集器——您需引用基础 ClickStack 采集器中已配置的现有 `clickhouse` 导出器和处理器(`memory_limiter`、`batch`)。 - - :::note 摄取时间戳 - 此配置会在摄取时调整时间戳,为每个事件分配更新后的时间值。建议用户在日志文件中使用 OTel 处理器或操作符[预处理或解析时间戳](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching),以确保保留准确的事件时间。 - - 在此示例配置中,如果接收器或文件处理器配置为从文件开头开始读取,所有现有日志条目都将被分配相同的调整后时间戳——即处理时间而非原始事件时间。追加到文件的新事件将获得接近其实际生成时间的时间戳。 - - 为避免此行为,您可以在接收器配置中将起始位置设置为 `end`。这可确保仅摄取新条目,并在接近其真实到达时间时为其添加时间戳。 - ::: - - 有关 OpenTelemetry (OTel) 配置结构的更多详细信息,请参阅[官方指南](https://opentelemetry.io/docs/collector/configuration/)。 - - ## 使用自定义配置启动 ClickStack {#start-clickstack} - - 运行以下 docker 命令以使用自定义配置启动一体化容器: - - ```shell - docker run -d --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-all-in-one:latest - ``` - - :::note Root 用户 - 我们以 root 用户身份运行采集器以访问所有系统日志——这是从 Linux 系统的受保护路径捕获日志所必需的。但是,不建议在生产环境中采用此方式。在生产环境中,应将 OpenTelemetry Collector 部署为本地代理,并仅授予访问目标日志源所需的最小权限。 - - 请注意,我们将宿主机的 `/var/log` 挂载到容器内的 `/host/var/log`,以避免与容器自身的日志文件产生冲突。 - ::: - - 如果在 ClickHouse Cloud 中使用 HyperDX 并配合独立采集器,请改用以下命令: - - ```shell - docker run -d \ - -p 4317:4317 -p 4318:4318 \ - --user 0:0 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ - -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ - -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ - -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ - -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - -v /var/log:/host/var/log:ro \ - -v /private/var/log:/host/private/var/log:ro \ - clickhouse/clickstack-otel-collector:latest - ``` - - 收集器将立即开始收集本地系统日志和指标。 - - ## 导航到 HyperDX UI {#navigate-to-the-hyperdx-ui} - - 本地部署时,访问 [http://localhost:8080](http://localhost:8080) 即可进入 HyperDX UI。若在 ClickHouse Cloud 中使用 HyperDX,请在左侧菜单中依次选择您的服务和 `HyperDX`。 - - ## 探索系统日志 {#explore-system-logs} - - 搜索界面应填充本地系统日志。展开过滤器以选择 `system.log`: - - HyperDX 本地日志 - - ## 探索系统指标 {#explore-system-metrics} +## 创建自定义 OpenTelemetry 配置 {#create-otel-configuration} + +创建一个 `custom-local-config.yaml` 文件,内容如下: + +```yaml +receivers: + filelog: + include: + - /host/var/log/**/*.log # 主机 Linux 日志 + - /host/var/log/syslog + - /host/var/log/messages + - /host/private/var/log/*.log # 主机 macOS 日志 + start_at: beginning + resource: + service.name: "system-logs" + + hostmetrics: + collection_interval: 1s + scrapers: + cpu: + metrics: + system.cpu.time: + enabled: true + system.cpu.utilization: + enabled: true + memory: + metrics: + system.memory.usage: + enabled: true + system.memory.utilization: + enabled: true + filesystem: + metrics: + system.filesystem.usage: + enabled: true + system.filesystem.utilization: + enabled: true + paging: + metrics: + system.paging.usage: + enabled: true + system.paging.utilization: + enabled: true + system.paging.faults: + enabled: true + disk: + load: + network: + processes: + +service: + pipelines: + logs/local: + receivers: [filelog] + processors: + - memory_limiter + - batch + exporters: + - clickhouse + metrics/hostmetrics: + receivers: [hostmetrics] + processors: + - memory_limiter + - batch + exporters: + - clickhouse +``` + +此配置收集 OSX 和 Linux 系统的系统日志和指标,并将结果发送至 ClickStack。该配置通过添加新的接收器和管道来扩展 ClickStack 采集器——您需引用基础 ClickStack 采集器中已配置的现有 `clickhouse` 导出器和处理器(`memory_limiter`、`batch`)。 + +:::note 摄取时间戳 +此配置会在摄取时调整时间戳,为每个事件分配更新后的时间值。建议用户在日志文件中使用 OTel 处理器或操作符[预处理或解析时间戳](/use-cases/observability/clickstack/ingesting-data/otel-collector#processing-filtering-transforming-enriching),以确保保留准确的事件时间。 + +在此示例配置中,如果接收器或文件处理器配置为从文件开头开始读取,所有现有日志条目都将被分配相同的调整后时间戳——即处理时间而非原始事件时间。追加到文件的新事件将获得接近其实际生成时间的时间戳。 + +为避免此行为,您可以在接收器配置中将起始位置设置为 `end`。这可确保仅摄取新条目,并在接近其真实到达时间时为其添加时间戳。 +::: + +有关 OpenTelemetry (OTel) 配置结构的更多详细信息,请参阅[官方指南](https://opentelemetry.io/docs/collector/configuration/)。 + +## 使用自定义配置启动 ClickStack {#start-clickstack} + +运行以下 docker 命令以使用自定义配置启动一体化容器: + +```shell +docker run -d --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-all-in-one:latest +``` + +:::note Root 用户 +我们以 root 用户身份运行采集器以访问所有系统日志——这是从 Linux 系统的受保护路径捕获日志所必需的。但是,不建议在生产环境中采用此方式。在生产环境中,应将 OpenTelemetry Collector 部署为本地代理,并仅授予访问目标日志源所需的最小权限。 + +请注意,我们将宿主机的 `/var/log` 挂载到容器内的 `/host/var/log`,以避免与容器自身的日志文件产生冲突。 +::: + +如果在 ClickHouse Cloud 中使用 HyperDX 并配合独立采集器,请改用以下命令: + +```shell +docker run -d \ + -p 4317:4317 -p 4318:4318 \ + --user 0:0 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \ + -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ + -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ + -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ + -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + -v /var/log:/host/var/log:ro \ + -v /private/var/log:/host/private/var/log:ro \ + clickhouse/clickstack-otel-collector:latest +``` + +收集器将立即开始收集本地系统日志和指标。 + +## 导航到 HyperDX UI {#navigate-to-the-hyperdx-ui} + +本地部署时,访问 [http://localhost:8080](http://localhost:8080) 即可进入 HyperDX UI。若在 ClickHouse Cloud 中使用 HyperDX,请在左侧菜单中依次选择您的服务和 `HyperDX`。 + +## 探索系统日志 {#explore-system-logs} + +搜索界面应填充本地系统日志。展开过滤器以选择 `system.log`: + +HyperDX 本地日志 + +## 探索系统指标 {#explore-system-metrics} - 我们可以使用图表探索指标数据。 +我们可以使用图表探索指标数据。 - 通过左侧菜单导航至 Chart Explorer。选择数据源 `Metrics`,聚合类型选择 `Maximum`。 +通过左侧菜单导航至 Chart Explorer。选择数据源 `Metrics`,聚合类型选择 `Maximum`。 - 在 `Select a Metric` 菜单中,输入 `memory`,然后选择 `system.memory.utilization (Gauge)`。 +在 `Select a Metric` 菜单中,输入 `memory`,然后选择 `system.memory.utilization (Gauge)`。 - 点击运行按钮以可视化内存使用率随时间的变化。 +点击运行按钮以可视化内存使用率随时间的变化。 - 内存使用随时间变化 +内存使用随时间变化 - 注意,数字以浮点数 `%` 的形式返回。为了更清晰地显示,请选择 `设置数字格式`。 +注意,数字以浮点数 `%` 的形式返回。为了更清晰地显示,请选择 `设置数字格式`。 - 数字格式 +数字格式 - 在随后的菜单中,从 `Output format` 下拉列表中选择 `Percentage`,然后点击 `Apply`。 +在随后的菜单中,从 `Output format` 下拉列表中选择 `Percentage`,然后点击 `Apply`。 - 内存时间占比 +内存时间占比 \ No newline at end of file From 0bcaca2dd6b70cdf87b1b56d24a22c6d09f59126 Mon Sep 17 00:00:00 2001 From: Shaun Struwig <41984034+Blargian@users.noreply.github.com> Date: Sun, 7 Dec 2025 11:23:19 +0100 Subject: [PATCH 5/5] fix build --- .../integration-examples/redis-metrics.md | 366 +++++++++--------- 1 file changed, 183 insertions(+), 183 deletions(-) diff --git a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md index fec826df5ba..b038dcb8e51 100644 --- a/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md +++ b/i18n/jp/docusaurus-plugin-content-docs/current/use-cases/observability/clickstack/integration-examples/redis-metrics.md @@ -45,188 +45,188 @@ import { TrackedLink } from '@site/src/components/GalaxyTrackedLink/GalaxyTracke - #### Redis接続の確認 {#verify-redis} - - まず、Redisに接続できること、およびINFOコマンドが機能することを確認します: - - ```bash - # 接続をテスト - redis-cli ping - # 期待される出力: PONG - - # INFOコマンドをテスト(メトリクスコレクターで使用) - redis-cli INFO server - # Redisサーバー情報が表示されるはずです - ``` - - Redisで認証が必要な場合: - - ```bash - redis-cli -a ping - ``` - - **一般的なRedisエンドポイント:** - - * **ローカルインストール**: `localhost:6379` - * **Docker**: コンテナ名またはサービス名を指定します(例: `redis:6379`) - * **リモート**: `:6379` - - #### カスタムOTel collector設定を作成する {#custom-otel} - - ClickStackでは、カスタム設定ファイルをマウントして環境変数を設定することで、ベースのOpenTelemetryコレクター設定を拡張できます。カスタム設定は、HyperDXがOpAMP経由で管理するベース設定にマージされます。 - - 以下の設定で `redis-metrics.yaml` という名前のファイルを作成します: - - ```yaml title="redis-metrics.yaml" - receivers: - redis: - endpoint: "localhost:6379" - collection_interval: 10s - # Redisで認証が必要な場合はコメントを解除してください - # password: ${env:REDIS_PASSWORD} - - # 収集するメトリクスを設定してください - metrics: - redis.commands.processed: - enabled: true - redis.clients.connected: - enabled: true - redis.memory.used: - enabled: true - redis.keyspace.hits: - enabled: true - redis.keyspace.misses: - enabled: true - redis.keys.evicted: - enabled: true - redis.keys.expired: - enabled: true - - processors: - resource: - attributes: - - key: service.name - value: "redis" - action: upsert - - service: - pipelines: - metrics/redis: - receivers: [redis] - processors: - - resource - - memory_limiter - - batch - exporters: - - clickhouse - ``` - - この設定では: - - * `localhost:6379` 上の Redis に接続します(ご利用の環境に合わせてエンドポイントを調整してください) - * 10秒ごとにメトリクスを収集します - * 主要なパフォーマンスメトリクス(コマンド、クライアント、メモリ、キー空間の統計)を収集 - * [OpenTelemetry semantic conventions](https://opentelemetry.io/docs/specs/semconv/resource/#service) に従い、**必須の `service.name` リソース属性を設定します** - * 専用パイプライン経由でメトリクスを ClickHouse エクスポーターに送信します - - **収集される主要メトリクス:** - - * `redis.commands.processed` - 1秒あたりの処理済みコマンド数 - * `redis.clients.connected` - 接続中のクライアント数 - * `redis.clients.blocked` - ブロッキングコールでブロックされているクライアント数 - * `redis.memory.used` - Redis が使用しているメモリ(バイト単位) - * `redis.memory.peak` - 最大メモリ使用量 - * `redis.keyspace.hits` - 成功したキー参照数 - * `redis.keyspace.misses` - キー検索の失敗数(キャッシュヒット率の算出に使用) - * `redis.keys.expired` - 期限切れになったキー - * `redis.keys.evicted` - メモリ不足により破棄されたキー数 - * `redis.connections.received` - 受信した接続の総数 - * `redis.connections.rejected` - 拒否された接続数 - - :::note - * カスタム設定では、新しい receiver、processor、pipeline のみを定義します - * `memory_limiter` と `batch` の各 processor、および `clickhouse` exporter は、ベースの ClickStack 構成内ですでに定義されているため、名前を指定するだけで参照できます - * `resource` プロセッサは、OpenTelemetry のセマンティック規約に従い、必須の `service.name` 属性を設定します - * 認証付きの本番運用環境では、パスワードを環境変数 `${env:REDIS_PASSWORD}` に保存してください。 - * 必要に応じて `collection_interval` を調整します(デフォルトは 10s。値を小さくするとデータ量が増加します) - * 複数の Redis インスタンスがある場合は、それらを区別するために `service.name` をカスタマイズしてください(例: `"redis-cache"`、`"redis-sessions"`) - ::: - - #### ClickStackにカスタム設定を読み込ませる {#load-custom} - - 既存のClickStackデプロイメントでカスタムコレクター設定を有効にするには、次の手順を実行してください: - - 1. カスタム構成ファイルを `/etc/otelcol-contrib/custom.config.yaml` にマウントします。 - 2. 環境変数 `CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml` を設定してください - 3. ClickStack と Redis 間のネットワーク接続を確保する - - ##### オプション1: Docker Compose {#docker-compose} - - ClickStackのデプロイメント設定を更新します: - - ```yaml - services: - clickstack: - # ... 既存の設定 ... - environment: - - CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - # オプション: Redis で認証が必要な場合 - # - REDIS_PASSWORD=your-redis-password - # ... その他の環境変数 ... - volumes: - - ./redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro - # ... その他のボリューム ... - # Redis が同じ compose ファイル内にある場合: - depends_on: - - redis - - redis: - image: redis:7-alpine - ports: - - "6379:6379" - # オプション: 認証を有効にする - # command: redis-server --requirepass your-redis-password - ``` - - ##### オプション2:Docker run(オールインワンイメージ) {#all-in-one} - - `docker run`でオールインワンイメージを使用する場合: - - ```bash - docker run --name clickstack \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - clickhouse/clickstack-all-in-one:latest - ``` - - **重要:** Redisが別のコンテナで実行されている場合は、Dockerネットワーキングを使用してください: - - ```bash - # ネットワークを作成 - docker network create monitoring - - # ネットワーク上でRedisを実行 - docker run -d --name redis --network monitoring redis:7-alpine - - # 同じネットワーク上でClickStackを実行(設定ファイル内のエンドポイントを "redis:6379" に更新) - docker run --name clickstack \ - --network monitoring \ - -p 8080:8080 -p 4317:4317 -p 4318:4318 \ - -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ - -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ - clickhouse/clickstack-all-in-one:latest - ``` - - #### HyperDXでメトリクスを確認する {#verifying-metrics} - - 設定完了後、HyperDXにログインし、メトリクスが正常に送信されていることを確認します: - - 1. 「Metrics explorer」に移動します - 2. `redis.` で始まるメトリクス(例: `redis.commands.processed`, `redis.memory.used`)を検索します。 - 3. 設定した収集間隔でメトリクスのデータポイントが表示されるはずです - - {/* Redis メトリクスビュー */ } +#### Redis接続の確認 {#verify-redis} + +まず、Redisに接続できること、およびINFOコマンドが機能することを確認します: + +```bash +# 接続をテスト +redis-cli ping +# 期待される出力: PONG + +# INFOコマンドをテスト(メトリクスコレクターで使用) +redis-cli INFO server +# Redisサーバー情報が表示されるはずです +``` + +Redisで認証が必要な場合: + +```bash +redis-cli -a ping +``` + +**一般的なRedisエンドポイント:** + +* **ローカルインストール**: `localhost:6379` +* **Docker**: コンテナ名またはサービス名を指定します(例: `redis:6379`) +* **リモート**: `:6379` + +#### カスタムOTel collector設定を作成する {#custom-otel} + +ClickStackでは、カスタム設定ファイルをマウントして環境変数を設定することで、ベースのOpenTelemetryコレクター設定を拡張できます。カスタム設定は、HyperDXがOpAMP経由で管理するベース設定にマージされます。 + +以下の設定で `redis-metrics.yaml` という名前のファイルを作成します: + +```yaml title="redis-metrics.yaml" +receivers: +redis: + endpoint: "localhost:6379" + collection_interval: 10s + # Redisで認証が必要な場合はコメントを解除してください + # password: ${env:REDIS_PASSWORD} + + # 収集するメトリクスを設定してください + metrics: + redis.commands.processed: + enabled: true + redis.clients.connected: + enabled: true + redis.memory.used: + enabled: true + redis.keyspace.hits: + enabled: true + redis.keyspace.misses: + enabled: true + redis.keys.evicted: + enabled: true + redis.keys.expired: + enabled: true + +processors: +resource: + attributes: + - key: service.name + value: "redis" + action: upsert + +service: +pipelines: + metrics/redis: + receivers: [redis] + processors: + - resource + - memory_limiter + - batch + exporters: + - clickhouse +``` + +この設定では: + +* `localhost:6379` 上の Redis に接続します(ご利用の環境に合わせてエンドポイントを調整してください) +* 10秒ごとにメトリクスを収集します +* 主要なパフォーマンスメトリクス(コマンド、クライアント、メモリ、キー空間の統計)を収集 +* [OpenTelemetry semantic conventions](https://opentelemetry.io/docs/specs/semconv/resource/#service) に従い、**必須の `service.name` リソース属性を設定します** +* 専用パイプライン経由でメトリクスを ClickHouse エクスポーターに送信します + +**収集される主要メトリクス:** + +* `redis.commands.processed` - 1秒あたりの処理済みコマンド数 +* `redis.clients.connected` - 接続中のクライアント数 +* `redis.clients.blocked` - ブロッキングコールでブロックされているクライアント数 +* `redis.memory.used` - Redis が使用しているメモリ(バイト単位) +* `redis.memory.peak` - 最大メモリ使用量 +* `redis.keyspace.hits` - 成功したキー参照数 +* `redis.keyspace.misses` - キー検索の失敗数(キャッシュヒット率の算出に使用) +* `redis.keys.expired` - 期限切れになったキー +* `redis.keys.evicted` - メモリ不足により破棄されたキー数 +* `redis.connections.received` - 受信した接続の総数 +* `redis.connections.rejected` - 拒否された接続数 + +:::note +* カスタム設定では、新しい receiver、processor、pipeline のみを定義します +* `memory_limiter` と `batch` の各 processor、および `clickhouse` exporter は、ベースの ClickStack 構成内ですでに定義されているため、名前を指定するだけで参照できます +* `resource` プロセッサは、OpenTelemetry のセマンティック規約に従い、必須の `service.name` 属性を設定します +* 認証付きの本番運用環境では、パスワードを環境変数 `${env:REDIS_PASSWORD}` に保存してください。 +* 必要に応じて `collection_interval` を調整します(デフォルトは 10s。値を小さくするとデータ量が増加します) +* 複数の Redis インスタンスがある場合は、それらを区別するために `service.name` をカスタマイズしてください(例: `"redis-cache"`、`"redis-sessions"`) +::: + +#### ClickStackにカスタム設定を読み込ませる {#load-custom} + +既存のClickStackデプロイメントでカスタムコレクター設定を有効にするには、次の手順を実行してください: + +1. カスタム構成ファイルを `/etc/otelcol-contrib/custom.config.yaml` にマウントします。 +2. 環境変数 `CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml` を設定してください +3. ClickStack と Redis 間のネットワーク接続を確保する + +##### オプション1: Docker Compose {#docker-compose} + +ClickStackのデプロイメント設定を更新します: + +```yaml +services: + clickstack: + # ... 既存の設定 ... + environment: + - CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml + # オプション: Redis で認証が必要な場合 + # - REDIS_PASSWORD=your-redis-password + # ... その他の環境変数 ... + volumes: + - ./redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro + # ... その他のボリューム ... + # Redis が同じ compose ファイル内にある場合: + depends_on: + - redis + + redis: + image: redis:7-alpine + ports: + - "6379:6379" + # オプション: 認証を有効にする + # command: redis-server --requirepass your-redis-password +``` + +##### オプション2:Docker run(オールインワンイメージ) {#all-in-one} + +`docker run`でオールインワンイメージを使用する場合: + +```bash +docker run --name clickstack \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + clickhouse/clickstack-all-in-one:latest +``` + +**重要:** Redisが別のコンテナで実行されている場合は、Dockerネットワーキングを使用してください: + +```bash +# ネットワークを作成 +docker network create monitoring + +# ネットワーク上でRedisを実行 +docker run -d --name redis --network monitoring redis:7-alpine + +# 同じネットワーク上でClickStackを実行(設定ファイル内のエンドポイントを "redis:6379" に更新) +docker run --name clickstack \ + --network monitoring \ + -p 8080:8080 -p 4317:4317 -p 4318:4318 \ + -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \ + -v "$(pwd)/redis-metrics.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \ + clickhouse/clickstack-all-in-one:latest +``` + +#### HyperDXでメトリクスを確認する {#verifying-metrics} + +設定完了後、HyperDXにログインし、メトリクスが正常に送信されていることを確認します: + +1. 「Metrics explorer」に移動します +2. `redis.` で始まるメトリクス(例: `redis.commands.processed`, `redis.memory.used`)を検索します。 +3. 設定した収集間隔でメトリクスのデータポイントが表示されるはずです + +{/* Redis メトリクスビュー */ } @@ -292,7 +292,7 @@ cat redis-metrics-sum.csv | docker exec -i clickstack-demo \ - **20:00** - メモリプレッシャー(キーの削除が発生し始める) ::: - + ## ダッシュボードと可視化 {#dashboards}