定期抄寫層次、群組層次或使用者層次的水平過濾, 使用 SQL 子句來從來源資料來源選取資料。SQL 子句的內容是由 DB2 DataPropagator 定期抄寫之進階定期抄寫定義筆記本的「列」頁面,以及 JDBC 定期抄寫之進階定期抄寫方式筆記本的「列」頁面所控制。若要開啟這些筆記本的任一者,請:
在定期抄寫層次過濾資料
在定期抄寫筆記本的列頁面上,在需要全部的橫列方框中鍵入 SQL 子句。整個 SQL 子句必須使用下列格式鍵在一行上:
city='myValue'
請不要將 WHERE 鍵在 SQL 子句開頭處。WHERE 會自動被附加到方框中所鍵的子句。例如,下列子句將只會同步化 city 欄位值等於 Los Angeles 的直欄:
city='Los Angeles, CA 90061'
在群組層次過濾資料
city=':fcity.'
其中 :fcity. 是欄位值的參數。
我們建議您利用額外的文字來唯一識別您的參數名稱。例如,以冒號 (:) 來開始參數名稱,並以 (.) 結束它.
Los Angeles, CA 90061
可以使用特殊的值。 值 $USERNAME 允許 Sync Server 使用者 ID 被當作參數的值而插入。這可讓您以將特定使用者插入資料來源,並使它們的 Sync Server 使用者 ID 位於特定欄位中的方式來建立橫列。
每個被指定到此群組的使用者都只會收到來自 VNPERSON 表格,city 欄位值等於 Los Angeles, CA 90061 的列。其他群組會收到整個 VNPERSON 表格,或是 VNPERSON 表格的特定子集,視配置的過濾器而定。
在使用者層次過濾資料
city=':fcity.' and id=':fid.'
其中 :fcity. 是 city 欄位值的參數,而 :fid. 是 id 欄位值的參數。
Los Angeles, CA 90061
900000401
使用者將只會收到具有 city 欄位值 Los Angeles, CA 90061 和 id 欄位值 900000401 的記錄。在 VNPERSON 中有一筆具有此值的記錄。其他被指定到相同群組的使用者,將只會收到來自 VNPERSON 表格,city 欄位值等於 Los Angeles, CA 90061 且 user 欄位值被其資料過濾器所設定的列。其他群組會收到整個 VNPERSON 表格,或是 VNPERSON 表格的特定子集,視配置的過濾器而定。
資料庫及使用者管理中部份狀況需要在個別使用者的橫列子集欄位中定義複雜的 SQL WHERE 子句, 以便限制群組或使用者可以看見的橫列。 當定義過濾器時,您可能會參照到鏡映資料庫中的表格、使用群組或使用者的參數, 或是使用這些方法的組合。 如需建立簡式水平過濾器的基本步驟,請參閱定義簡單的水平過濾器。
DB2 Everyplace Sync Server 提供標準 SQL WHERE 施行的子集,以便搭配過濾器使用。如需子集的語法, 請參閱過濾器的語法。
下列範例示範您如何參照鏡映資料庫中的其他表格,以及使用參數進行水平過濾。
假設您管理兩個名為 Ziptab 及 Business 的表格,兩個都位於鏡映資料庫中。Ziptab 包含了特定城市的郵遞區號 (請參閱表 4),而 Business 追蹤部份公司以及他們的郵遞區號 (請參閱表 5)。您要加州聖荷西的使用者只能檢視他們城本中的企業。 您建立了一個群組,並將這些使用者指定至該群組。
City | Zipcode |
---|---|
San Jose | 95141 |
San Jose | 95123 |
Los Angeles | 93002 |
Business | Zip |
---|---|
IBM | 95141 |
My Company | 95123 |
Your Company | 93002 |
Another Company | 94888 |
您會在「列」頁面的個別使用者的橫列子集欄位中鍵入下列子句:
(Zip) IN (SELECT Zipcode FROM Ziptab WHERE City = ':fcity.')
:fcity. 是 City 欄位值的參數, 您針對該群組將它設為 San Jose。
然後完成並關閉「建立定期抄寫」筆記本。因此,
在同步化之後,使用者將只會在他們的裝置上的 Business 表格中看見下列橫列:
Business | Zip |
---|---|
IBM | 95141 |
My Company | 95123 |
在「行動裝置管理中心 (MDAC)」中建立定期抄寫方式時,可使用類似 SQL WHERE 子句的子句來過濾個別使用者。請將子句輸入於 DataPropagator 定期抄寫之「進階定期抄寫方式」筆記本或 JDBC 定期抄寫之「進階定期抄寫方式」筆記本的個別使用者的橫列子集欄位中。
使用語法圖的限制如下。這些限制包括:
過濾器 .-邏輯運算子 AND 或 OR-. V | >>---| 維度 |-------------+------------------------------------>< 維度 |--+-column-name--IN--| 次選擇 |-----------+--------------------| | .-,-----------. | | V | | +-(----column-name-+--)--IN--| 次選擇 |-+ '-| simpleUnaryFilter |-----------------' 次選擇 |--(--| selectClause |--| fromClause |--+-----------------+-----> '-| whereClause |-' >--)------------------------------------------------------------| selectClause .-,-----------. V | |--SELECT----column-name-+--------------------------------------| fromClause |--FROM--| tableReference |-------------------------------------| whereClause |--WHERE--| simpleFilter |--------------------------------------| tableReference |--+----------------+--table-name-------------------------------| '-schema-name--.-' simpleFilter .-邏輯運算子 AND 或 OR--. V | |----| simpleUnaryFilter |-+------------------------------------| simpleUnaryFilter |--+-NOT--| simpleUnaryFilter |-+-------------------------------| +-(--| simpleFilter |--)-----+ '-| simplePredicate |--------' simplePredicate |--| 表示式 |--| simplePredicateEnd |---------------------------| 表示式 |--+-| 函數 |----+----------------------------------------------| +-column-name-+ '-| 常數 |----' 函數 |--+----------------+--function-name--(--+----------------+-----> '-schema-name--.-' | .-,----------. | | V | | '---| 表示式 |-+-' >--)------------------------------------------------------------| simplePredicateEnd |--+-+-| 運算子 |-+--| 表示式 |--------------------+------------| | '-IN---------' | +-IS--+-----+--NULL-----------------------------+ | '-NOT-' | '-+-----+--BETWEEN--| 表示式 |--AND--| 表示式 |-' '-NOT-' 運算子 |--+-=----+-----------------------------------------------------| +-<>---+ +->----+ +-<----+ +->=---+ +-<=---+ +-!=---+ +-!<---+ +-!>---+ '-LIKE-'