ALTER LISTING

Modifica as propriedades de uma listagem com um manifesto YAML em linha ou de um arquivo localizado em um local de estágio.

Consulte também:

CREATE LISTING, DESCRIBE LISTING, SHOW LISTINGS, SHOW VERSIONS IN LISTING, DROP LISTING

Sintaxe

ALTER LISTING [ IF EXISTS ] <name> [ { PUBLISH | UNPUBLISH | REVIEW } ]

ALTER LISTING [ IF EXISTS ] <name> AS '<yaml_manifest_string>'
  [ PUBLISH = { TRUE | FALSE } ]
  [ REVIEW = { TRUE | FALSE } ]
  [ COMMENT = '<string>' ]

ALTER LISTING <name> ADD VERSION [ [ IF NOT EXISTS ] <version_name> ]
  FROM <yaml_manifest_stage_location>
  [ COMMENT = '<string>' ]

ALTER LISTING [ IF EXISTS ] <name> { ADD | REMOVE } TARGETS <manifest>

ALTER LISTING [ IF EXISTS ] <name> RENAME TO <new_name>;

ALTER LISTING [ IF EXISTS ] <name> SET COMMENT = '<string>'
Copy

Parâmetros

name

Especifica o identificador (nome) da listagem que está sendo alterada.

{ PUBLISH | UNPUBLISH | REVIEW }

A ação a ser executada na listagem:

  • PUBLISH Transforma uma listagem que não pode ser descoberta em uma listagem que pode ser descoberta.

    Especificar PUBLISH em uma listagem publicada anteriormente não tem efeito.

  • UNPUBLISH Transforma uma listagem que pode ser descoberta em uma listagem que não pode ser descoberta por novos consumidores. Os consumidores existentes podem continuar acessando os dados associados a uma listagem não publicada.

    Especificar UNPUBLISH em uma listagem não publicada anteriormente não tem efeito.

Consulte também Cancelamento da publicação de uma listagem.

  • REVIEW Envia a listagem para revisão.

yaml_manifest_string

O manifesto YAML para a listagem. Para conhecer os parâmetros do manifesto, consulte Listagem de referência de manifesto.

Os manifestos normalmente são fornecidos como cadeias de caracteres entre aspas de cifrão. Para obter mais informações, consulte Constantes de cadeias de caracteres entre cifrões.

ADD VERSION version_name

Especifica o identificador de versão exclusivo para a versão que está sendo adicionada. Se o identificador contiver espaços, caracteres especiais ou caracteres com letras maiúsculas e minúsculas, o identificador inteiro deverá ser colocado entre aspas duplas. Identificadores entre aspas duplas também diferenciam maiúsculas de minúsculas. Para obter informações sobre a sintaxe do identificador, consulte Requisitos para identificadores.

FROM 'yaml_manifest_stage_location'

Especifica o caminho para o arquivo manifest.yml do clone do repositório Git interno ou do Snowflake. Se as alterações exigirem a revisão do Marketplace Ops, use as operações REVIEW e PUBLISH.

{ ADD | REMOVE } TARGETS manifest

Adicione ou remova destinos de uma listagem usando o manifesto contendo somente os destinos que você deseja adicionar ou remover. Este manifesto parcial reutiliza as estruturas familiares targets, external_targets e organization_targets, que já estão definidas na especificação do manifesto de listagem.

A tabela abaixo lista as combinações de manifesto de listagem/manifesto de entrada não suportadas:

Nota

As listagens V2 ainda estão em versão preliminar. Após a ativação do recurso, todas as listagens subsequentes, sejam públicas ou privadas, serão criadas como listagens v2.

Versão de destinos de listagem externa

Manifesto de entrada

Resultado

Solução alternativa

Destinos V1

Destinos externos V2

Retorna um erro.

Forneça um manifesto de entrada da versão 1.

Destinos V2

Destinos V1

Retorna um erro.

Forneça um manifesto de entrada da versão 2.

Qualquer listagem externa

Meta no nível de organização que especifica uma organização sem contas.

Retorna um erro.

Não há suporte para alvos no nível de organização no momento.

Para listagens organizacionais, a tabela abaixo lista casos de uso sem suporte para adicionar e remover destinos:

Listagem externa

Manifesto de entrada

Adicionar ou remover

Resultado

Ação

Qualquer listagem de organizações

O manifesto tem o conjunto de campos organization_user_group.

Ambos

Retorna um erro.

Remover o campo organization_user_group e tentar novamente.

Conta ou conta e função

O manifesto tem o campo all_internal_accounts definido como TRUE.

Remover

Retorna um erro.

Remover contas específicas e tentar novamente.

A listagem temo o campo all_internal_accounts definido como TRUE.

O manifesto de entrada inclui uma conta ou uma conta e função.

Remover

Retorna um erro.

Substituir all_internal_accounts por contas específicas e tentar novamente.

A conta não tem funções especificadas

