

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

# Amazon DataZone 中的資料歷程
<a name="datazone-data-lineage"></a>

Amazon DataZone 中的資料歷程是與 OpenLineage 相容的功能，可協助您從啟用 OpenLineage 的系統或透過 APIs 擷取並視覺化歷程事件，以追蹤資料原始伺服器、追蹤轉換，以及檢視跨組織的資料耗用量。它可讓您全面檢視資料資產，以查看資產的來源及其連線鏈。歷程資料包含 Amazon DataZone 業務資料目錄中活動的相關資訊，包括目錄化資產、這些資產訂閱者，以及使用 APIs 以程式設計方式擷取之業務資料目錄外活動的相關資訊。

**Topics**
+ [Amazon DataZone 中的譜系節點類型](#datazone-data-lineage-node-types)
+ [歷程節點中的關鍵屬性](#datazone-data-lineage-key-attributes)
+ [視覺化資料歷程](#datazone-data-lineage-history)
+ [Amazon DataZone 中的資料歷程授權](#datazone-data-lineage-authorization)
+ [Amazon DataZone 中的資料歷程範例體驗](#datazone-data-lineage-sample-experience)
+ [在管理主控台中啟用資料歷程](#enable-data-lineage)
+ [以程式設計方式使用 Amazon DataZone 資料歷程](#datazone-data-lineage-apis)
+ [自動化 Glue AWS 目錄的譜系](#datazone-data-lineage-automate)
+ [從 Amazon Redshift 自動化歷程](#datazone-data-lineage-automate-redshift)

可以將歷程設定為在新增至 Amazon DataZone 時自動從 AWS Glue 和 Amazon Redshift 資料庫擷取。此外，Spark ETL 任務可在 AWS Glue (v5.0 和更高版本） 主控台或筆記本中執行，設定為將歷程事件傳送至 Amazon DataZone 網域。

在 Amazon DataZone 中，網域管理員可以設定歷程記錄，同時設定資料湖和資料倉儲內建藍圖，以確保從這些資源建立的所有資料來源執行都已啟用自動歷程記錄擷取。

使用 Amazon DataZone 的 OpenLineage 相容 APIs，網域管理員和資料生產者可以擷取和儲存 Amazon DataZone 中可用範圍之外的歷程事件，包括 Amazon S3、 AWS Glue 和其他 服務的轉換。這可為資料消費者提供全面的檢視，並協助他們獲得資產原始伺服器的信心，而資料生產者可以透過了解資產的使用情況來評估資產變更的影響。此外，Amazon DataZone 版本與每個事件的歷程記錄，可讓使用者在任何時間點視覺化歷程記錄，或比較資產或任務歷史記錄的轉換。此歷史歷程可讓您更深入了解資料如何演進，這對於疑難排解、稽核和確保資料資產的完整性至關重要。

透過資料歷程，您可以在 Amazon DataZone 中完成下列作業：
+ 了解資料的來源：了解資料的來源，讓您清楚了解資料的來源、相依性和轉換，進而培養對資料的信任。此透明度有助於做出可信的資料驅動型決策。
+ 了解資料管道變更的影響：變更資料管道時，可以使用歷程記錄來識別所有要受影響的下游消費者。這有助於確保在不中斷關鍵資料流程的情況下進行變更。
+ 識別資料品質問題的根本原因：如果在下游報告中偵測到資料品質問題，則歷程記錄，特別是資料欄層級歷程記錄，可用來追蹤資料 （在資料欄層級），以將問題傳回其來源。這可協助資料工程師識別和修正問題。
+ 改善資料控管和合規：資料欄層級譜系可用於證明符合資料控管和隱私權法規。例如，資料欄層級歷程記錄可用來顯示敏感資料 （例如 PII) 的存放位置，以及在下游活動中如何處理。

## Amazon DataZone 中的譜系節點類型
<a name="datazone-data-lineage-node-types"></a>

在 Amazon DataZone 中，資料歷程資訊會顯示在代表資料表和檢視的節點中。根據專案的內容，例如，在資料入口網站左上角選取的專案，生產者可以同時檢視庫存和已發佈的資產，而消費者只能檢視已發佈的資產。當您第一次在資產詳細資訊頁面中開啟歷程索引標籤時，目錄化資料集節點是導覽歷程圖表的歷程節點上游或下游的起點。

以下是 Amazon DataZone 中支援的資料譜系節點類型：
+ **資料集節點** - 此節點類型包含特定資料資產的資料歷程資訊。
  + 在 Amazon DataZone 目錄中發佈的包含 AWS Glue 或 Amazon Redshift 資產相關資訊的資料集節點會自動產生，並在節點中包含對應的 AWS Glue 或 Amazon Redshift 圖示。
  + 包含未在 Amazon DataZone 目錄中發佈之資產相關資訊的資料集節點，是由網域管理員 （生產者） 手動建立，並以節點內的預設自訂資產圖示表示。
+ **任務 （執行） 節點** - 此節點類型會顯示任務的詳細資訊，包括特定任務的最新執行和執行詳細資訊。此節點也會擷取任務的多個執行，並且可以在節點詳細資訊的**歷史記錄**索引標籤中檢視。您可以選擇節點圖示來檢視節點詳細資訊。

## 歷程節點中的關鍵屬性
<a name="datazone-data-lineage-key-attributes"></a>

歷程節點中的 `sourceIdentifier` 屬性代表資料集上發生的事件。歷程節點`sourceIdentifier`的 是資料集的識別符 （資料表/檢視等）。它用於譜系節點上的唯一性強制執行。例如，不能有兩個具有相同 的歷程節點`sourceIdentifier`。以下是不同節點類型`sourceIdentifier`值的範例：
+ 對於具有個別資料集類型的資料集節點：
  + 資產：amazon.datazone.asset/<assetId>
  + 列出 （已發佈的資產）：amazon.datazone.listing/<listingId>
  + AWS Glue 資料表：arn：aws：glue：<region>：<account-id>：table/<database>/<table-name> 
  + Amazon Redshift 資料表/檢視：arn：aws：<redshift/redshift-serverless>：<region>：<account-id>：<table-type(table/view 等）>/<clusterIdentifier/workgroupName>/<database>/<schema>/<table-name> 
  + 對於使用開放式執行事件匯入的任何其他資料集節點類型，從`sourceIdentifier`節點開始會使用輸入/輸出資料集的 <namespace>/<name>。
+ 對於任務：
  + 對於使用開放式執行事件匯入的任務節點，<jobs\_namespace>.<job\_name> 用作 sourceIdentifier。
+ 對於任務執行：
  + 對於使用開放式執行事件匯入的任務執行節點，<jobs\_namespace>.<job\_name>/<run\_id> 用作 sourceIdentifier。

對於使用 `createAsset` API 建立的資產，`sourceIdentifier`必須使用 `createAssetRevision` API 更新 ，以啟用將資產映射到上游資源。

## 視覺化資料歷程
<a name="datazone-data-lineage-history"></a>

Amazon DataZone 的資產詳細資訊頁面提供資料歷程的圖形表示，讓您更輕鬆地視覺化上游或下游的資料關係。資產詳細資訊頁面提供下列功能來導覽圖形：
+ 資料欄層級歷程：在資料集節點中可用時展開資料欄層級歷程。如果來源資料欄資訊可用，這會自動顯示與上游或下游資料集節點的關係。
+ 資料欄搜尋：當資料欄數量的預設顯示為 10 時。如果超過 10 個資料欄，系統會啟用分頁以導覽至其餘的資料欄。若要快速檢視特定資料欄，您可以在只列出搜尋資料欄的資料集節點上進行搜尋。
+ 僅檢視資料集節點：如果您想要切換為僅檢視資料集歷程節點並篩選出任務節點，您可以選擇圖形檢視器左上方的開啟檢視控制項圖示，並切換**僅顯示資料集節點**選項。這將從圖形中移除所有任務節點，並讓您只導覽資料集節點。請注意，當僅開啟檢視資料集節點時，圖形無法擴展到上游或下游。
+ 詳細資訊窗格：每個譜系節點都會在選取時擷取和顯示詳細資訊。
  + 資料集節點具有詳細資訊窗格，可顯示該節點針對特定時間戳記擷取的所有詳細資訊。每個資料集節點都有 3 個索引標籤，即：系列資訊、結構描述和歷史記錄索引標籤。歷史記錄索引標籤會列出為該節點擷取的不同歷程事件版本。從 API 擷取的所有詳細資訊都會使用中繼資料表單或 JSON 檢視器顯示。
  + 任務節點具有詳細資訊窗格，可顯示具有標籤的任務詳細資訊，即：任務資訊和歷史記錄。詳細資訊窗格也會擷取在任務執行中擷取的查詢或表達式。歷史記錄索引標籤會列出針對該任務擷取的任務執行事件的不同版本。從 API 擷取的所有詳細資訊都會使用中繼資料表單或 JSON 檢視器顯示。
+ 版本索引標籤：Amazon DataZone 資料歷程中的所有歷程節點都有版本控制。對於每個資料集節點或任務節點，版本會擷取為歷史記錄，並可讓您在不同版本之間導覽，以識別已變更的加班。每個版本都會在歷程頁面中開啟新標籤，以協助比較或對比。

## Amazon DataZone 中的資料歷程授權
<a name="datazone-data-lineage-authorization"></a>

**寫入許可** - 若要將歷程資料發佈至 Amazon DataZone，您必須擁有具有許可政策的 IAM 角色，其中包含 `PostLineageEvent` API 上的 `ALLOW`動作。此 IAM 授權發生在 API Gateway layer。

**讀取許可** - 有兩個操作： `GetLineageNode` 和 包含在 `AmazonDataZoneDomainExecutionRolePolicy`受管政策中`ListLineageNodeHistory`，因此 Amazon DataZone 網域中的每個使用者可以調用這些操作來周遊資料譜系圖。

## Amazon DataZone 中的資料歷程範例體驗
<a name="datazone-data-lineage-sample-experience"></a>

您可以使用資料歷程範例體驗來瀏覽和了解 Amazon DataZone 中的資料歷程，包括在資料歷程圖表中上游或下游周遊、探索版本和資料欄層級歷程。

完成下列程序，在 Amazon DataZone 中嘗試範例資料歷程體驗：

1. 導覽至 Amazon DataZone 資料入口網站 URL，並使用單一登入 (SSO) 或您的 AWS 登入資料登入。如果您是 Amazon DataZone 管理員，您可以在 [https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone)：// 導覽至 Amazon DataZone 主控台，並使用建立網域 AWS 帳戶 的 登入，然後選擇**開啟資料入口網站**。

1. 選擇任何可用的資料資產以開啟資產的詳細資訊頁面。

1. 在資產的詳細資訊頁面上，選擇**歷程索引標籤**，然後將滑鼠游標移至資訊圖示上，然後選擇**嘗試範例歷程**。

1. 在資料歷程快顯視窗中，選擇**開始引導式資料歷程導覽**。

   此時會顯示全螢幕索引標籤，提供所有歷程資訊的空間。範例資料譜系圖一開始會在任一端、上游和下游以 1 深度的基本節點顯示。您可以在上游或下游展開圖形。您也可以選擇欄資訊，並查看歷程流經節點的方式。

## 在管理主控台中啟用資料歷程
<a name="enable-data-lineage"></a>

您可以在設定預設資料湖和預設資料倉儲藍圖時啟用資料歷程。

請完成下列程序，以啟用預設資料湖藍圖的資料歷程。

1. 導覽至位於 https：//[https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) 的 Amazon DataZone 主控台，並使用您的帳戶登入資料登入。

1. 選擇**檢視網域**，然後選擇您要為 DefaultDataLake 藍圖啟用資料歷程的網域。

1. 在網域詳細資訊頁面上，導覽至**藍圖**索引標籤。

1. 在 DefaultDataLake 藍圖的詳細資訊頁面上，選擇**區域**索引標籤。

1. 您可以在為 DefaultDataLake 藍圖新增區域時啟用資料歷程。因此，如果已新增區域，但未啟用其中的資料譜系功能 (**匯入資料譜系**欄中不會顯示 ****，您必須先移除此區域。若要啟用資料歷程記錄，請選擇**新增區域**，然後選擇您要新增的區域，並請務必勾選**新增區域**快顯視窗中的**啟用匯入資料歷程記錄**核取方塊。

若要啟用 DefaultDataWarehouse 藍圖的資料歷程，請完成下列程序。

1. 導覽至位於 https：//[https://console.aws.amazon.com/datazone](https://console.aws.amazon.com/datazone) 的 Amazon DataZone 主控台，並使用您的帳戶登入資料登入。

1. 選擇**檢視網域**，然後選擇您要為 DefaultDataWarehouse 藍圖啟用資料歷程的網域。

1. 在網域詳細資訊頁面上，導覽至**藍圖**索引標籤。

1. 在 DefaultDataWarehouse 藍圖的詳細資訊頁面上，選擇**參數集**索引標籤。

1. 您可以在為 DefaultDataWarehouse 藍圖新增參數集時啟用資料歷程。若要這樣做，請選擇**建立參數集**。

1. 在**建立參數集**頁面上，指定以下內容，然後選擇**建立參數集**。
   + 參數集的名稱。
   + 參數集的說明。
   + AWS 您要建立環境的區域。
   + 指定 Amazon DataZone 是使用這些參數來建立與 Amazon Redshift 叢集或無伺服器工作群組的連線。
   + 指定 AWS 秘密。
   + 指定您要在建立環境時使用的叢集或無伺服器工作群組。
   + 指定您要在建立環境時使用的資料庫名稱 （在您指定的叢集或工作群組內）。
   + 在**匯入資料歷程記錄**下，勾選**啟用匯入資料歷程記錄**。

## 以程式設計方式使用 Amazon DataZone 資料歷程
<a name="datazone-data-lineage-apis"></a>

若要在 Amazon DataZone 中使用資料歷程功能，您可以叫用下列 APIs：
+ [GetLineageNode](https://docs.aws.amazon.com/datazone/latest/APIReference/API_GetLineageNode.html)
+ [ListLineageNodeHistory](https://docs.aws.amazon.com/datazone/latest/APIReference/API_ListLineageNodeHistory.html)
+ [PostLineageEvent](https://docs.aws.amazon.com/datazone/latest/APIReference/API_PostLineageEvent.html)

## 自動化 Glue AWS 目錄的譜系
<a name="datazone-data-lineage-automate"></a>

當 AWS Glue 資料庫和資料表新增至 Amazon DataZone 目錄時，會使用資料來源執行為這些資料表自動執行歷程擷取。此來源的譜系自動化方式有幾種：
+ 藍圖組態 - 設定藍圖的管理員可以設定藍圖以自動擷取譜系。這可讓管理員定義哪些資料來源對譜系擷取很重要，而不是依賴資料生產者編目資料。如需詳細資訊，請參閱[在管理主控台中啟用資料歷程](#enable-data-lineage)。
+ 資料來源組態 - 資料生產者在設定 Glue 資料庫的資料來源執行時，會與 Data Quality AWS 一起顯示檢視，以通知該資料來源的自動化資料歷程。
  + 您可以在**資料來源定義**索引標籤中檢視歷程設定。資料生產者無法編輯此值。
  + 資料來源執行中的歷程記錄集合會從資料表中繼資料擷取資訊，以建置歷程記錄。 AWS Glue 爬蟲程式支援不同類型的來源，以及在資料來源執行中擷取歷程記錄的來源包括 Amazon S3、DynamoDB、 Catalog、Delta Lake、Iceberg 資料表和存放在 Amazon S3 中的 Hudi 資料表。JDBC 和 DocumentDB 或 MongoDB 目前不支援做為來源。
  + 限制 - 資料表數目超過 100，歷程執行會在 100 個資料表後失敗。確定 AWS Glue 爬蟲程式未設定為在執行中引入超過 100 個資料表。
+ AWS Glue (v5.0) 組態 - AWS 在 Glue Studio 中 AWS 執行 Glue 任務時，可以為任務設定資料歷程，以將歷程事件直接傳送至 Amazon DataZone 網域。

  1. 導覽至 AWS 位於 https://console.aws.amazon.com/gluestudio：// 的 Glue 主控台，並使用您的帳戶登入資料登入。

  1. 選擇 **ETL 任務**，然後建立新任務或按一下任何現有的任務。

  1. 前往**任務詳細資訊** （包括 ETL 流程任務） 索引標籤，然後向下捲動至產生歷程事件區段。

  1. 選取核取方塊以啟用傳送歷程事件，並展開以顯示輸入欄位以輸入 Amazon DataZone 網域 ID。
+ AWS Glue (V5.0) 筆記本組態 - 在筆記本中，您可以透過新增 %%configure 魔術來自動化 Spark 執行的集合。此組態會將事件傳送至 Amazon DataZone 網域。

  ```
  %%configure --name project.spark -f
  {
      "--conf":"spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener --conf spark.openlineage.transport.type=amazon_datazone_api --conf spark.openlineage.transport.domainId={DOMAIN_ID}  --conf spark.glue.accountId={ACCOUNT_ID} --conf spark.openlineage.facets.custom_environment_variables=[AWS_DEFAULT_REGION;GLUE_VERSION;GLUE_COMMAND_CRITERIA;GLUE_PYTHON_VERSION; --conf spark.glue.JOB_NAME={JOB_NAME}"
  }
  ```

  以下是參數詳細資訊：
  + `spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener` - 將使用 Spark 的接聽程式匯流排建立和註冊 OpenLineageSparkListener 
  + `spark.openlineage.transport.type=amazon_datazone_api` - 這是一個 OpenLineage 規格，用於指示 OpenLineage 外掛程式使用 DataZone API Transport 向 DataZone 的 PostLineageEvent API 發出歷程事件。如需詳細資訊，請參閱 https：//[https://openlineage.io/docs/integrations/spark/configuration/spark\_conf](https://openlineage.io/docs/integrations/spark/configuration/spark_conf)
  + `spark.openlineage.transport.domainId={DOMAIN_ID}` - 此參數會建立 API 傳輸將向其提交歷程事件的網域。
  + `spark.openlineage.facets.custom_environment_variables [AWS_DEFAULT_REGION;GLUE_VERSION;GLUE_COMMAND_CRITERIA;GLUE_PYTHON_VERSION;]` - 下列環境變數 (AWS\_DEFAULT\_REGION 、GLUE\_VERSION 、GLUE\_COMMAND\_CRITERIA 和 GLUE\_PYTHON\_VERSION) 會新增至 LineageEvent
  + `spark.glue.accountId=<ACCOUNT_ID>` - 中繼資料所在的 Glue Data Catalog 帳戶 ID。此帳戶 ID 用於建構歷程事件中的 Glue ARN。
  + `spark.glue.JOB_NAME` - 歷程事件的任務名稱。筆記本中的任務名稱可以設定為 `spark.glue.JOB_NAME: ${projectId}.${pathToNotebook}`。
+ 設定參數以設定從 AWS Glue 與 Amazon DataZone 的通訊

  參數索引鍵：--conf

  參數值：

  ```
  spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener 
  --conf spark.openlineage.transport.type=amazon_datazone_api 
  --conf spark.openlineage.transport.domainId=<DOMAIN_ID>
  --conf spark.openlineage.facets.custom_environment_variables=[AWS_DEFAULT_REGION;GLUE_VERSION;GLUE_COMMAND_CRITERIA;GLUE_PYTHON_VERSION;] 
  --conf spark.glue.accountId=<ACCOUNT_ID> (replace <DOMAIN_ID> and <ACCOUNT_ID> with the right values)
  ```

  對於筆記本，請新增這些額外參數：

  ```
  --conf spark.glue.JobName=<SessionId> --conf spark.glue.JobRunId=<SessionId or NONE?>
  replace <SessionId> and <SessionId> with the right values
  ```

## 從 Amazon Redshift 自動化歷程
<a name="datazone-data-lineage-automate-redshift"></a>

使用管理員設定的資料倉儲藍圖組態從 Amazon Redshift 服務擷取歷程記錄，歷程記錄會自動由 Amazon DataZone 擷取。歷程執行會擷取針對特定資料庫執行的查詢，並產生要存放在 Amazon DataZone 中的歷程事件，以便在資料生產者或消費者移至特定資產時將其視覺化。

可使用下列組態來自動化譜系：
+ 藍圖組態：設定藍圖的管理員可以設定藍圖來自動擷取譜系。這可讓管理員定義哪些資料來源對譜系擷取很重要，而不是依賴資料生產者編目資料。若要設定，請前往 [在管理主控台中啟用資料歷程](#enable-data-lineage)。
+ 資料來源組態：資料生產者設定 Amazon Redshift 資料庫的資料來源執行時，會顯示該資料來源的自動資料歷程設定。

  您可以在**資料來源定義**索引標籤中檢視歷程設定。資料生產者無法編輯此值。