Ustawianie właściwości usługi Table ServiceSet Table Service Properties

Set Table Service PropertiesOperacja ustawia właściwości dla punktu końcowego Table Service konta magazynu, w tym właściwości dla reguł analityka magazynu i CORS (współużytkowanie zasobów między źródłami).The Set Table Service Properties operation sets properties for a storage account’s Table service endpoint, including properties for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules. Więcej informacji na temat reguł CORS można znaleźć w temacie Obsługa mechanizmu CORS dla usług magazynu .See CORS Support for the Storage Services for more information on CORS rules.

ŻądanieRequest

Set Table Service PropertiesŻądanie może być określone w następujący sposób.The Set Table Service Properties request may be specified as follows. Zalecany jest protokół HTTPS.HTTPS is recommended. Zastąp wartość <account-name> nazwą konta magazynu.Replace <account-name> with the name of your storage account.

MetodaMethod Identyfikator URI żądaniaRequest URI Wersja protokołu HTTPHTTP Version
PUTPUT https://<account-name>.table.core.windows.net/?restype=service&comp=properties PROTOKÓŁ HTTP/1.1HTTP/1.1

Należy pamiętać, że identyfikator URI musi zawsze zawierać ukośnik (/), aby oddzielić nazwę hosta od części ścieżki i zapytania w identyfikatorze URI.Note that the URI must always include the forward slash (/) to separate the host name from the path and query portions of the URI. W przypadku tej operacji część ścieżki identyfikatora URI jest pusta.In the case of this operation, the path portion of the URI is empty.

Parametry identyfikatora URIURI Parameters

Parametr URIURI Parameter OpisDescription
restype=service&comp=properties Wymagany.Required. W celu ustawienia właściwości usługi magazynu wymagane jest połączenie obu ciągów zapytań.The combination of both query strings is required to set the storage service properties.
timeout Opcjonalny.Optional. timeoutParametr jest wyrażony w sekundach.The timeout parameter is expressed in seconds.

Nagłówki żądańRequest Headers

W poniższej tabeli opisano wymagane i opcjonalne nagłówki żądań.The following table describes required and optional request headers.

Nagłówek żądaniaRequest Header OpisDescription
Authorization Wymagany.Required. Określa schemat autoryzacji, nazwę konta magazynu i podpis.Specifies the authorization scheme, storage account name, and signature. Aby uzyskać więcej informacji, zobacz Autoryzuj żądania do usługi Azure Storage.For more information, see Authorize requests to Azure Storage.
Date lub x-ms-dateDate or x-ms-date Wymagany.Required. Określa dla żądania godzinę w formacie uniwersalnego czasu koordynowanego (UTC).Specifies the Coordinated Universal Time (UTC) for the request. Aby uzyskać więcej informacji, zobacz Autoryzuj żądania do usługi Azure Storage.For more information, see Authorize requests to Azure Storage.
x-ms-version Wymagane dla wszystkich autoryzowanych żądań.Required for all authorized requests. Określa wersję operacji, która ma być używana dla tego żądania.Specifies the version of the operation to use for this request. Aby uzyskać więcej informacji, zobacz przechowywanie wersji usług Azure Storage.For more information, see Versioning for the Azure Storage Services.
x-ms-client-request-id Opcjonalny.Optional. Zapewnia wygenerowaną przez klienta wartość nieprzezroczystą z 1 KiB limit znaków, który jest rejestrowany w dziennikach analizy po włączeniu rejestrowania analizy magazynu.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. Używanie tego nagłówka jest wysoce zalecane do korelowania działań po stronie klienta z żądaniami odebranymi przez serwer.Using this header is highly recommended for correlating client-side activities with requests received by the server. Aby uzyskać więcej informacji, zobacz Informacje o rejestrowaniu analityka magazynu i rejestrowaniu na platformie Azure: używanie dzienników do śledzenia żądań magazynu.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

Treść żądaniaRequest Body

W przypadku wersji 2012-02-12 i wcześniejszej format treści żądania jest następujący:For version 2012-02-12 and earlier, the format of the request body is as follows:

