Gerenciar dados do Experience Platform usando Python e SQLAlchemy

Saiba como usar o SQLAlchemy para maior flexibilidade no gerenciamento de dados do Adobe Experience Platform. Para aqueles que não estão tão familiarizados com o SQL, o SQLAlchemy pode melhorar muito o tempo de desenvolvimento ao trabalhar com bancos de dados relacionais. Este documento fornece instruções e exemplos para conectar o SQLAlchemy ao Serviço de Consulta e começar a usar o Python para interagir com seus bancos de dados.

SQLAlchemy é um ORM (Object Relational Mapper) e uma biblioteca de códigos Python que pode transferir dados armazenados em um banco de dados SQL para objetos Python. Você pode executar operações CRUD em dados mantidos no data lake da Experience Platform usando o código Python. Isso elimina a necessidade de gerenciar dados usando apenas o PSQL.

Introdução

Para adquirir as credenciais necessárias para conectar SQLAlchemy ao Experience Platform, você deve ter acesso ao espaço de trabalho Consultas na interface do usuário do Experience Platform. Entre em contato com o administrador da organização se não tiver acesso ao espaço de trabalho de Consultas.

Query Service credenciais credentials

Para encontrar suas credenciais, faça logon na interface do usuário do Experience Platform e selecione Consultas na navegação à esquerda, seguido de Credenciais. Para obter instruções completas sobre como encontrar suas credenciais de logon, leia o guia de credenciais.

A guia Credencial com credenciais expirando para o Serviço de Consulta foi realçada.

Embora a porta 80 seja a porta recomendada para uma conexão com o Serviço de consulta, você também pode usar a porta 5432.

IMPORTANT
Se você usar credenciais com expiração (como visto na imagem acima) para se conectar ao Serviço de consulta, a vida da sessão para sua conexão expirará após o período definido nas configurações de sua organização. Por padrão, esse período é de 24 horas. Consulte a documentação para saber como conectar um cliente com credenciais sem expiração ou como alterar a vida da sessão para suas credenciais com expiração.

Depois de ter acesso às suas credenciais de QS, abra o editor Python de sua escolha.

Armazenar credenciais em Python store-credentials

No editor Python, importe a biblioteca urllib.parse.quote e salve cada variável de credencial como um parâmetro. O módulo urllib.parse fornece uma interface padrão para dividir cadeias de caracteres de URL em componentes. A função de aspas substitui caracteres especiais na string do URL para tornar os dados seguros para uso como componentes do URL. Um exemplo do código necessário é visto abaixo:

TIP
Use as aspas triplas de Python para inserir sua cadeia de caracteres de senha de várias linhas.
from urllib.parse import quote

host = "<YOUR_HOST>"

port = "<YOUR_PORT>"

dbname = "<YOUR_DATABASE>"

user = "<YOUR_USERNAME>"

password = quote('''
<YOUR_PASSWORD>
''')
NOTE
A senha fornecida para conectar o SQLAlchemy ao Experience Platform irá expirar se você usar credenciais que estão expirando. Consulte a seção de credenciais para obter mais informações.

Criar uma instância de mecanismo [#create-engine]

Depois que as variáveis forem criadas, importe a função create_engine e crie uma cadeia de caracteres para compilar e formatar suas credenciais do Serviço de Consulta em SQLAlchemy. A função create_engine é então usada para construir uma instância de mecanismo.

NOTE
create_engineretorna uma instância de um mecanismo. No entanto, ela não abre a conexão com o Serviço de consulta até que uma consulta seja chamada e exija uma conexão.

O SSL deve ser ativado ao acessar o Experience Platform usando clientes de terceiros. Como parte do mecanismo, use o connect_args para inserir argumentos de palavra-chave adicionais. É recomendável definir o modo SSL como require. Consulte a documentação sobre modos SSL para obter mais informações sobre valores aceitos.

O exemplo abaixo exibe o código Python necessário para inicializar um mecanismo e uma cadeia de conexão.

from sqlalchemy import create_engine

db_string = "postgresql://{user}:{password}@{host}:{port}/{dbname}".format(
    user=user,
    password=password,
    host=host,
    port = port,
    dbname = dbname
)

engine = create_engine(db_string, connect_args={'sslmode':'require'})
NOTE
A senha fornecida para conectar o SQLAlchemy ao Experience Platform irá expirar se você usar credenciais que estão expirando. Consulte a seção de credenciais para obter mais informações.

Agora você está pronto para consultar dados do Experience Platform usando o Python. O exemplo mostrado abaixo retorna uma matriz de nomes de tabela do Serviço de consulta.

from sqlalchemy import inspect
insp = inspect(engine)
print(insp.get_table_names())
recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb