本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon RDS Aurora零 ETL 整合支援資料篩選,可讓您控制從來源 Amazon RDS 資料庫複寫到目標 Amazon Redshift 資料倉儲的資料。您可以套用一或多個篩選條件來選擇性地包含或排除特定資料表,而不是複寫整個資料庫。這可協助您透過確保僅傳輸相關資料,來最佳化儲存和查詢效能。目前,篩選僅限於資料庫和資料表層級。不支援資料欄層級和資料列層級篩選。
當您想要執行下列動作時,資料篩選非常有用:
-
從兩個或多個不同的來源資料庫聯結特定資料表,您不需要來自任一資料庫的完整資料。
-
僅使用一部分資料表而非整個資料庫機群執行分析,以節省成本。
-
從特定資料表篩選出敏感資訊,例如電話號碼、地址或信用卡詳細資訊。
您可以使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 Amazon RDS API,將資料篩選條件新增至零 ETL 整合。
如果整合具有佈建的 Amazon Redshift 叢集做為其目標,則叢集必須位於修補程式 180 或更高版本,才能使用資料篩選。
資料篩選條件的格式
您可以為單一整合定義多個篩選條件。每個篩選條件都會包含或排除符合篩選條件表達式中其中一個模式的任何現有和未來資料庫資料表。Amazon RDS Aurora零 ETL 整合使用 Maxwell 篩選條件語法
每個篩選條件都有下列元素:
Element | 描述 |
---|---|
篩選條件類型 |
|
篩選條件表達式 |
模式的逗號分隔清單。表達式必須使用 Maxwell 篩選條件語法 |
模式 |
您無法包含資料欄層級篩選條件或拒絕清單。 單一整合最多可有 99 個模式。在 主控台中,您可以在單一篩選條件表達式內輸入模式,或在多個表達式之間分散。單一模式的長度不可超過 256 個字元。 |
下圖顯示主控台中 資料篩選條件的結構:

重要
請勿在您的篩選模式中包含個人識別、機密或敏感資訊。
中的資料篩選條件 AWS CLI
使用 AWS CLI 來新增資料篩選條件時,語法與主控台略有不同。您必須個別為每個模式指派篩選條件類型 (Include
或 Exclude
),因此您無法在一個篩選條件類型下將多個模式分組。
例如,在主控台中,您可以在單一Include
陳述式下將下列逗號分隔模式分組:
mydb
.mytable
,mydb
./table_\d+/
不過,使用 時 AWS CLI,相同的資料篩選條件必須採用下列格式:
'include:
mydb.mytable
, include:mydb./table_\d+/
'
篩選條件邏輯
如果您未在整合中指定任何資料篩選條件,Amazon RDS Aurora會假設 的預設篩選條件include:*.*
,會將所有資料表複寫至目標資料倉儲。不過,如果您新增至少一個篩選條件,預設邏輯會切換到 exclude:*.*
,預設會排除所有資料表。這可讓您明確定義複寫中要包含哪些資料庫和資料表。
例如,如果您定義下列篩選條件:
'include: db.table1, include: db.table2'
Amazon RDS Aurora會評估篩選條件,如下所示:
'exclude:*.*, include: db.table1, include: db.table2'
因此,Amazon RDS Aurora只會table2
從名為 的資料庫複寫 table1
和 db
到目標資料倉儲。
篩選優先順序
Amazon RDS Aurora會依您指定的順序評估資料篩選條件。在 中 AWS Management Console,它會處理從左到右,從上到下篩選表達式。第二個篩選條件或第一個後面的個別模式可以覆寫它。
例如,如果第一個篩選條件是 Include books.stephenking
,它只會包含books
資料庫中的stephenking
資料表。不過,如果您新增第二個篩選條件 Exclude books.*
,則會覆寫第一個篩選條件。這可防止books
索引中的任何資料表複寫至 Amazon Redshift。
當您至少指定一個篩選條件時,邏輯會先exclude:*.*
假設,再自動排除複寫的所有資料表。最佳實務是定義從最廣泛到最具體的篩選條件。從一或多個Include
陳述式開始指定要複寫的資料,然後新增Exclude
篩選條件以選擇性地移除特定資料表。
相同的原則適用於您使用 定義的篩選條件 AWS CLI。Amazon RDS Aurora會依您指定的順序評估這些篩選條件模式,因此模式可能會覆寫您在之前指定的模式。
範例
下列範例示範資料篩選如何用於 零 ETL 整合:
-
包含所有資料庫和所有資料表:
'include: *.*'
-
包含
books
資料庫中的所有資料表:'include: books.*'
-
排除任何名為 的資料表
mystery
:'include: *.*, exclude: *.mystery'
-
在
books
資料庫中包含兩個特定資料表:'include: books.stephen_king, include: books.carolyn_keene'
-
包含
books
資料庫中的所有資料表,但包含子字串 的資料表除外mystery
:'include: books.*, exclude: books./.*mystery.*/'
-
包含
books
資料庫中的所有資料表,但以 開頭的資料表除外mystery
:'include: books.*, exclude: books./mystery.*/'
-
包含
books
資料庫中的所有資料表,但結尾為 的資料表除外mystery
:'include: books.*, exclude: books./.*mystery/'
-
包含
books
資料庫中以 開頭的所有資料表table_
,但名為 的資料表除外table_stephen_king
。例如,table_movies
或table_books
會複寫,但不會複寫table_stephen_king
。'include: books./table_.*/, exclude: books.table_stephen_king'
將資料篩選條件新增至整合
您可以使用 AWS Management Console、 AWS CLI或 Amazon RDS API 設定資料篩選。
重要
如果您在建立整合之後新增篩選條件,Amazon RDS Aurora會將其視為一律存在。它會移除目標 Amazon Redshift 資料倉儲中不符合新篩選條件的任何資料,並重新同步所有受影響的資料表。
將資料篩選條件新增至零 ETL 整合
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇零 ETL 整合。選取您要新增資料篩選條件的整合,然後選擇修改。
-
在來源下,新增一或多個
Include
和Exclude
陳述式。下圖顯示 MySQL 整合的資料篩選條件範例:
-
當您對變更感到滿意時,請選擇繼續並儲存變更。
若要使用 將資料篩選條件新增至零 ETL 整合 AWS CLI,請呼叫 modify-integrationInclude
和 Exclude
Maxwell 篩選條件清單指定 --data-filter
參數。
下列範例會將篩選條件模式新增至 my-integration
。
對於 Linux、 macOS或 Unix:
aws rds modify-integration \ --integration-identifier
my-integration
\ --data-filter'include: foodb.*, exclude: foodb.tbl, exclude: foodb./table_\d+/'
在 Windows 中:
aws rds modify-integration ^ --integration-identifier
my-integration
^ --data-filter'include: foodb.*, exclude: foodb.tbl, exclude: foodb./table_\d+/'
若要使用 RDS API 修改零 ETL 整合,請呼叫 ModifyIntegration 操作。指定整合識別符,並提供以逗號分隔的篩選條件模式清單。
從整合中移除資料篩選條件
當您從整合中移除資料篩選條件時,Amazon RDS Aurora會重新評估剩餘的篩選條件,就像移除的篩選條件永遠不存在一樣。然後,它會將任何先前已排除且現在符合條件的資料複寫到目標 Amazon Redshift 資料倉儲。這會觸發所有受影響資料表的重新同步。