<?xml version="1.0" encoding="utf-8"?>  
<StorageServiceProperties>  
    <Logging>  
        <Version>version-number</Version>  
        <Delete>true|false</Delete>  
        <Read>true|false</Read>  
        <Write>true|false</Write>  
        <RetentionPolicy>  
            <Enabled>true|false</Enabled>  
            <Days>number-of-days</Days>  
        </RetentionPolicy>  
    </Logging>  
    <Metrics>  
        <Version>version-number</Version>  
        <Enabled>true|false</Enabled>  
        <IncludeAPIs>true|false</IncludeAPIs>  
        <RetentionPolicy>  
            <Enabled>true|false</Enabled>  
            <Days>number-of-days</Days>  
        </RetentionPolicy>  
    </Metrics>  
</StorageServiceProperties>  

W przypadku wersji 2013-08-15 i nowszych format treści żądania jest następujący:For version 2013-08-15 and later, the format of the request body is as follows:

<?xml version="1.0" encoding="utf-8"?>  
<StorageServiceProperties>  
    <Logging>  
        <Version>version-number</Version>  
        <Delete>true|false</Delete>  
        <Read>true|false</Read>  
        <Write>true|false</Write>  
        <RetentionPolicy>  
            <Enabled>true|false</Enabled>  
            <Days>number-of-days</Days>  
        </RetentionPolicy>  
    </Logging>  
    <HourMetrics>  
        <Version>version-number</Version>  
        <Enabled>true|false</Enabled>  
        <IncludeAPIs>true|false</IncludeAPIs>  
        <RetentionPolicy>  
            <Enabled>true|false</Enabled>  
            <Days>number-of-days</Days>  
        </RetentionPolicy>  
    </HourMetrics>  
    <MinuteMetrics>  
        <Version>version-number</Version>  
        <Enabled>true|false</Enabled>  
        <IncludeAPIs>true|false</IncludeAPIs>  
        <RetentionPolicy>  
            <Enabled>true|false</Enabled>  
            <Days>number-of-days</Days>  
        </RetentionPolicy>  
    </MinuteMetrics>  
    <Cors>  
        <CorsRule>  
            <AllowedOrigins>comma-separated-list-of-allowed-origins</AllowedOrigins>  
            <AllowedMethods>comma-separated-list-of-HTTP-verb</AllowedMethods>  
            <MaxAgeInSeconds>max-caching-age-in-seconds</MaxAgeInSeconds>  
            <ExposedHeaders>comma-seperated-list-of-response-headers</ExposedHeaders>  
            <AllowedHeaders> comma-seperated-list-of-request-headers </AllowedHeaders>  
        </CorsRule>  
    </Cors>  
</StorageServiceProperties>  

Począwszy od wersji 2013-08-15, można wywołać Set Table Service Properties z co najmniej jednym elementem głównym określonym w treści żądania.Beginning with version 2013-08-15, you can call Set Table Service Properties with one or more root elements specified in the request body. Elementy główne obejmują:The root elements include:

  • RejestrowaćLogging

  • HourMetricsHourMetrics

  • MinuteMetricsMinuteMetrics

  • SpecyfikacjiCors

Nie trzeba już określać każdego elementu głównego w żądaniu.It is no longer necessary to specify every root element on the request. W przypadku pominięcia elementu głównego istniejące ustawienia usługi dla tej funkcji są zachowywane.If you omit a root element, the existing settings for the service for that functionality are preserved. Jednakże w przypadku określenia danego elementu głównego należy określić każdy element podrzędny dla tego elementu.However, if you do specify a given root element, you must specify every child element for that element.

W poniższej tabeli opisano elementy treści żądania:The following table describes the elements of the request body:

