{"id":46918,"date":"2023-10-14T18:53:13","date_gmt":"2023-08-27T19:00:06","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/"},"modified":"2024-05-04T04:13:47","modified_gmt":"2024-05-03T20:13:47","slug":"%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/","title":{"rendered":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09"},"content":{"rendered":"<h1>\u76ee\u6807<\/h1>\n<p>\u4f5c\u4e3a\u4e0a\u6b21\u5b9e\u65bdksqlDB Quickstart\u7684\u5ef6\u7eed\uff0c\u6211\u5c1d\u8bd5\u521b\u5efa\u4e86\u4e0b\u9762\u5f15\u7528\u7684\u6d41\u5f0f\u67e5\u8be2\u3002\u8fd9\u662f\u4e00\u4e2a\u521d\u5b66\u8005\u5728\u64cd\u4f5c\u65f6\u7684\u7b14\u8bb0\uff0c\u5efa\u8bae\u4e0e\u539f\u59cb\u8d44\u6599\u4e00\u8d77\u53c2\u8003\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u76f4\u63a5\u94fe\u63a5\u5230\u65e5\u6587\u9875\u9762\u4f1a\u8df3\u8f6c\u5230\u65e7\u7248\u672c\u7684ksqlDB\u6559\u7a0b\uff0c\u6240\u4ee5\u6700\u597d\u6ce8\u610f\u4e00\u4e0b\u3002\uff08\u56e0\u6b64\uff0c\u6211\u7ecf\u5386\u4e86\u975e\u5e38\u975e\u5e38\u975e\u5e38\u56f0\u96be\u7684\u52aa\u529b\uff0c\u4f46\u5c06\u5176\u5168\u90e8\u57cb\u85cf\u5728\u9ed1\u6697\u4e4b\u4e2d\u3002\uff09<\/p>\n<p>\u4f7f\u7528ksqlDB\uff08\u672c\u5730\uff09\u5bf9Apache Kafka\u00ae\u7f16\u5199\u6d41\u5f0f\u67e5\u8be2\u7684\u539f\u59cb\u6750\u6599\u3002<\/p>\n<h1>\u76f8\u5173\u7684Qiita\u6587\u7ae0 Qiita<\/h1>\n<p>1. \u5c1d\u8bd5\u6267\u884cksqlDB\u5feb\u901f\u5165\u95e8<br \/>\n2. \u4f7f\u7528ksqlDB\u521b\u5efa\u6d41\u67e5\u8be2\uff08\u524d\u534a\u90e8\u5206\uff09<br \/>\n3. \u4f7f\u7528ksqlDB\u521b\u5efa\u6d41\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09<br \/>\n4. \u5728Kafka\u4e0a\u4f7f\u7528ksql\u5904\u7406MySQL\u8868\u66f4\u65b0\u4fe1\u606f<\/p>\n<h1>\u73af\u5883<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Ubuntu 20.04 (on WSL2)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Confluent Platform Community Edition 6.2.1<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kafka\u30af\u30e9\u30b9\u30bf\u30fc\u306f\u6700\u5c0f\u69cb\u6210\u3067\u7a3c\u50cd(*.properties\u306f\u6b86\u3069\u3044\u3058\u3063\u3066\u3044\u306a\u3044)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">ksqlDB Server\u306b\u52a0\u3048\u3066Schema Registry\u3082\u5fc5\u8981\u3002ksql-server.properties\u306e\u4ee5\u4e0b\u306e\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3092\u5916\u3057\u3066\u304a\u304f\u3053\u3068\u3002<\/ul>\n<pre class=\"post-pre\"><code>#------ Schema Registry -------\r\n# Uncomment and complete the following to enable KSQL's integration to the Confluent Schema Registry:\r\nksql.schema.registry.url=http:\/\/localhost:8081\r\n<\/code><\/pre>\n<h1>\u521b\u5efa\u4f7f\u7528ksqlDB\u7684\u6d41\u5f0f\u67e5\u8be2\uff08\u524d\u534a\u90e8\u5206\uff09<\/h1>\n<h2>\u521b\u9020\u8bdd\u9898\u548c\u751f\u6210\u6570\u636e\u3002<\/h2>\n<p>\u53ea\u8981\u5b89\u88c5\u4e86Confluent Platform\uff0c\u5c31\u53ef\u4ee5\u4f7f\u7528\u540d\u4e3aksql-datagen\u7684\u5e94\u7528\u7a0b\u5e8f\u8fde\u7eed\u5730\u4ea7\u751f\u6d88\u606f\uff0c\u5e76\u5c06\u5176\u8fd0\u884c\u4ee5\u5c06\u6570\u636e\u8f93\u51fa\u5230ksql\u5904\u7406\u7684\u4e3b\u9898\u4e2d\uff08\u8bf7\u6ce8\u610f\uff0c\u5728\u663e\u793a\u5e2e\u52a9\u4fe1\u606f\u65f6\u5c1d\u8bd5\u521b\u5efa\/usr\/logs\u76ee\u5f55\u5931\u8d25\uff0c\u56e0\u6b64\u4e3a\u4e86\u5b89\u5168\u8d77\u89c1\uff0c\u6211\u63d0\u524d\u521b\u5efa\u4e86\u8be5\u76ee\u5f55\uff09\u3002<\/p>\n<p>\u8fd9\u6b21\u5728Quickstart\u4e2d\u6307\u5b9a\u7684\u662fksql-datagen\u9884\u8bbe\u7684\u4e24\u4e2a\u7528\u4e8e\u6f14\u793a\u7684\u7528\u6237\u548c\u9875\u9762\u6d4f\u89c8\u3002\u5c3d\u7ba1\u4e0d\u559c\u6b22\u8ba9\u5b83\u4e00\u76f4\u8fd0\u884c\uff0c\u6211\u5f88\u5feb\u5c31\u505c\u6389\u4e86\uff0c\u4f46\u5728\u540e\u9762\u7684ksql\u6267\u884c\u65f6\u4f1a\u9002\u65f6\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>gen@LAPTOP-O8FG8ES2:~\/confluent-6.2.1$ bin\/ksql-datagen quickstart=pageviews format=json topic=pageviews msgRate=5\r\n...\r\n[1635213107712L] --&gt; ([ 1635213107712L | 'User_4' | 'Page_90' ]) ts:1635213108125\r\n[1635213108142L] --&gt; ([ 1635213108142L | 'User_3' | 'Page_78' ]) ts:1635213108143\r\n[1635213108145L] --&gt; ([ 1635213108145L | 'User_7' | 'Page_50' ]) ts:1635213108145\r\n...\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>gen@LAPTOP-O8FG8ES2:~\/confluent-6.2.1$ bin\/ksql-datagen quickstart=users format=avro topic=users msgRate=1\r\n...\r\n['User_6'] --&gt; ([ 1490859483194L | 'User_6' | 'Region_4' | 'OTHER' ]) ts:1635213240163\r\n['User_6'] --&gt; ([ 1500448592685L | 'User_6' | 'Region_5' | 'FEMALE' ]) ts:1635213240523\r\n['User_1'] --&gt; ([ 1490186139886L | 'User_1' | 'Region_8' | 'FEMALE' ]) ts:1635213241484\r\n...\r\n<\/code><\/pre>\n<h2>\u4f7f\u7528ksqlDB CLI\u542f\u52a8\/\u4f7f\u7528SHOW\u548cPRINT\u8bed\u53e5\u8c03\u67e5Kafka\u4e3b\u9898\u3002<\/h2>\n<p>\u65b9\u4fbf\u7684\u662f\uff0c\u4e0ekafka-topics\u76f8\u6bd4\uff0c\u8f93\u5165\u6587\u5b57\u7684\u6570\u91cf\u8981\u5c11\u4e00\u4e9b\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SHOW TOPICS;\r\n\r\n Kafka Topic                 | Partitions | Partition Replicas\r\n---------------------------------------------------------------\r\n CURRENTLOCATION             | 1          | 1\r\n RIDERSNEARMOUNTAINVIEW      | 1          | 1\r\n default_ksql_processing_log | 1          | 1\r\n locations                   | 1          | 1\r\n pageviews                   | 1          | 1\r\n users                       | 1          | 1\r\n---------------------------------------------------------------\r\n<\/code><\/pre>\n<p>\u5982\u679c\u5c1d\u8bd5\u4f7f\u7528PRINT\u7684\u8bdd\uff0c\u4f3c\u4e4e\u662f\u8981\u4ece\u5f53\u524d\u504f\u79fb\u91cf\u5f00\u59cb\u8bfb\u53d6\u3002\u5982\u679c\u505c\u6b62ksql-datagen\uff0c\u5c31\u6ca1\u6709\u4efb\u4f55\u8fd4\u56de\u7ed3\u679c\u3002\u6211\u5f3a\u5236\u52a0\u4e0aFROM BEGINNING\u9009\u9879\u5c1d\u8bd5\u663e\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; PRINT pageviews FROM BEGINNING;\r\nKey format: KAFKA_BIGINT or KAFKA_DOUBLE\r\nValue format: JSON or KAFKA_STRING\r\nrowtime: 2021\/10\/26 01:51:48.125 Z, key: 1635213107712, value: {\"viewtime\":1635213107712,\"userid\":\"User_4\",\"pageid\":\"Page_90\"}, partition: 0\r\nrowtime: 2021\/10\/26 01:51:48.143 Z, key: 1635213108142, value: {\"viewtime\":1635213108142,\"userid\":\"User_3\",\"pageid\":\"Page_78\"}, partition: 0\r\nrowtime: 2021\/10\/26 01:51:48.145 Z, key: 1635213108145, value: {\"viewtime\":1635213108145,\"userid\":\"User_7\",\"pageid\":\"Page_50\"}, partition: 0\r\nrowtime: 2021\/10\/26 01:51:48.145 Z, key: 1635213108145, value: {\"viewtime\":1635213108145,\"userid\":\"User_5\",\"pageid\":\"Page_63\"}, partition: 0\r\n...\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>ksql&gt; PRINT users FROM BEGINNING;\r\nKey format: KAFKA_STRING\r\nValue format: AVRO\r\nrowtime: 2021\/10\/26 01:54:00.163 Z, key: User_6, value: {\"registertime\": 1490859483194, \"userid\": \"User_6\", \"regionid\": \"Region_4\", \"gender\": \"OTHER\"}, partition: 0\r\nrowtime: 2021\/10\/26 01:54:00.523 Z, key: User_6, value: {\"registertime\": 1500448592685, \"userid\": \"User_6\", \"regionid\": \"Region_5\", \"gender\": \"FEMALE\"}, partition: 0\r\nrowtime: 2021\/10\/26 01:54:01.484 Z, key: User_1, value: {\"registertime\": 1490186139886, \"userid\": \"User_1\", \"regionid\": \"Region_8\", \"gender\": \"FEMALE\"}, partition: 0\r\n...\r\n<\/code><\/pre>\n<h2>\u521b\u5efa\u6d41\u548c\u8868<\/h2>\n<p>\u9996\u5148\uff0c\u9488\u5bf9JSON\u5206\u9694\u7684\u9875\u9762\u6d4f\u89c8\u91cf\u521b\u5efa\u4e00\u4e2a\u6d41(Stream)\uff0c\u5e76\u8fdb\u884c\u63cf\u8ff0\u3002\u5bf9\u4e8e\u8fd9\u4e2a\u6d41\uff0c\u6ca1\u6709\u660e\u786e\u58f0\u660e\u5173\u952e\u5b57\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">pageviews_original<\/span> <span class=\"p\">(<\/span><span class=\"n\">viewtime<\/span> <span class=\"nb\">bigint<\/span><span class=\"p\">,<\/span> <span class=\"n\">userid<\/span> <span class=\"nb\">varchar<\/span><span class=\"p\">,<\/span> <span class=\"n\">pageid<\/span> <span class=\"nb\">varchar<\/span><span class=\"p\">)<\/span> <span class=\"k\">WITH<\/span>\r\n    <span class=\"p\">(<\/span><span class=\"n\">kafka_topic<\/span><span class=\"o\">=<\/span><span class=\"s1\">'pageviews'<\/span><span class=\"p\">,<\/span> <span class=\"n\">value_format<\/span><span class=\"o\">=<\/span><span class=\"s1\">'JSON'<\/span><span class=\"p\">);<\/span>\r\n<\/code><\/pre>\n<p>\u63cf\u8ff0\u7ed3\u679c\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE pageviews_original;\r\n\r\nName                 : PAGEVIEWS_ORIGINAL\r\n Field    | Type\r\n----------------------------\r\n VIEWTIME | BIGINT\r\n USERID   | VARCHAR(STRING)\r\n PAGEID   | VARCHAR(STRING)\r\n----------------------------\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u9488\u5bf9Avro Schema\u5206\u9694\u7b26\u7684users\uff0c\u521b\u5efa\u4e00\u4e2aTable\u3002CREATE\u7684\u610f\u601d\u662f\u201c\u5c06\u4eceMessage Key\u4e2d\u63d0\u53d6\u7684\u5185\u5bb9\u4f5c\u4e3aid\u5217\uff0c\u5e76\u6839\u636eMessage Value\u6309\u7167Avro Schema\u6dfb\u52a0\u4e3a\u5217\u201d\uff0c\u8fd9\u5c31\u662f\u5b83\u7684\u610f\u601d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">users_original<\/span> <span class=\"p\">(<\/span><span class=\"n\">id<\/span> <span class=\"nb\">VARCHAR<\/span> <span class=\"k\">PRIMARY<\/span> <span class=\"k\">KEY<\/span><span class=\"p\">)<\/span> <span class=\"k\">WITH<\/span>\r\n    <span class=\"p\">(<\/span><span class=\"n\">kafka_topic<\/span><span class=\"o\">=<\/span><span class=\"s1\">'users'<\/span><span class=\"p\">,<\/span> <span class=\"n\">value_format<\/span><span class=\"o\">=<\/span><span class=\"s1\">'AVRO'<\/span><span class=\"p\">);<\/span>\r\n<\/code><\/pre>\n<p>\u63cf\u8ff0\u5982\u4e0b\uff0c\u8868\u4e2d\u5b58\u5728\u4e00\u4e2a\u540d\u4e3aid\u7684\u4e3b\u952e\uff0c\u5e76\u4e14\u5176\u4ed6\u5217\u662f\u6839\u636eAvro\u6a21\u5f0f\u521b\u5efa\u7684\u3002\u6839\u636e\u5148\u524d\u7684\u6d88\u606f\u5185\u5bb9\uff0c\u53ef\u4ee5\u786e\u5b9aID\u5217\u548cUSERID\u5217\u5177\u6709\u76f8\u540c\u7684\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE users_original;\r\n\r\nName                 : USERS_ORIGINAL\r\n Field        | Type\r\n-----------------------------------------------\r\n ID           | VARCHAR(STRING)  (primary key)\r\n REGISTERTIME | BIGINT\r\n USERID       | VARCHAR(STRING)\r\n REGIONID     | VARCHAR(STRING)\r\n GENDER       | VARCHAR(STRING)\r\n-----------------------------------------------\r\nFor runtime statistics and query details run: DESCRIBE &lt;Stream,Table&gt; EXTENDED;\r\n<\/code><\/pre>\n<h2>\u663e\u793a\u6570\u636e<\/h2>\n<p>\u7528\u6237\u7684\u9009\u62e9\u7ed3\u679c\u5982\u4e0b\u3002\u867d\u7136\u5b83\u88ab\u6807\u8bb0\u4e3aPull Query\u5904\u7406\uff0c\u4f46\u7531\u4e8e\u5b58\u5728EMIT CHANGES\u6307\u5b9a\uff0c\u5b83\u770b\u8d77\u6765\u50cf\u662fPush Query\u3002\u786e\u5b9e\uff0c\u6ca1\u6709\u7279\u522b\u64cd\u4f5c\uff0c\u5b83\u6b63\u5728\u4eceTopic\u7684\u5f00\u5934\u8bfb\u53d6\uff0c\u4f46\u5bf9\u4e8eTable\u7684\u67e5\u8be2\u662f\u5426\u88ab\u89c6\u4e3aPull Query\u5462\uff1fID\u5217\u4e2d\u5b58\u50a8\u7684\u503c\u662f\u7531Message Key\u751f\u6210\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SELECT * FROM users_original EMIT CHANGES LIMIT 5;\r\n+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\r\n|ID                               |REGISTERTIME                     |USERID                           |REGIONID                         |GENDER                           |\r\n+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\r\n|User_9                           |1496749900085                    |User_9                           |Region_8                         |OTHER                            |\r\n|User_6                           |1488503784213                    |User_6                           |Region_4                         |OTHER                            |\r\n|User_4                           |1492836860050                    |User_4                           |Region_4                         |MALE                             |\r\n|User_7                           |1505758611024                    |User_7                           |Region_7                         |OTHER                            |\r\n|User_2                           |1513237144819                    |User_2                           |Region_9                         |MALE                             |\r\nLimit Reached\r\nQuery terminated\r\n<\/code><\/pre>\n<p>\u539f\u59cb\u9875\u9762\u89c6\u56fe\u7684SELECT\u7ed3\u679c\u5982\u4e0b\u3002\u867d\u7136\u88ab\u6807\u8bb0\u4e3aPush Query\u5904\u7406\uff0c\u4f46\u9664\u975e\u66f4\u6539\u73af\u5883\u53d8\u91cf\uff08\u8bbe\u7f6e &#8216;auto.offset.reset&#8217;=&#8217;earliest&#8217;\uff09\uff0c\u5426\u5219\u53ea\u4f1a\u663e\u793a\u5f53\u524d\u4e3b\u9898\u4e2d\u504f\u79fb\u91cf\u540e\u7684\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SELECT * FROM pageviews_original emit changes LIMIT 3;\r\n+---------------------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+\r\n|VIEWTIME                                                 |USERID                                                   |PAGEID                                                   |\r\n+---------------------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+\r\n|1635215795084                                            |User_3                                                   |Page_58                                                  |\r\n|1635215795419                                            |User_6                                                   |Page_49                                                  |\r\n|1635215795419                                            |User_4                                                   |Page_63                                                  |\r\nLimit Reached\r\nQuery terminated\r\n<\/code><\/pre>\n<h2>\u5199\u5165\u67e5\u8be2<\/h2>\n<p>\u521b\u5efa\u4e00\u4e2aSELECT\u8bed\u53e5\uff0c\u901a\u8fc7\u5c06pageviews_original\uff08Stream\uff09\u4e0eusers_original\uff08Table\uff09\u8fdb\u884cLEFT JOIN\u6765\u6269\u5c55\u7528\u6237\u4fe1\u606f\u3002\u5728SELECT\u65f6\uff0c\u4f7f\u7528AS\u5173\u952e\u5b57\u6765\u8986\u76d6\u7684\u539f\u59cb\u5217\u5e94\u8be5\u6765\u81eaMessage Key\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">SELECT<\/span> <span class=\"n\">users_original<\/span><span class=\"p\">.<\/span><span class=\"n\">id<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">userid<\/span><span class=\"p\">,<\/span> <span class=\"n\">pageid<\/span><span class=\"p\">,<\/span> <span class=\"n\">regionid<\/span><span class=\"p\">,<\/span> <span class=\"n\">gender<\/span>\r\n    <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_original<\/span>\r\n    <span class=\"k\">LEFT<\/span> <span class=\"k\">JOIN<\/span> <span class=\"n\">users_original<\/span>\r\n      <span class=\"k\">ON<\/span> <span class=\"n\">pageviews_original<\/span><span class=\"p\">.<\/span><span class=\"n\">userid<\/span> <span class=\"o\">=<\/span> <span class=\"n\">users_original<\/span><span class=\"p\">.<\/span><span class=\"n\">id<\/span>\r\n    <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span>\r\n    <span class=\"k\">LIMIT<\/span> <span class=\"mi\">5<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u4e0b\u9762\u662f\u8fdb\u884c\u4e86JOIN\u64cd\u4f5c\u540e\u7684\u67e5\u8be2\u7ed3\u679c\uff0c\u901a\u8fc7\u8fde\u63a5\u53ef\u4ee5\u5c06\u67d0\u4e2a\u9875\u9762\u7684\u89c2\u770b\u8005\u4fe1\u606f\u4e0e\u5176\u6240\u5728\u5730\u533a\u7684ID\u548c\u6027\u522b\u76f8\u5173\u8054\u3002<\/p>\n<pre class=\"post-pre\"><code>+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+\r\n|USERID                                    |PAGEID                                    |REGIONID                                  |GENDER                                    |\r\n+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+\r\n|User_4                                    |Page_22                                   |Region_3                                  |FEMALE                                    |\r\n|User_2                                    |Page_66                                   |Region_2                                  |OTHER                                     |\r\n|User_7                                    |Page_73                                   |Region_9                                  |MALE                                      |\r\n|User_5                                    |Page_88                                   |Region_4                                  |MALE                                      |\r\n|User_6                                    |Page_99                                   |Region_1                                  |MALE                                      |\r\nLimit Reached\r\nQuery terminated\r\n<\/code><\/pre>\n<p>\u5c06\u8fd9\u6761SELECT\u8bed\u53e5\u6301\u4e45\u5316\u4e3a\u6d41\u3002 ON\u6761\u4ef6\u4e2d\u81f3\u5c11\u8981\u6709\u4e00\u4e2a\u4e0e\u6d88\u606f\u952e\u76f8\u5173\u7684\u5217\u662f\u5fc5\u9700\u7684\uff08\u597d\u50cf\u662f\u8fd9\u6837\uff09\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">pageviews_enriched<\/span> <span class=\"k\">AS<\/span>\r\n  <span class=\"k\">SELECT<\/span> <span class=\"n\">users_original<\/span><span class=\"p\">.<\/span><span class=\"n\">id<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">userid<\/span><span class=\"p\">,<\/span> <span class=\"n\">pageid<\/span><span class=\"p\">,<\/span> <span class=\"n\">regionid<\/span><span class=\"p\">,<\/span> <span class=\"n\">gender<\/span>\r\n  <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_original<\/span>\r\n  <span class=\"k\">LEFT<\/span> <span class=\"k\">JOIN<\/span> <span class=\"n\">users_original<\/span>\r\n    <span class=\"k\">ON<\/span> <span class=\"n\">pageviews_original<\/span><span class=\"p\">.<\/span><span class=\"n\">userid<\/span> <span class=\"o\">=<\/span> <span class=\"n\">users_original<\/span><span class=\"p\">.<\/span><span class=\"n\">id<\/span>\r\n  <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u4e00\u5fdc\u4e5f\u8fdb\u884c\u4e00\u4e0b\u63cf\u8ff0\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE pageviews_enriched;\r\n\r\nName                 : PAGEVIEWS_ENRICHED\r\n Field    | Type\r\n-----------------------------------\r\n USERID   | VARCHAR(STRING)  (key)\r\n PAGEID   | VARCHAR(STRING)\r\n REGIONID | VARCHAR(STRING)\r\n GENDER   | VARCHAR(STRING)\r\n-----------------------------------\r\nFor runtime statistics and query details run: DESCRIBE &lt;Stream,Table&gt; EXTENDED;\r\n<\/code><\/pre>\n<p>\u5f53\u5c1d\u8bd5SELECT STREAM\u65f6\uff0c\u5f97\u5230\u7684\u7ed3\u679c\u4e0e\u5148\u524d\u7684ksql\u76f8\u4f3c\u3002\u8fd9\u4e2aksql\u4f1a\u4e0d\u65ad\u6267\u884c\uff0c\u5e76\u5c06\u7ed3\u679c\u5199\u5165\u5230Stream(Topic)\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SELECT * FROM pageviews_enriched EMIT CHANGES LIMIT 5;\r\n+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+\r\n|USERID                                    |PAGEID                                    |REGIONID                                  |GENDER                                    |\r\n+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+\r\n|User_8                                    |Page_71                                   |Region_9                                  |OTHER                                     |\r\n|User_5                                    |Page_47                                   |Region_1                                  |MALE                                      |\r\n|User_5                                    |Page_14                                   |Region_1                                  |MALE                                      |\r\n|User_2                                    |Page_34                                   |Region_2                                  |OTHER                                     |\r\n|User_2                                    |Page_61                                   |Region_2                                  |OTHER                                     |\r\nLimit Reached\r\nQuery terminated\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u4e00\u4e2a\u53ea\u9009\u51fa\u6765\u81ea\u8be5Stream\u4e2d\u7684\u5973\u6027\u7684Stream(pageviews_female)\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">pageviews_female<\/span> <span class=\"k\">AS<\/span>\r\n  <span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_enriched<\/span>\r\n  <span class=\"k\">WHERE<\/span> <span class=\"n\">gender<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'FEMALE'<\/span>\r\n  <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aStream\uff08pageview_female_like89\uff09\u7684\u6d41\uff0c\u8be5\u6d41\u4ec5\u9009\u62e9\u5c45\u4f4f\u5728Region_8\u6216Region_9\u7684\u4eba\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">pageviews_female_like_89<\/span>\r\n  <span class=\"k\">WITH<\/span> <span class=\"p\">(<\/span><span class=\"n\">kafka_topic<\/span><span class=\"o\">=<\/span><span class=\"s1\">'pageviews_enriched_r8_r9'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span>\r\n  <span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_female<\/span>\r\n  <span class=\"k\">WHERE<\/span> <span class=\"n\">regionid<\/span> <span class=\"k\">LIKE<\/span> <span class=\"s1\">'%_8'<\/span> <span class=\"k\">OR<\/span> <span class=\"n\">regionid<\/span> <span class=\"k\">LIKE<\/span> <span class=\"s1\">'%_9'<\/span>\r\n  <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u8fdb\u884c\u9009\u62e9\u540e\uff0c\u5c06\u83b7\u5f97\u4ee5\u4e0b\u65e2\u5177\u6709\u5973\u6027\u7279\u70b9\u53c8\u5730\u533a\u9650\u5b9a\u7684\u7ed3\u679c\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; select * from pageviews_female_like_89 EMIT CHANGES LIMIT 5;\r\n+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+\r\n|USERID                                    |PAGEID                                    |REGIONID                                  |GENDER                                    |\r\n+------------------------------------------+------------------------------------------+------------------------------------------+------------------------------------------+\r\n|User_8                                    |Page_77                                   |Region_9                                  |FEMALE                                    |\r\n|User_7                                    |Page_84                                   |Region_9                                  |FEMALE                                    |\r\n|User_7                                    |Page_79                                   |Region_9                                  |FEMALE                                    |\r\n|User_7                                    |Page_33                                   |Region_9                                  |FEMALE                                    |\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u6309\u6027\u522b\u548c\u533a\u57dfID\u5206\u7ec4\u7684\u8868\u3002\u8fd9\u4e2aCREATE\u547d\u4ee4\u5728\u5185\u90e8\u4f7f\u7528\u6027\u522b\u5217+\u533a\u57dfID\u5217\u4f5c\u4e3a\u6d88\u606f\u952e\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528KEY_FORMAT=&#8217;json&#8217;\u6765\u5b9a\u4e49\u5141\u8bb8\u5728\u6d88\u606f\u952e\u4e2d\u5b58\u5728\u591a\u4e2a\u5217\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">pageviews_regions<\/span>\r\n  <span class=\"k\">WITH<\/span> <span class=\"p\">(<\/span><span class=\"n\">KEY_FORMAT<\/span><span class=\"o\">=<\/span><span class=\"s1\">'json'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span>\r\n<span class=\"k\">SELECT<\/span> <span class=\"n\">gender<\/span><span class=\"p\">,<\/span> <span class=\"n\">regionid<\/span> <span class=\"p\">,<\/span> <span class=\"k\">COUNT<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">numusers<\/span>\r\n<span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_enriched<\/span>\r\n  <span class=\"n\">WINDOW<\/span> <span class=\"n\">TUMBLING<\/span> <span class=\"p\">(<\/span><span class=\"k\">size<\/span> <span class=\"mi\">30<\/span> <span class=\"k\">second<\/span><span class=\"p\">)<\/span>\r\n<span class=\"k\">GROUP<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">gender<\/span><span class=\"p\">,<\/span> <span class=\"n\">regionid<\/span>\r\n<span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u63cf\u8ff0\u5982\u4e0b\uff0c\u5728gender\/regionid\u65b9\u9762\u5747\u6210\u4e3a\u4e3b\u952e\u3002\u5728\u6d88\u606f\u5bc6\u94a5\u4e2d\u4ee5JSON\u683c\u5f0f\u5b58\u50a8\u4e86\u4e24\u5217\u6570\u636e\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE pageviews_regions;\r\n\r\nName                 : PAGEVIEWS_REGIONS\r\n Field    | Type\r\n-------------------------------------------------------------------\r\n GENDER   | VARCHAR(STRING)  (primary key) (Window type: TUMBLING)\r\n REGIONID | VARCHAR(STRING)  (primary key) (Window type: TUMBLING)\r\n NUMUSERS | BIGINT\r\n-------------------------------------------------------------------\r\nFor runtime statistics and query details run: DESCRIBE &lt;Stream,Table&gt; EXTENDED;\r\n<\/code><\/pre>\n<p>\u8fd9\u4e2aCREATE\u7684\u53e6\u4e00\u4e2a\u91cd\u70b9\u53ef\u80fd\u662fWINDOW TUMBLING\uff0830\u79d2\u5927\u5c0f\uff09\u3002\u6839\u636eksql\u6587\u6863\uff0c\u5b83\u662f\u7528\u4e8e\u6267\u884c\u4e00\u5b9a\u65f6\u95f4\u95f4\u9694\u7684\u805a\u5408\u3002\u8ba9\u6211\u4eec\u8bd5\u7740SELECT\u4e00\u4e0b\u770b\u770b\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SELECT * FROM pageviews_regions EMIT CHANGES LIMIT 5;\r\n+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\r\n|GENDER                           |REGIONID                         |WINDOWSTART                      |WINDOWEND                        |NUMUSERS                         |\r\n+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\r\n|FEMALE                           |Region_1                         |1635222870000                    |1635222900000                    |1                                |\r\n|MALE                             |Region_8                         |1635222870000                    |1635222900000                    |3                                |\r\n|MALE                             |Region_9                         |1635222870000                    |1635222900000                    |3                                |\r\n|MALE                             |Region_2                         |1635222870000                    |1635222900000                    |5                                |\r\n|FEMALE                           |Region_3                         |1635222870000                    |1635222900000                    |4                                |\r\n<\/code><\/pre>\n<p>\u7a97\u53e3\u5f00\u5934\u5217\/\u7a97\u53e3\u7ed3\u675f\u5217\u88ab\u81ea\u52a8\u9644\u52a0\uff0c\u8fd9\u8868\u793a\u65f6\u95f4\u95f4\u9694\uff08\u867d\u7136\u5bf9\u4e8e\u65f6\u95f4\u6233\u7684\u7406\u89e3\u4e0d\u592a\u6e05\u695a\uff09\u3002<\/p>\n<p>\u7136\u540e\u5c1d\u8bd5\u53d1\u51faPull Query\uff0c\u4f46\u9700\u8981\u5206\u522b\u6307\u5b9agender\u548cregionid\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_regions<\/span> <span class=\"k\">WHERE<\/span> <span class=\"n\">gender<\/span><span class=\"o\">=<\/span><span class=\"s1\">'FEMALE'<\/span> <span class=\"k\">AND<\/span> <span class=\"n\">regionid<\/span><span class=\"o\">=<\/span><span class=\"s1\">'Region_4'<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>ksql&gt; SELECT * FROM pageviews_regions WHERE gender='FEMALE' AND regionid='Region_4';\r\n+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\r\n|GENDER                           |REGIONID                         |WINDOWSTART                      |WINDOWEND                        |NUMUSERS                         |\r\n+---------------------------------+---------------------------------+---------------------------------+---------------------------------+---------------------------------+\r\n|FEMALE                           |Region_4                         |1635222900000                    |1635222930000                    |1                                |\r\nQuery terminated\r\n<\/code><\/pre>\n<p>\u987a\u4fbf\u8bf4\u4e00\u4e0b\uff0c\u5982\u679c\u5bf9Pull Query\u6ca1\u6709WHERE\u6307\u5b9a\uff0c\u4f1a\u5f97\u5230\u4ee5\u4e0b\u62b1\u6028\u3002\u5982\u679c\u786e\u5b9e\u60f3\u8981\u6267\u884c\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u6307\u5b9aSET &#8216;ksql.query.pull.table.scan.enabled&#8217;=&#8217;true&#8217;\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SELECT * FROM pageviews_regions;\r\nMissing WHERE clause.  See https:\/\/cnfl.io\/queries for more info.\r\nAdd EMIT CHANGES if you intended to issue a push query.\r\nPull queries require a WHERE clause that:\r\n - includes a key equality expression, e.g. `SELECT * FROM X WHERE &lt;key-column&gt;=Y;`.\r\n - in the case of a multi-column key, is a conjunction of equality expressions that cover all key columns.\r\n - (optionally) limits the time bounds of the windowed table.\r\n         Bounds on [`WINDOWSTART`, `WINDOWEND`] are supported\r\n         Supported operators are [EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL]\r\nIf more flexible queries are needed, table scans can be enabled by setting ksql.query.pull.table.scan.enabled=true.\r\n<\/code><\/pre>\n<p>\u4e5f\u53ef\u4ee5\u6307\u5b9aWINDOWSTART\u5217\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">SELECT<\/span> <span class=\"n\">NUMUSERS<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_regions<\/span> <span class=\"k\">WHERE<\/span>\r\n  <span class=\"n\">gender<\/span><span class=\"o\">=<\/span><span class=\"s1\">'FEMALE'<\/span> <span class=\"k\">AND<\/span> <span class=\"n\">regionid<\/span><span class=\"o\">=<\/span><span class=\"s1\">'Region_1'<\/span> <span class=\"k\">AND<\/span> <span class=\"n\">WINDOWSTART<\/span><span class=\"o\">=<\/span><span class=\"mi\">1635222870000<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\r\n|NUMUSERS                                                                                                                                                                         |\r\n+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\r\n|1                                                                                                                                                                                |\r\nQuery terminated\r\n  Query terminated\r\n<\/code><\/pre>\n<p>\u8fd8\u53ef\u4ee5\u6307\u5b9aWINDOWSTART\/WINDOWEND\u7684\u8303\u56f4\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">SELECT<\/span> <span class=\"n\">WINDOWSTART<\/span><span class=\"p\">,<\/span> <span class=\"n\">WINDOWEND<\/span><span class=\"p\">,<\/span> <span class=\"n\">NUMUSERS<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">pageviews_regions<\/span> <span class=\"k\">WHERE<\/span>\r\n<span class=\"n\">gender<\/span><span class=\"o\">=<\/span><span class=\"s1\">'FEMALE'<\/span> <span class=\"k\">AND<\/span> <span class=\"n\">regionid<\/span><span class=\"o\">=<\/span><span class=\"s1\">'Region_3'<\/span> \r\n<span class=\"k\">AND<\/span> <span class=\"mi\">1635222870000<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">WINDOWSTART<\/span> \r\n<span class=\"k\">AND<\/span> <span class=\"n\">WINDOWSTART<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">1635222930000<\/span><span class=\"p\">;<\/span> \r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>ksql&gt; \r\n+---------------------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+\r\n|WINDOWSTART                                              |WINDOWEND                                                |NUMUSERS                                                 |\r\n+---------------------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+\r\n|1635222870000                                            |1635222900000                                            |4                                                        |\r\nQuery terminated\r\n<\/code><\/pre>\n<p>\u53e6\u5916\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u5217\u51faStream\u6216Table\u6301\u4e45\u5316\u67e5\u8be2\u7684\u5199\u5165\u76ee\u6807\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; SHOW QUERIES;\r\n\r\n Query ID                          | Query Type | Status    | Sink Name                | Sink Kafka Topic         | Query String                                                                                                                                                                                                                                                                                                                                                                                                                         \r\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n CTAS_RIDERSNEARMOUNTAINVIEW_5     | PERSISTENT | RUNNING:1 | RIDERSNEARMOUNTAINVIEW   | RIDERSNEARMOUNTAINVIEW   | CREATE TABLE RIDERSNEARMOUNTAINVIEW WITH (KAFKA_TOPIC='RIDERSNEARMOUNTAINVIEW', PARTITIONS=1, REPLICAS=1) AS SELECT   ROUND(GEO_DISTANCE(CURRENTLOCATION.LA, CURRENTLOCATION.LO, 37.4133, -122.1162), -1) DISTANCEINMILES,   COLLECT_LIST(CURRENTLOCATION.PROFILEID) RIDERS,   COUNT(*) COUNT FROM CURRENTLOCATION CURRENTLOCATION GROUP BY ROUND(GEO_DISTANCE(CURRENTLOCATION.LA, CURRENTLOCATION.LO, 37.4133, -122.1162), -1) EMIT CHANGES;\r\n CSAS_PAGEVIEWS_ENRICHED_113       | PERSISTENT | RUNNING:1 | PAGEVIEWS_ENRICHED       | PAGEVIEWS_ENRICHED       | CREATE STREAM PAGEVIEWS_ENRICHED WITH (KAFKA_TOPIC='PAGEVIEWS_ENRICHED', PARTITIONS=1, REPLICAS=1) AS SELECT   USERS_ORIGINAL.ID USERID,   PAGEVIEWS_ORIGINAL.PAGEID PAGEID,   USERS_ORIGINAL.REGIONID REGIONID,   USERS_ORIGINAL.GENDER GENDER FROM PAGEVIEWS_ORIGINAL PAGEVIEWS_ORIGINAL LEFT OUTER JOIN USERS_ORIGINAL USERS_ORIGINAL ON ((PAGEVIEWS_ORIGINAL.USERID = USERS_ORIGINAL.ID)) EMIT CHANGES;                          \r\n CSAS_PAGEVIEWS_FEMALE_115         | PERSISTENT | RUNNING:1 | PAGEVIEWS_FEMALE         | PAGEVIEWS_FEMALE         | CREATE STREAM PAGEVIEWS_FEMALE WITH (KAFKA_TOPIC='PAGEVIEWS_FEMALE', PARTITIONS=1, REPLICAS=1) AS SELECT * FROM PAGEVIEWS_ENRICHED PAGEVIEWS_ENRICHED WHERE (PAGEVIEWS_ENRICHED.GENDER = 'FEMALE') EMIT CHANGES;                                                                                                                                                                                                                     \r\n CTAS_PAGEVIEWS_REGIONS_119        | PERSISTENT | RUNNING:1 | PAGEVIEWS_REGIONS        | PAGEVIEWS_REGIONS        | CREATE TABLE PAGEVIEWS_REGIONS WITH (KAFKA_TOPIC='PAGEVIEWS_REGIONS', KEY_FORMAT='json', PARTITIONS=1, REPLICAS=1) AS SELECT   PAGEVIEWS_ENRICHED.GENDER GENDER,   PAGEVIEWS_ENRICHED.REGIONID REGIONID,   COUNT(*) NUMUSERS FROM PAGEVIEWS_ENRICHED PAGEVIEWS_ENRICHED WINDOW TUMBLING ( SIZE 30 SECONDS )  GROUP BY PAGEVIEWS_ENRICHED.GENDER, PAGEVIEWS_ENRICHED.REGIONID EMIT CHANGES;                                           \r\n CSAS_PAGEVIEWS_FEMALE_LIKE_89_117 | PERSISTENT | RUNNING:1 | PAGEVIEWS_FEMALE_LIKE_89 | pageviews_enriched_r8_r9 | CREATE STREAM PAGEVIEWS_FEMALE_LIKE_89 WITH (KAFKA_TOPIC='pageviews_enriched_r8_r9', PARTITIONS=1, REPLICAS=1) AS SELECT * FROM PAGEVIEWS_FEMALE PAGEVIEWS_FEMALE WHERE ((PAGEVIEWS_FEMALE.REGIONID LIKE '%_8') OR (PAGEVIEWS_FEMALE.REGIONID LIKE '%_9')) EMIT CHANGES;                                                                                                                                                             \r\n CTAS_CURRENTLOCATION_3            | PERSISTENT | RUNNING:1 | CURRENTLOCATION          | CURRENTLOCATION          | CREATE TABLE CURRENTLOCATION WITH (KAFKA_TOPIC='CURRENTLOCATION', PARTITIONS=1, REPLICAS=1) AS SELECT   RIDERLOCATIONS.PROFILEID PROFILEID,   LATEST_BY_OFFSET(RIDERLOCATIONS.LATITUDE) LA,   LATEST_BY_OFFSET(RIDERLOCATIONS.LONGITUDE) LO FROM RIDERLOCATIONS RIDERLOCATIONS GROUP BY RIDERLOCATIONS.PROFILEID EMIT CHANGES;                                                                                                       \r\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\nFor detailed information on a Query run: EXPLAIN &lt;Query ID&gt;;\r\n<\/code><\/pre>\n<p>\u5728\u7528DESCRIBE\u547d\u4ee4\u52a0\u4e0aEXTENDED\u9009\u9879\u65f6\uff0c\u53ef\u4ee5\u4e86\u89e3\u8be5\u6d88\u8d39\u8005\u7ec4\u6458\u8981\u5904\u7406\u4e86\u591a\u5c11\u4e2a\u6d88\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE PAGEVIEWS_REGIONS EXTENDED;\r\n\r\nName                 : PAGEVIEWS_REGIONS\r\nType                 : TABLE\r\nTimestamp field      : Not set - using &lt;ROWTIME&gt;\r\nKey format           : JSON\r\nValue format         : JSON\r\nKafka topic          : PAGEVIEWS_REGIONS (partitions: 1, replication: 1)\r\nStatement            : CREATE TABLE PAGEVIEWS_REGIONS WITH (KAFKA_TOPIC='PAGEVIEWS_REGIONS', KEY_FORMAT='json', PARTITIONS=1, REPLICAS=1) AS SELECT\r\n  PAGEVIEWS_ENRICHED.GENDER GENDER,\r\n  PAGEVIEWS_ENRICHED.REGIONID REGIONID,\r\n  COUNT(*) NUMUSERS\r\nFROM PAGEVIEWS_ENRICHED PAGEVIEWS_ENRICHED\r\nWINDOW TUMBLING ( SIZE 30 SECONDS )\r\nGROUP BY PAGEVIEWS_ENRICHED.GENDER, PAGEVIEWS_ENRICHED.REGIONID\r\nEMIT CHANGES;\r\n\r\n Field    | Type\r\n-------------------------------------------------------------------\r\n GENDER   | VARCHAR(STRING)  (primary key) (Window type: TUMBLING)\r\n REGIONID | VARCHAR(STRING)  (primary key) (Window type: TUMBLING)\r\n NUMUSERS | BIGINT\r\n-------------------------------------------------------------------\r\n\r\nQueries that write from this TABLE\r\n-----------------------------------\r\nCTAS_PAGEVIEWS_REGIONS_119 (RUNNING) : CREATE TABLE PAGEVIEWS_REGIONS WITH (KAFKA_TOPIC='PAGEVIEWS_REGIONS', KEY_FORMAT='json', PARTITIONS=1, REPLICAS=1) AS SELECT   PAGEVIEWS_ENRICHED.GENDER GENDER,   PAGEVIEWS_ENRICHED.REGIONID REGIONID,   COUNT(*) NUMUSERS FROM PAGEVIEWS_ENRICHED PAGEVIEWS_ENRICHED WINDOW TUMBLING ( SIZE 30 SECONDS )  GROUP BY PAGEVIEWS_ENRICHED.GENDER, PAGEVIEWS_ENRICHED.REGIONID EMIT CHANGES;\r\n\r\nFor query topology and execution plan please run: EXPLAIN &lt;QueryId&gt;\r\n\r\nLocal runtime statistics\r\n------------------------\r\nmessages-per-sec:         0   total-messages:       102     last-message: 2021-10-26T04:35:30.3Z\r\n\r\n(Statistics of the local KSQL server interaction with the Kafka topic PAGEVIEWS_REGIONS)\r\n\r\nConsumer Groups summary:\r\n\r\nConsumer Group       : _confluent-ksql-default_query_CTAS_PAGEVIEWS_REGIONS_119\r\n\r\nKafka topic          : PAGEVIEWS_ENRICHED\r\nMax lag              : 0\r\n\r\n Partition | Start Offset | End Offset | Offset | Lag\r\n------------------------------------------------------\r\n 0         | 0            | 319        | 319    | 0\r\n------------------------------------------------------\r\n\r\nKafka topic          : _confluent-ksql-default_query_CTAS_PAGEVIEWS_REGIONS_119-Aggregate-GroupBy-repartition\r\nMax lag              : 0\r\n\r\n Partition | Start Offset | End Offset | Offset | Lag\r\n------------------------------------------------------\r\n 0         | 175          | 175        | 175    | 0\r\n------------------------------------------------------\r\n<\/code><\/pre>\n<h1>\u603b\u7ed3\uff08\u4e0a\u534a\u90e8\u5206\uff09<\/h1>\n<p>&#8211; \u5728\u5c06ksql\u5904\u7406\u7528CREATE\u6301\u4e45\u5316\u65f6\uff0c\u6211\u4e0d\u592a\u6e05\u695a\u5982\u4f55\u6b63\u786e\u4f7f\u7528Stream\u548cTable\u3002\u4f3c\u4e4e\u540e\u8005\u9700\u8981\u67d0\u79cd\u952e&#8230;<br \/>\n&#8211; \u5bf9\u4e8ePull Query\u548cPush Query\u7684\u660e\u786e\u5b9a\u4e49\u6211\u4e5f\u4e0d\u592a\u6e05\u695a&#8230; \u76ee\u524d\u5148\u7406\u89e3EMIT CHANGES\u9009\u9879\u4e00\u822c\u662fPush Query\uff0c\u4f46\u4ece\u6d4b\u8bd5\u7ed3\u679c\u6765\u770b\u4f3c\u4e4e\u6709\u4e9b\u4e0d\u540c\u3002<br \/>\n&#8211; \u4f7f\u7528SELECT WINDOW TUMBLING (size x second)\u53ef\u4ee5\u6309\u7167x\u79d2\u95f4\u9694\u8fdb\u884c\u7a97\u53e3\u805a\u5408\u3002<br \/>\n&#8211; \u88ab\u7528\u4f5cGROUP BY\u7684\u5217\u4f3c\u4e4e\u4f1a\u6210\u4e3a\u8be5Table\u7684\u6d88\u606f\u952e\u3002<\/p>\n<p>\u56e0\u4e3a\u53d8\u5f97\u76f8\u5f53\u957f\uff0c\u6240\u4ee5\u540e\u534a\u90e8\u5206\u5c06\u5199\u5728\u53e6\u4e00\u4e2a\u6587\u4ef6\u91cc\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u6807 \u4f5c\u4e3a\u4e0a\u6b21\u5b9e\u65bdksqlDB Quickstart\u7684\u5ef6\u7eed\uff0c\u6211\u5c1d\u8bd5\u521b\u5efa\u4e86\u4e0b\u9762\u5f15\u7528\u7684\u6d41\u5f0f\u67e5\u8be2\u3002\u8fd9\u662f\u4e00\u4e2a\u521d\u5b66\u8005\u5728\u64cd [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-46918","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09\" \/>\n<meta property=\"og:description\" content=\"\u76ee\u6807 \u4f5c\u4e3a\u4e0a\u6b21\u5b9e\u65bdksqlDB Quickstart\u7684\u5ef6\u7eed\uff0c\u6211\u5c1d\u8bd5\u521b\u5efa\u4e86\u4e0b\u9762\u5f15\u7528\u7684\u6d41\u5f0f\u67e5\u8be2\u3002\u8fd9\u662f\u4e00\u4e2a\u521d\u5b66\u8005\u5728\u64cd [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-27T19:00:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T20:13:47+00:00\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/\",\"name\":\"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-08-27T19:00:06+00:00\",\"dateModified\":\"2024-05-03T20:13:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09","og_description":"\u76ee\u6807 \u4f5c\u4e3a\u4e0a\u6b21\u5b9e\u65bdksqlDB Quickstart\u7684\u5ef6\u7eed\uff0c\u6211\u5c1d\u8bd5\u521b\u5efa\u4e86\u4e0b\u9762\u5f15\u7528\u7684\u6d41\u5f0f\u67e5\u8be2\u3002\u8fd9\u662f\u4e00\u4e2a\u521d\u5b66\u8005\u5728\u64cd [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-08-27T19:00:06+00:00","article_modified_time":"2024-05-03T20:13:47+00:00","author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"9 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/","name":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-08-27T19:00:06+00:00","dateModified":"2024-05-03T20:13:47+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u67e5\u8be2\u7684\u65b9\u6cd5\uff08\u524d\u534a\u90e8\u5206\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e6%9f%a5%e8%af%a2%e7%9a%84%e6%96%b9%e6%b3%95%ef%bc%88%e5%89%8d%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=46918"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46918\/revisions"}],"predecessor-version":[{"id":96049,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46918\/revisions\/96049"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=46918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=46918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=46918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}