Skip to content

Instantly share code, notes, and snippets.

@kratika2210
Last active July 11, 2023 23:37
Show Gist options
  • Save kratika2210/8cf49375e77ec7454d8081875dfaddf3 to your computer and use it in GitHub Desktop.
Save kratika2210/8cf49375e77ec7454d8081875dfaddf3 to your computer and use it in GitHub Desktop.
Add sme levels to questions
import pandas as pd
import numpy as np
import csv
import re
smeLevelDict = {
'Data Ingestion': ['Experience Platform', 'Data Ingestion and Management', 'Data Ingestion'],
'General': ['Experience Platform', 'Overview', 'General'],
'CJA': ['Experience Cloud', 'Data Insights And Audiences', 'CJA'],
'Schema': ['Experience Platform', 'Data Modeling', 'Schemas'],
'Query Service': ['Experience Platform', 'Data Science and Queries', 'Query Service'],
'Dataset': ['Experience Platform', 'Data Ingestion and Management', 'Dataset'],
'AJO': ['Experience Cloud', 'Customer Journey', 'Journey Optimizer'],
'Profile': ['Experience Platform', 'Customer Data', 'Real-time Customer Profile'],
'Identity': ['Experience Platform', 'Customer Data', 'Identity Service'],
'Source Connector': ['Experience Platform', 'Data Ingestion and Management', 'Sources'],
'Destination Connectors': ['Experience Platform', 'Activation', 'Destinations'],
'Segment': ['Experience Platform', 'Customer Data', 'Segmentation Service'],
'License': ['Experience Platform', 'Administration', 'License Usage'],
'Field': ['Experience Platform', 'Data Modeling', 'Schemas'],
'Data Prep': ['Experience Platform', 'Data Ingestion and Management', 'Data Prep'],
'B2B': ['Experience Platform', 'Customer Data', 'Real-time Customer Data Platform'],
'JO': ['Experience Cloud', 'Customer Journey', 'Journey Orchestration'],
'AJO': ['Experience Cloud', 'Customer Journey', 'Journey Optimizer'],
'DULE': ['Experience Platform', 'Governance, Privacy, and Security', 'Data Governance'],
'Event': ['Experience Platform', 'Data Collection', 'Event Forwarding'],
'Hashed Email': ['Experience Platform', 'Customer Data', 'Identity Service'],
'Destinations': ['Experience Platform', 'Activation', 'Destinations'],
'UPSERT': ['Experience Platform', 'Data Ingestion and Management', 'Data Ingestion'],
'Data Distiller': ['Experience Platform', 'Data Science and Queries', 'Query Service'],
'Flow Service': ['Experience Platform', 'Data Ingestion and Management', 'Dataflows'],
'Eloqua': ['Experience Platform', 'Data Ingestion and Management', 'Sources'],
'TTL': ['Experience Platform', 'Customer Data', 'Real-time Customer Profile'],
'data load': ['Experience Platform', 'Administration', 'License Usage'],
'RTCDP': ['Experience Platform', 'Customer Data', 'Real-time Customer Data Platform'],
'Guard Rails': ['Experience Platform', 'Data Ingestion and Management', 'Data Ingestion'],
'Data security': ['Experience Platform', 'Governance, Privacy, and Security', 'Data Governance'],
'Edge Network': ['Experience Platform', 'Data Collection', 'Edge Network Server API'],
'AEP Architecture': ['Experience Platform', 'Overview', 'General'],
'API': ['Experience Platform', 'Overview', 'General'],
'WebSDK': ['Experience Platform', 'Data Collection', 'WebSDK'],
'MobileSDK': ['Experience Platform', 'Data Collection', 'MobileSDK'],
}
smeLevelColumns=['sme_level1', 'sme_level2', 'sme_level3']
df = pd.read_csv('sme_concepts_qs_in.csv')
# deleting rows with empty 'question' column
df = df.dropna(axis=0, subset=['question'])
# filling 'System' where sme_name is empty
df['sme_name'] = df['sme_name'].fillna('System')
df['sme_levels'] = df['sme_domain'].map(lambda x: [v for k, v in smeLevelDict.items() if bool(re.search(k.lower(), x.lower()))][0])
df_out = pd.DataFrame(df["sme_levels"].to_list(), columns=smeLevelColumns)
df_out = df_out.join(df)
df_out = df_out.drop(columns=['sme_domain', 'sme_levels'])
# reordering columns
df_out = df_out[['sme_name', 'question', 'sme_level1', 'sme_level2', 'sme_level3']]
df_out.to_csv('sme_concepts_qs_out.csv', index=False)
@skanjila
Copy link

good work on this, hoping we can reuse this for future annotations work

@ken-russell
Copy link

Thanks, for knocking this out. Sorry for the late review. Could you make the following changes?

CJA': ['Experience Platform', 'Data Insights And Audiences', 'CJA'],
CJA is in Experience Cloud

'B2B': ['Experience Platform', 'Overview', 'General'],
I believe B2B is really RTCDP B2B which we are currently just classifying as RTCDP. However, looking at the five B2B questions I think 3 of them should be schema and we can overwrite the other 2.

'Hashed Email': ['Experience Cloud', 'Customer Journey', 'Journey Optimizer'],
I think this should go to identity service instead
https://experienceleague.adobe.com/docs/id-service/using/reference/hashing-support.html?lang=en

'UPSERT': ['Experience Platform', 'Customer Data', 'Real-time Customer Profile'],
There's only question in this domain "How to update specific column or row data in AEP". Let's map it to Data Ingestion

'Data Distiller': ['Experience Platform', 'Data Ingestion and Management', 'Data Ingestion'],
This should map to Query Service. Data Distiller is the SKU that you customers can purchase that allows them to manipulate data with Query service.

'API': ['Experience Platform', 'Overview', 'General'],
There's 3 API questions. One of them is general, we should manually map the other two to the domains they are in.

@kratika2210
Copy link
Author

Thanks for the review @ken-russell! I have updated the above script and regenerated the csv.

@ken-russell
Copy link

Looks good, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment