Aurora零 ETL 整合的資料篩選 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Aurora零 ETL 整合的資料篩選

Aurora零 ETL 整合支援資料篩選,可讓您控制從來源 Aurora 資料庫叢集複寫到目標資料倉儲的資料。您可以套用一或多個篩選條件來選擇性地包含或排除特定資料表,而不是複寫整個資料庫。這可協助您透過確保僅傳輸相關資料來最佳化儲存和查詢效能。目前,篩選僅限於資料庫和資料表層級。不支援資料欄層級和資料列層級篩選。

當您想要:

  • 從兩個或多個不同的來源叢集聯結特定資料表,您不需要任何叢集的完整資料。

  • 僅使用資料表子集而非整個資料庫機群執行分析,以節省成本。

  • 從特定資料表篩選掉敏感資訊,例如電話號碼、地址或信用卡詳細資訊。

您可以使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 Amazon RDS API,將資料篩選條件新增至零 ETL 整合。

如果整合具有佈建叢集做為其目標,則叢集必須位於修補程式 180 或更高版本,才能使用資料篩選。

資料篩選條件的格式

您可以為單一整合定義多個篩選條件。每個篩選條件都會包含或排除符合篩選條件表達式中其中一個模式的任何現有和未來資料庫資料表。 Aurora零 ETL 整合使用 Maxwell 篩選條件語法進行資料篩選。

每個篩選條件都有下列元素:

Element 描述
篩選條件類型

Include 篩選條件類型包含符合篩選條件表達式中其中一個模式的所有資料表。Exclude 篩選條件類型會排除符合其中一個模式的所有資料表。

篩選條件表達式

模式的逗號分隔清單。運算式必須使用 Maxwell 篩選條件語法

模式

database.table Aurora MySQLAurora PostgreSQLRDS database.schema.table for PostgreSQL 格式的篩選條件模式。 您可以指定常值名稱,或定義規則表達式。

注意

對於 Aurora MySQL,資料庫和資料表名稱都支援規則運算式。對於 Aurora PostgreSQL,規則運算式僅支援結構描述和資料表名稱,不支援資料庫名稱。

您無法包含資料欄層級篩選條件或拒絕清單。

單一整合最多可有 99 個模式。在 主控台中,您可以在單一篩選條件表達式內輸入模式,或將其分散在多個表達式中。單一模式的長度不可超過 256 個字元。

重要

如果您選取 Aurora PostgreSQL 來源資料庫叢集,則必須至少指定一個資料篩選條件模式。模式至少必須包含單一資料庫 (database-name.*.*),才能複寫至目標資料倉儲。

下圖顯示主控台中 Aurora MySQL 資料篩選條件的結構:

零 ETL 整合的資料篩選條件
重要

請勿在您的篩選模式中包含個人識別、機密或敏感資訊。

中的資料篩選條件 AWS CLI

使用 AWS CLI 新增資料篩選條件時,語法與主控台略有不同。您必須個別為每個模式指派篩選條件類型 (IncludeExclude),因此您無法在一個篩選條件類型下將多個模式分組。

例如,在 主控台中,您可以在單一Include陳述式下將下列逗號分隔模式分組:

Aurora MySQL

mydb.mytable, mydb./table_\d+/

Aurora PostgreSQL

mydb.myschema.mytable, mydb.myschema./table_\d+/

不過,使用 時 AWS CLI,相同的資料篩選條件必須採用下列格式:

Aurora MySQL

'include: mydb.mytable, include: mydb./table_\d+/'

Aurora PostgreSQL

'include: mydb.myschema.mytable, include: mydb.myschema./table_\d+/'

篩選條件邏輯

如果您未在整合中指定任何資料篩選條件, Aurora會假設 的預設篩選條件include:*.*,這會將所有資料表複寫到目標資料倉儲。不過,如果您新增至少一個篩選條件,預設邏輯會切換到 exclude:*.*,預設會排除所有資料表。這可讓您明確定義複寫中要包含哪些資料庫和資料表。

例如,如果您定義下列篩選條件:

'include: db.table1, include: db.table2'

Aurora會評估篩選條件,如下所示:

'exclude:*.*, include: db.table1, include: db.table2'

因此, Aurora只會table2從名為 的資料庫複寫 table1db到目標資料倉儲。

篩選條件優先順序

Aurora會依您指定的順序評估資料篩選條件。在 中 AWS Management Console,它會處理從左到右以及從上到下的篩選條件表達式。第二個篩選條件或第一個後面的個別模式可以覆寫它。

例如,如果第一個篩選條件是 Include books.stephenking,它只會包含books資料庫中的stephenking資料表。不過,如果您新增第二個篩選條件 Exclude books.*,則會覆寫第一個篩選條件。這可防止books索引中的任何資料表複寫到目標資料倉儲。

當您指定至少一個篩選條件時,邏輯會從exclude:*.*預設情況下假設開始,這會自動排除複寫的所有資料表。最佳實務是定義從最廣泛到最具體的篩選條件。從一或多個Include陳述式開始指定要複寫的資料,然後新增Exclude篩選條件以選擇性地移除特定資料表。

相同的原則適用於您使用 定義的篩選條件 AWS CLI。 Aurora會依您指定的順序評估這些篩選模式,因此模式可能會覆寫您在之前指定的模式。

Aurora MySQL 範例

下列範例示範資料篩選如何適用於 Aurora MySQL 範例零 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_moviestable_books會複寫,但不會複寫 table_stephen_king

    'include: books./table_.*/, exclude: books.table_stephen_king'

Aurora PostgreSQL 範例

下列範例示範資料篩選如何用於 Aurora PostgreSQL 零 ETL 整合:

  • 包含books資料庫中的所有資料表:

    'include: books.*.*'
  • 排除mysterybooks資料庫中名為 的任何資料表:

    'include: books.*.*, exclude: books.*.mystery'
  • mystery結構描述的books資料庫中包含一個資料表,以及在finance結構描述的employee資料庫中包含一個資料表:

    'include: books.mystery.stephen_king, include: employee.finance.benefits'
  • 包含books資料庫和science_fiction結構描述中的所有資料表,但包含子字串 的資料表除外king

    'include: books.science_fiction.*, exclude: books.*./.*king.*/
  • 包含books資料庫中的所有資料表,但結構描述名稱開頭為 的資料表除外sci

    'include: books.*.*, exclude: books./sci.*/.*'
  • 包含books資料庫中的所有資料表,結構描述中以 結尾的mystery資料表除外king

    'include: books.*.*, exclude: books.mystery./.*king/'
  • books資料庫中包含以 開頭的所有資料表table_,但名為 的資料表除外table_stephen_king。例如,table_moviesfiction結構描述中和mystery在結構描述table_books中複寫,但在任一結構描述table_stephen_king中不會複寫:

    'include: books.*./table_.*/, exclude: books.*.table_stephen_king'

將資料篩選條件新增至整合

您可以使用 AWS Management Console、 AWS CLI或 Amazon RDS API 設定資料篩選。

重要

如果您在建立整合之後新增篩選條件, Aurora會將其視為一律存在。它會移除目標資料倉儲中不符合新篩選條件的任何資料,並重新同步所有受影響的資料表。

將資料篩選條件新增至零 ETL 整合
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/:// 開啟 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇零 ETL 整合。選取您要新增資料篩選條件的整合,然後選擇修改

  3. 來源下,新增一或多個 IncludeExclude陳述式。

    下圖顯示 MySQL 整合的資料篩選條件範例:

    RDS 主控台中零 ETL 整合的資料篩選條件
  4. 當您對變更感到滿意時,請選擇繼續儲存變更

若要使用 將資料篩選條件新增至零 ETL 整合 AWS CLI,請呼叫 modify-integration 命令。除了整合識別符之外,請使用逗號分隔的 IncludeExclude 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 操作。指定整合識別符,並提供以逗號分隔的篩選條件模式清單。

從整合中移除資料篩選條件

當您從整合中移除資料篩選條件時, Aurora會重新評估剩餘的篩選條件,就好像移除的篩選條件永遠不存在一樣。然後,它會將目前符合條件的任何先前排除的資料複寫到目標資料倉儲。這會觸發所有受影響資料表的重新同步。