使用者屬性可為每位 Looker 使用者提供個人化體驗。Looker 管理員會定義使用者屬性,然後將使用者屬性值套用至使用者群組或個別使用者。
管理員也可以定義使用者屬性,讓使用者自行提供值,例如密碼或聯絡資訊。Looker 各處都可以參照使用者屬性,為每位使用者提供自訂體驗。
Looker 會自動納入部分使用者屬性,例如 email
、first_name
、landing_page
、last_name
、full_name
、ID
、timezone
(如有設定)、locale
和 number_format
。
查看使用者屬性
如要查看使用者屬性清單,請前往「管理」選單的「使用者」部分,然後點選「使用者屬性」頁面。
使用者屬性表格會列出每個使用者屬性的名稱、標籤和類型 (詳情請參閱下節)。此外,表格還提供按鈕,方便您對使用者屬性採取行動。部分屬性會顯示「系統預設值」,而不是動作按鈕,表示 Looker 會自動為每位使用者建立這些屬性。系統預設使用者屬性由 Looker 保留供內部使用,無法編輯。
建立使用者屬性
如要定義使用者屬性,請按一下「管理」選單「使用者」部分的「使用者屬性」頁面中的「建立使用者屬性」按鈕。每個使用者屬性都有下列設定:
- 名稱:使用者屬性的名稱,用於 LookML 等以文字為基礎的環境 (名稱只能包含小寫英文字母、數字和底線)。
- 標籤:易記名稱。根據預設,這會是屬性的名稱,底線會換成空格,且每個字都會大寫。但你可以視需要修改標籤。
資料類型:這項設定用於檢查是否為這個使用者屬性指派有效值。使用者屬性的資料類型可以是下列其中一種:
- 字串:選取這個選項,即可建立與單一字串值 (例如使用者名稱) 完全相符的使用者屬性。如要在使用者屬性值中使用多個字串值或 Looker 篩選器運算式,請改為選取「字串篩選器 (進階)」選項。如要將使用者屬性視為字串常值,請務必在語法中加入單引號
'
,如以下範例所示:none '{{ _user_attributes['name_of_attribute'] }}'
- 數字:選取這個選項可指定單一數字,例如員工編號。如要使用數字範圍或 Looker 篩選運算式,請改用「數字篩選器 (進階)」。
- 日期/時間:選取這個選項可指定單一日期或時間,例如使用者的出生日期。如要使用日期範圍或 Looker 篩選運算式,請改用「日期/時間篩選器 (進階)」。
- 相對網址:選取這個選項可指定相對網址,例如
/browse/boards/2
,指向 Looker 執行個體上的特定內容,例如主面板、資料夾或 Markdown 檔案 (例如專案中的 README 或文件檔案)。舉例來說,landing_page
使用者屬性的資料類型為「相對網址」,可用於為使用者或群組指定特定首頁。 - 字串篩選器 (進階):選取這個選項,即可在使用者屬性中允許使用多個字串值或 Looker 篩選器運算式。如需可用於字串的篩選運算式清單,請參閱「篩選運算式」說明文件頁面。
- 數字篩選器 (進階):選取這個選項,允許使用者屬性中的數字值範圍或 Looker 篩選器運算式。如要查看可搭配數字使用的篩選運算式清單,請參閱「篩選運算式」說明文件頁面。
- 日期/時間篩選器 (進階):選取這個選項,即可在使用者屬性中允許日期範圍或 Looker 篩選器運算式。如需可用於日期和時間的篩選運算式清單,請參閱「篩選運算式」說明文件頁面。
使用「字串篩選器 (進階)」、「數字篩選器 (進階)」和「日期/時間篩選器 (進階)」資料類型,透過 Looker 篩選器運算式輸入值,系統會傳回使用者屬性的值範圍。
- 字串:選取這個選項,即可建立與單一字串值 (例如使用者名稱) 完全相符的使用者屬性。如要在使用者屬性值中使用多個字串值或 Looker 篩選器運算式,請改為選取「字串篩選器 (進階)」選項。如要將使用者屬性視為字串常值,請務必在語法中加入單引號
使用者存取權:您可以選擇使用者屬性的顯示和編輯層級:
- 無:不會顯示在使用者帳戶頁面。
- 查看:會顯示在使用者帳戶頁面,但無法編輯。
- 編輯:會顯示在使用者帳戶頁面,且可由使用者設定。
隱藏值:即使使用者屬性對使用者可見,將這個選項設為「是」,使用者屬性值也會遭到遮蓋,這對密碼或其他私密資訊很有用。將這個值設為「是」,也會遮蓋「連線設定」頁面中使用者屬性下拉式選單的使用者屬性值。這個值一旦設為「是」,就無法改回「否」。 將「隱藏值」設為「是」時,您也必須指定允許做為使用者屬性目的地的網域許可清單。
網域允許清單:隱藏新使用者屬性的值時,您也必須指定網域允許清單,其中包含可傳送屬性的網址,例如資料庫連線的主機名稱和專案 Git HTTPS 整合的網址。您可以使用萬用字元 (*) 在同一網站上啟用多個網頁的放送功能。指定網域許可清單後,使用者屬性就只會傳送至您列出的目的地。
為這個使用者屬性指定網域許可清單後,如果使用者屬性已獲派任何值 (使用者、群組或設定預設值),您就無法變更許可清單,放寬網址限制。您只能縮減網址範圍,或從許可清單中移除網址。舉例來說,如果「網域許可清單」包含
my_domain/route/*
,您之後就無法將其變更為my_domain/*
。如要放寬許可清單限制,請刪除指派給使用者屬性的所有現有值,包括預設值。設定預設值:勾選這個核取方塊,即可在未指派值給使用者時設定預設值。
定義使用者屬性後,您可以點選頁面上的「使用者值」和「群組值」分頁,為個別使用者或使用者群組指派值。
為個別使用者指派值
- 在「管理」選單的「使用者」部分中,按一下「使用者屬性」頁面上的「使用者值」分頁標籤。
- 在下拉式選單中選擇要指派值的使用者。畫面上會顯示適用於該使用者的值表格。
- 按一下「為使用者設定值」按鈕。
- 在「新值」欄位中輸入新值。
- 按一下 [儲存]。
如果為個別使用者指派值,該值一律會優先於指派給使用者群組的值。如果自訂值已指派給使用者屬性,並覆寫群組值,「使用者值」分頁就會顯示相關資訊。系統會忽略所有遭覆寫的值,並在旁邊顯示「已覆寫」文字。「目前值」文字會顯示在活躍使用者屬性值旁邊。
如要為使用者屬性指派多個值,請使用「字串篩選器 (進階)」資料類型,並輸入以半形逗號分隔的多個值。確認值之間沒有空白字元。舉例來說,您可能會輸入字串:Executive, Management, Contributors
。
如要將所有可能的值指派給 Looker 管理員或其他使用者,請在使用者屬性中使用萬用字元值:
如要授予管理員或其他使用者字串欄位的所有值存取權,請將使用者屬性資料類型設為「字串篩選器 (進階)」,並使用
%, NULL
值。如要授予管理員或其他使用者存取數字欄位所有值的權限,請將使用者屬性資料類型設為「數字篩選器 (進階)」,並使用
<0, >=0, NULL
值。
為使用者群組指派值
您可以將使用者屬性的值指派給使用者群組。在「管理」面板的「使用者屬性」頁面中,選取要設定屬性右側的「編輯」。然後按照下列步驟操作:
- 按一下「群組值」分頁標籤。
- 按一下「+ 新增群組」按鈕。
- 在下拉式選單中選擇要指派值的群組。
- 在「值」欄位中輸入群組的值。
- 按一下 [儲存]。
如果將值指派給多個群組,且使用者同時屬於多個群組,您必須決定優先套用哪個群組的值。如要這麼做,請將群組拖曳至應套用的順序;每個群組的優先順序都高於下方列出的群組。
舉例來說,您可能會有「主管團隊」和「管理團隊」群組。高階主管也是經理,因此同時是這兩個群組的成員。將「Executive Team」群組拖曳至清單頂端,即可確保系統為該群組成員指派「Executive」值,而非「Manager」值。
如果使用者已為使用者屬性設定自訂值,則使用者設定的值會覆寫使用者所屬群組的任何值。
使用者屬性可用於哪些用途?
使用者屬性具有下列功能:
資料庫連線
連線的主機、通訊埠、資料庫、使用者名稱、密碼和結構描述,都可以指定使用者屬性的值。(連線主機欄位不會接受「使用者存取權」層級設為「可編輯」的使用者屬性。)
這些使用者屬性會將連線限定為執行查詢的使用者。您也可以在「其他 JDBC 參數」欄位中參照使用者屬性,自訂 JDBC 連線字串。使用者透過連線執行查詢時,系統會套用指派給使用者的使用者屬性值,根據使用者自訂連線。
設定
您可以在 Looker 的「管理」部分,透過「連線」頁面設定任何連線,以使用使用者屬性。(如需「連線」頁面的相關資訊,請參閱「管理設定 - 連線」說明文件頁面)。如要建立新連結,請按一下「新增連結」。如要設定現有連結,請按一下連結旁的「編輯」。
如果輸入內容可設為使用者屬性,Looker 會在輸入內容旁邊顯示「使用者屬性」按鈕 。
按一下「使用者屬性」按鈕,顯示下拉式選單,然後選擇所需的使用者屬性。清單會顯示使用者屬性名稱,以及括號中的目前使用者屬性值。
如要在「Additional JDBC parameters」(額外 JDBC 參數) 欄位中參照使用者屬性,請使用 LookML 中提供的相同 Liquid 範本語法。使用者屬性會透過 _user_attributes
Liquid 變數提供。舉例來說,如要參照名為 my_jdbc_param_attribute
的使用者屬性,請使用下列語法:
my_jdbc_param={{ _user_attributes['name_of_attribute'] }}
使用案例:在 Looker 中套用資料庫層級權限
如果資料庫有不同帳戶,且存取限制各異,您可以在 Looker 中使用資料庫權限。將連線的使用者名稱和密碼設為參數,讓每位使用者都能以符合資料庫存取層級的適當憑證連線。這項設定可確保使用者不會看到不應存取的資料,但不會影響 Looker 向他們顯示的探索、維度和指標。
舉例來說,如果使用者設定要透過帳戶連線至資料庫,但該帳戶無法在 user
表格中查看 credit_card_number
欄,則使用該資料庫欄的任何維度仍會顯示在 Looker 中。如果使用者嘗試執行包含該維度的查詢,就會收到資料庫傳回的錯誤訊息。
用途:針對多個相同資料庫使用一個模型
舉例來說,如果您有多個結構定義完全相同的資料庫,例如為了採取資料安全措施 (如符合 HIPAA 規範),將每位客戶的資料分別存放在各自的資料庫中,或者,您可能希望 LookML 開發人員針對實際工作環境資料庫的開發副本執行查詢。
如果這些資料庫位於同一個資料庫伺服器上,您就不需要設定個別的連線和模型。請改為將連線的資料庫設為使用者屬性,這樣每位使用者都會指向Database Name
使用者屬性值中指定的資料庫。
資料動作
您可以設定資料動作,在 JSON 酬載中加入特定使用者屬性。您可以使用這項功能,連同資料一併傳送使用者專屬資訊,例如執行特定服務作業時所需的憑證。
設定
如要在資料動作中加入使用者屬性,請將 user_attribute_param
區塊新增至 action
定義。每個區塊都會採用兩個參數:
user_attribute
:使用者屬性的名稱name
:要在 JSON 酬載中使用的名稱
這個範例使用兩個使用者屬性 (salesforce_username
和 salesforce_password
),在 Looker 中保留每位使用者的 Salesforce 憑證。當使用者執行「更新 Salesforce 資料」動作時,Looker 會連同 JSON 酬載傳送 Salesforce 憑證,接收伺服器可用於向 Salesforce 驗證。
dimension: stage_name {
type: string
sql: ${TABLE}.stage_name;;
action: {
label: "Update in Salesforce"
url: "https://example.com/my_salesforce_url"
user_attribute_param: {
user_attribute: salesforce_username
name: "username"
}
user_attribute_param: {
user_attribute: salesforce_password
name: "password"
}
form_param: {
name: "new_stage_name"
type: string
required: yes
}
}
}
動作中心中的自訂動作
您可以設定自訂動作,加入使用者屬性,如果使用者沒有為該屬性定義值,系統就會限制他們將 Looker 內容傳送或排定傳送至該動作目的地。
設定
自訂動作中的 params
參數代表表單欄位,Looker 管理員必須在「管理」面板的「動作」清單中,於動作的啟用頁面設定這些欄位。在動作檔案的 params
參數中,加入下列項目:
params = [{
description: "A description of the param.",
label: "A label for the param.",
name: "action_param_name",
user_attribute_name: "user_attribute_name",
required: true,
sensitive: true,
}]
其中 user_attribute_name
是在「管理」面板的「使用者」部分中,「使用者屬性」頁面的「名稱」欄位定義的使用者屬性,required: true
表示使用者必須為該使用者屬性定義非空值和有效值,才能在傳送資料時看到動作,而 sensitive: true
表示使用者屬性值會經過加密,且輸入後絕不會顯示在 Looker 使用者介面中。您可以指定多個使用者屬性子參數。
Looker 管理員必須使用使用者屬性設定動作的表單欄位:
- 在「管理」面板的「動作」頁面中,按一下動作旁邊的「啟用」或「設定」按鈕。
- 按一下適當欄位的使用者屬性圖示
,然後選取所需的使用者屬性。
請參閱「透過動作中心共用資料」說明文件頁面的「在自訂動作中加入使用者屬性」一節。
篩選器
探索、Look 和資訊主頁的篩選器可以設為使用者屬性,根據執行查詢的使用者自訂查詢。
舉例來說,您可以建立名為 salesforce_username
的使用者屬性,並設定每位 Looker 使用者,讓他們的值成為 Salesforce 使用者名稱。接著,您可以在資訊主頁上設定 salesforce_username
使用者屬性的篩選器,這樣每位使用者看到的資訊主頁,都會根據他們特定的 Salesforce 使用者名稱進行篩選。
設定
在「探索」、「Look」或資訊主頁的「篩選器」部分:
在所需篩選條件中選取「與使用者屬性相符」選項。
右側的選取方塊會自動更新,顯示與篩選條件欄位類型相同的使用者屬性清單,例如數字、字串 (文字)、日期等。Looker 會在括號中顯示每個使用者屬性的值。
選取所需的使用者屬性。
進階篩選器語法
如要執行比簡單等式檢查更複雜的篩選作業,請選取「相符 (進階)」,然後使用 Liquid 變數參照使用者屬性:
{{ _user_attributes['name_of_attribute'] }}
舉例來說,假設您需要將 sf_
前置字元套用至 salesforce_username
使用者屬性的值,因為資料庫就是以這種方式儲存值。如要將前置字元新增至使用者屬性值,請使用 _user_attributes
Liquid 變數語法:
sf_{{_user_attributes['salesforce_username']}}
您可以使用相同模式,將使用者屬性插入 LookML 資訊主頁篩選器和資訊主頁元素篩選器。
已排定的資訊主頁和 Look 圖表
您可以為每個排程設定資訊主頁和 Look 篩選器,包括使用使用者屬性的選項。您可以為每位電子郵件收件者自訂資料傳送結果。你可以自訂內容的傳送方式,包括一次性傳送和週期性傳送。
舉例來說,您可以建立名為 salesforce_username
的使用者屬性,並將值設為每位使用者的 Salesforce 使用者名稱。在資訊主頁或 Look 排程中,將篩選器設為 salesforce_username
使用者屬性,這樣每位收件者都會收到以 Salesforce 使用者名稱篩選的資訊主頁。
必要條件
只有 Looker 使用者會設定使用者屬性值,因此資料傳送的每位收件者都必須有 Looker 帳戶。系統會為每位收件者執行一次資訊主頁或 Look,並套用使用者屬性。
設定
在「篩選器」部分,選取所需篩選器的「符合使用者屬性」選項。
右側的選取方塊會自動更新,顯示與篩選條件相同類型的使用者屬性清單。每個使用者屬性的值會顯示在括號中。
選取所需的使用者屬性。
勾選「電子郵件選項」欄位旁的「以收件者的身分執行排程」核取方塊。
存取篩選器
您可以透過存取篩選器限制使用者可存取的資料,提供資料列層級的安全防護。雖然可以使用 access_grant
參數,但使用使用者屬性可更輕鬆地實作及維護存取權篩選器。
存取篩選器可安全地套用使用者專屬的資料限制。為 LookML 探索定義一或多個存取篩選器,可確保系統根據執行查詢的使用者篩選探索傳回的資料。因此,存取篩選器可提供額外的限制層級,確保使用者只能查看資料庫連線中的特定資料子集。
設定
- 建立使用者屬性:
- 將「使用者存取權」設為「無」 (建議) 或「查看」。(如果使用者屬性設定為可由使用者編輯,就無法用於存取篩選器)。
- 將使用者屬性值指派給群組或個別使用者。
- 在要加入存取權篩選器的 Explore 的 LookML 定義中,新增含有下列參數的
access_filter
區塊:field
:要篩選的 LookML 欄位名稱user_attribute
:儲存您要用來篩選資料值的使用者屬性名稱
- 對該探索執行查詢。
- 檢查查詢的 SQL
WHERE
子句,確認資料是否已根據使用者屬性的值進行篩選。
這項 LookML 可確保系統會根據品牌篩選訂單查詢,而特定品牌則會根據使用者為名為 company
的使用者屬性指派的值而定:
explore: orders {
view_name: orders
access_filter: {
field: products.brand_name
user_attribute: company
}
join: products {
foreign_key: orders.product_id
}
}
連線至 Git 供應商
對於 LookML 專案,您可以設定 透過 HTTPS 進行 Git 驗證。使用 HTTPS Git 驗證的專案可選擇利用使用者屬性,在為開發人員執行 Git 作業時,登入個別開發人員的 Git 帳戶。
Git 帳戶密碼的使用者屬性必須隱藏。建立密碼屬性時,請在「隱藏值」選項下方選取「是」,並在「允許的網域」欄位中輸入 Git 供應商網址。
透過存取權授予控管存取權
您可以建立存取權授予,使用使用者屬性值、access_grant
參數和 required_access_grants
參數,限制 LookML 探索、聯結、檢視或欄位的存取權。
存取權授權的運作方式如下:
- 您可以使用
access_grant
參數定義存取權授予。定義時,您會將存取權授予與使用者屬性建立關聯。您也可以指定哪些使用者屬性值可授予存取權。 - 接著,您可以在「探索」、「加入」、「檢視」或「欄位」層級使用
required_access_grants
參數,將該結構限制為僅供有權存取所列所有存取權授權的使用者存取。
舉例來說,您可以透過存取權授予,將 salary
維度的存取權授予使用者,但前提是這些使用者的 department
使用者屬性必須具有 payroll
值。
如要進一步瞭解如何定義存取權授權,請參閱 access_grant
參數說明文件頁面。
Liquid 變數
LookML 支援使用多種不同的 Liquid 變數,這對於較複雜的自訂輸出類型很有幫助。現在可以在 Liquid 中加入使用者的屬性值。Liquid 運算式必須使用適合資料庫方言的語法。
如需範例,請參閱本說明文件頁面的「連線」部分,以及「使用使用者屬性動態插入結構定義和資料表名稱」最佳做法頁面。
Google BigQuery 資料限制
如果您使用 Google BigQuery 做為資料庫,Google 會根據查詢大小向您收取每項查詢的費用。為避免使用者不慎執行費用過高的查詢,您可以在 BigQuery 連線的「帳單最大 GB 數」設定中套用使用者屬性。您在使用者屬性中提供的值,應為使用者在單一查詢中可提取的 GB 數。
內嵌資訊主頁
您可以根據使用者屬性值設定篩選器值,限制嵌入式 Look 和資訊主頁中顯示的資料。詳情請參閱建立概念驗證嵌入式資訊主頁 (由 Looker 提供技術支援) 社群貼文。
本地化
使用者屬性 locale
和 number_format
可為特定使用者或使用者群組設定資料、視覺化效果和 Looker 使用者介面部分的顯示方式。詳情請參閱「Looker 本地化」說明文件頁面。
存取外部 API 端點
Looker 擴充功能架構可使用使用者屬性,透過伺服器 Proxy 存取外部 API 端點。如需範例,請參閱「擴充功能架構 React 和 JavaScript 程式碼範例」說明文件頁面。
測試使用者屬性和存取權篩選器
您可以使用 Looker 的 sudo 函式測試使用者屬性的影響。管理員 (或同時具備 see_users
和 sudo
權限的使用者) 可以以其他使用者的身分執行 sudo,查看對方在 Looker 中的體驗。
處於開發模式時,除非將變更部署至正式環境,否則其他使用者不會看到變更。如果您尚未部署變更,其他使用者就無法看到,因此以其他使用者身分執行 sudo 時,您也不會看到變更。