Nazwa elementuElement Name OpisDescription
RejestrowaćLogging Opcjonalne począwszy od wersji 2013-08-15.Optional beginning with version 2013-08-15. Wymagane dla wcześniejszych wersji.Required for earlier versions. Grupuje ustawienia rejestrowania usługi Azure Analytics.Groups the Azure Analytics Logging settings.
MetrykiMetrics Wymagane dla wersji 2012-02-12 i wcześniejszych.Required for version 2012-02-12 and earlier. Nie dotyczy wersji 2013-08-15 lub nowszej.Not applicable for version 2013-08-15 or later. Grupuje ustawienia metryk usługi Azure Analytics.Groups the Azure Analytics Metrics settings. Ustawienia metryk zawierają podsumowanie statystyk żądań pogrupowanych według interfejsu API w postaci wartościowych co godzinę w tabelach.The Metrics settings provide a summary of request statistics grouped by API in hourly aggregates for tables.
HourMetricsHourMetrics Opcjonalne dla wersji 2013-08-15 lub nowszej; nie dotyczy wcześniejszych wersji.Optional for version 2013-08-15 or later; not applicable for earlier versions. Grupuje ustawienia usługi Azure Analytics HourMetrics .Groups the Azure Analytics HourMetrics settings. Ustawienia HourMetrics zawierają podsumowanie statystyk żądań pogrupowanych według interfejsu API w co godzinę agregacji w tabelach.The HourMetrics settings provide a summary of request statistics grouped by API in hourly aggregates for tables.
MinuteMetricsMinuteMetrics Opcjonalne dla wersji 2013-08-15 lub nowszej; nie dotyczy wcześniejszych wersji.Optional for version 2013-08-15 or later; not applicable for earlier versions. Grupuje ustawienia usługi Azure Analytics MinuteMetrics .Groups the Azure Analytics MinuteMetrics settings. Ustawienia MinuteMetrics zapewniają dane statystyczne żądania dla każdej minuty dla tabel.The MinuteMetrics settings provide request statistics for each minute for tables. W przypadku wersji wcześniejszej niż 2013-08-15 MinuteMetrics nie jest uwzględniony w treści odpowiedzi.For versions earlier than 2013-08-15, MinuteMetrics is not included in the response body.
WersjaVersion Wymagany.Required. Wersja analityka magazynu do skonfigurowania.The version of Storage Analytics to configure.
UsuwanieDelete Wymagany.Required. Dotyczy tylko konfiguracji rejestrowania.Applies only to logging configuration. Wskazuje, czy wszystkie żądania usunięcia powinny być rejestrowane.Indicates whether all delete requests should be logged.
OdczytRead Wymagany.Required. Dotyczy tylko konfiguracji rejestrowania.Applies only to logging configuration. Wskazuje, czy wszystkie żądania odczytu powinny być rejestrowane.Indicates whether all read requests should be logged.
PrawemWrite Wymagany.Required. Dotyczy tylko konfiguracji rejestrowania.Applies only to logging configuration. Wskazuje, czy wszystkie żądania zapisu powinny być rejestrowane.Indicates whether all write requests should be logged.
WłączoneEnabled Wymagany.Required. Wskazuje, czy metryki są włączone dla usługi magazynu.Indicates whether metrics is enabled for the storage service.

Jeśli replikacja geograficznie nadmiarowa do odczytu jest włączona, zbierane są zarówno metryki podstawowe, jak i pomocnicze.If read-access geo-redundant replication is enabled, both primary and secondary metrics are collected. Jeśli replikacja geograficznie nadmiarowa do odczytu nie jest włączona, zbierane są tylko podstawowe metryki.If read-access geo-redundant replication is not enabled, only primary metrics are collected.
IncludeAPIsIncludeAPIs Wymagane tylko wtedy, gdy są włączone metryki.Required only if metrics are enabled. Dotyczy tylko konfiguracji metryk.Applies only to metrics configuration. Wskazuje, czy metryki powinny generować statystyki podsumowujące dla wywołanych operacji interfejsu API.Indicates whether metrics should generate summary statistics for called API operations.
RetentionPolicy/włączonyRetentionPolicy/Enabled Wymagany.Required. Wskazuje, czy zasady przechowywania są włączone dla usługi magazynu.Indicates whether a retention policy is enabled for the storage service.
RetentionPolicy/dniRetentionPolicy/Days Wymagane tylko w przypadku włączenia zasad przechowywania.Required only if a retention policy is enabled. Wskazuje liczbę dni zachowywania metryk lub danych rejestrowania.Indicates the number of days that metrics or logging data should be retained. Wszystkie dane starsze niż ta wartość zostaną usunięte.All data older than this value will be deleted. Minimalna wartość, którą można określić, to 1 365 (jeden rok).The minimum value you can specify is 1; the largest value is 365 (one year).
SpecyfikacjiCors Opcjonalny.Optional. Element CORS jest obsługiwany w wersji 2013-08-15 lub nowszej.The Cors element is supported for version 2013-08-15 or later. Grupuje wszystkie reguły CORS.Groups all CORS rules.

