記憶體工作包含一組條件和作業。 本文說明條件的 JSON 格式。 如果您打算使用 Azure 入口網站 以外的工具來建立記憶體工作,請瞭解該格式很重要(例如:Azure PowerShell 或 Azure CLI)。 本文也會列出可用來撰寫條件子句的屬性和運算符。
本文著重於 條件。 若要深入瞭解作業,請參閱記憶體工作作業。
條件格式
一個或多個 子句集合的條件。 每個子句都包含 屬性、 值和 運算元。 當儲存體工作執行時,它會使用運算子來比較屬性與值,以判斷目標物件是否符合子句。 在 子句中 ,運算符 一律會先出現,後面接著 屬性,然後再 顯示 值。 下圖顯示每個元素在表達式中的位置。
下列子句只允許Microsoft Word 文件的作業。 這個子句會以擴展名 .docx
結尾的所有文件為目標。 因此,運算子為 endsWith
、屬性為 Name
,且值為 .docx
。
{
"condition": "[[[endsWith(Name, '.docx')]]"
}
您也可以在條件子句中的 運算子之前套用 not 運算符。 not 運算子是一個特殊運算子,可以放在任何運算子之前,以得到該子句的相反結果。 下列條款允許在任何不是 Microsoft Word 文件的 Blob 上進行操作。
{
"condition": "[[not(endsWith(Name, '*.docx'))]]"
}
如需運算子和屬性名稱的完整清單,請參閱 本文的支持運算符 和支援 的屬性 一節。
條件中的多個子句
條件可以包含以逗號分隔的多個子句,以及字串 and
或 or
。 字串 and
會以符合條件中所有子句中準則的對象為目標,而 or
以符合條件中任一子句中準則的對象為目標。 下圖顯示 和 and
字串的位置or
以及兩個 子句。
下列 JSON 顯示包含兩個子句的條件。 由於此 and
表達式中使用字串,因此這兩個子句都必須評估為 true
,才能在對象上執行作業。
{
"condition": "[[and(endsWith(Name, '.docx'), equals(Tags.Value[readyForLegalHold], 'Yes'))]]"
}
條件群組
Grouped 子句會以與子句其餘部分分開的單一單位運作。 群組子句類似於將括號放在數學方程式或邏輯表達式周圍。 群組 and
中第一個子句的 或 or
字串會套用至整個群組。
下圖顯示兩個子句群組在一起。
下列條件只允許Microsoft Word 檔案的作業,其中 readyForLegalHold
檔的標籤設定為的值 Yes
。 即使其他兩個條件不成立,作業也會在大於 100 個字節的物件上執行。
{
"condition": "[[or(and(endsWith(Name, '*.docx'), equals(Tags.Value[readyForLegalHold], 'Yes')), greater(Content-Length, '100'))]]"
}
您可以將 not 運算子套用至群組,以測試子句群組的相反結果。 下列條件僅允許在非 Microsoft Word 文件的 Blob 上執行作業,且其中 Blob 的標籤設定為 值 readyForLegalHold
。 即使其他兩個條件不成立,作業也會在大於 100 個字節的物件上執行。
{
"condition": "[[or(not(and(endsWith(Name, '*.docx'), equals(Tags.Value[readyForLegalHold], 'Yes'))), greater(Content-Length, '100'))]]"
}
Azure 入口網站 中的程式代碼檢視
您可以在 Azure 入口網站 中使用可視化編輯器,為您產生條件的 JSON。 您可以使用編輯器來定義條件,然後開啟 [程序代碼 ] 索引標籤以取得 JSON 表達式。當建立複雜的條件集時,此方法很有用,因為 JSON 表達式可能會變得龐大、難以手動建立。 下圖顯示可視化編輯器中的 [ 程序代碼 ] 索引標籤。
若要深入瞭解可視化編輯器,請參閱 定義記憶體工作條件和作業。
條件預覽
您可以檢視受您所定義條件影響的 Blob 清單。 如此一來,您可以在將問題套用至生產數據之前找出問題並優化條件。 預覽不會變更目標記憶體帳戶中的物件,因此可以安全地套用至測試生產數據。
雖然條件預覽可在 PowerShell、Azure CLI 和 SDK 環境中取得,但預覽條件效果最簡單的方式是在 Azure 入口網站中使用 [ 預覽條件 ] 視窗。 您可以在定義條件並指派儲存工作時開啟此視窗。
若要預覽條件的效果,您必須指定目標訂用帳戶、記憶體帳戶和容器。 因為最多只能顯示 5,000 個 Blob,因此您也可以指定前綴來篩選清單。
備註
您無法在 Blob 名稱的前綴中使用通配符。
下圖顯示 Azure 入口網站中預覽結果的範例。
預覽結果會出現在數據表中,其中顯示符合條件的物件,以及不符合條件的物件。 您可以依出現在資料表中的欄位排序。
如果條件是指目標記憶體帳戶中不存在的屬性,則會出現錯誤。 例如,具有階層命名空間的帳戶無法使用 Blob 索引標籤。 如果條件中的 子句參考 Blob 索引標籤,則會出現驗證錯誤。
支援的屬性
下表顯示可用來撰寫條件之每個子句的屬性。 子句可以包含字串、布爾值、數值和日期和時間屬性。
繩子 | 日期和時間 3 | 數值 | 布林值 |
---|---|---|---|
AccessTier1 | 訪問層級變更時間 | 內容長度 | 已刪除 |
後設資料.值 | 建立時間 | 標籤計數 | 當前版本 |
名稱 | 刪除時間 | ||
BlobType2 | 最後存取時間 | ||
Container.Metadata.Value[Name] | Last-Modified | ||
容器.名稱 | |||
Container.Metadata.Value[Name] | |||
容器.名稱 | |||
Tags.Value[Name] (標籤.值[名稱]) | |||
版本ID |
1 允許的值為 Hot
、 Cool
或 Archive
。
2 允許的值為 BlockBlob
、 PageBlob
或 AppendBlob
3 可以設定為特定時間或從 物件動態取得的元數據值。 請參閱 參考物件元數據的值。
支援的運算子
下表顯示您可以在 子句中使用的運算元,以評估每個屬性類型的值。
繩子 | 日期和時間 | 數值 | 布林值 |
---|---|---|---|
包含 | 等於 | 等於 | 等於 |
空 | 更大 | 更大 | |
等於 | greaterOrEquals | greaterOrEquals | |
結尾為 | 較少的 | 較少的 | |
長度 | 小於或等於 | 小於或等於 | |
以...開始 | 加到時間 | ||
比對 |
not 運算子是特殊的運算符,您可以在此數據表中出現的任何運算子之前放置,以提供條件子句的相反結果,也稱為負結果。