問題タブ [sql-null]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3006 参照

sql - 左結合内の左結合

テーブルから値を取得する際に問題があります。

私はこのようなものが必要です

テーブル A と B が結合され、テーブル B と C も結合されます。テーブル A は、テーブル B からの 1 つまたはゼロ以上の値を持つことができます。テーブル C からの値についても同じ状況です。

テーブル B に対してテーブル A で左結合を実行し、テーブル C に対してテーブル B でその左結合を実行する必要があります。

テーブルAとBから左結合を試みましたが、その左結合内で左結合を実行する方法がわかりません。

それは可能ですか?その構文はどのようになりますか?

編集:データは次のようになります

0 投票する
1 に答える
65 参照

sql - HDP、Hive、Lateral ビュー、および null: 行が消える

hdp 3.1.0 から 3.1.4 にアップグレードしてから、Hive で理解できない問題が発生しました。ここでは ORC トランザクション テーブルのみを使用していることに注意してください。

たとえば、次のクエリ:

アップグレード前は完全に機能していました。

ここで、CTE が特定の行数を返したとしても、ラテラル ビューを使用すると、エラーなしで結果セットから行が削除されますが、CTE の外側に余分な where 句はありません (私の実際の例では、クエリは 66 行を返します)。側面図はありませんが、19 のみあります)。

私の場合、私は持っています:

  • select count(*)66行ください
  • 静的文字列の側面図を追加すると、19 行しか表示されません。

私はかなりの数のバリエーションを試しました:

  • イベント テーブルを静的 CTE ( ) に置き換えると、select stack(1, ...)期待どおりの結果が得られます
  • 横方向のビューを削除すると、期待する行数が得られます (使用しない限り、とは異なります)
  • CTE の代わりに一時テーブルを作成して使用しても、結果は変わりません。
  • CTEの外側に選択部分を配置json_tuple(cte.json, 'customfield')した場合(有効ではないため、他には何もありません)、 なしではlateral view、期待される行数があります。
  • get_json_objectCTEの外側の選択部分で使用すると(側面図はありません)、期待される結果が得られます。
  • もちろん、ハイブ (サーバーまたはメタストア) のログには何もありません。
  • 補足として、merge以前は完全に機能していたのに対し、アップグレード a ステートメント [重複を生成し続ける] [1] 以来。

もう 1 つの非常に驚くべきことは、CTE 内に if ステートメントがあることですif(is_deleted is null, 'true', 'false')。完全に有効なはずの を に置き換えるis nullと、CTE から行が返されません。is not distinct from null

私は完全に途方に暮れており、なぜこれが起こるのか、どうすればハイブを信頼できるのかわかりません. 

手動データを生成してもエラーを再現できないため、実際に機能する (ない) 例を示すことはできません。