メインコンテンツまでスキップ
waffle.svg
Domo Knowledge Base

結合について

Version 2

 

はじめに

「無効なクエリ」エラーと行の重複で最もよく見られる理由の1つが、SQLでデータが適切に結合できていない、つまり本質的には結合の機能に関する理解が不足していることにあります。次の記事では、SQLを使用してデータを結合する際に必要となる知識について説明します。これらの知識があれば、今後、同様の無効なクエリエラーや行の重複の問題を回避できます。

動画

次のモーショングラフィックビデオを見て、Domoでのデータの追加と結合について理解してください。

https://domo.box.com/s/shndapp42ruqq...6sy97bhksg3c9h

使用事例

SQLの結合は、2つのテーブルを結合するためのものであり、通常は、列を追加するときに使用されます。結合は、2つのテーブルを固有の列で組み合わせる機能を持ちます。2つのテーブルを結合する方法は、使用する結合のタイプによって決まります。

例えば、毎日の販売数を示すテーブル(テーブル1を参照)と、それぞれの日に働いた従業員の数を示すテーブル(テーブル2を参照)があるときに、特定の日に働いた従業員の数とそれぞれの日の売上数を比較するとします。左の完全外部結合を使用して、2つのテーブルを結合します(日付と日付を合わせます)。テーブル1と一致する日付を持つテーブル2の行は、テーブル1の同じ行に結合されます。したがって、テーブル3のように、日付、毎日の売上、働いた従業員の数がすべて同じテーブルにまとめられます。

このDataSetをDomoに取り込んだ場合は、エラーは発生しません。

テーブル1. 1日あたりの売上

日付

売上

2016-05-14

100

2016-05-15

200

2016-05-16

300

2016-05-17

400

 

テーブル2. 1日あたりの働いた従業員の数

日付

働いた従業員の数

2016-05-14

10

2016-05-15

15

2016-05-16

20

2016-05-17

25

 

テーブル3. 1日あたりの売上と働いた従業員の数

日付

売上

働いた従業員の数

2016-05-14

100

10

2016-05-15

200

15

2016-05-16

300

20

2016-05-17

400

25

 

重複を防ぐ

重複は、結合を固有の列で実行していない場合に発生します。テーブル4と5を見てみましょう。先ほどのテーブル1と2に似ていますが、ここでは両方のテーブルに同じ日付2016-05-17の行が2つあります。再び日付一致で左外部結合を実行すると、テーブル5の各行がテーブル4の一致する行にすべて結合されますが、この場合は、結合によって生成されたDataSetには4行の日付が重複しています(テーブル6を参照)。

テーブル4. 1日あたりの売上

日付

売上

2016-05-14

100

2016-05-15

200

2016-05-16

300

2016-05-17

400

2016-05-17

450

 

テーブル5. 1日あたりの働いた従業員の数

日付

働いた従業員の数

2016-05-14

10

2016-05-15

15

2016-05-16

20

2016-05-17

25

2016-05-17

26

 

テーブル6. 1日あたりの売上と働いた従業員の数

日付

売上

働いた従業員の数

2016-05-14

100

10

2016-05-15

200

15

2016-05-16

300

20

2016-05-17

400

25

2016-05-17

400

26

2016-05-17

450

25

2016-05-17

450

26

このような日付の重複を避けるには、常に固有の列で結合を行う必要があります。

結合のタイプの概要

また、ユーザーが誤って理解しているものの中に、結合のタイプがあります。結合のタイプによってDataSet内のどの行が影響を受けるのかについては、次の図を参照してください。

 

左の外部結合

LeftOuterJoin.png

 

右の外部結合

RightOuterJoin.png

 

内部結合

InnerJoin.png

 

完全外部結合

FullOuterJoin.png

 

要約すると、適切なタイプの結合を適用し、DataSetでの表示方法に合わせて、同じ列タイプまたは列設定を一致させてください。

回避すべき結合エラー

  • 文字列が値と等しいときの結合。
  • 空の文字列値を持つ列の結合。  
  • 日付のように見えるが、何らかの理由で文字列として入力されている結合対象の列での日付関数の実行。

 


SQLを使用してデータを結合する方法を学び、無効なクエリエラーや行の重複の問題を回避できるようになりましょう。