1

ファクトテーブル:

Id Year Month countryId Sales
1  1999 1     1         3000
2  1999 2     1         2300
3  2000 3     2         3999
4  2000 4     3         2939

寸法表:

Id country province
1  US      LA
2  US      CA
3  US      GA
4  EN      LN

そして私はこのようなGuavaテーブルを使用します:

Table<Integer, String, Object> table = Tables.newCustomTable(
        Maps.<Integer, Map<String, Object>> newLinkedHashMap(),
        new Supplier<Map<String, Object>>() {
            public Map<String, Object> get() {
                return Maps.newLinkedHashMap();
            }
        });

    table.put(1, "Year", 1999);
    table.put(1, "Month", 1);
    table.put(1, "countyId", 1);
    table.put(1, "Sales", 3000);
    // ...... etc


    table1.put(1, "county", "US");
    table1.put(1, "provice", 1999);
    // ......

私は次のようなものを実装したいLEFT JOIN

1 1999 1 1 3000 US LA
2 1999 2 1 2300 US LA
3 2000 3 2 3999 US CA
4 2000 4 3 2939 EN LN

私は何をすべきか?

4

1 に答える 1

3

GuavaTableはコレクションであるため、SQL のテーブルのように使用することは想定されていません。SQL のテーブルは、インデックス可能、ソート可能、フィルター可能などになるように設計されています。Guava のテーブルはTableそれらのほんの一部であり、間接的にしかなく、ジョイントはそれらの一部ではありません (変換で遊んでいない限り)。

必要なことは、2 つのテーブルを用意し、 の要素をループしてtable、対応するマッピングを で見つけることtable1です。

あなたの場合、 のList交換tableとグアバTableの方が良いと思いますtable1。リストをループして、要素を取得したら最終的なオブジェクトを作成します。

于 2013-02-06T15:36:53.583 に答える