forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Su, Xiaomeng <suxiaomeng1@huawei.com> Co-committed-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
147 lines
14 KiB
HTML
147 lines
14 KiB
HTML
<a name="dli_08_0106"></a><a name="dli_08_0106"></a>
|
|
|
|
<h1 class="topictitle1">JOIN Between Stream Data and Table Data</h1>
|
|
<div id="body1574406512563"><p id="dli_08_0106__p1795090154818">The JOIN operation allows you to query data from a table and write the query result to the sink stream. Currently, only RDSs and DCS Redis tables are supported. The ON keyword describes the Key used for data query and then writes the <strong id="dli_08_0106__b2658151018237">Value</strong> field to the sink stream.</p>
|
|
<p id="dli_08_0106__p103591518174816">For details about the data definition statements of RDS tables, see <a href="dli_08_0261.html">Creating an RDS Table</a>.</p>
|
|
<p id="dli_08_0106__en-us_topic_0060751163_p6514875129">For details about the data definition statements of Redis tables, see <a href="dli_08_0260.html">Creating a Redis Table</a>.</p>
|
|
<div class="section" id="dli_08_0106__section79790350571"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="dli_08_0106__screen1738816545352"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">FROM</span><span class="w"> </span><span class="n">tableExpression</span><span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">tableExpression</span>
|
|
<span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">value11</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value21</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">value12</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value22</span><span class="p">]</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="section" id="dli_08_0106__section1618617133710"><h4 class="sectiontitle">Syntax Description</h4><p id="dli_08_0106__en-us_topic_0060751163_p751514711129">The ON keyword only supports equivalent query of table attributes. If level-2 keys exist (specifically, the Redis value type is HASH), the AND keyword needs to be used to express the equivalent query between Key and Hash Key.</p>
|
|
</div>
|
|
<div class="section" id="dli_08_0106__section196449562372"><h4 class="sectiontitle">Precautions</h4><p id="dli_08_0106__p53854443813">None</p>
|
|
</div>
|
|
<div class="section" id="dli_08_0106__section6211517201018"><h4 class="sectiontitle">Example</h4><p id="dli_08_0106__p771710344143">Perform equivalent JOIN between the vehicle information source stream and the vehicle price table, get the vehicle price data, and write the price data into the vehicle information sink stream.</p>
|
|
</div>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0106__screen428513454147"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
|
<span class="normal"> 2</span>
|
|
<span class="normal"> 3</span>
|
|
<span class="normal"> 4</span>
|
|
<span class="normal"> 5</span>
|
|
<span class="normal"> 6</span>
|
|
<span class="normal"> 7</span>
|
|
<span class="normal"> 8</span>
|
|
<span class="normal"> 9</span>
|
|
<span class="normal">10</span>
|
|
<span class="normal">11</span>
|
|
<span class="normal">12</span>
|
|
<span class="normal">13</span>
|
|
<span class="normal">14</span>
|
|
<span class="normal">15</span>
|
|
<span class="normal">16</span>
|
|
<span class="normal">17</span>
|
|
<span class="normal">18</span>
|
|
<span class="normal">19</span>
|
|
<span class="normal">20</span>
|
|
<span class="normal">21</span>
|
|
<span class="normal">22</span>
|
|
<span class="normal">23</span>
|
|
<span class="normal">24</span>
|
|
<span class="normal">25</span>
|
|
<span class="normal">26</span>
|
|
<span class="normal">27</span>
|
|
<span class="normal">28</span>
|
|
<span class="normal">29</span>
|
|
<span class="normal">30</span>
|
|
<span class="normal">31</span>
|
|
<span class="normal">32</span>
|
|
<span class="normal">33</span>
|
|
<span class="normal">34</span>
|
|
<span class="normal">35</span>
|
|
<span class="normal">36</span>
|
|
<span class="normal">37</span>
|
|
<span class="normal">38</span>
|
|
<span class="normal">39</span>
|
|
<span class="normal">40</span>
|
|
<span class="normal">41</span>
|
|
<span class="normal">42</span>
|
|
<span class="normal">43</span>
|
|
<span class="normal">44</span>
|
|
<span class="normal">45</span>
|
|
<span class="normal">46</span>
|
|
<span class="normal">47</span>
|
|
<span class="normal">48</span>
|
|
<span class="normal">49</span>
|
|
<span class="normal">50</span>
|
|
<span class="normal">51</span>
|
|
<span class="normal">52</span>
|
|
<span class="normal">53</span>
|
|
<span class="normal">54</span>
|
|
<span class="normal">55</span>
|
|
<span class="normal">56</span>
|
|
<span class="normal">57</span>
|
|
<span class="normal">58</span>
|
|
<span class="normal">59</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">SOURCE</span><span class="w"> </span><span class="n">STREAM</span><span class="w"> </span><span class="n">car_infos</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">car_id</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_owner</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_brand</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_detail_type</span><span class="w"> </span><span class="n">STRING</span>
|
|
<span class="p">)</span>
|
|
<span class="k">WITH</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"dis"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">region</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">""</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">channel</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"dliinput"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">partition_count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"1"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">encode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"csv"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">field_delimiter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">","</span>
|
|
<span class="p">);</span>
|
|
|
|
<span class="cm">/** Create a data dimension table to connect to the source stream to fulfill field backfill.</span>
|
|
<span class="cm"> *</span>
|
|
<span class="cm"> * Reconfigure the following options according to actual conditions:</span>
|
|
<span class="cm"> * value_type: indicates the value type of the Redis key value. The value can be STRING, HASH, SET, ZSET, or LIST. For the HASH type, you need to specify hash_key_column as the layer-2 primary key. For the SET type, you need to concatenate all queried values using commas (,).</span>
|
|
<span class="cm"> * key_column: indicates the column name corresponding to the primary key of the dimension table.</span>
|
|
<span class="cm"> * hash_key_column: indicates the column name corresponding to the KEY of the HASHMAP when value_type is HASH. If value_type is not HASH, you do not need to set this option.</span>
|
|
<span class="cm"> * cluster_address: indicates the DCS Redis cluster address.</span>
|
|
<span class="cm"> * password: indicates the DCS Redis cluster password.</span>
|
|
<span class="cm"> **/</span>
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">car_price_table</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">car_brand</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_detail_type</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_price</span><span class="w"> </span><span class="n">STRING</span>
|
|
<span class="p">)</span>
|
|
<span class="k">WITH</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"dcs_redis"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">value_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"hash"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">key_column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"car_brand"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">hash_key_column</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"car_detail_type"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">cluster_address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"192.168.1.238:6379"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"xxxxxxxx"</span>
|
|
<span class="p">);</span>
|
|
|
|
<span class="k">CREATE</span><span class="w"> </span><span class="n">SINK</span><span class="w"> </span><span class="n">STREAM</span><span class="w"> </span><span class="n">audi_car_owner_info</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="n">car_id</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_owner</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_brand</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_detail_type</span><span class="w"> </span><span class="n">STRING</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">car_price</span><span class="w"> </span><span class="n">STRING</span>
|
|
<span class="p">)</span>
|
|
<span class="k">WITH</span><span class="w"> </span><span class="p">(</span>
|
|
<span class="w"> </span><span class="k">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"dis"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">region</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">""</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">channel</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"dlioutput"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">partition_key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"car_owner"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">encode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"csv"</span><span class="p">,</span>
|
|
<span class="w"> </span><span class="n">field_delimiter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">","</span>
|
|
<span class="p">);</span>
|
|
|
|
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">audi_car_owner_info</span>
|
|
<span class="k">SELECT</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">car_id</span><span class="p">,</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">car_owner</span><span class="p">,</span><span class="w"> </span><span class="n">t2</span><span class="p">.</span><span class="n">car_brand</span><span class="p">,</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">car_detail_type</span><span class="p">,</span><span class="w"> </span><span class="n">t2</span><span class="p">.</span><span class="n">car_price</span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">car_infos</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">car_price_table</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">t2</span>
|
|
<span class="k">ON</span><span class="w"> </span><span class="n">t2</span><span class="p">.</span><span class="n">car_brand</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">car_brand</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">t2</span><span class="p">.</span><span class="n">car_detail_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">car_detail_type</span>
|
|
<span class="k">WHERE</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">car_brand</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ss">"audi"</span><span class="p">;</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0233.html">Flink SQL Syntax</a></div>
|
|
</div>
|
|
</div>
|
|
|