Leitura de entidades do Oracle NetSuite
Pré-requisito
Um objeto do Oracle do qual você deseja ler. Você precisará do nome do objeto, como deposit ou timebill. A tabela a seguir mostra as entidades compatíveis.
Entidades compatíveis quanto à origem:
| Entidade | Pode ser filtrada | Oferece suporte a Ordenar por | Oferece suporte a limite | Oferece suporte a SELECIONAR * | Oferece suporte a particionamento | 
|---|---|---|---|---|---|
| Depósito | Sim | Não | Sim | Sim | Sim | 
| Item de descrição | Sim | Não | Sim | Sim | Sim | 
| Item de inventário | Sim | Não | Sim | Sim | Sim | 
| Atendimento do item | Sim | Não | Sim | Sim | Sim | 
| Grupo de itens | Sim | Não | Sim | Sim | Sim | 
| Lançamento no diário | Sim | Não | Sim | Sim | Sim | 
| Item de compra que não é de estoque | Sim | Não | Sim | Sim | Sim | 
| Item de revenda que não é de estoque | Sim | Não | Sim | Sim | Sim | 
| Item de venda que não é de estoque | Sim | Não | Sim | Sim | Sim | 
| Ordem de compra | Sim | Não | Sim | Sim | Sim | 
| Subsidiária | Sim | Não | Sim | Sim | Sim | 
| Fornecedor | Sim | Não | Sim | Sim | Sim | 
| Fatura do fornecedor | Sim | Não | Sim | Sim | Sim | 
| Autorização de devolução ao fornecedor | Sim | Não | Sim | Sim | Sim | 
| Faturamento com prazo | Sim | Não | Sim | Sim | Sim | 
| Pagamento do cliente | Sim | Não | Sim | Sim | Sim | 
| Solicitação de atendimento | Sim | Não | Sim | Sim | Sim | 
| Item | Sim | Sim | Sim | Sim | Sim | 
| Linha de transação | Sim | Sim | Sim | Sim | Sim | 
| Linha contábil de transações | Sim | Sim | Sim | Sim | Sim | 
| Tipos de registro personalizados (dinâmicos) | Sim | Sim | Sim | Sim | Sim | 
Exemplo:
netsuiteerp_read = glueContext.create_dynamic_frame.from_options( connection_type="netsuiteerp", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "deposit", "API_VERSION": "v1" } )
Detalhes das entidades e dos campos do Oracle NetSuite:
O Oracle NetSuite carrega dinamicamente os campos disponíveis na entidade selecionada. Dependendo do tipo de dados de campo, ele é compatível com os operadores de filtro a seguir.
| Tipos de dados de campo | Operadores de filtro compatíveis | 
|---|---|
| String | LIKE, =, != | 
| Data | BETWEEN, =, <, <=, >, >= | 
| DateTime | BETWEEN, <, <=, >, >= | 
| Numérico | =, !=, <, <=, >, >= | 
| Booleano | =, != | 
Formato de entrada esperado para valores booleanos na expressão de filtro:
| Entidade | Formato de valor booleano "verdadeiro" | Formato de valor booleano "falso" | Exemplo | 
|---|---|---|---|
| Entidades de item, linha de transação, linha contábil de transações e tipo de registro personalizado | T ou t | F ou f | isinactive = "T" ou isinactive = "t" | 
| Todas as outras entidades | verdadeiro | false | isinactive = true | 
Particionamento de consultas
Particionamento com base em campo
O conector do Oracle NetSuite tem metadados dinâmicos para que os campos compatíveis com particionamento com base em campo sejam escolhidos dinamicamente. O particionamento baseado em campo é compatível nos campos com o tipo de dados Integer, BigInteger, Date ou DateTime.
É possível fornecer as opções adicionais do Spark PARTITION_FIELD, LOWER_BOUND, UPPER_BOUND e NUM_PARTITIONS se quiser utilizar a simultaneidade no Spark. Com esses parâmetros, a consulta original seria dividida em NUM_PARTITIONS subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
- PARTITION_FIELD: o nome do campo a ser usado para particionar a consulta.
- LOWER_BOUND: um valor limite inferior inclusivo do campo de partição escolhido.- Para o campo de carimbo de data e hora, aceitamos o formato de carimbo de data e hora do Spark usado nas consultas SQL do Spark. - Exemplos de valores válidos: - "TIMESTAMP \"1707256978123\"" "TIMESTAMP \"1702600882\"" "TIMESTAMP '2024-02-06T22:00:00:00.000Z'" "TIMESTAMP '2024-02-06T22:00:00:00Z'" "TIMESTAMP '2024-02-06'"
- UPPER_BOUND: um valor limite superior exclusivo do campo de partição escolhido.
- NUM_PARTITIONS: o número de partições.
Exemplo:
netsuiteerp_read = glueContext.create_dynamic_frame.from_options( connection_type="netsuiteerp", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "deposit", "API_VERSION": "v1", "PARTITION_FIELD": "id", "LOWER_BOUND": "1", "UPPER_BOUND": "10000", "NUM_PARTITIONS": "10" }
Particionamento com base em registros
É possível fornecer a opção adicional NUM_PARTITIONS do Spark se quiser utilizar a simultaneidade no Spark. Com esse parâmetro, a consulta original seria dividida em NUM_PARTITIONS subconsultas, que poderiam ser executadas pelas tarefas do Spark simultaneamente.
No particionamento com base em registros, o número total de registros presentes é consultado na API do Oracle NetSuite e dividido pelo número de NUM_PARTITIONS fornecido. O número resultante de registros, em seguida, é obtido simultaneamente por cada subconsulta.
- NUM_PARTITIONS: o número de partições.
Exemplo:
netsuiteerp_read = glueContext.create_dynamic_frame.from_options( connection_type="netsuiteerp", connection_options={ "connectionName": "connectionName", "ENTITY_NAME": "deposit", "API_VERSION": "v1", "NUM_PARTITIONS": "3" }