Pominięcie tej grupy elementów nie spowoduje zastąpienia istniejących ustawień specyfikacji CORS.Omitting this element group will not overwrite existing CORS settings.
CorsRuleCorsRule Opcjonalny.Optional. Określa regułę CORS dla Table service.Specifies a CORS rule for the Table service. W żądaniu możesz uwzględnić maksymalnie pięć elementów CorsRule .You can include up to five CorsRule elements in the request. Jeśli treść żądania nie zawiera żadnych elementów CorsRule , zostaną usunięte wszystkie reguły CORS, a mechanizm CORS zostanie wyłączony dla Table Service.If no CorsRule elements are included in the request body, all CORS rules will be deleted, and CORS will be disabled for the Table service.
AllowedOriginsAllowedOrigins Wymagane, jeśli element CorsRule jest obecny.Required if CorsRule element is present. Rozdzielana przecinkami lista domen pochodzenia, które będą dozwolone za pośrednictwem mechanizmu CORS, lub "*", aby zezwolić na wszystkie domeny.A comma-separated list of origin domains that will be allowed via CORS, or "*" to allow all domains. Ograniczone do domen pochodzenia 64.Limited to 64 origin domains. Każdy dozwolony punkt początkowy może mieć do 256 znaków.Each allowed origin can have up to 256 characters.
ExposedHeadersExposedHeaders Wymagane, jeśli element CorsRule jest obecny.Required if CorsRule element is present. Rozdzielana przecinkami lista nagłówków odpowiedzi do udostępnienia klientom CORS.A comma-separated list of response headers to expose to CORS clients. Ograniczone do 64 zdefiniowanych nagłówków i dwóch nagłówków z prefiksem.Limited to 64 defined headers and two prefixed headers. Każdy nagłówek może składać się z maksymalnie 256 znaków.Each header can be up to 256 characters.
Atrybut maxageinsecondsMaxAgeInSeconds Wymagane, jeśli element CorsRule jest obecny.Required if CorsRule element is present. Liczba sekund, przez jaką klient/przeglądarka powinna buforować odpowiedź na czas wstępny.The number of seconds that the client/browser should cache a preflight response.
AllowedHeadersAllowedHeaders Wymagane, jeśli istnieje element CorsRule .Required if CorsRule element exists. Rozdzielana przecinkami lista nagłówków, które mogą być częścią żądania między źródłami.A comma-separated list of headers allowed to be part of the cross-origin request. Ograniczone do 64 zdefiniowanych nagłówków i 2 nagłówki z prefiksami.Limited to 64 defined headers and 2 prefixed headers. Każdy nagłówek może składać się z maksymalnie 256 znaków.Each header can be up to 256 characters.
Atrybut AllowedMethodsAllowedMethods Wymagane, jeśli istnieje element CorsRule .Required if CorsRule element exists. Rozdzielana przecinkami lista metod HTTP, które mogą być wykonywane przez źródło.A comma-separated list of HTTP methods that are allowed to be executed by the origin. W przypadku usługi Azure Storage dozwolone metody to DELETE, GET, głowy, MERGE, POST, OPTIONS lub PUT.For Azure Storage, permitted methods are DELETE, GET, HEAD, MERGE, POST, OPTIONS or PUT.

OdpowiedźResponse

Odpowiedź zawiera kod stanu HTTP, zestaw nagłówków odpowiedzi i treść odpowiedzi.The response includes an HTTP status code, a set of response headers, and a response body.

Kod stanuStatus Code

Operacja powiodła się zwraca kod stanu 202 (zaakceptowany).A successful operation returns status code 202 (Accepted).

Nagłówki odpowiedziResponse Headers

Odpowiedź dla tej operacji obejmuje następujące nagłówki.The response for this operation includes the following headers. Odpowiedź może również zawierać dodatkowe standardowe nagłówki HTTP.The response may also include additional standard HTTP headers. Wszystkie nagłówki standardowe są zgodne ze specyfikacją protokołu HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

