2016-11-23 28 views
1

我有一個卡桑德拉表具有5'鍵'列和值。我想知道是否有一種方法 - 只使用一個表 - 來掃描鍵列的組合。我很好地用'固定'來找到下一個值,但沒有找到C *的正確語法來完成這樣的任何事情。c * - 瞭解'選擇不同的'用法

我已經試過:

  • 使用PRIMARY KEY(a, b, c, d, e)
    • select distinct a from <table name> - 這個工程,並給予不同的 'A'

確定。涼。

  • 使用PRIMARY KEY(a, b, c, d, e)
    • select distinct b from table where a = <some known value> - 這並不工作和報告WHERE clause only supports restriction by partition key

精細。我會更具體。

  • 使用PRIMARY KEY((a, b, c), d, e)
    • select distinct a from <table name> - 不工作,報告Partition key parts: resource must be restricted as other parts are

確定..甚至具體

  • 使用PRIMARY KEY((a, b, c), d, e)
    • select distinct c from <table name> where a = <known value> and b = <another known value> - 本報告WHERE clause only supports restriction by partition key

所以很顯然,我不知道如何使用不同關鍵字在C *。

問:

  • 是有可能找到不同組合分區鍵的

  • 是否有另一種方法來實現這一目標?爲所有子集使用查找表?

(使用CentOS 6的卡珊德拉3.9)

回答

2

的不同的關鍵字只有當它在所有(CQL3)分區鍵列的作品。

因此,在您的情況下,以下查詢工作,因爲在這種情況下,分區鍵是一個。

select distinct a from <table name>

在第二種情況下 select distinct b

沒有工作,因爲b不是分區鍵。

如果您正在使用PRIMARY KEY((a, b, c), d, e)

,你必須對所有的分區鍵使用不同。在這種情況下,您有複合分區鍵a,b,c。

因此,在你的清單中,你必須指定所有三個。

,你可以在這裏閱讀補丁https://issues.apache.org/jira/secure/attachment/12598894/4536.txt

查找方法validateDistinctSelection,你可以看到這是用來讓不同選擇不同的條件。

+0

好老鼠。看起來像我未來的「查找表的琥珀浪潮」。 – ethrbunny