Friday, August 07, 2015
Feed Sift (08/07/2015)
-1-
WAITBUTWHY.COM -- Elon Musk: The World’s Raddest Man
-2-
ENGADGET.COM -- The first self-driving big rig licensed to operate in the US
-3-
HOUZZ.COM -- 10 Creative Ways to Bring Structure to Your Outdoor Room
-4-
KPCB.COM -- Internet Trends 2015 **A MUST READ**
-5-
ESPN.GO.COM -- The Whole Game is Beast Mode
Friday, July 31, 2015
Feed Sift (07/31/2015)
-1-
ENGADGET.COM -- The US wants cars to 'talk' to each other, sooner rather than later
-2-
SETHGODIN.TYPEPAD.COM -- How to go faster
-3-
TWISTEDSIFTER.COM -- A Film Editor’s Take on the Rube Goldberg Machine
-4-
ARCHITECTURALDIGEST.COM -- Rooftops and Terraces (Slideshow)
-5-
MORNINGDEVOTION.OASISMEDIASERVICES.COM -- Giving life
Friday, July 24, 2015
Feed Sift (07/24/2015)
-1-
SETHGODIN.TYPEPAD.COM -- Why do you do it this way?
-2-
ENGADGET.COM -- Google researchers create amazing timelapses from public photos
-3-
TWISTEDSIFTER.COM -- Recycled Animation Sequences from Famous Disney Films
-4-
ARCHITECTURALDIGEST.COM -- Best Hotel Pools (Slideshow)
-5-
COOLORS.CO -- Create Awesome Color Palettes
Using the SQL DELETE function in ExactTarget Queries
The Salesforce Marketing Cloud (aka ExactTarget) offers you the ability to write your own SQL statements to pull together data from multiple Data Extensions (tables) into a single table. It's really handy and quite powerful in its ability to write complicated JOINS. (It's also great for writing small queries against a Data Extension to update that same data extension - that is, you don't have to do it all in one massive SELECT - instead, you can write lots of little ones, each drawing from a different table if you need to.)
However, everything you want to do has to be done with the SELECT statement depending on where you target the output (to itself, to another table) and the method of write (APPEND, OVERWRITE, UPDATE) allows you to approximate UPDATE and INSERT but there's no native DELETE functionality.
That's probably a way to protect us from ourselves - DELETE Is a pretty dangerous command.
You could always overwrite the data with something you don't want or something that would be ignored by your AmpScript or the mailing engine, but what if you truly want to delete some content within your table?
Here's my quick trick.
Scenario (completely made-up for the purposes of this post):
I have a number of different emails that I want to send my subscribers.
They don't need to instantaneous (they're not a password reset) and usually, there will be a batch. The new records could come from an automated process (some other system drops records on the FTP server) or manual (a personal uploads files to the FTP server).
The business could create new message types (maybe "non-sufficient funds" or something) at any time. They may have an audience ready to go at the same time they first inform me about the new message. They need to be able to tell me that they've uploaded a new audience and provide me the design of the email. (They can't be expected to wait for a new process with new instructions on how to upload and keep track of lots of different methods of uploading.)
I don't want to use an API because it doesn't need to be instantaneous and because I want more visibiility and prefer the reporting of automated sends versus triggered sends.
How to Manage:
I need a pool or queue where new recipients can wait (with their data) until sent. Once sent, they need to be removed from the queue so that the queue remains lean and there's no risk of double-mailing - it should only contain people not-yet-mailed. (This will also show me if a new message type has been introduced that they didn't tell me about or if a particular message is failing.)
So I have a Data Extension with "Message ID", "Subscriber Key", "Data1", "Data2", "Data3", etc. An automation pours in new records as it receives them on the FTP site (whether placed there by an external process or by a person).
Process:
So essentially, I need:
(1) Find new records for a message type in the queue.
(2) Mail those records.
(3) Remove them from the queue.
How?
(1a) Select matching records by message ID
(1b) and copy them into a message-specific table as an overwrite (the table is blanked out so only new records appear in it)
(2) Mail that table (with optional suppression from 3b)
(3a) Remove them from the queue.
(3b) Optionally add them to a suppression (if it's a message they can only receive once ever) or to a historic log (so that I can see what I sent when for compliance purposes)
Everything about this is super-easy except 3a: Remove them from the queue.
Actually, that's easy as well.
Create the Effect of a DELETE function using only SELECT
You'll do this by using two tables. Copy the records you want to keep from table a to table b and then copy table b back to table a.
Step 1: Create a new data extension. It should be based on your existing data extension. If your original DE is "queue" then call it "queue_transit"
Step 2: Create a new query called "queue_reduce_balancexferconf". It should simply be
select * from queue where messageID<>'balancexferconf'
(where 'balancexferconf' is your messageID)
and it should be set to "OVERWRITE" and target "queue_transit"
Step 3: Create a new query called "queue_update". It should simply be
select * from queue_transit
and it should be set to OVERWRITE and target "queue"
Step 4: Create a program (or add to your existing program) that runs
- query: queue_reduce_balancexferconf
- query: queue_update
And that's it. These will run really quickly because your pool will remain small.
You will need a new query for step 2 for each message, but it beats re-creating the intake process (file locations, trigger, import, data extension, documentation, training, meetings, etc.) for each and every message that the business wants to quickly add.
However, everything you want to do has to be done with the SELECT statement depending on where you target the output (to itself, to another table) and the method of write (APPEND, OVERWRITE, UPDATE) allows you to approximate UPDATE and INSERT but there's no native DELETE functionality.
That's probably a way to protect us from ourselves - DELETE Is a pretty dangerous command.
You could always overwrite the data with something you don't want or something that would be ignored by your AmpScript or the mailing engine, but what if you truly want to delete some content within your table?
Here's my quick trick.
Scenario (completely made-up for the purposes of this post):
I have a number of different emails that I want to send my subscribers.
- Balance Transfer Confirmations
- Loan Approvals
- Loan Rejections
- Statements Available Online
They don't need to instantaneous (they're not a password reset) and usually, there will be a batch. The new records could come from an automated process (some other system drops records on the FTP server) or manual (a personal uploads files to the FTP server).
The business could create new message types (maybe "non-sufficient funds" or something) at any time. They may have an audience ready to go at the same time they first inform me about the new message. They need to be able to tell me that they've uploaded a new audience and provide me the design of the email. (They can't be expected to wait for a new process with new instructions on how to upload and keep track of lots of different methods of uploading.)
I don't want to use an API because it doesn't need to be instantaneous and because I want more visibiility and prefer the reporting of automated sends versus triggered sends.
How to Manage:
I need a pool or queue where new recipients can wait (with their data) until sent. Once sent, they need to be removed from the queue so that the queue remains lean and there's no risk of double-mailing - it should only contain people not-yet-mailed. (This will also show me if a new message type has been introduced that they didn't tell me about or if a particular message is failing.)
So I have a Data Extension with "Message ID", "Subscriber Key", "Data1", "Data2", "Data3", etc. An automation pours in new records as it receives them on the FTP site (whether placed there by an external process or by a person).
Process:
So essentially, I need:
(1) Find new records for a message type in the queue.
(2) Mail those records.
(3) Remove them from the queue.
How?
(1a) Select matching records by message ID
(1b) and copy them into a message-specific table as an overwrite (the table is blanked out so only new records appear in it)
(2) Mail that table (with optional suppression from 3b)
(3a) Remove them from the queue.
(3b) Optionally add them to a suppression (if it's a message they can only receive once ever) or to a historic log (so that I can see what I sent when for compliance purposes)
Everything about this is super-easy except 3a: Remove them from the queue.
Actually, that's easy as well.
Create the Effect of a DELETE function using only SELECT
You'll do this by using two tables. Copy the records you want to keep from table a to table b and then copy table b back to table a.
Step 1: Create a new data extension. It should be based on your existing data extension. If your original DE is "queue" then call it "queue_transit"
Step 2: Create a new query called "queue_reduce_balancexferconf". It should simply be
select * from queue where messageID<>'balancexferconf'
(where 'balancexferconf' is your messageID)
and it should be set to "OVERWRITE" and target "queue_transit"
Step 3: Create a new query called "queue_update". It should simply be
select * from queue_transit
and it should be set to OVERWRITE and target "queue"
Step 4: Create a program (or add to your existing program) that runs
- query: queue_reduce_balancexferconf
- query: queue_update
And that's it. These will run really quickly because your pool will remain small.
You will need a new query for step 2 for each message, but it beats re-creating the intake process (file locations, trigger, import, data extension, documentation, training, meetings, etc.) for each and every message that the business wants to quickly add.
Friday, July 17, 2015
Feed Sift (07/17/2015)
-1-
TWISTEDSIFTER.COM -- 98 Unprocessed Foods Cut Into Perfect Cubes
-2-
SETHGODIN.TYPEPAD.COM -- Capitalism vs. lock in
-3-
ARCHITECTURALDIGEST.COM -- The Most Colorful Buildings (Slideshow)
-4-
PINTEREST.COM -- Backyard Entertaining and Design
-5-
WEBURBANIST.COM -- Retrofuturistic Urbanism: 6 Cities as they Could Have Become
Thursday, July 16, 2015
I Don't Work Here (A Work-Related Post)
(Also posted on LinkedIn)
Well, I'm biting the bullet. I'm going back to the cable company. A few years ago, the phone company offered us a better deal on the phone-internet-tv bundle (with the TV being supplied by a well-known satellite TV provider).
And then over time, we began cutting cables. We dropped satellite in favor of internet TV and then dropped the landline in favor of our cell phones.
Suddenly, internet from the phone company wasn't a good deal. No more bundling discounts, no more introductory rate. And it was failing us as useful, reliable internet, especially uploading (Flickr, FTP for work and outbound wifi calling on our cell phones).
So, the internet company once again looked like the better deal. I could purchase my own modem, so all I needed them to do was "flip the switch." Or at least it seemed almost that easy in my mind.
I argued with countless online chat folks, canceled several in-progress orders and finally turned to social media. I was in regular contact with someone on their Twitter feed who said that they could turn on service for us. No installation charge, no sending anyone to the house. They could just flip the switch. Cool.
And then they went radio silent. Not sure why. Possibly lost in a Hootsuite backlog or something. So I called in to the cable company.
And finally, finally, finally, someone explained why there might be a need to have someone come to the house. A good, solid, reasonable answer I could accept. In most houses, cable outlets are already where people want them. So when people switch from cable to satellite, the satellite guys will often cut the cable line and splice in their satellite. So even if the cable company flips the switch, the line is broken somewhere.
Duh. That makes so much sense.
But me, as a customer, didn't think of that. I only saw a company (not well-liked by a majority of its customers) trying to squeeze an extra $50 out of me.
Finally, an answer that made sense. So they went ahead anyway and tried to see if they could flip the switch. And they scheduled a technician as a backup, just in case it didn't work.
And I'm satisfied with the $50 charge I'll be paying for a technician. (The line was cut, I attempted to slice it myself but it didn't work as the modem hasn't sprung to life.)
And I'm happier because I feel more informed.
The people in the online chat never bothered to offer up this kind of information. And I'm probably not the only one who's wondered about this.
Is there any parts of your customer service process that have become so second nature to you that you forget that your customers aren't clued in? Is there any place where taking a few more seconds to understand where they're coming from will help you to create a more well-informed, satisfied customer? Are you surveying your customers in a meaningful way where you can find these kinds of gaps and questions and work to address them proactively going forward?
Never get too far from your customer, never stop stepping into your customer's shoes. And don't say tell me "this call may be monitored or recorded for quality or training purposes" is the answer because that's too passive. That doesn't automatically guarantee growth, improvement and movement towards awesome customer service experiences.
Friday, July 10, 2015
Feed Sift (07/10/2015)
-1-
ARCHITECTURALDIGEST.COM -- New Volume Showcases Delightful Parisian Landscapes
-2-
TWISTEDSIFTER.COM -- 16 Breathtaking Underwater Animal Photos
-3-
GOOGLEBLOG.BLOGSPOT.COM -- Green lights for our self-driving vehicle prototypes
-4-
ENGADGET.COM -- The first solar bike path is producing more energy than expected
-5-
BLOG.LEARNINGBYSHIPPING.COM -- Africa’s Mobile-Sun Revolution
Subscribe to:
Posts (Atom)

