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" }