Nagłówek odpowiedziResponse Header OpisDescription
x-ms-request-id Wartość, która jednoznacznie identyfikuje żądanie wykonane względem usługi.A value that uniquely identifies a request made against the service.
x-ms-version Określa wersję operacji używanej w odpowiedzi.Specifies the version of the operation used for the response. Aby uzyskać więcej informacji, zobacz przechowywanie wersji usług Azure Storage.For more information, see Versioning for the Azure Storage Services.
x-ms-client-request-id Ten nagłówek może służyć do rozwiązywania problemów z żądaniami i odpowiadających im odpowiedzi.This header can be used to troubleshoot requests and corresponding responses. Wartość tego nagłówka jest równa wartości x-ms-client-request-id nagłówka, jeśli jest obecna w żądaniu, a wartość to co najwyżej 1024 widocznych znaków ASCII.The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. Jeśli x-ms-client-request-id nagłówek nie występuje w żądaniu, ten nagłówek nie będzie obecny w odpowiedzi.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Treść odpowiedziResponse Body

Brak.None.

AutoryzacjaAuthorization

Tylko właściciel konta może wywoływać tę operację.Only the account owner may call this operation.

UwagiRemarks

Poniższe ograniczenia i ograniczenia dotyczą reguł CORS w usłudze Azure Storage:The following restrictions and limitations apply to CORS rules in Azure Storage:

  • Można przechowywać maksymalnie pięć reguł.A maximum of five rules can be stored.

  • Maksymalny rozmiar wszystkich ustawień reguł CORS w żądaniu, z wyłączeniem tagów XML, nie powinien przekraczać 2 KiB.The maximum size of all CORS rules settings on the request, excluding XML tags, should not exceed 2 KiB.

  • Długość dozwolonego nagłówka, uwidocznionego nagłówka lub dozwolonego źródła nie powinna przekraczać 256 znaków.The length of an allowed header, exposed header, or allowed origin should not exceed 256 characters.

  • Dozwolone nagłówki i uwidocznione nagłówki mogą być następujące:Allowed headers and exposed headers may be either:

    • Nagłówki literałów, w których podano dokładną nazwę nagłówka, taką jak x-MS-meta-przetworzony.Literal headers, where the exact header name is provided, such as x-ms-meta-processed. W żądaniu można określić maksymalnie 64 nagłówków literałów.A maximum of 64 literal headers may be specified on the request.

    • Wstępnie ustalone nagłówki, w których podano prefiks nagłówka, taki jak **x-MS-meta-data * **.Prefixed headers, where a prefix of the header is provided, such as x-ms-meta-data*. Określenie prefiksu w ten sposób umożliwia lub uwidacznia każdy nagłówek zaczynający się od danego prefiksu.Specifying a prefix in this manner allows or exposes any header that begins with the given prefix. W żądaniu można określić maksymalnie dwa nagłówki z prefiksami.A maximum of two prefixed headers may be specified on the request.

  • Metody (lub zlecenia HTTP) określone w elemencie atrybut AllowedMethods muszą być zgodne z metodami obsługiwanymi przez interfejsy API usługi Azure Storage.The methods (or HTTP verbs) specified in the AllowedMethods element must conform to the methods supported by Azure storage service APIs. Obsługiwane metody to DELETE, GET, głowy, MERGE, POST, OPTIONS i PUT.Supported methods are DELETE, GET, HEAD, MERGE, POST, OPTIONS and PUT.

Określanie reguł CORS w żądaniu jest opcjonalne.Specifying CORS rules on the request is optional. W przypadku wywołania Set Table Service Properties bez określenia elementu CORS w treści żądania są zachowywane wszystkie istniejące reguły CORS.If you call Set Table Service Properties without specifying the Cors element in the request body, any existing CORS rules are maintained.

Aby wyłączyć mechanizm CORS, należy wywołać Set Table Service Properties puste Ustawienia reguł CORS (tj. </Cors> ) i bez wewnętrznych reguł CORS.To disable CORS, call Set Table Service Properties with an empty CORS rules settings (i.e.,</Cors>) and no inner CORS rules. To wywołanie usuwa wszystkie istniejące reguły, uniemożliwiając wyłączenie mechanizmu CORS dla Table service.This call deletes any existing rules, disabling CORS for the Table service.

