Consultar Tabelas Externas com Particionamento Implícito
No Autonomous AI Database, você pode criar tabelas externas particionadas implícitas com base em dados particionados no estilo Hive ou com base em dados particionados de pastas simples armazenados no Cloud Object Store.
- Sobre Tabelas Externas com Particionamento Implícito
No Autonomous AI Database, use o procedimentoDBMS_CLOUD.CREATE_EXTERNAL_TABLE
para criar tabelas externas particionadas implícitas com base em dados particionados no estilo Hive ou com base em dados particionados de pastas simples armazenados no Cloud Object Store. - Consultar Dados Particionados Implícitos Externos com a Organização do Arquivo de Origem do Formato Hive
Use o procedimentoDBMS_CLOUD.CREATE_EXTERNAL_TABLE
para criar uma tabela externa particionada implícita com base nos dados do Object Store que foram gerados com base nos dados do Hive. - Consultar Dados de Estilo Não Hive Particionados Implícitos Externos
Use o procedimentoDBMS_CLOUD.CREATE_EXTERNAL_TABLE
para criar uma tabela externa particionada implícita com base em dados no armazenamento de objetos que foram gerados a partir de dados não Hive.
Tópico principal: Consultar Dados Externos com o Autonomous AI Database
Sobre Tabelas Externas com Particionamento Implícito
No Autonomous AI Database, use o procedimento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
para criar tabelas externas particionadas implícitas com base em dados particionados no estilo Hive ou com base em dados particionados de pastas simples armazenados no Cloud Object Store.
Ao passar as opções apropriadas para este procedimento, as partições são derivadas dos dados de origem. As tabelas externas particionadas suportam a descoberta de runtime de colunas de partição e seus valores. A descoberta de runtime de alterações na estrutura de armazenamento de objetos subjacente, como adicionar ou remover objetos, simplifica o processo de manutenção eliminando a necessidade de procedimentos de sincronização adicionais exigidos pelo DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
. Isso garante que os dados estejam atualizados no tempo de execução da consulta.
Com o particionamento implícito, o Autonomous AI Database determina automaticamente as colunas nas quais uma tabela é "particionada" com base na estrutura de arquivos hierárquicos da origem de armazenamento de objetos. Não é necessário declarar explicitamente um esquema de particionamento. O particionamento implícito oferece benefícios de desempenho semelhantes a tabelas de partições sem a necessidade de definir explicitamente uma tabela externa particionada usando o procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
.
Para otimizar o tempo de resposta da consulta para consultas de conjuntos de dados muito grandes usando o particionamento implícito, você pode ativar a otimização definindo strict_column_order
como verdadeiro. O parâmetro strict_column_order
é uma subopção da opção de formato implicit_partition_config
. Essa otimização só se aplica quando partition_type
é hive. Consulte Consultar Dados Particionados Implícitos Externos com a Organização do Arquivo de Origem do Formato Hive para obter um exemplo e DBMS_CLOUD Opções de Formato de Pacote para obter mais informações sobre os parâmetros implícitos do formato de particionamento.
As tabelas externas particionadas implícitas suportam os seguintes estilos de nomeação para objetos particionados no armazenamento de objetos:
- Formato de Nomenclatura do Hive: Os dados no armazenamento de objetos que foram gerados do Hive têm o seguinte formato.
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquet
Para obter um exemplo, consulte Consultar Dados Particionados Implícitos Externos com a Organização do Arquivo de Origem do Formato Hive
- Formato de Nomeação "Pathtail" Não Hive: Um segundo formato que é frequentemente encontrado em data lakes é semelhante ao formato de colmeia, mas o nome da pasta não inclui as colunas de partição.
OBJBUCKET/<table>/<value1>/<value2>/file.parquet
Para obter um exemplo, consulte Consultar Dados de Estilo Não Hive Particionados Implícitos Externos.
Para obter mais informações sobre formatos de nomeação, consulte Sobre Tabelas Externas com Particionamento de Arquivos de Origem.
DBMS_CLOUD.CREATE_EXTERNAL_TABLE
, as tabelas externas particionadas implícitas podem ser criadas das seguintes maneiras:
- Otimize o particionamento implícito. Use a opção
implicit_partition_config
para ativar o particionamento implícito e a otimização do tempo de consulta decorrido.Neste exemplo, o particionamento implícito é ativado definindo
partition_type
como hive. O único valor válido parapartition_type
é hive. A otimização é ativada definindosetting strict_column_order
como verdadeiro. A opçãopartition_columns
especifica quais colunas são particionadas.Por exemplo:
BEGIN dbms_cloud.create_external_table ( table_name => 'partitions1', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'c varchar2(100), y number, total_sales number', format => '{"type":"parquet", "implicit_partition_config":{ "partition_type":"hive", "strict_column_order":true, "partition_columns":["org","tenant","dbtype","year","month","day"] } }'); END; /
- Defina o tipo de partição como hive com uma determinada lista de colunas de partição
Nesse caso,
implicit_partition_type
é definido comohive
eimplicit_partition_columns
fornece uma lista de colunas de partição.Por exemplo:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE ( table_name => 'mysales', credential_name => 'MY_CREDENTIAL', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'product varchar2(100), units number, country varchar2(100),year (number), month varchar2(2)', format => '{"type":"parquet", "implicit_partition_type":"hive", "implicit_partition_columns":["country","year","month"]}'); END; /
- Defina o tipo de partição como hive sem fornecer uma lista de colunas de partição
Nesse caso,
implicit_partition_type
é definido comohive
eimplicit_partition_columns
não é fornecido. As colunas de partição são detectadas automaticamente ao procurar '=' no caminho especificado porfile_uri_list
. Ocolumn_name
fica à esquerda de '=' e o valor está no lado direito. Se umcolumn_name
não for encontrado no caminho, um erro será gerado.Por exemplo:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE ( table_name => 'mysales', credential_name => 'MY_CREDENTIAL', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'product varchar2(100), units number, country varchar2(100),year (number), month varchar2(2)', format => '{"type":"parquet", "implicit_partition_type":"hive"'); END; /
- Forneça uma lista de colunas de partição sem especificar o tipo
Nesse caso,
implicit_partition_type
não está definido eimplicit_partition_columns
fornece uma lista de colunas.Por exemplo:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE ( table_name => 'mysales', credential_name => 'MY_CREDENTIAL', file_uri_list => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/*.parquet', column_list => 'product varchar2(100), units number, country varchar2(100),year (number), month varchar2(2)', format => '{"type":"parquet", "implicit_partition_columns":["country","year","month"]}'); END; /
Consulte Consultar Dados Particionados Implícitos Externos com a Organização do Arquivo de Origem do Formato Hive e Procedimento CREATE_EXTERNAL_TABLE para obter mais informações.
Tópico principal: Consultar Tabelas Externas com Particionamento Implícito
Consultar Dados Particionados Implícitos Externos com Organização de Arquivos de Origem do Formato Hive
Use o procedimento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
para criar uma tabela externa particionada implícita a partir de dados no Object Store que foi gerada a partir de dados do Hive.
Os arquivos de origem de amostra no exemplo a seguir usam este formato de nomeação:
OBJBUCKET/<table>/<partcol1>=<value1>/<partcol2>=<value2>/file.parquet
Considere os seguintes arquivos de origem de amostra:
OBJBUCKET/sales/country=USA/year=2024/month=01/sales-2024-01.parquet
OBJBUCKET/sales/country=USA/year=2024/month=02/sales-2024-02.parquet
OBJBUCKET/sales/country=USA/year=2024/month=02/sales-2024-03.parquet
Para criar uma tabela externa particionada implícita com dados armazenados neste formato de amostra do Hive, faça o seguinte:
- Otimize o Planejamento de Consultas do Armazenamento de Objetos com a opção strict_column_order
Quando uma consulta tem como destino uma pasta de armazenamento de objetos com um número muito grande de arquivos e subpastas, a fase de planejamento e listagem pode se tornar o custo principal antes que qualquer dado seja realmente verificado. Isso é comum com layouts de pasta de estilo Hive em que os valores de partição são incorporados no caminho.
Tópico principal: Consultar Tabelas Externas com Particionamento Implícito
Otimize o Planejamento de Consultas do Armazenamento de Objetos com a opção strict_column_order
Quando uma consulta se destina a uma pasta de armazenamento de objetos com um número muito grande de arquivos e subpastas, a fase de planejamento e listagem pode se tornar o custo principal antes que qualquer dado seja realmente digitalizado. Isso é comum com layouts de pasta de estilo Hive em que os valores de partição são incorporados no caminho.
-
A definição
strict_column_order
é desativada por padrão. Ativar somente se o layout do caminho for consistente. -
Se as convenções de pasta forem alteradas (como adicionar, remover ou reordenar colunas de partição), será necessário atualizar a opção
partition_columns
e pode ser necessário desativar essa opção.
Ative a opção strict_column_order
pelo seguinte:
Se seus dados usarem caminhos particionados no estilo Hive e as colunas de partição sempre aparecerem em uma ordem fixa e consistente sem segmentos ausentes, ative a otimização pela seguinte definição:
strict_column_order = true (with partition_type = "hive")
O banco de dados pode ignorar diretórios desnecessários seguindo a ordem das partições já definidas. Isso significa que não precisa listar todos os objetos, o que pode acelerar significativamente o tempo de planejamento para grandes conjuntos de dados.
Observações sobre o uso da opção strict_column_order:
-
Os caminhos seguem a nomenclatura e a ordem do Hive, por exemplo:
.../country=US/year=2025/month=09/...
-
As colunas de partição mantêm um conjunto e uma sequência fixos, sem reordenação ou prefixos ignorados.
- Você precisa otimizar a listagem de tempo de planejamento para pastas que contêm um número muito grande de objetos.
- Não é possível usar esta opção em conjuntos de dados em que nem todos os prefixos estejam presentes. Por exemplo, algumas pastas incluem year=, enquanto outras começam com month=).
Exemplos: Use a opção strict_column_order para Partições de Estilo Hive com DBMS_CLOUD.CREATE_EXTERNAL_TABLE
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
table_name => 'sales_xt',
credential_name => 'MY_CREDENTIAL',
file_uri_list => 'https://objectstorage.example.com/n/tenant/b/lake/o/sales/',
-- Data is stored as: .../country=US/year=2025/month=09/*.parquet
column_list => 'product VARCHAR2(100),
units NUMBER,
amount NUMBER,
country VARCHAR2(30),
year NUMBER,
month NUMBER',
format => '{
"type": "parquet",
"implicit_partition_config": {
"partition_type": "hive",
"partition_columns": ["country","year","month"],
"strict_column_order": true
}
}'
);
END;
/
Verifique se a lógica de planejamento evita listar caminhos de nível superior não relacionados (por exemplo, caminhos pertencentes a outros países ou anos):
- Execute uma consulta seletiva que restrinja partições à esquerda, por exemplo:
comSELECT COUNT(*) FROM sales_xt WHERE country = ''US'' AND year = 2025;
.strict_column_order = true
- Se os pressupostos de layout não forem atendidos, desative a opção e tente novamente.
Consultar Dados de Estilo Não Hive Particionados Implícitos Externos
Use o procedimento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
para criar uma tabela externa particionada implícita com base em dados no armazenamento de objetos que foi gerada a partir de dados não Hive.
Os arquivos de origem de amostra no exemplo a seguir usam este formato de nomeação:
OBJBUCKET/<table>/<value1>/<value2>/file.parquet
Considere os seguintes arquivos de origem de amostra:
OBJBUCKET/sales/USA/2024/01/sales-2024-01.parquet
OBJBUCKET/sales/USA/2024/01/sales-2024-02.parquet
OBJBUCKET/sales/USA/2024/01/sales-2024-03.parquet
Para criar uma tabela externa particionada implícita com dados armazenados neste formato de amostra do Hive, faça o seguinte:
Tópico principal: Consultar Tabelas Externas com Particionamento Implícito