Tables de source de données et types de données NetSuite
Depuis Adaptive Integration 2017.1, l’adaptateur NetSuite compatible avec les services Web de NetSuite’ 2016.2 SuiteTalk. Tous les adaptateurs fournis avant 2017.1 seront disponibles dans l’offre de services Web NetSuite’ 2013.2. Il n’y a pas de migration automatique de l’adaptateur Adaptive Insights NetSuite de NetSuite 2013.2 vers NetSuite 2016.2
Tables NetSuite prises en charge
Le tableau ci-dessous présente des informations sur les tables prises en charge dans NetSuite Integration. Les colonnes pour cette table présentent les informations suivantes :
- Table Integration: Le nom de la table comme indiqué dans la source de données d’intégration.
- Source de la table: Le nom de la table utilisé dans le Navigateur de schéma NetSuite .
- Accès : Le mécanisme d’accès pour chaque table NetSuite . Les types sont :
- “Rechercher” signifie que Integration rassemble tous les enregistrements qui correspondent aux critères de recherche à l’aide de l’API spécifiée. “Recherche limitée” signifie que Integration impose des contraintes supplémentaires sur la recherche en plus des contraintes de recherche que NetSuite peut imposer.
- “Tout obtenir” signifie que Integration rapporte tous les enregistrements à l’aide de l’API spécifiée.
- “Différentiel” signifie que Integration rapporte uniquement les données modifiées.
- Commentaires: Commentaires concernant les tables.
Integration prend également en charge les tables NetSuite exposées par l’API services WebNetSuite . Vous pouvez choisir la table/colonnes à importer pour chacune d’elles.
Table Integration | Source de table | Accès | Commentaires |
---|---|---|---|
Account | AccountSearchRowBasic | Rechercher | |
AccountingPeriod | AccountingPeriodSearchRowBasic | Rechercher | |
AdaptivePostingTransactionSummary |
Table créée par Adaptive dans la source de données Integration, non disponible dans NetSuite. Joint la table PostingTransactionSummary aux tables de catégories standard (Compte, Période, Filiale, Département, Classe, Emplacement, Article, Client) |
||
AllCustomLists | CustomList | Tout obtenir | |
Budget | BudgetSearchRowBasic | Rechercher | |
BudgetExchangeRate | Spécial : getBudgetExchangeRate | Recherche limitée | |
CalendarEvent | CalendarEventSearchRowBasic | Rechercher | |
Campaign | CampaignSearchRowBasic | Différentiel | |
CampaignCategory | CampaignCategory | Tout obtenir | |
CampaignFamily | CampaignFamily | Tout obtenir | |
Classification | ClassificationSearchRowBasic | Rechercher | |
ConsolidatedExchangeRate | Spécial : getConsolidatedExchangeRate | Recherche limitée | |
Contact | ContactSearchRowBasic | Rechercher | |
Currency | Currency | Tout obtenir | |
CustomerCategory | CustomerSearchRowBasic | Différentiel | |
CustomerStatus | CustomerCategorySearchRowBasic | Rechercher | |
DeletedRecord | Special: getDeleted | Recherche limitée | Pas pour utilisation par l’utilisateur final |
Department | DepartmentSearchRowBasic | Rechercher | |
Employee | EmployeeSearchRowBasic | Différentiel | |
EntityGroup | EntityGroupSearchRowBasic | Différentiel | |
ExpenseCategory | ExpenseCategorySearchRowBasic | Rechercher | |
Item | ItemSearchRowBasic | Différentiel | |
Job | JobSearchRowBasic | Différentiel | |
JobStatus | JobStatusSearchRowBasic | Rechercher | |
JobType | JobTypeSearchRowBasic | Rechercher | |
Location | LocationSearchRowBasic | ||
NetSuiteServerTime | Spécial : getServerTime | ||
Opportunity | OpportunitySearchRowBasic | ||
Partner | PartnerSearchRowBasic | ||
PostingTransactionBalance | Recherche limitée |
Table créée par Adaptive dans la source Integration, non disponible dans NetSuite. Cette table contient des soldes de fin de période. |
|
PostingTransactionSummary | Spécial : getPostingTransactionSummary | Recherche limitée | |
ProjectTask | ProjectTaskSearchRowBasic | Différentiel | |
PromotionCode | PromotionCodeSearchRowBasic | Rechercher | |
SalesTaxItem | SalesTaxItem | Tout obtenir | |
Subsidiary | SubsidiarySearchRowBasic | Rechercher | |
SupportCase | SupportCaseSearchRowBasic | Différentiel | |
SupportCasePriority | SupportCasePriority | Tout obtenir | |
SupportCaseStatus | SupportCaseStatus | Tout obtenir | |
SupportIssue | IssueSearchRowBasic | Rechercher | |
SupportSolution | SolutionSearchRowBasic | Rechercher | |
SupportTopic | TopicSearchRowBasic | Rechercher | |
Task | TaskSearchRowBasic | Rechercher | |
TaxGroup | TaxGroup | Tout obtenir | |
TaxType | TaxType | Tout obtenir | |
Timebill | TimeBillSearchRowBasic | Différentiel | |
Transaction | TransactionSearchRowBasic | Différentiel | |
Vendor | VendorSearchRowBasic | Différentiel |
Tables couramment utilisées dans AI
Les tables suivants sont importées en dehors de la boîte dans l’adaptateur NetSuite :
- AdaptivePostingTransactionSummary (table source principale pour la planification)
- Compte (mappé aux comptes Adaptive)
- Classification (mappage facultatif)
- Client (mappage facultatif)
- Service (mappage facultatif)
- Éléments (mappage facultatif)
- Emplacement (mappage facultatif)
- Résumé des transactions de comptabilisation
- Filiale (généralement mappée aux niveaux Adaptive)
Les tables AdaptivePostingTransactionSummary et PostingTransactionSummary retournent un delta mensuel, alors que la table PostingTransactionBalance retourne des soldes de période. Les tables AdaptivePostingTransactionSummary et PostingTransactionSummary prennent en charge les catégories standard (Compte, Période, Filiale, Département, Classe, Lieu, Article, Client). Si vous avez besoin de catégories supplémentaires, vous devez utiliser la table de transaction.
Tables mises à jour différentiellement
Dans la source de données NetSuite actuelle, les tables suivantes sont mises à jour de manière différentielle :
- Campaign
- Customer
- Employee
- EntityGroup
- Item
- Job
- Opportunity
- Partner
- ProjectTask
- SupportCase
- TimeBill
- Transaction
- Vendor
De plus, tous les types d’enregistrements personnalisés sont mis à jour de manière différentielle. Vous ne pouvez pas utiliser la colonne Date différentielle dans votre filtre d’importation de données pour des tables mises à jour différentiellement. Le système ne vous empêche pas d’essayer de le faire, mais cela entraînera l’échec du mécanisme de mise à jour différentielle.
Vous pouvez limiter la quantité de données importées dans une table différentielle lorsque vous "explorez," ce qui consiste à modifier les colonnes et les paramètres de filtre. Il existe un mécanisme dans la source de données pour court-circuiter la pleine charge des données différentielles.
Le tableau ci-dessous contient toutes les tables différentielles ainsi que leurs colonnes de date différentielle et de création.
Tableau | Colonne de date différentielle | Colonne Date de création |
---|---|---|
Campaign | LastModifiedDate | CreatedDate |
Customer | LastModifiedDate | DateCreated |
CustomRecord (*) | LastModified | Created |
Employee | LastModifiedDate | CreatedDate |
EntityGroup | LastModifiedDate | -- Aucun -- |
Item | Modified | Created |
Job | LastModifiedDate | DateCreated |
Opportunity | LastModifiedDate | DateCreated |
Partner | LastModifiedDate | DateCreated |
ProjectTask | LastModifiedDate | CreatedDate |
SupportCase | LastModifiedDate | CreatedDate |
TimeBill | LastModified | DateCreated |
Transaction | LastModifiedDate | DateCreated |
Vendor | LastModifiedDate | DateCreated |
(*) -Ceci s’applique à tous les enregistrements personnalisés.
Si vous spécifiez un filtre supérieur à ou supérieur ou égal à la colonne Date de création pour votre table, le code contourne l’importation complète et met à jour uniquement les mises à jour de la date et de l’heure spécifiées. Ceci permet de limiter les données importées car lorsque vous commencez à explorer une table volumineuse téléchargée, vous pouvez définir le filtre pour extraire uniquement les derniers jours’ (ou semaines’) de données. Ce type de charge s’exécute très rapidement. Vous pouvez ensuite déterminer les colonnes dont vous avez besoin et les autres conditions de filtrage que vous souhaitez utiliser. Une fois que vous êtes satisfait, vous pouvez supprimer le filtre de date de création et redémarrer la charge de données complète.
Pour certaines tables, vous ne voulez peut-être pas que des enregistrements soient plus anciens qu’une certaine date. Pour ces tableaux, vous pouvez continuer à utiliser le filtre de date de création avec une valeur appropriée.
Types de données NetSuite pris en charge
Lorsque les données de NetSuite sont importées dans Integration, le « type » de ces données doit être mappé à l’un des types de données pris en charge par Integration
Champs de données NetSuite standard
Pour les champs de données NetSuite standard dans les tables ‘ recherchées, les mappages suivants sont utilisés :
Type de données de recherche standard NetSuite | Type de données Integration |
---|---|
SearchColumnStringField | Text |
SearchColumnSelectField | Text |
SearchColumnEnumSelectField | Text |
SearchColumnDoubleField | Float |
SearchColumnBooleanField | Boolean |
SearchColumnLongField | Integer |
SearchColumnTextNumberField | Text |
SearchColumnDateField | DateTime |
Champs de données NetSuite standard dans les tables
Pour les champs de données NetSuite standard dans des tables (qui sont toujours récupérés dans leur intégralité), les mappages suivants sont utilisés :
NetSuite Type de données standard | Type de données Integration |
---|---|
String | Text |
RecordRef | Text |
Double | Text |
Boolean | Float |
Long | Boolean |
System.DateTimeFloat | Integer |
Champs personnalisés
La source de données NetSuite prend en charge un sous-ensemble de champs personnalisés NetSuite possibles.
Les champs personnalisés sont pris en charge par les types d’enregistrement suivants :
- Champs personnalisés CRM
- CalendarEvent
- Campaign
- SupportCase
- SupportIssue
- SupportSolution
- ProjectTask
- Tâche
- Champs d’entité personnalisée
- Contact
- Client
- Employé
- Groupe d’entités
- Poste
- Partenaire
- Vendeur
- Champs d’article personnalisé
- Élément
- Champs de transaction personnalisé
- Corps de transaction
- Colonne de transaction
- Élément de transaction
- Autres champs personnalisés
- Compte
- Classification
- Département
- Emplacement
- Code de promotion
Notez que les champs personnalisés doivent avoir l’attribut "STORE VALUE" coché pour que le champ soit exposé sur l’API services Web NetSuite .
Types de données de champ personnalisé
Adaptive Integration prend en charge tous les types de données de champ personnalisé NetSuite définis. Cependant, du fait que Integration met en œuvre en interne seulement cinq types de données de base, les types de données de champ personnalisé NetSuite sont mappés à la plupart des types de données Integration appropriés. Le tableau suivant illustre ce mappage :
NetSuite Type de données | Type de données Integration | Commentaire |
---|---|---|
_checkBox | Flottant | |
_currency | Date et heure | |
_date | Date et heure | |
_decimalNumber | Flottant | |
_document | Texte | Référence à un autre enregistrement |
_eMailAddress | Texte | |
_freeFormText | Texte | |
_help | Texte | StoreValue non définie. NetSuite ne permet pas de récupérer ce type. |
_hyperlink | Texte | |
_image | Texte | Référence à un autre enregistrement |
_inlineHTML | Texte | |
_integerNumber | Entier | |
_listRecord | Texte | Référence à un autre enregistrement |
_longText | Texte | |
_multipleSelect | Texte | Référence à zéro ou à plus d’enregistrements d’un type donné |
_password | Texte | |
_percent | Flottant | |
_phoneNumber | Texte | |
_richText | Texte | |
_textArea | Texte | |
_timeOfDay | Date et heure | |
Types de transactions NetSuite
Informations complémentaires
Les sections suivantes décrivent quelques considérations supplémentaires pour l’accès aux données NetSuite .
Filtre d'importation des données
Chaque champ d’une recherche peut avoir un maximum d’un filtre. Les filtres sont traités ensemble par NetSuite lorsque la requête de recherche est exécutée.
Seules les tables accessibles via une "recherche" peuvent avoir des filtres de synchronisation.
En outre, seuls les champs qui existent dans [TableName]SearchRowBasic et dans [TableName]SearchBasic peuvent être utilisés dans les filtres de synchronisation.
Interrogation de NetSuite directement depuis la zone de stockage
Lors de l’interrogation de NetSuite directement (plutôt que de demander des enregistrements importés dans la zone de stockage depuis NetSuite) les expressions de filtre sont limitées aux capacités exposées par NetSuite via les services Web.
- Des filtres de colonne simples avec des expressions de comparaison et logiques peuvent être utilisés lors des requêtes NetSuite.
- Les filtres peuvent être traités ensemble avec l’opérateur AND, mais pas avec l’opérateur OR.
- Les opérateurs (+, -, /, *, $, ||) ne peuvent pas être utilisés.
- Les fonctions scalaires ne peuvent pas être utilisées.
- Les déclarations Case ne peuvent pas être utilisées.
- Pour filtrer sur une colonne personnalisée, la colonne personnalisée doit être marquée pour l’importation.
- Certains filtres de colonne nécessitent l’activation de fonctions NetSuite spécifiques pour que le filtre fonctionne.
Certaines tables et certaines colonnes ne prennent pas en charge le filtrage.
Champs exclus
Un certain nombre de champs NetSuite sont exclus de l’importation pour diverses raisons. Le tableau ci-dessous présente certains de ces champs exclus.
NetSuite champ | Raisons d’exclusion |
---|---|
Client : ccExpDate | Les informations de carte de crédit sont exclues aux fins de protection de la vie privée. |
Client : ccInternalId | Les informations de carte de crédit sont exclues aux fins de protection de la vie privée. |
Employé : socialSecurityNumber | Exclu pour la protection de la vie privée. |
SalesTaxItem: zip | Liste délimitée de codes postaux. Ce champ de texte peut être excessivement long (plus long que la limite de caractères par défaut de 1 024 caractères pour un champ de texte) et n’est pas considéré comme particulièrement utile pour les opérations d’intégration. |
Transaction : ccExpDate | Les informations de carte de crédit sont exclues aux fins de protection de la vie privée. |
Informations sur les champs
Informations supplémentaires sur les champs standard et personnalisés NetSuite :
- Les champs de texte sont limités à une taille maximale de 1 024 caractères.
- Les personnalisations des champs standard NetSuite ne sont pas prises en charge.
- Les champs personnalisés sont visibles. (NetSuite les expose via leurs services Web.)
- Uniquement les champs personnalisés NetSuite qui ont les ensembles d’attributs "Valeur de magasin" sont importés dans Adaptive Integration.
Recherches enregistrées
Voir la section Adaptive Integrationsur Importation de Recherches enregistrées NetSuitesur la manière de configurer une recherche enregistrée NetSuite .
Explorer depuis Adaptive Insights vers NetSuite
Les clients peuvent activer l’exploration des données importées de NetSuite. Les liens d’exploration seront disponibles sur les feuilles de planification et les rapports pour les données réelles importées de NetSuite. Afin de configurer l’exploration pour NetSuite, vous devez vous assurer que vos identifiants internes sont utilisés dans le cadre du mappage des colonnes dans le chargeur de planification. Vous devrez configurer un système externe NetSuite et l’attacher à un profil utilisé par le chargeur de planification.
Si vous configurez plusieurs colonnes sur le versant NetSuite pour mapper à une seule dimension de planification, alors ces colonnes NetSuite doivent être combinées dans la source de données à l’aide d’une colonne SQL Tuple. Pour plus de détails, reportez-vous aux sections Integration sur le mappage des colonnes/données et profils.
Conseils et meilleures pratiques
Meilleures pratiques pour configurer la planification pour l’importation des données réelles GL
Pour importer des données réelles de GL à l’aide de la table Transaction, il est recommandé de définir les comptes GL dans Planification Données réelles par delta mensuel. Dans cette méthode, la planification s’assure d’accumuler des montants sur les comptes de bilan.
Meilleures pratiques pour la négociation NetSuite Messages d’expiration
L’une des erreurs que NetSuite peut retourner :
“Votre recherche a expiré. Si votre recherche inclut l’opérateur 'contient', essayez d’utiliser ’hasKeywords’. Si votre recherche inclut des critères de recherche généraux, essayez de limiter les critères.”
Cette erreur indique que la requête a été exécutée trop longtemps dans NetSuite. Cette condition se produit généralement parce que les critères de filtre dans la requête engendrent un résultat extrêmement important. NetSuite permet environ 3 minutes de traitement pour une requête. (Notez qu’il s’agit du temps imparti pour la requête de base de données réelle dans NetSuite. Le temps nécessaire pour que le résultat soit renvoyé peut être beaucoup plus long puisqu’il est synchronisé par les politiques de trafic de NetSuite.)
Il existe plusieurs façons de traiter cette erreur. Une bonne recommandation générale est de s’assurer que la requête générée est aussi précise que possible. Par exemple, n’incluez que les types de transaction qui sont réellement utilisés par les chargeurs. Une autre façon d’empêcher ou de résoudre cette erreur est d’utiliser la propriété Durée du lot de remblayage. Pour les tables qui sont mises à jour différentiellement, cette propriété détermine la taille du bloc de mise à jour. La durée du lot de remblayage est définie sur 168 heures (une semaine). Cependant, cette valeur peut être trop élevée si vous traitez une requête pour des données à haute densité. Réduire cette valeur réduit la taille de la requête individuelle en resserrant le filtre de temps, ce qui peut empêcher ou résoudre cette erreur.
La valeur minimale de la propriété Durée du lot de remblayage est d’une heure. Le compromis ici est que vous "grignotez" les données plutôt que de les "dévorer", cela signifie que de nombreuses requêtes supplémentaires doivent être envoyées à NetSuite pour terminer la mise à jour. Par exemple, la réduction de 168 à 24 signifie que vous n’essayez que d’attraper un jour à la fois, mais cela signifie sept fois plus de requêtes.
Étant donné qu’il n’existe pas de manière pratique d’indiquer la densité des données à l’avance, vous pouvez essayer d’expérimenter vos requêtes et d’ajuster la propriété Durée du lot de remblayage selon les besoins pour gérer le problème.
Création de listes individuelles à partir de la table de stockage AllCustomLists
Une table de jointure peut être utilisée pour extraire/filtrer une liste individuelle de la table de stockage AllCustomLists . Par exemple, pour créer une table qui a les membres de la liste appelée Resolutiontime (avec InternalId 19), effectuez les étapes suivantes :
Dans cette expression de jointure, la valeur InternalId est le « sélecteur » qui sélectionne la liste personnalisée spécifique que vous souhaitez.
- Créez une nouvelle table de jointure. Un nom raisonnable pour la table serait "CustomList[*]" où [*] est la valeur « Nom » de la liste qui est extraite. Pour cet exemple, le nom serait "CustomListResolutiontime".
- Définissez la table principale sur "AllCustomLists".
- Ajoutez une jointure.
- Table principale : AllCustomLists
- Table de jointure : AllCustomLists
- Type : Interne
- Préfixe de colonne : (vide)
- Expression de jointure :
P."InternalId" = '19' and R."InternalId" = '19' and P."ValueId" = R."ValueId"
Dans cette expression de jointure, la valeur InternalId est le « sélecteur » qui sélectionne la liste personnalisée spécifique que vous souhaitez.
Dans la table de jointure, choisissez uniquement les colonnes de la table principale dont vous avez besoin (généralement uniquement "Value" et "ValueId").
La capture d’écran suivante capture ce résultat :
Conseil pour préparer les données de compte et de niveau
Même si les données de compte et de niveau varient d’un client à l’autre, voici quelques exemples pour montrer comment un concepteur de données peut créer des colonnes SQL dans la zone de stockage pour préparer les données avant de les charger dans la planification.
Compte :
CASE WHEN "acct.Number" is null THEN TRIM("acct.Name") ELSE TRIM("acct.Number") END
Niveau :
CASE WHEN "Department.Name" is null THEN 'No Department' ELSE TRIM("Department.Name") END || ' ' || "Location.Name"
Conseil concernant l’utilisation des règles métier
Le concepteur de données vous permet de créer des règles métier pour un chargement facile. Voici quelques conseils pour gérer les règles relatives aux informations de compte :
- Les codes de compte doivent être des valeurs numériques afin qu’il soit facile d’ajouter la plage de comptes GL à inverser.
- Évitez d’utiliser des traits de soulignement pour ce type de comptes. Si vous utilisez un trait de soulignement, vous devez ajouter manuellement tous les codes de compte dont vous avez besoin pour modifier les signes.
- Les codes de compte ne peuvent pas contenir d’espaces intégrés.
Configuration de fuseau horaire
Le fuseau horaire du compte pour la source de données NetSuite dans Adaptive Integration doit correspondre au fuseau horaire trouvé dans l’interface graphique NetSuite’s sous Préférences > Fuseau horaire régional.
Si les deux ne correspondent pas, effectuez l’une des opérations suivantes :
- Modifiez le fuseau horaire du compte dans Adaptive Integration pour qu’ils correspondent.
- Modifiez le paramètre fuseau horaire NetSuite pour l’utilisateur associé à la source de données afin qu’ils correspondent.
Références externes
La ressource principale pour l’API NetSuite est le système d’aide en ligne du site Web NetSuite , http://www.netsuite.com. NetSuite génère un PDF de cette aide en ligne avec chaque version de son produit. Vous pouvez trouver une copie récente en recherchant Guide des enregistrements "SuiteTalk (Services Web).”
Les informations NetSuite sont disponibles sur https://www.oracle.com/technical-resources/. Si vous inscrivez pour un compte, vous pouvez demander l’accès aux sujets NetSuite.