W przypadku określenia elementu CorsRule są wymagane wszystkie elementy reguł CORS.All CORS rule elements are required if the CorsRule element is specified. Żądanie zakończy się niepowodzeniem z kodem błędu 400 ( Bad Request ), jeśli brakuje żadnego elementu.The request will fail with error code 400 (Bad Request) if any element is missing.

Począwszy od wersji 2013-08-15, elementy ustawień XML będą opcjonalne, w związku z czym Aktualizacja określonego elementu może zostać wykonana przez wysłanie pliku XML, który zawiera tylko zaktualizowany element, a inne ustawienia nie zostaną naruszone.Beginning with version 2013-08-15, XML settings elements will be optional so updating a specific element can be done by sending an XML that only contains the updated element and other settings will not be affected.

Aby uzyskać szczegółowe informacje na temat reguł CORS i logiki oceny, zobacz Obsługa mechanizmu CORS dla usług magazynu.For detailed information about CORS rules and evaluation logic, see CORS Support for the Storage Services.

Przykładowe żądanie i odpowiedźSample Request and Response

Następujący przykładowy identyfikator URI wykonuje żądanie zmiany właściwości Table service fikcyjnego konta magazynu o nazwie Moje konto:The following sample URI makes a request to change the Table service properties for the fictional storage account named myaccount:

PUT https://myaccount.table.core.windows.net/?restype=service&comp=properties HTTP/1.1  

Żądanie jest wysyłane z następującymi nagłówkami:The request is sent with the following headers:

x-ms-version: 2013-08-15  
x-ms-date: Mon, 21 Oct 2013 04:38:23 GMT  
Authorization: SharedKey  
myaccount:Z1lTLDwtq5o1UYQluucdsXk6/iB7YxEu0m6VofAEkUE=  
Host: myaccount.table.core.windows.net  

Żądanie jest wysyłane z następującą treścią XML:The request is sent with the following XML body:

<?xml version="1.0" encoding="utf-8"?>  
<StorageServiceProperties>  
    <Logging>  
        <Version>1.0</Version>  
        <Delete>true</Delete>  
        <Read>false</Read>  
        <Write>true</Write>  
        <RetentionPolicy>  
            <Enabled>true</Enabled>  
            <Days>7</Days>  
        </RetentionPolicy>  
    </Logging>  
    <HourMetrics>  
        <Version>1.0</Version>  
        <Enabled>true</Enabled>  
        <IncludeAPIs>false</IncludeAPIs>  
        <RetentionPolicy>  
            <Enabled>true</Enabled>  
            <Days>7</Days>  
        </RetentionPolicy>  
    </HourMetrics>  
    <MinuteMetrics>  
        <Version>1.0</Version>  
        <Enabled>true</Enabled>  
        <IncludeAPIs>true</IncludeAPIs>  
        <RetentionPolicy>  
            <Enabled>true</Enabled>  
            <Days>7</Days>  
        </RetentionPolicy>  
    </MinuteMetrics>  
    <Cors>  
        <CorsRule>  
            <AllowedOrigins> http://www.fabrikam.com,http://www.contoso.com</AllowedOrigins>  
            <AllowedMethods>GET,PUT</AllowedMethods>  
            <MaxAgeInSeconds>500</MaxAgeInSeconds>  
            <ExposedHeaders>x-ms-meta-data*,x-ms-meta-customheader</ExposedHeaders>  
            <AllowedHeaders>x-ms-meta-target*,x-ms-meta-customheader</AllowedHeaders>  
        </CorsRule>  
    </Cors>  
</StorageServiceProperties>  
  

Po wysłaniu żądania zostanie zwrócona następująca odpowiedź:After the request has been sent, the following response is returned:

HTTP/1.1 202 Accepted  
Connection: Keep-Alive  
Transfer-Encoding: chunked  
Date: Mon, 21 Oct 2013 04:38:24 GMT  
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cb939a31-0cc6-49bb-9fe5-3327691f2a30  
x-ms-version: 2013-08-15  
  

Zobacz teżSee Also