O manifesto de entrada tem uma conta com funções.

Remover

Retorna um erro.

Remover a conta primeiro e depois adicionar funções específicas.

RENAME TO new_name

Altera o nome da listagem para new_name. Os nomes de listagem devem ser exclusivos. O novo identificador não pode ser usado se o identificador já estiver em uso para uma listagem diferente.

SET ...

Especifica uma (ou mais) propriedades a serem definidas para a listagem (separadas por espaços em branco, vírgulas ou novas linhas).

COMMENT = 'string_literal'

Adiciona um comentário ou substitui o comentário existente de uma listagem existente.

PUBLISH = { TRUE | FALSE }

Especifica como a listagem deve ser publicada.

Se TRUE, a listagem é publicada imediatamente na listagem do Marketplace Ops para revisão.

Padrão: TRUE.

REVIEW =  { TRUE | FALSE }

Especifica se a listagem deve ou não ser enviada para revisão no Marketplace Ops.

Padrão: TRUE.

Diferentes combinações de valores para as propriedades PUBLISH e REVIEW resultam nos seguintes comportamentos:

PUBLISH

REVIEW

Comportamento

TRUE

TRUE

Solicite uma revisão e publique imediatamente após a revisão.

TRUE

FALSE

Resulta em um erro. Você não pode publicar uma listagem no Snowflake Marketplace sem revisão.

FALSE

TRUE

Solicite uma revisão sem publicar automaticamente após a revisão.

FALSE

FALSE

Salve sua listagem como rascunho sem solicitar revisão ou publicação.

Notas de uso

  • As listagens podem ser renomeadas somente no estado DRAFT.

  • Ao definir a versão ativa do manifesto do formato YAML para uma listagem, você deve usar COMMIT para aplicar as alterações ou ABORT para descartar as alterações.

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

OWNERSHIP ou MODIFY

Sobre a listagem sendo modificada.

Se estiver usando o comando ALTER para modificar o conteúdo do manifesto para o preenchimento automático, você deverá usar uma função com os privilégios delegados necessários para configurar o preenchimento automático entre nuvens. Consulte Delegar privilégios para configurar o preenchimento automático.

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Exemplos

Altera a listagem mylisting para usar um arquivo de manifesto atualizado:

ALTER LISTING mylisting
AS
$$
title: "MyListing"
subtitle: "Subtitle for MyListing"
description: "Description or MyListing"
listing_terms:
  type: "STANDARD"
targets:
  accounts: ["Org1.Account1"]
usage_examples:
  - title: "this is a test sql"
    description: "Simple example"
    query: "select *"
$$;
Copy

Envia a listagem mylisting para revisão:

ALTER LISTING mylisting REVIEW;
Copy

Altera a listagem mylisting ao publicá-la:

ALTER LISTING mylisting PUBLISH;
Copy

Altera a listagem mylisting ao cancelar sua publicação:

ALTER LISTING mylisting UNPUBLISH;
Copy

Altera a listagem mylisting ao definir um novo comentário:

ALTER LISTING mylisting SET COMMENT = 'My listing is ready!';
Copy

Adiciona uma nova versão do local de estágio do arquivo de manifesto YAML especificado:

ALTER LISTING mylisting ADD VERSION V3 FROM @dbforstage.public.listingstage/listingmanifests;
Copy

Altera uma listagem para que os destinos recebam o manifesto de entrada e o fundam com os destinos de listagem existentes:

ALTER LISTING mylisting ADD TARGETS $$manifest$$;
Copy

Adiciona destinos a uma listagem externa de V1:

ALTER LISTING mylisting ADD TARGETS
$$
targets:
  accounts: ["Org1.Account1", "Org2.Account2"]
$$;
Copy

Adiciona destinos a uma listagem externa da V2:

ALTER LISTING mylisting ADD TARGETS
$$
external_targets:
  access:
    - organization: OrgName2
      accounts: [acc1, acc2]
$$;
Copy

Ao adicionar destinos, isso pega o manifesto de entrada e o mescla com o organization_targets existente.

ALTER LISTING mylisting ADD TARGETS
$$
organization_targets:
  access:
    - account: account2
      roles: [role1, role2]
$$;
Copy

Remove um destino:

ALTER LISTING mylisting REMOVE TARGETS $$manifest$$;
Copy

Remove destinos de uma listagem V1 externa:

ALTER LISTING mylisting REMOVE TARGETS
$$
targets:
  accounts: ["Org1.Account1", "Org2.Account2"]
$$;
Copy

Remove destinos de uma listagem V2 externa:

ALTER LISTING mylisting REMOVE TARGETS
$$
external_targets:
  access:
    - organization: OrgName2
      accounts: [acc1, acc2]
$$;
Copy

Remove destinos de uma listagem organizacional:

ALTER LISTING mylisting REMOVE TARGETS
$$
organization_targets:
  access:
    - account: account1
$$;
Copy