開始
加載和管理數據
處理數據
政府
引用和資源
2023年6月23日更新
給我們反饋
本文將展示如何在統一目錄中創建視圖。
一個視圖是一個隻讀對象由一個或多個metastore表和視圖。它駐留在統一目錄的第三層三級名稱空間。一個視圖可以從多個表和其他視圖創建模式和目錄。
動態視圖可用於提供行和列級訪問控製,除了數據屏蔽。
一個視圖的所有者必須能夠閱讀視圖中引用的表和視圖。視圖不需要的讀者閱讀能力中引用的表和視圖的視圖中,除非他們使用一個集群和單個用戶訪問模式。
請注意
閱讀從一個視圖從一個集群單用戶訪問模式,你必須有選擇所有引用的表和視圖。不支持動態視圖單用戶訪問模式。
選擇
示例創建一個視圖的語法:
創建視圖主要。默認的。experienced_employee(id評論“唯一的身份證號碼”,的名字)評論的觀點為經驗豐富的員工作為選擇id,的名字從all_employee在哪裏working_years>5;
你必須有使用目錄在父目錄和許可使用模式和創建表父母的權限模式。metastore管理員或目錄所有者可以給予你所有的這些特權。一個模式所有者可以授予你使用模式和創建表模式上的特權。
使用目錄
使用模式
創建表
你必須有能力閱讀中引用的表和視圖的視圖(選擇表或視圖,以及使用目錄在目錄和使用模式模式)。
如果一個視圖引用workspace-local蜂巢metastore表,視圖可以訪問隻有在工作區中包含workspace-local表。出於這個原因,磚建議創建視圖隻從表或視圖的統一目錄metastore。
要創建一個視圖,可以運行以下SQL命令。物品在括號中是可選的。替換占位符的值:
<目錄名稱>:目錄的名稱。
<目錄名稱>
<模式名稱>:模式的名稱。
<模式名稱>
<視圖名稱>為視圖:一個名稱。
<視圖名稱>
<查詢>:查詢、列和表和視圖用於構建視圖。
<查詢>
創建視圖<目錄- - - - - -的名字>。<模式- - - - - -的名字>。<視圖- - - - - -的名字>作為選擇<查詢>;
火花。sql(“創建視圖<目錄名稱>。<模式名稱>。<視圖名稱>為““選擇<查詢>”)
圖書館(SparkR)sql(粘貼(“創建視圖<目錄名稱>。<模式名稱>。<視圖名稱>為“,“選擇<查詢>”,9月=”“))
火花。sql(“創建視圖<目錄名稱>。<模式名稱>。<視圖名稱>為“+“選擇<查詢>”)
例如,要創建一個視圖sales_redacted從列sales_raw表:
sales_redacted
sales_raw
創建視圖sales_metastore。銷售。sales_redacted作為選擇user_id,電子郵件,國家,產品,總從sales_metastore。銷售。sales_raw;
火花。sql(sales_metastore.sales“創建視圖。sales_redacted為““選擇”“user_id。”“電子郵件”,“國家”,“產品”,“總”“從sales_metastore.sales.sales_raw”)
圖書館(SparkR)sql(粘貼(sales_metastore.sales“創建視圖。sales_redacted為“,“選擇”,“user_id。”,“電子郵件”,,“國家”,,“產品”,,“總”,“從sales_metastore.sales.sales_raw”,9月=”“))
火花。sql(sales_metastore.sales“創建視圖。sales_redacted為“+“選擇”+“user_id。”+“電子郵件”,+“國家”,+“產品”,+“總”+“從sales_metastore.sales.sales_raw”)
你也可以通過創建一個視圖磚起程拓殖的提供者和databricks_table。您可以檢索的列表視圖使用的全名databricks_views。
在統一目錄,您可以使用動態視圖配置的細粒度訪問控製,包括:
安全的列或行。
數據屏蔽。
細粒度訪問控製集群上使用動態視圖不可用單用戶訪問模式。
統一目錄介紹以下功能,允許您動態限製哪些用戶可以訪問一行,列,或記錄在一個視圖:
current_user ():返回當前用戶的電子郵件地址。
current_user ()
is_account_group_member ():返回真正的如果當前用戶是一個特定的帳戶級別組的成員。推薦用於針對統一編目數據的動態視圖。
is_account_group_member ()
真正的
is_member ():返回真正的如果當前用戶是一個特定的工作空間層組的成員。這個函數是提供兼容現有的蜂巢metastore。避免使用對統一編目數據視圖,因為它不評估帳戶級別組成員。
is_member ()
磚建議不授予用戶的閱讀能力中引用的表和視圖的視圖。
下麵的例子說明了如何創建動態視圖的統一目錄。
動態視圖,您可以限製特定用戶或組可以訪問的列。在接下來的例子中,唯一的成員審計人員組可以訪問的電子郵件地址sales_raw表。在查詢分析,Apache火花取代了情況下聲明與文字字符串修訂或電子郵件地址列的實際內容。其他列正常返回。這種策略在查詢性能沒有負麵影響。
審計人員
情況下
修訂
——別名字段“電子郵件”本身(如電子郵件)預防——允許邏輯從直接出現在列名的結果。創建視圖sales_redacted作為選擇user_id,情況下當is_account_group_member(“審計師”)然後電子郵件其他的“修訂”結束作為電子郵件,國家,產品,總從sales_raw
#別名字段“電子郵件”本身(如電子郵件)預防#允許邏輯從直接出現在列名的結果。火花。sql(“創建視圖sales_redacted為““選擇”“user_id。”“當”“is_account_group_member(審計師)然後郵件”其他“修訂”“結束電子郵件”,“國家”,“產品”,“總”“從sales_raw”)
圖書館(SparkR)#別名字段“電子郵件”本身(如電子郵件)預防#允許邏輯從直接出現在列名的結果。sql(粘貼(“創建視圖sales_redacted為“,“選擇”,“user_id。”,“當”,“is_account_group_member(審計師)然後郵件”,其他“修訂”,“結束電子郵件”,,“國家”,,“產品”,,“總”,“從sales_raw”,9月=”“))
/ /別名字段“電子郵件”本身(如電子郵件)預防/ /權限邏輯從直接出現在列名的結果。火花。sql(“創建視圖sales_redacted為“+“選擇”+“user_id。”+“當”+“is_account_group_member(審計師)然後郵件”+其他“修訂”+“結束電子郵件”,+“國家”,+“產品”,+“總”+“從sales_raw”)
動態視圖,您可以指定權限的行或領域的水平。在接下來的例子中,唯一的成員經理組時可以查看交易金額超過1000000美元。匹配結果過濾掉其他用戶。
經理
創建視圖sales_redacted作為選擇user_id,國家,產品,總從sales_raw在哪裏情況下當is_account_group_member(“經理”)然後真正的其他的總< =1000000結束;
火花。sql(“創建視圖sales_redacted為““選擇”“user_id。”“國家”,“產品”,“總”“從sales_raw””,““案例”“當is_account_group_member(“經理”),那麼真正的““另外的”總< = 1000000“結束”)
圖書館(SparkR)sql(粘貼(“創建視圖sales_redacted為“,“選擇”,“user_id。”,“國家”,,“產品”,,“總”,“從sales_raw”,”,“,“案例”,“當is_account_group_member(“經理”),那麼真正的“,“另外的”總< = 1000000,“結束”,9月=”“))
火花。sql(“創建視圖sales_redacted為“+“選擇”+“user_id。”+“國家”,+“產品”,+“總”+“從sales_raw”+”,“+“案例”+“當is_account_group_member(“經理”),那麼真正的“+“另外的”總< = 1000000+“結束”)
因為意見統一目錄使用火花SQL,您可以實現先進的數據屏蔽使用更複雜的SQL表達式和正則表達式。在以下示例中,所有用戶可以分析電子郵件域,但隻有成員審計人員集團可以查看用戶的完整的電子郵件地址。
——regexp_extract函數接受一個電子郵件地址等——user.x.lastname@example.com和提取“例子”,允許——分析師查詢域名。創建視圖sales_redacted作為選擇user_id,地區,情況下當is_account_group_member(“審計師”)然後電子郵件其他的regexp_extract(電子郵件,“^ * @ (. *)$。”,1)結束從sales_raw
#等regexp_extract函數接受一個電子郵件地址# user.x.lastname@example.com和提取“例子”,允許#分析師查詢域名。火花。sql(“創建視圖sales_redacted為““選擇”“user_id。”“地區”,“案例”“當is_account_group_member(“審計師”),那麼電子郵件””其他regexp_extract(電子郵件、“^ * @(. *)美元。',1)”“結束”“從sales_raw”)
圖書館(SparkR)#等regexp_extract函數接受一個電子郵件地址# user.x.lastname@example.com和提取“例子”,允許#分析師查詢域名。sql(粘貼(“創建視圖sales_redacted為“,“選擇”,“user_id。”,“地區”,,“案例”,“當is_account_group_member(“審計師”),那麼電子郵件”,”其他regexp_extract(電子郵件、“^ * @(. *)美元。',1)”,“結束”,“從sales_raw”,9月=”“))
/ /等regexp_extract函數接受一個電子郵件地址/ / user.x.lastname@example.com和提取“例子”,允許/ /分析師查詢域名。火花。sql(“創建視圖sales_redacted為“+“選擇”+“user_id。”+“地區”,+“案例”+“當is_account_group_member(“審計師”),那麼電子郵件”+”其他regexp_extract(電子郵件、“^ * @(. *)美元。',1)”+“結束”+“從sales_raw”)
你一定是視圖的所有者放棄一個視圖。放棄一個視圖,運行以下SQL命令:
下降視圖如果存在catalog_name。schema_name。view_name;
統一目錄管理權限